Объектно-ориентированное программирование
Объектно-ориентированная (ОО) компьютерная технология представляет собой одно из перспективных направлений развития программного обеспечения и позволяет существенно повышать качественный уровень и время разработок.
С появлением объектно-ориентированной технологии (ООТ) появилась возможность разработки программных средств на основе готовыхбазовых программных конструкций и компонент. Данный подход позволяет создавать программные средства из существующих компонент значительно быстрее и дешевле, обеспечивая существенное повышение их надежности и гибкости.
В объектно-ориентированной технологии пользователь имеет дело с .тремя базовыми элементами: объектами, сообщениями и классами.
Объекты представляют собой многократно используемые программные модули, содержащие связанные данные и процедуры. Структурно объекты состоят из двух частей: переменных и методов.
Методы представляют собой наборы процедур и функций, определяющих алгоритм функционированияобъекта. Подобно переменным в традиционных языках программированияобъектныепеременные могут содержать как простые данные (числа, массивы, текст и т.д.), так и сложной структуры информацию (графика, звуковые образы и т.д.). Более того, объектные, переменные могут содержать другие объекты и т.д. Такие объекты называютсясложными. Таким образом,объекты являются автономными модулями, содержащими всю необходимую для их выполнения информацию, что делает их идеальным блочным строительным материалом для создания сложных ПС различного назначения.
Для связи междуобъектами используютсясообщения, состоящие из трех частей:идентификатора объекта-адресата,имени метода (процедуры), который должен выполняться в искомом объекте, а также любой дополнительной информации (фактических значений для формальных параметров), необходимой для настройки режима выполнения выбранного метода. Использованиесообщений позволяет вводитьчеткуюсистему протоколов для взаимодействия объектов в системе, не акцентируя внимания на их внутренней организации. Данный подход не только защищает (скрывает} внутреннюю структуру объекта, но и позволяет легко изменять ее при условии, что новый объект будет воспринимать те же сообщения, что и предыдущий. Это позволяет весьма гибко изменять структурную организацию сложных многомодульных систем, не изменяя общего алгоритма их функционирования.
Классы напоминают собой своего родашаблоны для однотипных объектов, содержащие информацию, необходимую для генерации однотипных объектов, включая определения их методов и типов объектных переменных. Отдельные объекты каждого класса содержат только ту часть информации, котораяотличает один объект от другого объекта того же класса, а именно — значения объектных переменных. Таким образом, классы являются действительно мощной составляющей объектно-ориентированной технологии, определяя шаблоны для объектов использующихся многократно, и допуская однократное определение каждого метода и объектной переменной даже при условии использования их в различных классах. Так как объектно-ориентированные технологии исповедует принцип максимального использования готовых объектов для создания новых программных средств, то объектно-ориентированная-методология предполагает использованиетрех новых подходов к проектированию программного обеспечения.
Первый включает обширныебиблиотеки классов объектов, которые легко доступны пользователю.
Второй для некоторыхпредметных областей создаетфункционально-структурные модели, на основе которых можно реализовывать любое количество конкретных приложений в данной области. Такой подход позволяет повышать степень используемости классов объектов, разрабатываемых для данных приложений.
Третьим подходом являетсябыстрое макетирование, при котором проектировщики и программисты работают совместно над проектом, доводя его до окончательного вида, пригодного к использованию. Данные принципы рекомендуется применять на каждом уровне процесса разработки проекта, начиная снизшего уровня классов объектов, через промежуточные макеты (модели) к окончательному проекту.
Идеология объектно-ориентированного программирования (ООП) восходит к 60-м годам в связи с исследованиями по ИИ-проблематике. Понятие программных объектов впервые было введено в языке Simula-67, выросшем из Algol-60 и ориентированном на создание ПС, предназначенных для имитации принятия решений в условиях управляемого множества обстоятельств. Существенным импульсом развитию ООП-технологии в массе пользователей послужило расширение пакета Turbo-Pascal 5.5, поддерживающее все основные аспекты ООП. Такой подход (являясь более простым, чем создание нового ООП-языка) вместе с тем позволил более естественно ввести пользователя в круг методики и методологии ООП.
При ООП-подходе понятияпроцедуры и данных, используемые в обычных СП, заменяются понятиямиобъект и сообщение; объект — это пакет информации вместе с алгоритмом ее обработки, асообщение — это спецификация условий одной из операций обработки объекта. В отличие от процедуры, которая описывает алгоритм обработки, сообщение только определяет, что хочет выполнить его отправитель, а получатель точно определяеткак это сделать. Таким образом, в среде ООП-языка ЭВМ условно делится на объекты, к которым можно обращаться персонально и которые связываются друг с другом на основе сообщений.
Методология ООП, являясь дальнейшим естественным развитием традиционного программирования, предполагает большую степень структурированности (чем в структурном программировании), модульности и абстрактности (чем предыдущие попытки абстрагирования Данных и сокрытия деталей) ПС. Новая методология определяется тремя функциональными характеристиками ООП:
—инкапсуляция: объединение записей с процедурами и функциями, что превращает их в новый тип данных — объекты. Объекты сохраняют структуру, значение и поведение структуры данных, допуская намного более завершенную абстракцию и модульность в программировании;
—наследование: определениеобъекта с последующим использованием его для построения иерархии порожденных объектов с наследованием доступа каждого из порожденных объектов к процедурам и данным своего предка;
— полиморфизм: присвоение единого имени процедуре, которая передается вверх и вниз по иерархии объектов, с выполнением этой процедуры способом, соответствующим каждому объекту в иерархии.
Так как ООТ представляет собой множество идей, то ее методологию лучше всего осваивать надвух уровнях: общем (ему посвящена значительная часть раздела) иконкретном (на основе конкретного ООП-языка, например Turbo-Pascal). По философии объектов Turbo-Pascal ближе к языку C++, чем к языку SmallTalk: Turbo-Pascal является языком программирования компилирующего типа, тогда как SmallTalk является интерпретатором и создавался как средство исследования программных средств.