Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shprora_po_proge.docx
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
518.78 Кб
Скачать
  1. Ood основывается на объектно-ориентированной декомпозиции;

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

Именно объектно-ориентированная декомпозиция отличает объектно-ориентированное проектирование от структурного, поскольку в первом случае логическая структура системы отражается абстракциями в виде классов и объектов, а во втором отражается алгоритмами.

Объектно-ориентированный анализ (object-orientedanalysis, OOA) направлен на создание моделей реальной действительности на основе объектно-ориентированного подхода.

ООА – это методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области.

Соотношения между анализом ООА, проектированием OOD и программированием ООР выглядят следующим образом:

На результатах объектно-ориентированного анализа ООА формируются модели, на которых основывается объектно-ориентированное проектирование OOD. A OOD в свою очередь создает фундамент для окончательной реализации системы с использованием методологии объектно-ориентированного программирования ООР.

23Базовые понятия ООП: инкапсуляция, наследование, полиморфизм.

Для понимания преимуществ объектно-ориентированного программирования необходимо разобраться с тремя ключевыми понятиями ООП:

  • инкапсуляция (encapsulation)

  • наследование (inheritance)

  • полиморфизм (polymorphism)

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

Объединение методов и данных таким способом позволило реализовать принципиально новый тип данных – класс. Порождаемые на основе таких классов переменные получили отдельное наименование – объекты.

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

Другими словами суть инкапсуляции такова: переменные состояния объекта скрыты от внешнего мира. Измн состояний объекта (значений его данных) возможно только с помощью его методов (функций, процедур). Это предотвращает возможность введения объекта в недопустимое состояние и/или несанкционированное разрушение этого объекта.

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

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

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

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

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

Говоря о терминологии, следует обратить внимание на то, что в описаниях языков ООП принято класс, из которого наследуют называть родительскимклассом (parentclass) или базовым (baseclass). Класс, который получается в результате наследования, называется порожденным классом (derivedorchildclass). Родительский класс является более обобщенным, а порожденный класс – более строгий и конкретный, что делает его более удобным в применении.

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

Полиморфизм (в языках программирования) — взаимозаменяемость объектов с одинаковым интерфейсом. Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию - например, реализация класса может быть изменена в процессе наследования.Полиморфизм(от поли... и греч. morphē — форма) – свойство некоторых веществ существовать в нескольких кристаллических состояниях (модификациях) с разной структурой. Пример полиморфизма: алмаз и графит.

В общем смысле, концепцией полиморфизма является идея "один интерфейс, множество методов". Таким образом, можно создавать общий интерфейс для группы близких по смыслу действий.

Преимущество полиморфизма проявляется в том, что он помогает снижать сложность программ, разрешая использование общего интерфейса для единого класса действий.

24 Наследование классов в языке С++.

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

Базовый класс может быть или непосредственным базовым классом производного класса, или его косвенным базовым классом. Косвенный базовый класс не указывается явно в заголовке, а наследуется с некоторого более высокого уровня иерархии классов.

На приведенном рисунке CLASSA является непосредственным базовым классом для CLASSB, и косвенным базовым классом дляCLASS С.

При реализации механизма наследования был введен защищенный тип членов класса protected. Производный класс наследует защищенные (protected) и открытые (public) члены базового класса, а закрытые (private) члены базового класса недоступны для членов производного класса.

Объявление производного класса происходит на основе следующего синтаксиса:

classимя_класса : [public | protected | private ] имя базового класса

{

объявления членов класса

};

Отметим, что перед именем базового класса стоит служебное слово, которое определяет тип происхождения. В языке С++ тип происхождения может быть либо public, либо protected, либо private, причем, privateэто значение по умолчанию.

При выводе класса из открытого (public) базового класса открытые элементы базового класса становятся открытыми членами, а защищенные – защищенными членами производного класса.

При выводе класса из защищенного (protected) базового класса открытые и защищенные члены базового класса становятся защищенными членами производного класса.При выводе класса из закрытого (private) базового класса открытые и защищенные члены базового класса становятся закрытыми членами производного класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]