Kompozisyonun OOP'de ne olduğunu biliyorum, ancak Toplamanın ne olduğu hakkında net bir fikir edemiyorum. Birisi açıklayabilir mi?
Kompozisyonun OOP'de ne olduğunu biliyorum, ancak Toplamanın ne olduğu hakkında net bir fikir edemiyorum. Birisi açıklayabilir mi?
Yanıtlar:
Basit kurallar:
Örnek 1:
Bir Şirket, İnsanların toplamıdır. Bir Şirket, Hesapların bir bileşimidir. Bir Şirket iş yapmayı bıraktığında, Hesaplar var olmaktan çıkar, fakat Çalışanları var olmaya devam eder.
Örnek 2: (çok basitleştirilmiş)
Bir Metin Düzenleyici'nin bir Tamponu (kompozisyonu) vardır. Bir Metin Düzenleyici, bir Dosya (toplama) kullanır. Metin Düzenleyicisi kapatıldığında, Arabellek imha edilir, ancak Dosyanın kendisi imha edilmez.
Gönderen http://en.wikipedia.org/wiki/Object_composition
Toplanma, mülkiyeti ima etmediği için sıradan kompozisyondan farklıdır. Kompozisyonda, sahibi olan nesne yok edildiğinde, içerilen nesneler de öyledir. Toplanmasında, bu mutlaka doğru değil. Örneğin, bir üniversitenin çeşitli bölümleri vardır (örneğin kimya) ve her bölümün bir çok profesörü vardır. Üniversite kapanırsa, bölümler artık yok olacak, ancak bu bölümlerdeki profesörler var olmaya devam edecek. Bu nedenle, bir üniversite bölümlerin bir bileşimi olarak görülebilir, oysa bölümlerin bir profesör toplantısı vardır. Ayrıca, bir Profesör birden fazla bölümde çalışabilir, ancak bir bölüm birden fazla üniversitenin parçası olamaz.
Yani - kompozisyon ile bir sahiplik ilişkiniz olmasına rağmen, sahip olunan nesne, sahip olduğu zaman da imha edilir - bir toplanma (ve içerdiği nesneler) bağımsız olarak bulunabilir.
-
Güncelleme: Özür dilerim - bu cevap uzun zamandır çok basit.
c.batt cevabında mükemmel bir tanım sağlar: Toplama ve Kompozisyon
Tek bir açıklama yok. Farklı yazarlar, toplanma ile farklı şeyler ifade eder. Çoğu, onun tarafından özel bir şey ifade etmiyor.
Kompozisyon bir dernektir
Toplama bir dernektir
Kompozisyon güçlü bir Birliktir (İçerdiği nesnenin ömrü tamamen konteyner nesnesine bağlıysa, buna güçlü birleşme denir)
Toplama zayıf bir Dernektir (İçerilen nesnenin ömrü konteyner nesnesine bağlı değilse, buna zayıf dernek denir)
Örnek:
class Contained {
public void disp() {
System.out.println("disp() of Contained A");
}
}
public class Container {
private Contained c;
//Composition
Container() {
c = new Contained();
}
//Association
public Contained getC() {
return c;
}
public void setC(Contained c) {
this.c = c;
}
public static void main(String[] args) {
Container container = new Container();
Contained contained = new Contained();
container.setC(contained);
}
}
Kompozisyon (karışım), basit nesneleri veya veri türlerini daha karmaşık olanlarla birleştirmenin bir yoludur. Kompozisyonlar birçok temel veri yapısının kritik bir yapı taşıdır
Toplama (toplama) mülkiyeti ima etmediği için sıradan kompozisyondan farklıdır. Kompozisyonda, sahibi olan nesne yok edildiğinde, içerilen nesneler de öyledir. Toplanmasında, bu mutlaka doğru değil
╔═══════════╦═════════════════════════╦═══════════════════════╗
║ ║ Aggregation ║ Composition ║
╠═══════════╬═════════════════════════╬═══════════════════════╣
║ Life time ║ Have their own lifetime ║ Owner's life time ║
║ Relation ║ Has ║ part-of ║
║ Example ║ Car has driver ║ Engine is part of Car ║
╚═══════════╩═════════════════════════╩═══════════════════════╝
Her ikisi de nesne arasındaki ilişkiyi gösterir ve sadece güçlerinde farklılık gösterir.
İki sınıf arasında farklı bir bağımlılık türü için UML notasyonları
Kompozisyon : Motor, Arabanın bir parçası olduğu için, aralarındaki ilişki Kompozisyondur. İşte Java sınıfları arasında nasıl uygulandıklarını.
public class Car {
//final will make sure engine is initialized
private final Engine engine;
public Car(){
engine = new Engine();
}
}
class Engine {
private String type;
}
Toplama : Kuruluşun çalışanları olarak bir Personeli olduğu için, aralarındaki ilişki Toplamadır. Java sınıfları açısından nasıl göründükleri
public class Organization {
private List employees;
}
public class Person {
private String name;
}
toplanma mermerler bir çanta gibi basit bir koleksiyon
Kompozisyon, bir kutudaki menteşeler gibi dahili / fonksiyonel bağımlılıkları ifade eder.
otomobiller toplam yolcu; arabanın işlevselliğini bozmadan içeri girip çıkıyorlar
lastikler bileşenlerdir; birini kaldırın ve araç artık doğru çalışmıyor
[not: stepne bir agregadır!]
Kompozisyona her zaman 'ihtiyaç' olarak bakarım, yani bir araba bir motora ihtiyaç duyar ve toplanmaya 'bir amaç ile ilgili şeyler' olarak bakarım. Dolayısıyla, araba benzetmesi ile kalmak, benim topluluğum, bir otomobil ve yolcuları bir araya getirmeyi içerebilecek bir yolculuğu temsil etmek olabilir. Yolculuk araca veya yolculara ait değil, belirli bir senaryo ile ilgili verileri topluyorum. Yolculuk tamamlandığında araç ve yolcular devam ediyor. Bir araba sona erdiğinde, araba ve motoru normalde birlikte imha edilir.
Anlamsal olarak, tüm kümeler alt kümelerden oluşur, değil mi? Bu nedenle:
Toplam, bu alt kümelerin baba kümesinden bağımsız olarak var olduğu zamandır. Bir monitörün bir başkasına bağlanması için bilgisayardan çıkarılabileceği gibi.
Kompozisyon, bu alt kümelerin baba kümesinin varlığına bağlı olduğu zamandır. Bir yaprak bir ağacın veya karaciğerin bir parçası olduğu için vücudun bir parçasıdır.
Bu kavramlar, kavramsal olarak iki nesne veya sınıf arasındaki bağımlılık türünden bahsediyor. Doğrudan bir programda, bir toplamda, baba nesnesinin attığı zaman, toplam nesnelerin de atılması gerekir. Bir kompozisyon için aynı senaryoda, birleşik oğul nesneler devam eder, sonra baba nesne dağıtılır.
Peki ya bu basit örnek:
Bir nesne dizisi bir kompozisyondur. Nesnelere yönelik işaretçiler dizisi bir toplamadır.
İlkini silersem, içeriği onunla yok olur. İkincisi ise, işaretçisi silinirken her bir nesneyi silen özel bir yöntem olmadığı sürece, üyelerin varlığını etkilemeden yok olabilir.