Теперь, представьте, что мы поместили нескольких собак и котов в здоровенный мешок. Затем, мы будем с закрытыми глазами вытаскивать их по одной из мешка. Вытянув зверушку, мы не знаем какого она класса. Но если её погладить, она точно издаст какой-то звук, зависящий от её класса.
bag = [new Cat(), new Dog()];foreach (Animal a : bag) a.makeSound() // Meow!// Bark!Здесь программе не известен конкретный класс объекта в переменной а, но благодаря специальному механизму, называемому полиморфизмом, будет запущен тот метод издания звуков, который соответствует реальному классу объекта.
Полиморфизм — это способность программы выбирать различные реализации, при вызове операций с одним и тем же названием.
С другой стороны, полиморфизм — это способность объектов притворяться чем-то другим. В приведённом выше примере, собаки и коты «притворялись» абстрактными животными.
Отношения между объектамиКроме наследования и реализации есть ещё несколько видов отношений между объектами, о которых мы ещё не говорили.
Ассоциация в UML-диаграммах. Профессор взаимодействует со студентами.
Ассоциация — это когда один объект использует другой, либо зависит от него. В UML ассоциация обозначается простой стрелкой, которая направлена в сторону зависимости. Двустороння ассоциация между объектами вполне допустима.
Композиция в UML-диаграммах. Университет состоит из кафедр.
Композиция — это отношение «часть-целое» между двумя объектами, когда один из них включает в себя другой. Особенность этого отношения заключается в том, что компонент может существовать только как часть контейнера. В UML композиция обозначается линией со стрелкой на одном конце и заполненным ромбом на другом конце. Ромб направлен в сторону контейнера, а стрелка — в сторону включаемого объекта.
Агрегация в UML-диаграммах. Кафедра содержит профессоров.
Агрегация — это менее строгий вариант композиции, когда один объект просто имеет ссылку на другой объект. Здесь контейнер не управляет жизненным циклом компонента. Компонент может существовать отдельно от контейнера. В UML агрегация изображается как композиция, но с пустым ромбом.
ОСНОВЫ ПАТТЕРНОВ Что такое паттерн?Паттерн проектирования — это часто встречаемое решение определённой проблемы при проектировании архитектуры программ.
Комментарии к книге «Погружение в паттерны проектирования», Александр Швец
Всего 0 комментариев