ООП
11 См. также
- ORM — технология связывания ОО-программ c базами данных
- Доменный объект
- UML
- Объектно-ориентированное проектирование
- Сравнение языков программирования
Объектно-ориентированное программирование
Парадигмы программирования |
СМ. |
Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования[1].
Идеологически ООП — подход к программированию как к моделированию информационных объектов, решающий на новом уровне основную задачу структурного программирования: структурирование информации с точки зрения управляемости[2], что существенно улучшает управляемость самим процессом моделирования, что в свою очередь особенно важно при реализации крупных проектов.
Управляемость для иерархических систем предполагает минимизацию избыточности данных (аналогичную нормализации) и их целостность, поэтому созданное удобно управляемым — будет и удобно пониматься. Таким образом через тактическую задачу управляемости решается стратегическая задача — транслировать понимание задачи программистом в наиболее удобную для дальнейшего использования форму.
Основные принципы структурирования в случае ООП связаны с различными аспектами базового понимания предметной задачи, которое требуется для оптимального управления соответствующей моделью:
- абстрагирование для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счете — контекстное понимание предмета, формализуемое в виде класса;
- инкапсуляция для быстрой и безопасной организации собственно иерархической управляемости: чтобы было достаточно простой команды «что делать», без одновременного уточнения как именно делать, так как это уже другой уровень управления;
- наследование для быстрой и безопасной организации родственных понятий: чтобы было достаточно на каждом иерархическом шаге учитывать только изменения, не дублируя все остальное, учтенное на предыдущих шагах;
- полиморфизм для определения точки, в которой единое управление лучше распараллелить или наоборот — собрать воедино.
То есть фактически речь идет о прогрессирующей организации информации согласно первичным семантическим критериям: «важное/неважное», «ключевое/подробности», «родительское/дочернее», «единое/множественное». Прогрессирование, в частности, на последнем этапе дает возможность перехода на следующий уровень детализации, что замыкает общий процесс.
Обычный человеческий язык в целом отражает идеологию ООП, начиная с инкапсуляции представления о предмете в виде его имени и заканчивая полиморфизмом использования слова в переносном смысле, что в итоге развивает[3] выражение представления через имя предмета до полноценного понятия-класса.
Содержание
- 1 Основные понятия
- 2 Классификация подвидов ООП
- 3 История
- 4 Определение ООП и его основные концепции
- 5 Особенности реализации
- 6 Проектирование программ в целом
- 7 Различные ООП-методологии
- 8 Производительность объектных программ
- 9 Критика ООП
- 10 Объектно-ориентированные языки Основная статья: Объектно-ориентированный язык программирования
- 11 См. также
- 12 Примечания
- 13 Литература
- 14 Ссылки
1 Основные понятия
- Абстракция данных
- Абстрагирование означает выделение значимой информации и исключение из рассмотрения незначимой.
- В ООП рассматривают лишь абстракцию данных (нередко называя её просто «абстракцией»),
- подразумевая набор значимых характеристик объекта, доступный остальной программе.
- Инкапсуляция[4]
- Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Одни языки (например, С++, Java или Ruby) отождествляют инкапсуляцию с сокрытием, но другие (Smalltalk, Eiffel, OCaml) различают эти понятия.
- Наследование[4]
- Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.
- Полиморфизм подтипов[4]
- Полиморфизм подтипов (в ООП называемый просто «полиморфизмом») — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Другой вид полиморфизма — параметрический — в ООП называют обобщённым программированием.
- Класс
- Класс — универсальный, комплексный тип данных, состоящий из тематически единого набора «полей» (переменных более элементарных типов) и «методов» (функций для работы с этими полями), то есть он является моделью информационной сущности с внутренним и внешним интерфейсами для оперирования своим содержимым (значениями полей). В частности, в классах широко используются специальные блоки из одного или чаще двух спаренных методов, отвечающих за элементарные операции с определенным полем (интерфейс присваивания и считывания значения), которые имитируют непосредственный доступ к полю. Эти блоки называются «свойствами» и почти совпадают по конкретному имени со своим полем (например, имя поля может начинаться со строчной, а имя свойства — с заглавной буквы). Другим проявлением интерфейсной природы класса является то, что при копировании соответствующей переменной через присваивание, копируется только интерфейс, но не сами данные, то есть класс — ссылочный тип данных. Переменная-объект, относящаяся к заданному классом типу, называется экземпляром этого класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы обеспечить отвечающие природе объекта и решаемой задаче целостность данных объекта, а также удобный и простой интерфейс. В свою очередь, целостность предметной области объектов и их интерфейсов, а также удобство их проектирования, обеспечивается наследованием.
- Объект
- Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции и связывания исходного кода на выполнение).
14 Ссылки
Объектно-ориентированное программирование в Викиучебнике | |
Объектно-ориентированное программирование на Викискладе |
- Обзоры
- Обзор Объектно-Ориентированного Программирования (рус.)
- Основы объектно-ориентированного программирования (рус.) Интуит.ру Бертран Мейер
- C.Бобровский «История ООП», PC Week/RE № 28 от 05.08.2003 г., стр. 10, и № 29 от 12.08.2003 г., стр. 20. Критика ООП
- Ричард П. Гэбриэл «Объектная парадигма провалилась»
- Гай Л. Стил «Объектная парадигма не провалилась»
[скрыть] Разработка программного обеспечения | |
---|---|
Процесс | |
Высокоуровневые концепции |
|
Направления |
|
Методологии разработки |
|
Модели | |
Известные деятели |
|
Ряд коротких примечаний не содержится в статье или не ведёт на раздел «Литература». Исправьте короткие примечания, установленные через шаблон {{sfn}}, в соответствии с инструкцией к шаблону, или добавьте недостающие публикации в раздел. Список: Abadi, Cardelli - Semantics of Object Types, Cardelli - On Understanding Types, Cardelli - Typeful programming, Пирс - Типы в языках программирования. |