it-swarm-tr.com

Toplama ve Kompozisyon

OOP'taki kompozisyonun ne olduğunu anlıyorum, ancak Toplamanın ne olduğu hakkında net bir fikir edemiyorum. Birisi açıklayabilir mi?

220
Vinoth Kumar C M

Basit kurallar:

  1. A "sahibi" B = Kompozisyon: B'nin A olmadan sistemde bir anlamı veya amacı yoktur
  2. A "kullanır" B = Toplama: B, A'dan bağımsız olarak (kavramsal olarak) bulunur

Örnek 1:

Bir Şirket, Halkların bir araya gelmesidir. Bir Şirket, Hesapların bir bileşimidir. Bir Şirket iş yapmayı bıraktığında, Hesapları ortadan kalkar ancak Çalışanları var olmaya devam eder.

Örnek 2: (çok basitleştirilmiş)

Bir Metin Düzenleyicisi bir Arabelleğe (bileşime) sahiptir. Bir Metin Düzenleyicisi bir Dosya (toplama) kullanır. Metin Düzenleyicisi kapatıldığında, Arabellek yok edilir ancak Dosyanın kendisi yok olmaz.

333
Curtis Batt

http://en.wikipedia.org/wiki/Object_composition adresinden

Toplama, sahiplik anlamına gelmediği için sıradan kompozisyondan farklıdır. Kompozisyonda, sahip olan nesne yok edildiğinde, içerilen nesneler de yok olur. Toplamada, bu her zaman doğru değildir. Örneğin, bir üniversitenin çeşitli bölümleri (örn. Kimya) vardır ve her bölümün çeşitli profesörleri vardır. Üniversite kapanırsa, bölümler artık mevcut olmayacak, ancak bu bölümlerdeki profesörler var olmaya devam edecektir. Bu nedenle, bir üniversite bölümlerin bir bileşimi olarak görülebilirken, bölümlerin bir profesör topluluğu vardır. Buna ek olarak, bir Profesör birden fazla bölümde çalışabilir, ancak bir bölüm birden fazla üniversitenin parçası olamaz.

Böylece - kompozisyonla bir sahiplik ilişkiniz olsa da, sahip olunan sahip olunan nesne de yok olur - bir toplama (ve içerilen nesneler) bağımsız olarak var olabilir.

-

Güncelleme: Özür dilerim - bu cevap geçmişte çok basit.

@Curtis Batt cevabında mükemmel bir tanım sunuyor: Toplama ve Kompozisyon

38
HorusKol

Tek bir açıklama yok. Farklı yazarlar toplama yoluyla farklı şeyler ifade eder. Birçoğu bunun özel bir anlamı yok.

20
reinierpost
  • Kompozisyon Bir Birliktir

  • Toplama bir Birliktir

  • Kompozisyon bir strong İlişkilendirme (İçerilen nesnenin ömrü tamamen kap nesnesine bağlıysa, buna güçlü ilişkilendirme denir)

  • Toplama bir zayıf İlişkilendirme (İçerilen nesnenin ömrü kap nesnesine bağlı değilse, zayıf ilişkilendirme olarak adlandırılır)

Misal:

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);
    } 
}
20
Pawan

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 (koleksiyon), sahiplik anlamına gelmediği için sıradan kompozisyondan farklıdır. Kompozisyonda, sahip olan nesne yok edildiğinde, içerilen nesneler de yok olur. Toplamada, bu mutlaka doğru değildir

╔═══════════╦═════════════════════════╦═══════════════════════╗
║           ║       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. enter image description here

İki sınıf arasında farklı türden bağımlılıklar için UML gösterimleri enter image description here

Kompozisyon : Motor Arabanın bir parçası olduğundan, aralarındaki ilişki Kompozisyon'dur. Java dersleri arasında nasıl uygulandıkları aşağıda açıklanmıştır.

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ışan olarak Kişisi olması nedeniyle, aralarındaki ilişki Toplamadır. Java dersleri açısından nasıl göründükleri)

public class Organization {
    private List employees;
}


public class Person {
    private String name;   
}

Kaynak

13
Premraj

toplama bir mermerler torbası gibi basit bir koleksiyon

kompozisyon, bir kutudaki menteşeler gibi iç/fonksiyonel bağımlılıkları ima eder

arabalar toplu yolcuları; aracın işlevselliğini bozmadan içeri girip çıkıyorlar

lastikler bileşenlerdir; birini çıkarın ve araç artık doğru çalışmıyor

[not: yedek lastik bir agregadır!]

7
Steven A. Lowe

Kompozisyona her zaman 'bir ihtiyaç', yani bir araba bir motora ihtiyaç duyuyorum ve toplamaya 'bir amaç için ilgili şeyler' olarak bakıyorum. Bu yüzden araba benzetmesini sürdürmek, benim toplantım, bir araba ve yolcuları bir araya getirmeyi içerebilecek bir yolculuğu temsil etmek olabilir. Yolculuk arabaya veya yolculara sahip değil, belirli bir senaryo ile ilgili verileri topluyorum. Yolculuk tamamlandığında araba ve yolcular devam eder. Bir araba bittiğinde, araba ve motoru normalde birlikte imha edilir.

2
Lazarus

Anlamsal olarak, tüm kümeler alt kümelerden yapılır, değil mi? Bu nedenle:

  • Toplama, bu alt kümelerin baba kümesinden bağımsız olarak var olduğu zamandır. Monitör başka bir bilgisayara bağlanmak için bilgisayardan çıkarılabilir.

  • 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, iki nesne veya sınıf arasındaki kavramsal olarak bağımlılık türünden bahseder. Doğrudan bir programda, bir toplamada, baba nesnesi elverdiği zaman, toplu nesneler de atılmalıdır. Bir kompozisyon için aynı senaryoda, baba nesnesi dağıtıldıktan sonra kompozit oğul nesneleri devam edecektir.

0
Negarrak

Bu basit örneğe ne dersiniz:

Bir nesne dizisi bir bestedir. Nesnelere bir işaretçi dizisi bir kümedir.

İlkini silersem, içeriği kaybolur. İkincisi ise, işaretçisi silinirken her bir nesneyi silen belirli bir yöntem olmadığı sürece üyelerinin varlığını etkilemeden yok olabilir.

0
user2831074