Bir sınıfın bir varlık referansı varsa, buna Toplama adı verilir. Toplama, HAS-A ilişkisini temsil eder.
Bir durum düşünün, Employee nesnesi id, name, emailId vb. gibi birçok bilgiyi içermektedir. Aşağıda verildiği gibi şehir, eyalet, ülke, posta kodu vb. gibi kendi bilgilerini içeren adres isimli bir nesne daha içermektedir.
class Employee{ int id; String name; Address address;//Address is a class ... }
Bu durumda Çalışanın bir varlık referans adresi vardır, dolayısıyla ilişki Çalışanın HAS-A adresidir.
Toplama neden kullanılmalı?
- Kodun Yeniden Kullanılabilirliği için.
Basit Toplama Örneği
Bu örnekte Circle sınıfı içerisinde Operation sınıfının referansını oluşturduk.
class Operation{ int square(int n){ return n*n; } } class Circle{ Operation op;//aggregation double pi=3.14; double area(int radius){ op=new Operation(); int rsquare=op.square(radius);//code reusability (i.e. delegates the method call). return pi*rsquare; } public static void main(String args[]){ Circle c=new Circle(); double result=c.area(5); System.out.println(result); } }Şimdi Test Edin
Output:78.5
Toplama ne zaman kullanılır?
- Kodun yeniden kullanımı en iyi şekilde bir-bir ilişkisi olmadığında toplama yoluyla elde edilir.
- Kalıtım yalnızca is-a ilişkisinin ilgili nesnelerin ömrü boyunca sürdürülmesi durumunda kullanılmalıdır; aksi takdirde toplama en iyi seçimdir.
Toplamanın anlamlı örneğini anlama
Bu örnekte Çalışanın bir Adres nesnesi vardır, adres nesnesi kendisine ait şehir, eyalet, ülke vb. bilgileri içerir. Bu durumda ilişki Çalışan HAS-A adresidir.
Adres.java
public class Address { String city,state,country; public Address(String city, String state, String country) { this.city = city; this.state = state; this.country = country; } }
Emp.java
public class Emp { int id; String name; Address address; public Emp(int id, String name,Address address) { this.id = id; this.name = name; this.address=address; } void display(){ System.out.println(id+' '+name); System.out.println(address.city+' '+address.state+' '+address.country); } public static void main(String[] args) { Address address1=new Address('gzb','UP','india'); Address address2=new Address('gno','UP','india'); Emp e=new Emp(111,'varun',address1); Emp e2=new Emp(112,'arun',address2); e.display(); e2.display(); } }Şimdi Test Edin
Output:111 varun gzb UP india 112 arun gno UP indiabu örneği indir