Yani Composition elde etmek için verilerimiz veya nesnelerimiz arasında kurabileceğimiz ilişki türleri Association veya Aggregation olabilir. Bu iki ilişki türünün arasındaki en temel fark ise birisinin verileri kendi içinde barındırması diğerinin ise atıfta bulunmasıdır.
Direct Association(Birliktelik) : İki sınıf arasındaki yapısal ilişkiye verilen isim. Herhangi bir dereceye sahip olacak şekilde aralarında ilişki bulunan sınıflar bu birlikteliğe sahip olurlar. UML gösteriminde düz bir çizgi ile temsil edilmektedir. Bu ilişki bize o iki sınıf arasında mesaj alışverişini sağlayan bir kanalın olduğunu anlatır. Burada Java'da mesaj alışverişinin metot çağrımlarıyla gerçekleştiğini hatırlatmak gerekir. Birliktelikler genellikle referanslar ile gerçekleştirilir.Direct association describes a “has-a” relationship.
Aggregation Association(Münasebet ): "Sahip olma" ("possession") ilişkisini temsil eden özel bir birlikteliktir. An aggregation association represents a “part-of” the whole relationship. Her iki nesne de kendi bağımsız varoluşlarına sahiptir. Örneğin Aggregation ilişkisinde bir nesneden diğer nesneye atıfta bulunulur. Bu durum bir ders ile öğrenci arasındaki ilişkiye benzer. Dersin bitmesi ve ders nesnesinin (object) yok olması durumunda bu dersi alan öğrencilerin varlığı devam eder.
Temporary Association(Gecici) :Bu Temporary bir methotun geri donus deyeri , yerel degisken yada methot parametrei olabilir.Temporary en zayıf şeklidir. Bu ilişki için kalıcı değildir
Multiplicities
İki sınıf arasındaki nasil bir ilişki oldugunu gosterir. 3 bolumden olsur.
- One-to-one multiplicity
- One-to-many multiplicity
- Many-to-many multiplicity.
Class Association Relationships
- One-to-one class association
- One-to-many class association
- Many-to-many class association
public class Truck {
/* This is an example of a one-to-one direct association */
Trailer trailer;
public void setTrailer(Trailer t){
trailer = t;
}
/** Remainder of Truck class would be here */
}
Example One-to-many class association
public class Car {
Wheel[] wheel = new Wheel[4];
Wheel[] wheel = new Wheel[4];
public void setWheels(Wheel w) {
wheel[0] = w;
wheel[1] = w;
wheel[2] = w;
wheel[3] = w;
}
// Remainder of Car class would be here
}
wheel[0] = w;
wheel[1] = w;
wheel[2] = w;
wheel[3] = w;
}
// Remainder of Car class would be here
}
Example Many-to-many class association
// TrafficLight class
public class TrafficLight {
int lightID;
TrafficLight(int ID) {
lightID = ID;
}
}
// Car class
public class Car {
TrafficLight[] allTrafficLights;
Car(TrafficLight[] trafficLights) {
allTrafficLights=trafficLights;
}
}
public class TrafficSimulator {
Car[] cars = new Car[3];
TrafficLight[] trafficLights = new TrafficLight[8];
public static void main(String[] args) {
new TrafficSimulator();
}
TrafficSimulator() {
for (int i = 0; i < trafficLights.length; i++) {
trafficLights[i] = new TrafficLight(i);
}
cars[0] = new Car(trafficLights);
cars[1] = new Car(trafficLights);
cars[2] = new Car(trafficLights);
}
}
Class Composition Relationships
- One-to-One Class Composition
- One-to-Many Class Composition
public class Tire {
TireAirPressure tireAirPressure;
Tire(){
tireAirPressure = new TireAirPressure();
}
}
Example One-to-Many Class Composition
public class SensorStatus {
int status;
public SensorStatus(int newStatus) {
status = newStatus;
}
}
public class CarComputer {
SensorStatus[] sensorStatus = new SensorStatus[5];
public CarComputer() {
sensorStatus[0] = new SensorStatus(1);
sensorStatus[1] = new SensorStatus(1);
sensorStatus[2] = new SensorStatus(1);
sensorStatus[3] = new SensorStatus(1);
sensorStatus[4] = new SensorStatus(1);
}
}
Bu Yaziyi olusturuken kullandigim kaynaklar
http://www.bilgisayarkavramlari.com/2008/12/20/birliktelik-munasebet-ve-olusum-association-aggregation-and-composition/comment-page-1/#comment-43264
No comments:
Post a Comment