Объективно-ориентированное программирование

Объективно-ориентированное программированиеЛюбой крупный проект базируется на принципе объектно-ориентированного программирования. Эта методика получила большое распространение благодаря тому, что она позволяет решать комплексные проблемы любой сложности.


Высока эффективность ООП достигается благодаря разделению определенных действий и обязанностей между различными субъектами или определенными константами, что значительно эффективнее, чем четкое следование заранее установленным инструкциям.

Необходимость создания ООП, как новой методологии при разработке программных продуктов, объясняется жесткой ограниченностью, которой обладали стандартные подходы, существовавшие ранее. В отличие от устаревших подходом, объектно-ориентированное программирование обладает более высокой степенью оптимизированности к определенным обстоятельствам, сложившимся в определенный момент времени. Проще говоря, эта методология является более гибкой.

Процедурные языки

Большинство современных распространенных языков программирования такие как C, Fortran, Pascal и некоторые другие, относятся к категории процедурных языков, принцип которых базируется на совокупности переменных, каждая из которых отвечает за выполнение определенной инструкции, установленной заранее. Проще говоря, приложение таких языков является набором определенных правил. Если набор команд небольшой, то искать любой другой подход особого смысла не имеет. В этом случае все что требуется от программиста — это создать некий набор команд, которые будут выполняться компьютером.

Распределение обязанностей

При создании больших программ объем списка команд может получаться просто невообразимых размеров. В этом случае, лишь ограниченная часть способна воспринимать больше сотни установленных инструкций, если они неразделены по группам. Таким образом, распределение обязанностей или, говоря на языке программистов, разделение функций позволяет сделать программы более понятными для юзеров. Стоит отметить. Что в зависимости от языка программирования терминология может слегка отличаться, однако, принцип остается идентичным.

Таким образом, приложения состоят из набора определенных функций, каждая из которых обладает определенными функциями и системным интерфейсом. Реализация набора этих функций происходит по принципу группирования их в единый объект, внутри которого функционирование происходит по заранее установленной инструкции. Подобная концепция и является фундаментом объектно-ориентированного программирования, что и является главным отличием от устаревших языком.

Основные проблемы ООП

Основное преимущество объектно-ориентированного программирования породило и основной его недостаток. Разделение на функции привело к существенному увеличению размера приложений, что, в свою очередь, очень сильно усложнило планирование и создание проектов. Для реализации одного проекта стало требоваться значительно большее количество специалистов, а также привело к увеличению финансовых и временных затрат. При этом нет принципиальной разницы в том, насколько тщательно спланирован структурный подход, поскольку приложения в любом случае получаются слишком сложными.

Так в чем же все-таки заключаются основные сложности процедурных языков? Одной из наиболее главных является чрезмерная глобализация данных. Помимо этого, отдельные функции очень плохо оптимизированы между собой, что негативно сказывается на моделировании реального мира. Если рассматривать все вышесказанное в контексте программы остатков, то основная проблема заключается в слишком большом количестве единиц, которые принимают участие в учете, а также, к которым обращаются различные функции и переменные.

Неограниченный доступ

Любая программа, которая написана на одном из современных языков программирования, например, на С, может использоваться два вида данных. Локальные помещены непосредственно в сами функции и используются исключительно ими. Таким образом, при одновременном обращении к одному типу данных несколькими функциями, то последняя должна принадлежать к глобальному типу. Второй тип данных — глобальный и может использоваться одновременно нескольким функциям.

Программа большого объема состоит из большого количества различных функций и данных глобального типа, что, в свою очередь, приводит к образованию большого количества взаимосвязей между ними. В свою очередь, это не только затрудняет понимание структуры самого приложения, но и усложняет внесение в нее любых изменений, поскольку в этом случае необходима правка всех функций, принимающих участие в функционировании программы.
Давайте на секунду представим ситуацию, что программа для ведения учета состоит не из пяти переменных, а из двенадцати. В этом случае потребуется изменения типа данных short на long, что, в свою очередь, требует правки всех функций, связанных с программным кодом. А это является весьма сложной процедурой если речь идет о большой программе. Более того, нет никакой гарантии стабильной работы функций с другими данными глобального типа. Проще говоря, внесение изменений в одной области программного кода влечет за собой неотвратимые изменения в других участках.

Моделирование реального мира

Не менее ощутимой проблемой является и моделирование реального мира, которое имеет непосредственную взаимосвязь с месторасположением отдельных функций и переменных. В этом случае в качестве новых переменных участвуют люди и транспорт, которые не имеют ничего общего ни с данными, ни с функциями, поскольку они обладают таким факторами, как набор определенных составляющих и поведенческий фактор.

Атрибуты

Наиболее ярким примером атрибутов, которые также можно считать характеристиками, являются особенности черт внешности и занимаемая должность, если речь идет о людях, и количество дверей и мощность силового агрегата, если мы говорим о транспорте. На практике, при моделировании реального мира, любые атрибуты обладают определенными характеристиками, которые можно сравнить с набором данных, присущих программе, и имеют четкие значения, например, карий цвет глаз или четыре двери у автомобиля.

Поведенческие факторы

Поведенческие факторы — это реакция определенных объектов на внешние факторы окружающего мира. Например, если попросить руководство о прибавке к зарплате, то реакция может быть положительной или отрицательной, или при нажатии на педаль тормоза произойдет остановка автомобиля. Это все яркие примеры поведения, которое можно сравнить с программными процедурами, которые задают программисты при создании приложений. Из всего вышесказанного можно сделать вывод, что данные и задаваемые команды не имеют принципиального значения при моделировании реального мира.

