Повторное использование кода – одно из многих преимуществ ООП (объектно-ориентированного программирования). Возможность повторного использования возможна благодаря различным типам отношений, которые могут быть реализованы между классами. В этой статье будут продемонстрированы типы отношений (от слабых до сильных) с использованием примеров кода Java и символов на диаграмме классов UML (унифицированный язык моделирования).
Зависимость
Это связь, когда объекты одного класса ненадолго взаимодействуют с объектами другого класса. Обычно множественность не имеет смысла в зависимости.
class Move { public void Roll() { ... } } class Player { public void PerformAction(Move move) { move.Roll(); } }
Ассоциация
Эта связь возникает, когда объекты одного класса знают объекты другого класса. Отношения могут быть один к одному, один ко многим, многие к одному или многие ко многим. Более того, объекты могут создаваться или удаляться независимо друг от друга.
public static void main (String[] args) { Doctor doctorObj = new Doctor("Rick"); Patient patientObj = new Patient("Morty"); System.out.println(patientObj.getPatientName() + " is a patient of " + doctorObj.getDoctorName()); }
Агрегация
Это отношения типа “имеет-а” и односторонняя форма ассоциации. Эта связь существует, когда класс владеет, но совместно использует ссылку на объекты другого класса.
class Address{ //code here } class StudentClass{ private Address studentAddress; //code here }
Композиция
Это тип отношений “часть” и является сильным типом ассоциации. Другими словами, композиция происходит, когда класс владеет и содержит объекты другого класса.
class Room { //code here } class House { private Room room; //code here }
Наследование
Это тип отношений “есть-есть”. Это механизм, который позволяет классу приобретать свойства и поведение существующего класса (или иногда нескольких классов, если язык допускает множественное наследование).
abstract class Vehicle { //code here } class Car extends Vehicle { //code here }
Примечание: При чтении диаграммы классов UML отправная точка отсутствует. Вам решать, с чего начать. Просто следуйте за отношениями, и тогда вы сможете начать понимать и анализировать свойства, поведение и отношения классов.
Оригинал: “https://dev.to/tommyc/common-types-of-oop-relationships-and-their-uml-representation-5b27”