ООП-термины…
Июль 14, 2007 — seregaborzovНе знаю к чему это, но вот откопал на компе такие полезные для всяких рефератов и экзаменов определения. Может кому сгодится
а если не сгодится, то в конце есть пара забавных ситуаций, может кто посмеется -))
ООП - технология создания сложного ПО, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа(класса), а классы образуют иерархию с наследованием свойств.
Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений.
Основные принципы ООП:
- Абстрагирование – процесс выделения абстракций в предметной области задачи.
Абстракция – совокупность существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. Современный уровень абстракции предполагает объединение всех свойств абстракции (как касающихся состояния анализируемого объекта, так и определяющих его поведение) в единую программную единицу некий абстрактный тип (класс).
- Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик ее как целого.
Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:
Интерфейс – совокупность доступных извне элементов реализации абстракций (основные характеристики состояния и поведения);
Реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).
Ограничение доступа в ООП позволяет разработчику:
- выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций.
- легко модифицировать реализацию отдельных объектов, что в правильно организованной системе не потребует изменения других объектов.
Инкапсуляция- сочетание объединения всех свойств предмета (составляющих его состояния и поведения) в единую абстракцию и ограничения доступа в реализации этих свойств.
- Модульность – принцип разработки программной системы, предполагающий реализацию её в виде отдельных частей (модулей). При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями.
- Иерархия – ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем.
В ООП используются 2 вида иерархии:
Иерархия «целое/часть» - показывает, что некоторые абстракции включены в рассматриваемую абстракцию как её части, например, лампа, состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования.
Иерархия «общее/частное» - показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристики, возможно, уточнения имеющихся.
Один из важнейших механизмов ООП – наследование свойств в иерархии общее/частное.
Наследование – такое соотношение между абстракциями, когда одна из них использует структурную или функциональную часть другой или нескольких других абстракций (соответственно простое и множественное наследование).
- Типизация – ограничение, накладываемое на свойства объектов и препятствующее взаимозаменяемости абстракций различных типов (или сильно сужающее возможность такой замены). Использование принципа типизации обеспечивает:
- ранее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами;
- упрощение документирования;
- возможность генерации более эффективного кода;
Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции – ранее связывание) и динамически (тип объекта определяется только во время выполнения программы – позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные – указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.
- Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции.
- Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего данный программный объект, и/или в пространстве, перемещаясь из адресного пространства, в котором он был создан.
Различают:
- временные объекты, хранящие промежуточные результаты некоторых действий, например вычислений;
- локальные объекты, существующие внутри подпрограмм, время жизни которых исчисляется от вызова подпрограммы до её завершения;
- глобальные объекты, существующие пока программа загружена в память;
- сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.
+
Объектно-ориентированное программирование требует знания четырех вещей
не факт)
(1) Необходимо понимать базовые концепции, такие как классы, наследование и динамическое связывание. Для программистов, уже знакомых с понятием модуля и с абстрактными типами данных, это потребует минимальных усилий. Для тех же, кто никогда не использовал инкапсуляцию данных, это может означать изменение мировоззрения и способно отнять значительное количество времени на изучение.
(2) Многократное использование требует от программиста познакомиться с большими библиотеками классов. А это может оказаться сложнее, чем даже изучение нового языка программирования. Библиотека классов фактически представляет собой виртуальный язык, который может включать в себя сотни типов и тысячи операций. В языке Smalltalk, к примеру, до того, как перейти к практическому программированию, нужно изучить значительную часть его библиотеки классов. А это тоже требует времени.
(3) Проектирование классов — задача куда более сложная, чем их использование. Проектирование класса, как и проектирование языка, требует большого опыта. Это итеративный процесс, где приходится учиться на своих же ошибках.
(4) Очень трудно изучать классы, не имея возможности их “пощупать”. Только с приобретением мало-мальского опыта можно уверенно себя почувствовать при работе с использованием ООП. Как мы видели, усилия на освоение базовых концепций невелики, но вот в случае библиотек классов и их использования они могут быть очень существенными.
***
PS(пародия на Задорнова): Тихо! Тихо! Не время, не время. Тихо! Набрали воздух, набрали…ждём…ждём. Тишину! Тишину! Потерпите! Вот щас, тишина! Приготовились, готовы? Тихо! Я Вас умоляю. Тихо!
Михаил Владимирович, Михаииил…Владимирович…умоляю Вас, дети уже уснули, полдник у нас в 16.00, пусть отдохнут… — напуганно шептала Вера Николаевна, воспитательница д/с № 96 «Малыш».
PPS(возможно и был такой случай в театре):
Дуняша. Говорите.
Епиходов. Мне бы желательно с вами наедине…(вздыхает)
Дуняша(смущенно). Хорошо… только сначала принесите мне мою тальмочку…Она около шкапа…тут немножко сыро…
Епиходов. Хорошо-с принесу-с…Теперь я знаю, что мнеее…(поворачивается лицом к залу и громко) Да, Вы уже зае..ли лазерной указкой в лицо светить!!!(бросает тальмочку и уходит со сцены)
Да…и зайдите в Размышляешь? там появилась новая pdf версия за последний период
Blogus tags : ООП; программирование



