ООП-термины…

Июль 14, 2007

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

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

Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений.

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

  1. Абстрагирование – процесс выделения абстракций в предметной области задачи.

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

  1. Ограничение доступа сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик ее как целого.

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

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

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

Ограничение доступа в ООП позволяет разработчику:

— выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций.

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

Инкапсуляция— сочетание объединения всех свойств предмета (составляющих его состояния и поведения) в единую абстракцию и ограничения доступа в реализации этих свойств.

  1. Модульность – принцип разработки программной системы, предполагающий реализацию её в виде отдельных частей (модулей). При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями.
  2. Иерархия – ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем.

В ООП используются 2 вида иерархии:

Иерархия «целое/часть» — показывает, что некоторые абстракции включены в рассматриваемую абстракцию как её части, например, лампа, состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования.

Иерархия «общее/частное» — показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристики, возможно, уточнения имеющихся.

Один из важнейших механизмов ООП – наследование свойств в иерархии общее/частное.

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

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

— ранее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами;

— упрощение документирования;

— возможность генерации более эффективного кода;

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

  1. Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции.
  2. Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего данный программный объект, и/или в пространстве, перемещаясь из адресного пространства, в котором он был создан.

Различают:

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

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

глобальные объекты, существующие пока программа загружена в память;

сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.

+

Объектно-ориентированное программирование требует знания четырех вещей:(не факт)

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

(2) Многократное использование требует от программиста познакомиться с большими библиотеками классов. А это может оказаться сложнее, чем даже изучение нового языка программирования. Библиотека классов фактически представляет собой виртуальный язык, который может включать в себя сотни типов и тысячи операций. В языке Smalltalk, к примеру, до того, как перейти к практическому программированию, нужно изучить значительную часть его библиотеки классов. А это тоже требует времени.

(3) Проектирование классов — задача куда более сложная, чем их использование. Проектирование класса, как и проектирование языка, требует большого опыта. Это итеративный процесс, где приходится учиться на своих же ошибках.

(4) Очень трудно изучать классы, не имея возможности их «пощупать». Только с приобретением мало-мальского опыта можно уверенно себя почувствовать при работе с использованием ООП. Как мы видели, усилия на освоение базовых концепций невелики, но вот в случае библиотек классов и их использования они могут быть очень существенными.

***

PS(пародия на Задорнова): Тихо! Тихо! Не время, не время. Тихо! Набрали воздух, набрали…ждём…ждём. Тишину! Тишину! Потерпите! Вот щас, тишина! Приготовились, готовы? Тихо! Я Вас умоляю. Тихо!

Михаил Владимирович, Михаииил…Владимирович…умоляю Вас, дети уже уснули, полдник у нас в 16.00, пусть отдохнут… — напуганно шептала Вера Николаевна, воспитательница д/с № 96 «Малыш».

PPS(возможно и был такой случай в театре):

Дуняша. Говорите.

Епиходов. Мне бы желательно с вами наедине…(вздыхает)

Дуняша(смущенно). Хорошо… только сначала принесите мне мою тальмочку…Она около шкапа…тут немножко сыро…

Епиходов. Хорошо-с принесу-с…Теперь я знаю, что мнеее…(поворачивается лицом к залу и громко) Да, Вы уже зае..ли лазерной указкой в лицо светить!!!(бросает тальмочку и уходит со сцены)

Да…и зайдите в Размышляешь? там появилась новая pdf версия за последний период

Один ответ to “ООП-термины…”


Comments are closed.