Решение проблемы

Любой объект в объектно-ориентированном программировании представляет собой определенный набор функций и данных. Достижение каких-либо значений возможно путем создания процедур. Сами же данные находятся в защищенной области и не могут подвергаться изменениям. Что касается данных и функций, то они, говоря терминами программирования, инкапсулированы в одно целое.

Если возникла необходимость внесения изменений в какие-либо данные, то программисту заведомо известно, с какими именно функциями они взаимодействуют. Никакие посторонние факторы и процедуры доступа к ним не имеют. Такой подход в значительной степени упрощает процесс создания программного кода, а также его отладку и дальнейшее обслуживание программного продукта.

Если говорить о приложениях, то они представляют собой совокупность объектов, которые также называются функции-членов, то они находятся в тесной взаимосвязи между собой.

Основным языком программирования, который чаще всего применяется при объектно-ориентированном программировании в наши дни, является C++. Его популярность объясняется большим функционалом, который значительно превосходит аналогичный у Java. Стоит отметить, что в различных языках программирования объекты могут называться по-разному, однако, независимо от этого все они вызываются посредством отправки ему сообщения.

Аналогия

В качестве объектов ООП могут использоваться и отдельные подразделения какого-либо предприятия. Это обусловлено тем, что деятельность любой компании четко регламентирована и каждое подразделение занимается выполнением поставленных перед ними задач. Каждый отдел состоит из сотрудников, на каждого из которых также возложены определенные обязанности. Помимо этого, для каждого кадра и департамента можно выделить и определенный набор данных, например, оклад, объем месячных или дневных продаж, количество отработанных часов и многое другое.

Независимо от сферы деятельности, для каждого отдела характерен набор определенной информации, которая может быть использована в объектно-ориентированном программировании. Бухгалтерия ведет финансовый учет деятельности предприятия, поэтому чтобы получить информацию об уровне заработной платы каждого сотрудника или о чистой прибыли компании за прошлый месяц не требуется копаться в архиве и перерывать большой объем документов. Все что необходимо — это сделать запрос ответственному за эти вопросы сотруднику. Это позволяет четко придерживаться регламента в процессе работы и полностью исключить вмешательство в дела компании третьих лиц. Этот принцип реализации имеет много общего с объектами объектно-ориентированного программирования.

Однако необходимо учитывать тот факт, что ориентация на объекты не имеет ничего общего с принципом работы всего приложения. Подавляющее большинство всех инструкций, которые регулируют работу программы, соответствует определенным операторам процедурных языков программирования, каждый из которых обладает своими ключевыми особенностями, поэтому заведомо невозможно отличить процедурную инструкцию от объектно-ориентированной.

Понятие объекта в объектно-ориентированном программировании

Основной проблемой при работе с задачами в ООП является не столько разделение на функции, сколько объектная ориентация. Принципы функционирования языков ООП позволяют существенно упростить написание программных продуктов. Это достигается благодаря тесной взаимосвязи программных и реальных составляющих, которые используются при моделировании реальной среды.

Что может выступать в качестве объекта?

В качестве физических объектов при программировании на языке ООП может выступать практически любой субъект или элемент. Основными среди них являются:

— автомобили при моделировании транспортного потока;
— электронные элементы при создании электрических схем;
— страны при проектировании экономических моделей;
— воздушный транспорт при разработке воздушных потоков движения.
— элементы меню, графические элементы системного интерфейса, периферийные устройства при моделировании компьютерной и пользовательской среды;
— представители различных сфер деятельности и должностей при моделировании социальной среды.

Взаимодействие программных и реальных объектов достигается путем сочетания набора определенных данных и функций. Подобный прорыв в области программирования позволил существенно оптимизировать и повысить эффективность разработки приложений. Это и стало основным отличием от языков программирования процедурного типа.

Классификация

Все объекты, используемые в объектно-ориентированном программировании, можно разделить на соответствующие классы. Как этого удалось достигнуть? Все очень просто: любой язык программирования обладает интегрированным набором данных, который может содержать множество различным переменных. По такому же принципу происходит и их классификация, которая подразумевает определение функций и данных, входящих в состав объектов.
Таким образом, классификация — это разделение определенных объектов, обладающих похожими характеристиками, по группам. Например, под категорию актеров могут попадать любые люди, которые снимаются в фильмах, а в группу певцов можно отнести любого человека, занимающегося музыкальной деятельностью.

Наследование

Описанный выше принцип классификации является очень упрощенным, поскольку в реальной жизни любой класс может иметь несколько подклассов. Например, представители фауны разделены на различные подкатегории, среди которых выделяют млекопитающих, земноводных, птиц, насекомых и других.
Подобное разделение по подклассам происходит по принципу наличия определенного набора общих характеристик, присущих основному классу. Например, обязательным условием любого автомобиля является наличие колес и силового агрегата, однако, существует несколько подвидов автомобилей, каждый из которых обладает определенным набором отличительных характеристик, присущих только ему. Например, все автомобили разделяются на легковые и грузовые. Подобный принцип применим и при работе с программными объектами. Если различные участки кода приложения обладают идентичными или очень близкими функциями, то их также можно разделить на классы и их производные.

Отблагодари меня, поделись ссылкой с друзьями в социальных сетях:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *