Принцип подстановки Лисков (LSP)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Если для каждого объекта o1 типа S существует объект o2 типа T, такой что для всех программ P определенных в терминах T поведение P не изменяется при замене o2 на o1, то S является подклассом T

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

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

Принцип разделения интерфейсов (ISP) - клиенты не должны зависеть от интерфейсов, в которых
не нуждаются. Классы не должны зависеть от контрактов, которые они не используют

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

· Нереализованные методы - верный признак плохого дизайна в данном случае.
Как и некоторые другие принципы, ISP дает больше кода, но также более гибкий дизайн

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

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




Классы. Средства UML для построения диаграмм классов.

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

Диаграмма классов является ключевым элементом в объектно-ориентированном моделировании. На диаграмме классы представлены в рамках, содержащих три компонента:

· В верхней части написано имя класса.

· Посередине располагаются поля (атрибуты) класса.

· Нижняя часть содержит методы класса.

 

Видимость:

“+” public члены

“#” protected члены
“” пакетная видимость
“-” private члены
MAX_SIZE static поля
AbstractClassName abstract class
abstractMethod() abstract method
   
   
   
   

 

Стрелки в UML



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

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

· Агрегация — это разновидность ассоциации при отношении между целым и его частями. Как тип ассоциации агрегация может быть именованной. Одно отношение агрегации не может включать более двух классов (контейнер и содержимое).

· Композиция — более строгий вариант агрегации. Известна также как агрегация по значению.

· Наследование или «is a» взаимосвязь (или отношение «является») графически представляется линией с пустым треугольником у супертипа.

· Реализация — отношение между двумя элементами модели, в котором один элемент (клиент) реализует поведение, заданное другим (поставщиком). Реализация — отношение целое-часть. Графически реализация представляется так же, как и наследование, но с пунктирной линией. Поставщик, как правило, является абстрактным классом или классом-интерфейсом.

Возле конца стрелки, упирающегося в класс возможно указать кратность (мощность) отношения: 0..1, 1, 0..*, 1..* (понятно, что не имеет смысла для отношений между классами типа наследования, реализации) - означает число связей между каждым экземпляром класса (объектом) в начале линии с экземпляром класса в её конце («один-к-одному», «один-ко-многим», «многие-ко-многим»)

 

 



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