Я прошел через множество теорий о том, что такое инкапсуляция и три метода ее реализации, а именно: ассоциация, агрегация и композиция.
Инкапсуляция
Инкапсуляция - это техника, делающая поля в классе приватными и обеспечивающая доступ к полям с помощью открытых методов. Если поле объявлено как личное, оно не может быть доступно никому за пределами класса, тем самым скрывая поля внутри класса. По этой причине инкапсуляция также называется скрытием данных.
Инкапсуляция может быть описана как защитный барьер, который предотвращает случайный доступ кода и данных к другому коду, определенному вне класса. Доступ к данным и коду строго контролируется интерфейсом.
Основным преимуществом инкапсуляции является возможность изменять наш реализованный код, не нарушая код тех, кто использует наш код. С помощью этой функции Encapsulation обеспечивает удобство, гибкость и расширяемость нашего кода.
ассоциация
Ассоциация - это отношения, в которых все объекты имеют свой жизненный цикл, и у них нет владельца. Давайте возьмем пример Учителя и Студента. Несколько учеников могут связываться с одним учителем, а один ученик может связываться с несколькими учителями, но между объектами нет права собственности, и оба имеют свой жизненный цикл. Оба могут создавать и удалять независимо.
агрегирование
Агрегация - это специализированная форма объединения, где все объекты имеют свой жизненный цикл, но есть право собственности, и дочерний объект не может принадлежать другому родительскому объекту. Давайте возьмем пример кафедры и преподавателя. Один учитель не может принадлежать нескольким отделам, но если мы удалим отдел, объект учителя не будет уничтожен. Мы можем думать об этом как об отношениях «есть».
Сочинение
Композиция снова является специализированной формой агрегации, и мы можем назвать это «смертью» отношений. Это сильный тип агрегации. Дочерний объект не имеет своего жизненного цикла, и если родительский объект удаляет все дочерние объекты, они также будут удалены. Давайте снова возьмем пример отношений между Домом и комнатами. Дом может содержать несколько комнат, но в нем нет самостоятельной жизни, и любая комната не может принадлежать двум разным домам. Если мы удалим дом, комната будет автоматически удалена.
Вопрос в том:
Теперь это все примеры из реальной жизни. Я ищу описание того, как использовать эти методы в реальном коде класса. Я имею в виду, какой смысл использовать три различных метода для инкапсуляции , как эти методы могут быть реализованы и как выбрать, какой метод применим в данный момент.