• Buradasın

    Java'da Nesneler Arası İlişkiler: Aggregation ve Composition

    youtube.com/watch?v=VB3IYZEV9vc

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan Java programlama dili eğitim içeriğidir. Eğitmen, nesne yönelimli programlamada nesneler arası ilişkileri anlatmaktadır.
    • Video, aggregation (agregasyon) ve composition (kompozisyon) kavramlarını karşılaştırmalı olarak ele almaktadır. Önce UML gösterimleriyle bu iki ilişki tipi tanıtılmakta, ardından aggregation için Classroom ve Student sınıfları, composition için ise House ve Room sınıfları üzerinden kod örnekleri verilmektedir. Eğitmen, aggregation'da bir nesne silindiğinde parçalarının hala var kalırken, composition'da bir nesne silindiğinde parçalarının da otomatik olarak silindiğini vurgulamaktadır.
    • Video içeriğinde ayrıca toString metodunun override edilmesi, encapsulation kavramı, ArrayList kullanımı ve nesnelerin yok edilme işlemleri gibi konular da ele alınmaktadır. Eclipse uygulamasında kod yazarak ve örnekler göstererek konu detaylı bir şekilde açıklanmaktadır.
    Java'da Nesneler Arası İlişkiler
    • Bu ders Java'daki nesneler arası ilişkilerden ve kompozisyona ait örnekleri gösterecek.
    • İçerme (aggregation) ve kompozisyon (composition) ilişkileri, bütün-parça ilişkileridir.
    • Kompozisyon, aggregation'a göre daha kuvvetli bir ilişki oluşturur.
    00:39İçerme ve Kompozisyon Örnekleri
    • İçerme ilişkisinde bir araba sınıfı motor, şase ve lastik gibi parçalardan oluşur.
    • Kompozisyon ilişkisinde beden ve bedenin organları (baş, gövde, el, ayak) örneği verilmiştir.
    • İçerme ilişkisinde araba nesnesi ortadan kaldırıldığında, motor, şase veya lastik sınıflarından üretilen nesneler tek başına var olmaya devam edebilir.
    • Kompozisyon ilişkisinde beden sınıfından üretilen nesne ortadan kaldırıldığında, baş, gövde, el ve ayak nesneleri de kullanılamaz hale gelir.
    01:52UML Gösterimleri ve Örnekler
    • UML gösteriminde her iki ilişki de elmas şeklinde gösterilir, ancak aggregation'da elmasın içi boş, composition'da ise dolu gösterilir.
    • Kodlama örneği olarak aggregation için classroom ve student sınıfları kullanılacak.
    • Composition örneğinde ise ev ve oda ilişkisi gösterilecek.
    • Aggregation örneğinde sınıf ortadan kaldırıldığında öğrenciler hala var olmaya devam ederken, composition örneğinde ev ortadan kaldırıldığında odalar da kullanılamaz hale gelir.
    03:39Kodlama Örneği
    • Eclipse uygulamasında bir proje oluşturulup aggregation ilişkisi için kodlama başlanıyor.
    • Classroom ve Student sınıfları oluşturuluyor.
    • Student sınıfına öğrenci numarası ve isim parametreleri alan bir constructor tanımlanıyor.
    • Classroom sınıfına öğrencileri eklemek için bir ArrayList oluşturuluyor.
    • Classroom sınıfına studentAdd adında bir metod tanımlanıyor ve bu metotta ArrayList'e öğrenci eklemesi yapılıyor.
    12:53Classroom Sınıfında Öğrencileri Gösterme
    • Classroom sınıfına eklenen öğrencileri görmek için "System.out.print" kullanarak sınıfın içeriğini yazdırmaya çalışılır.
    • Sınıfı doğrudan yazdırdığımızda sadece sınıfın adı ve hash kodu görüntülenir, istenen verileri göstermek için "toString" metodunu override etmek gerekir.
    • Java'da tüm sınıflar Object sınıfından kalıtım alır ve bu nedenle Object sınıfının metodlarını override edebiliriz.
    14:57toString Metodunu Override Etme
    • Classroom sınıfında "toString" metodunu override ederek, sınıfın içeriğini özelleştirebiliriz.
    • Override edilen "toString" metodu, sınıfın içeriğini döndürmek için kullanılacak bir string değişkeni tanımlar.
    • Öğrencilerin isimlerini göstermek için "students" listesini "foreach" döngüsü ile gezerek her öğrenci için isim ve numara bilgilerini toplayabiliriz.
    17:41Encapsulation ve Getter Metotları
    • Öğrencilerin isim ve numara bilgilerine erişmek için "get" metotları tanımlanmalıdır çünkü bu değişkenler private olarak tanımlanmıştır.
    • Encapsulation prensibi gereği doğrudan private değişkenlere erişmek yerine "getter" metotları kullanılır.
    • "toString" metodunda her öğrenci için "getname" ve "getid" metotları kullanılarak isim ve numara bilgileri alınır.
    20:19Öğrenci Bilgilerini Listeleme
    • "toString" metodunda bir string değişkeni tanımlanır ve her öğrenci için isim ve numara bilgileri bu değişkene eklenir.
    • Döngü sonunda tüm öğrencilerin bilgileri birlikte döndürülür ve ekrana yazdırılır.
    • Sınıf nesnesi silindiğinde bile öğrenci nesneleri hala mevcut kalır ve ayrı ayrı erişilebilir.
    25:54Composition Örneği
    • Aggregation örneğinde sınıf silindiğinde öğrenciler hala mevcut kalır, ancak composition ilişkisinde üst sınıf ortadan kalktığında alt sınıflar da erişilemez olmalıdır.
    • Bir sonraki örnekte "House" sınıfı ile composition ilişkisini göstermek için kodlanacak.
    26:31Kompozisyon Kavramı
    • Kompozisyon, bir sınıfın başka bir sınıfın nesnelerini içine alarak daha kuvvetli bir ilişki kurmasını sağlar.
    • Ev sınıfı, oda sınıfından türetilen nesneleri içerecek ve oda nesneleri sadece ev nesnesi varken var olabilecek.
    • Ev nesnesi silindiğinde, içindeki oda nesneleri de otomatik olarak silinmelidir.
    28:42Kompozisyonun Kodlanması
    • Kompozisyon, kuvvetli ilişkinin olacağı sınıfın constructor'ında kodlanmalıdır.
    • Oda nesneleri, house sınıfının constructor'ında oluşturulmalıdır, böylece home nesnesi silindiğinde odalar da silinir.
    • Aggregation'da main metodunda oluşturulan nesneler sınıf silindiğinde bile var olmaya devam ederken, kompozisyonda böyle bir durum istenmez.
    30:03Oda Sınıfı ve Nesnelerin Oluşturulması
    • Oda sınıfından üç adet nesne (r1, r2, r3) oluşturulacak ve bunlara isim ve m2 değerleri atanacak.
    • Oda sınıfına isim ve m2 parametreli bir constructor eklenmelidir.
    • Constructor'da dışarıdan gelen parametreler sınıfın değişkenlerine atanır.
    34:16Liste Yapısı Kullanımı
    • Ev nesnesine birden fazla oda nesnesi atamak için bir liste yapısı (ArrayList) kullanılır.
    • Rooms isimli bir ArrayList oluşturulur ve buraya oda nesneleri add metoduyla eklenir.
    • Bu şekilde home nesnesinde üç tane oda nesnesi bir arada bulunur.
    37:01String Metodu Override Etme
    • Home nesnesinin içeriğini yazdırmak için string metodu override edilir.
    • Override edilen string metodu içinde, odaların isimlerini alt alta yazdırmak için foreach döngüsü kullanılır.
    • Bu şekilde, home nesnesinin içindeki odaların isimleri ekrana yazdırılabilir.
    38:32Iterator Kullanımı ve Getter/Setter Oluşturma
    • Iterator, gezilecek nesnelerin tipini ve hangi listede gezileceğini gösterir.
    • "get name" fonksiyonu için Room sınıfında get ve set metodlarını oluşturmak gerekiyor.
    • Getter/Setter oluşturmak için "source'a gelip generate getter setter" seçeneği kullanılıyor.
    40:05ToString Metodu ve Nesne Bilgilerini Yazdırma
    • ToString metodu override edilerek, her iterasyonda bulunan odaların isimleri ekleyerek bir string oluşturuluyor.
    • Home nesnesinin içeriği yazdırılarak hangi odalara sahip olduğu görüntüleniyor.
    • Get name yerine get alan kullanılırsa, odaların metrekare bilgileri yazdırılabilirdi.
    41:58GetMetrekare Metodu Oluşturma
    • GetMetrekare metodu, verilen odanın metrekare bilgisini döndüren bir fonksiyon olarak tanımlanıyor.
    • Metodun dönüş tipi string olup, bir string parametre alıyor.
    • For-each döngüsü kullanılarak rooms listesindeki nesneler geziliyor ve odanın ismi parametre ile karşılaştırılıyor.
    48:29Kompozisyon İlişkisinin Avantajları
    • Home nesnesi silindiğinde, içindeki oda nesneleri de otomatik olarak siliniyor.
    • Kompozisyonda, bir sınıfın nesnesi silindiğinde içindeki nesnelere erişim de kapanıyor.
    • Bu, aggregation'daki gibi sınıf silindiğinde hala öğrenci verilerine erişim kalması durumundan farklıdır.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor