Основные принципы объектного подхода. Модульность
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Модульностьэто свойство системы, которая была разложена на внутренне связные, но слабо связные между собой модули.

 

· Правильное разбиение программы на модули является столь же важной задачей, что и выбор правильного набора абстракций

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

· Модуль является минимальной единицей переиспользования и размещения

(части модуля нельзя перетащить в другой проект)

 

Принцип инверсии зависимостей (DIP – dependency inversion principle) – модули высокого уровня не должны зависеть от модулей низкого. И те и другие должны зависеть от абстракций

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

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

Согласно Барбаре Лисков «модульность — это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями». В языке C++ это определение по прежнему может быть признано актуальным. В языке C и раннем C++, препроцессор и раздельная компиляция служили основными средствами поддержки рассматриваемого принципа. В процессе эволюции и стандартизации в С++ были введены пространства имен, которые являются средством логического разделения области видимости включаемых в них классов и данных.

 


Основные принципы объектного подхода. Иерархия.

Иерархия – это упорядочивание абстракций путем расположения их по уровням

Виды иерархических отношений :

· Иерархии классов (отношение «is a») – отношение вида родитель-потомок, общее-частное. Реализуется с помощью наследования типов (генерализации)

· Иерархии объектов (отношение «part of») – отношение вида целое часть. Реализуется агрегацией и композицией


1. Наследование означает такое отношение между классами, когда один класс заимствует, а также расширяет и/или специализирует структуру и функциональный контракт одного или нескольких родительских классов.

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

В С++ можно наследоваться от нескольких классов, в то время как, например в Java можно наследоваться только от одного класса, но нескольких интерфейсов, каждый из которых также может наследоваться от одного или нескольких интерфейсов.

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

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

 

Если в программе, написанной на C++, один объект объявлен как обычная (не ссылка и не указатель) переменная (поле) другого объекта, то эти объекты будут находиться в отношении композиции. Связь по времени жизни, в этом случае, обеспечивается самим компилятором (при создание объекта-агрегата будет создан и объект-агрегант; при уничтожении агрегата, агрегант будет уничтожен). В остальных случаях композиция определяется логикой программы (в С++ с помощью ссылок и указателей).

 

 


Дата: 2019-02-19, просмотров: 331.