Обобщение (наследование)
Диаграмма классов, показывающая наследование
двух подклассов от одного суперкласса
Обобщение(Generalization) показывает, что
один из двух связанных классов (подтип) является более частной формой другого
(надтипа), который называется обобщением первого. На практике это означает что любой экземпляр подтипа является также
экземпляром надтипа. Например: животные — супертип млекопитающих, которые в
свою очередь супертип приматов и так далее. Эта взаимосвязь легче всего
описывается фразой «А — это Б» (приматы — это
млекопитающие, млекопитающие — это животные).
Графически генерализация представляется
линией с пустым треугольником у супертипа
Генерализация также известна как
наследование или “is a” взаимосвязь.
Инкапсуляция (ограничение) — свойство
языка программирования, позволяющее объединить и защитить данные и код в объект
и скрыть реализацию объекта от пользователя (прикладного программиста). При
этом пользователю предоставляется только спецификация (интерфейс)
объекта.
Пользователь может взаимодействовать с
объектом только через этот интерфейс. Реализуется с помощью ключевого слова:
public.
Пользователь не может использовать закрытые
данные и методы. Реализуется с помощью ключевых слов: private, protected,
internal.
Инкапсуляция — один из четырёх
важнейших механизмов объектно-ориентированного
программирования (наряду с абстракцией, полиморфизмом и наследованием).
Предостережение: Одна из наиболее
распространенных ошибок — делать сокрытие реализации только ради сокрытия.
Целями, достойными усилий, являются:
предельная локализация изменений при
необходимости таких изменений,
прогнозируемость изменений (какие изменения
в коде надо сделать для заданного изменения функциональности) и
прогнозируемость последствий изменений.
Образ в пример: ложка, опущенная в стакан,
не меняет его свойств и не становится частью стакана, хотя и помогает пить из
него чай; в то же время, сахар, растворенный в чае с помощью ложки, делает его
сладким.
Часто инкапсуляция может быть достигнута
простейшими организационными мерами: знание того, что «вот так-то делать
нельзя» иногда является самым эффективным средством инкапсуляции!