Объектно-ориентированное программирование. Объектно-ориентированное программирование – методология программирования, которая основана на представлении программы в виде совокупности объектов

Что такое ООП

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

В данном определении можно выделить три части:

· ООП использует в качестве элементов конструкции объекты, а не алгоритм;

· каждый объект является экземпляром какого-либо определенного класса;

· классы организованы иерархически.

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

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

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

· объекты относятся к соответствующим типам (классам);

· типы (классы) могут наследовать атрибуты от супертипов (суперкласов)".

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

· прогресс в области архитектуры ЭВМ, включая системную и аппаратную поддержку;

· развитие языков программирования, таких, как Simula, Smalltalk, CLU, Ada;

· развитие методологии программирования, включая принципы модульности и защиты информации.

К этому еще следует добавить три момента, оказавшие влияние на становление объектно-ориентированного подхода:

· развитие баз данных;

· исследования в области искусственного интеллекта;

· достижения философии и теории познания.

Основные понятия и принципы ООП

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

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

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

Примерами наиболее общих понятий могут служить такие абстрактные категории, как система, структура, интеллект, информация, сущность, связь, состояние, событие и многие другие. В процессе изучения этих категорий появляются новые особенности их содержания и объема. Именно по этим причинам всегда трудно дать им точное определение. В качестве примеров конкретных понятий можно привести понятие книги, содержащей роман Л. Толстого "Война и мир", или понятие микропроцессора Intel Pentium IV.

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

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

Третьим принципом ООП является полиморфизм. Под полиморфизмом (греч. poly – много, morfos – форма) понимают свойство некоторых объектов принимать различные внешние формы в зависимости от обстоятельств. Применительно к ООП полиморфизм означает, что действия, выполняемые одноименными методами, могут отличаться в зависимости от того, к какому из классов относится тот или иной метод.

Основные понятия языков программирования

Любой язык программирования должен включать следующие понятия:

алфавит – множество символов, с помощь которых записывается текст программы;

оператор – синтаксическая конструкция, предназначенная как для записи алгоритмических действий по преобразованию данных, так и для задания порядка выполнения других действий;

идентификатор (имя) – специальная неделимая группа символов из алфавита языка, используемая при записи операторов и ряда других элементов программы;

константа – идентификатор, имеющий постоянное значение, которое может быть в дальнейшем использовано в программе; изменять значение констант запрещается;

метка – элемент программы, предназначенный для указания в программе места, на которое затем можно передать управление.

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

тип – множество значений переменной и, как следствие, множество допустимых операций над этой переменной;

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

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

Наши рекомендации