Ключова разлика – Агрегиране срещу композиция в Java
Агрегацията е асоциация между два обекта, която описва връзката „има-а“. Композицията е по-специфичният тип агрегиране, което предполага собственост. Ключовата разлика между агрегацията и композицията в Java е, че ако съдържащият се обект може да съществува без съществуването на притежаващия обект, това е агрегация, а ако съдържащият се обект не може да съществува без съществуването на притежаващия обект, това е композиция.
Обектно-ориентираното програмиране (ООП) е основна парадигма в разработката на софтуер. Използва се за моделиране на софтуера с помощта на обекти. Обектите се създават с помощта на класове. Класът се състои от свойства и методи. В софтуера има множество обекти. Всеки обект си сътрудничи помежду си чрез предаване на съобщения. Връзката между два обекта е известна като асоциация. И агрегацията, и композицията са два вида асоцииране. Връзката „има-а“описва, че един обект може да използва друг обект. Агрегирането и съставянето могат да бъдат реализирани на поддържащи OOP езици. Ако съдържащият се обект може да съществува без съществуването на притежаващия обект, тогава връзката между тези два обекта е агрегиране. Ако съдържащият се обект не може да съществува без съществуването на притежаващия обект, тогава връзката между тези два обекта е композиция.
Какво е агрегиране в Java?
Агрегацията е вид асоциация. Ако даден клас има препратка към обект, това е известно като агрегиране. Агрегирането представлява връзката има-има. Обектът Student може да има свойства като student_id, име, адрес. Този обект може да има и друг обект, наречен адрес, със собствена информация като град, щат, държава. В тази ситуация ученикът има референтен адрес на обект. Това е връзка „има-а“.
Фигура 01: Маркира клас
Фигура 02: Основна програма за описание на агрегирането
Съгласно горната програма, класът Марки се състои от три свойства, които са оценки по математика, английски и природни науки. Ученикът има обект от марки. Той има свои собствени свойства, които са белези на математиката, английския език и науката. В основния метод се създава обект от Marks и се присвояват стойности на марки. Обектът ученик, който е s1, може да използва обекта marks, който е m1. Следователно ученикът и марките имат връзката „има“. Обектът Marks може да съществува без обекта Student. Следователно това е агрегация.
Какво е композиция в Java?
Композицията е вид асоциация. Това е специфична форма на агрегиране, която предполага собственост. Да приемем, че има два класа, наречени клас A и B. Ако обектът от клас B не може да съществува, ако обектът от клас A е унищожен, тогава това е композиция. Една книга се състои от много страници. Ако книгата бъде унищожена, страниците също ще бъдат унищожени. Обектите страница не могат да съществуват без обекта книга. Вижте програмата по-долу.
Фигура 03: Класна стая Клас
Фигура 04: Училищен клас
Фигура 05: Основна програма за описание на композиция
Съгласно горната програма, Classroom има две свойства, които са name и numOfStudents. Училището е колекция от обекти на класната стая. В основния метод се създават два обекта Classroom. Те се добавят към „класни стаи“. Тези „класни стаи“се предават на училищния обект. И накрая, името на класната стая и броят на учениците се отпечатват чрез итерация през колекцията. Ако училищният обект бъде унищожен, обектите на класната стая също ще бъдат унищожени. Това е пример за композиция. Той също така съдържа връзката „има-а“и също предполага собственост.
Каква е връзката между агрегирането и композицията в Java?
Агрегирането и Композицията са два типа асоцииране, а Композицията е специализиран тип Агрегиране. Композицията е подмножество на агрегацията
Каква е разликата между агрегиране и композиция в Java?
Агрегация срещу композиция в Java |
|
Агрегацията е асоциация между два обекта, която описва връзката „има“. | Композицията е по-специфичен тип агрегиране, което предполага собственост. |
Използване | |
Агрегацията се използва, когато един обект използва друг обект. | Композицията се използва, когато един обект притежава друг обект. |
Влияние върху обекти | |
При агрегиране унищожаването на притежавания обект няма да засегне съдържащия се обект. | При композиция, унищожаването на притежавания обект ще засегне съдържащия се обект. |
Резюме – Агрегиране срещу композиция в Java
Агрегацията и композицията са две концепции в ООП. Връзката „има-а“описва, че един обект може да използва друг обект. Агрегирането е асоциация между два обекта, която описва връзката „има-а“. Композицията е по-специфичен тип агрегиране, което предполага собственост. Разликата между агрегирането и композицията в Java е, че ако съдържащият се обект може да съществува без съществуването на притежаващия обект, това е агрегиране и ако съдържащият се обект не може да съществува без съществуването на притежаващия обект, това е композиция.