Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
130273_03FB1_shpory_po_obektno_orientirovannomu....doc
Скачиваний:
45
Добавлен:
24.12.2018
Размер:
650.24 Кб
Скачать
  1. Модульность в ооп, связность и связанность

Модульность – свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне связных, но слабо связанных между собой модулей

Модульность — в языках программирования — принцип, согласно которому программное средство (ПС, программа, библиотека, web-приложение и др.) разделяется на отдельные именованные сущности, называемые модулями. Модульность часто является средством упрощения задачи проектирования ПС и распределения процесса разработки ПС между группами разработчиков. При разбиении ПС на модули для каждого модуля указывается реализуемая им функциональность, а также связи с другими модулями.

Связанность - характеристика взаимосвязи модуля с другими модулями (сравни со связностью).

Связность - характеристика внутренней взаимосвязи между частями одного модуля (сравни со связанностью).

  1. Иерархия в ооп, полиморфизм, определения и примеры

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

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

Для иерархии классов, состоящей из нескольких уровней, деструкторы вызываются в порядке, строго обратном вызову конструкторов: сначала вызыва­ется деструктор класса, затем — деструкторы элементов класса, а потом де­структор базового класса.

Теперь попробуем учесть отличия руководителя от просто работника, заключающиеся в особенности вычисления заработной платы. Метод get_salary() в таком случае должен возвращать не просто значение атрибута salary, определяющего тариф по ставке работника…

const double employee::get_salary()

{

return salary;

}

…, а ещё и учитывать величину надбавки:

const double manager::get_salary()

{

double add = 0; list<employee*>::iterator i;

for (i = Employers.begin(); i != Employers.end(); i++)

{

add += 0.03*(*i)->get_salary();

}

return salary+add;

}

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

Для того чтобы иметь возможность переопределить поведение метода get_salary() в подклассе manager, мы объявили его в классе employee как виртуальный.

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

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

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

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

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