ООП РАЗМЫШЛЕНИЯ

Ассоциации: наследование, агрегация, композиция

Ассоциация – какая бы то ни было связь между классами. Различают три типа связи: наследование, агрегация, композиция.

Наследование - создание нового объекта на основе существующего. Это статическое связывание, определяется на стадии компиляции. Используется термин «является». Например, дельфин является млекопитающим. Наследование – высокая связанность. Объекты невозможно разделить в процессе выполнения программы.

Для композиции и агрегации можно использовать термин «содержит». Вот только содержат они по-разному. ... Читать дальше »

Интерфейс и абстрактный класс. Отличия

В Java8 появилась возможность включать в интерфейсы методы, содержащие реализацию – дефолтные и статические методы.

Первая возникающая мысль: что же теперь с множественной имплементацией? Ведь она никуда не делась, а реализация методов появилась. Мы получили те же проблемы, от которых избавлял запрет на множественное наследование? Или были предусмотрены какие-то механизмы, позволяющие предотвратить возможную неоднозначность?

Вторая мысль: чем теперь отличается интерфейс от абстрактного класса? ... Читать дальше »

Абстрактные классы

Класс является абстрактным, если он имеет хотя бы один абстрактный метод. Однако, если класс не имеет ни одного абстрактного метода, он тоже может быть определён как абстрактный. Абстрактные классы не имеют экземпляров, т.е. из абстрактного класса нельзя создать объект. ... Читать дальше »

Приведение дочернего объекта к состоянию родительского

При приведении дочернего объекта к состоянию родительского (сняли с себя весь тюннинг) остаются доступными свойства/методы только родительского класса (или интерфейса, если объект приводился к типу интерфейса). Свойства/методы, определенные в самом дочернем классе в этом случае становятся недоступными. ... Читать дальше »

Посылка сообщений. Повторное использование

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

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

Абстракция

Абстракция – формирование собирательных понятий. Другое определение - работа только со значимыми характеристиками. Суть этого принципа в том, чтобы разделить составные объекты на их элементарные составляющие. Такой подход позволяет работать непосредственно с объектом, не вдаваясь в подробности, из чего же он состоит и как работает. ... Читать дальше »

Полиморфизм

Полиморфизм – это возможность динамического изменения объектов во время выполнения. Например, человек с кем-то ругается – мы говорим, что он «злой»; с кем-то смеётся – мы говорим, что он «веселый». На работе человек приводится к типу «сотрудник», этот же человек на пешеходном переходе приводится к типу «пешеход», в кругу семьи он приводится к типу «отец» и т.д. Т.е. изменение поведения объекта в зависимости от обстоятельств. ... Читать дальше »

Наследование

Наследование – создание нового объекта на основе существующего.

Новый объект будет обладать всеми свойствами и методами, которыми обладает родительский объект, но будет и дополняться своими. Это достигается путём наследования нового класса от базового. Имея свои специфические методы и свойства, дочерний класс расширяет родительский. ... Читать дальше »

Инкапсуляция

Инкапсуляция – скрытие реализации программных частей. Программа разбивается на части, каждая из которых представляет из себя как бы «черный ящик» для остальных частей. Взаимодействие частей друг с другом происходит через интерфейсы. Есть только входящие данные и исходящие. Что происходит внутри – никого не касается. Такой подход обеспечивает безопасность программных частей, а также облегчает их изменение или замену целиком.


Рассмотрим инкапсуляцию из реальной жизни на примере телевизора. ... Читать дальше »
1 2 »