Състав и агрегация

Класовете и обектите могат да бъдат свързани помежду си. Наследяването описва връзка "Е А". Лъвът Е животно. Тази връзка лесно се изразява с помощта на наследяване, където Animalще бъде родителският клас и Lionще бъде дъщерният. Но не всяка връзка в света е правилно описана по този начин. Например, клавиатурата определено има няHowва връзка с компютъра, но не е компютър . Ръцете имат няHowва връзка с човек, но не са човек. Тези случаи представляват различен тип връзка — не „Е А“, а „ИМА А“. Ръцете не са човек, но човек ИМА ръце. Клавиатурата не е компютър, но компютърът ИМА клавиатура. "ИМА". Разликата между тези понятия е в "строгостта" на отношенията. Нека вземем прост пример: Имаме Car. Всяка кола има двигател. Освен това всяка кола може да превозва пътници. Каква е основната разлика между полетата Engine engineи Passenger[] passengers? Ако пътникът Aседи вътре в колата, това не означава, че пътниците Bи Cсъщо не могат да бъдат в колата. Една кола може да побере няколко пътника. Нещо повече, всички пътници могат да излязат от колата, но тя ще продължи да функционира гладко. Връзката между Carкласа и Passenger[] passengersмасива е по-малко строга. Нарича се агрегация . Ето една добра статия по тази тема: Връзки между класове (обекти). Той предоставя друг добър пример за агрегиране. Да кажем, че имаме Studentклас, който представлява студент, и клас StudentGroup, който представлява група студенти. Ученикът може да бъде член на клуб по физика, студентски фен клуб на Междузвездни войни or комедиен клуб. Композицията е по-строг тип отношения. Когато използвате композиция, един обект има друг обект, но не може да принадлежи на друг обект от същия тип. Най-простият пример е автомобилен двигател. Ако една кола има двигател, тогава този двигател не може да принадлежи на друга кола. Както можете да видите, тази връзка е много по-строга от тази на Carи Passengers.Отношения между класове.  Наследяване, състав и агрегация - 4