BİLGİSAYAR BİLİMİ KUR 1 - 2. DÖNEM 15. HAFTA - NESNE YÖNELİMLİ PROG. - BİLEŞİM VE TOPLAMA - COMPOSİTİON - AGGREGATİON
- egitimdebilisim.com
- 14 Tem 2024
- 3 dakikada okunur
Güncelleme tarihi: 31 Mar
ÜNİTE:
1.3. PROGRAMLAMA
KAZANIMLAR:
1.3.5.1. Çevrimiçi araçları kullanarak belirlenen programlama dilinde ileri uygulamaların yer aldığı özgün proje geliştirir.
PYTHON - Composition (Bileşim) ve Aggregation (Toplama)
Nesne Yönelimli Programlama (OOP) konseptlerinden olan Composition ve Aggregation, sınıflar arası ilişki kurmanın iki farklı yoludur. Her iki yöntem de "bir sınıfın diğer bir sınıfı kullanması" prensibine dayanır, ancak aralarındaki fark, bu ilişkinin derecesinde ve bağımlılık durumundadır.
1. Composition (Bileşim)
Tanım:
Bir sınıf, başka bir sınıfın bir parçası olarak içerildiğinde bileşim oluşur. Bu durumda, içerilen sınıf, kapsayıcı sınıfa tamamen bağımlıdır. Kapsayıcı sınıf yok edilirse içerilen sınıf da yok olur.
Özellikleri:
"Parça-bütün" ilişkisi vardır (örn. bir araba motoru içerir).
Kapsayıcı sınıf, içerdiği nesnelerin sahibidir.
İçerilen nesne, kapsayıcı sınıfın bir parçasıdır ve onun yaşam döngüsüne bağlıdır.
Örnek:

Kullanım:

Yukarıdaki örnekte, Motor sınıfı tamamen Araba sınıfına bağımlıdır. Araba nesnesi yok edilirse, motor da yok olur.
2. Aggregation (Toplama)
Tanım:
Aggregation, bir sınıfın başka bir sınıfı kullanması veya onunla çalışması durumudur. Ancak bu ilişki, bileşimdeki gibi güçlü değildir. Bir sınıf, başka bir sınıfın sahibi değildir. İçerilen nesne bağımsızdır ve başka yerlerde de kullanılabilir.
Özellikleri:
"Parça-bütün" ilişkisi yoktur, daha gevşek bir bağ vardır.
İçerilen nesne, kapsayıcı sınıftan bağımsızdır.
İki sınıf, birbirinden bağımsız olarak var olabilir.
Örnek:

Kullanım:

Yukarıdaki örnekte, Yazar ve Kitap birbirinden bağımsız nesnelerdir. Kitap, Yazar nesnesine referans verir ama ona bağımlı değildir. Aynı yazar, başka kitaplarla da ilişkilendirilebilir.
Composition ve Aggregation Arasındaki Farklar
Özellik | Composition (Bileşim) | Aggregation (Toplama) |
İlişki tipi | Güçlü (sahiplik) | Zayıf (bağlılık yok) |
Bağımlılık durumu | İçerilen nesne, kapsayıcı sınıfa tamamen bağımlıdır. | İçerilen nesne, bağımsız olarak var olabilir. |
Yaşam döngüsü | Kapsayıcı sınıf yok edilirse, içerilen sınıf da yok olur. | Kapsayıcı sınıf yok edilse bile içerilen nesne varlığını sürdürür. |
Kullanım amacı | "Parça-bütün" ilişkisi kurmak. | Birden çok yerde kullanılabilir nesnelerle ilişki kurmak. |
Composition (Bileşim) ve Aggregation (Toplama) Özet Video:
Composition (Bileşim) ve Aggregation (Toplama) Alıştırmaları:
Composition (Bileşim) Alıştırma Sorusu: Bilgisayar ve Ekran İlişkisi
Bir bilgisayarın ekranını simüle etmek için iki sınıf tanımlayacağız. Birincisi, ekranın çözünürlüğünü tutacak ve bu çözünürlükle ilgili bilgi verecek bir Ekran sınıfıdır. İkincisi ise bir bilgisayarı temsil eden Bilgisayar sınıfıdır. Bilgisayar sınıfı, içinde bir ekran nesnesi barındıracak ve bilgisayar çalıştığında ekranın çözünürlüğü hakkında bilgi verecektir.
Adım 1: Ekran Sınıfı
Ekran sınıfı, bir ekranın çözünürlüğünü saklayacak ve bu çözünürlüğü gösterecek bir fonksiyon içerecektir.
init(self, cozunurluk) fonksiyonu, ekranın çözünürlüğünü alacak ve bu bilgiyi bir özelliğe (atribüt) atayacaktır.
goruntu_ver(self) fonksiyonu ise, ekranın çözünürlüğünü ekrana yazdıracaktır
Adım 2: Bilgisayar Sınıfı
Bilgisayar sınıfı, bir bilgisayarın markasını saklayacak ve içinde bir Ekran nesnesi bulunduracaktır. Bilgisayar çalıştığında, ekranın çözünürlüğü de ekrana yazdırılacaktır.
init(self, marka, cozunurluk) fonksiyonu, bilgisayarın markasını alacak ve ekranı oluşturacaktır.
calistir(self) fonksiyonu, bilgisayarın çalıştığını belirtip, ekranın çözünürlüğünü ekrana yazdıracaktır.
Adım 3: Test Kodunu Yazın
Yukarıdaki sınıfları tanımladıktan sonra, bilgisayarın ve ekranın doğru çalışıp çalışmadığını test etmek için kod yazın.
Çözüm:


Açıklamalar:
Ekran sınıfı, ekranın çözünürlüğünü tutuyor ve goruntu_ver fonksiyonu ile çözünürlük bilgisini ekrana yazdırıyor.
Bilgisayar sınıfı, bir bilgisayar markası alıyor ve bir ekran nesnesi oluşturuyor. calistir fonksiyonu çalıştırıldığında, bilgisayarın markası ve ekranın çözünürlüğü yazdırılıyor.
2. Aggregation (Toplama) Alıştırma Sorusu: Öğrenci ve Ders İlişkisi
Bir eğitim sistemi simülasyonu oluşturacağız. Bu simülasyon, öğrenciler ve dersler arasındaki ilişkiyi modelleyecek. Her dersin bir öğretmeni olacak, ancak öğretmenler de öğrenci olarak temsil edilecek.
Adım 1: Ogrenci Sınıfı
Ogrenci sınıfı, öğrencinin adını tutacak ve bir fonksiyonla öğrencinin ders çalıştığını belirtecek.
init(self, isim) fonksiyonu, öğrencinin ismini alacak ve bu ismi bir özelliğe (atribüte) atayacaktır.
ders_calis(self) fonksiyonu, öğrencinin ders çalıştığını belirten bir mesaj yazdıracaktır.
Adım 2: Ders Sınıfı
Ders sınıfı, dersin adını ve öğretmenini tutacak. Öğretmen, dersin bir parçası olmayacak, sadece dışarıdan bir referans olarak belirtilecektir.
init(self, ad, ogretmen) fonksiyonu, dersin adını alacak ve öğretmeni bir Ogrenci nesnesi olarak kabul edecektir.
tanit(self) fonksiyonu, derse ait bilgileri ekrana yazdıracaktır: dersin adı ve öğretmenin ismi.
Adım 3: Test Kodunu Yazın
Yukarıdaki sınıfları tanımladıktan sonra, öğrenci ve ders nesnelerini oluşturun ve ders çalışma ile ders tanıtımı işlemlerini simüle edin.
Soru 3: Kodlar için test kodu yazın.
Çözüm:


Çıktı:

Açıklamalar:
Ogrenci sınıfı, öğrencilerin adını saklar ve ders_calis fonksiyonu ile öğrencinin ders çalıştığını belirtir.
Ders sınıfı, bir dersin adını ve öğretmenini saklar. Öğretmen, bir Ogrenci nesnesi olarak temsil edilir. tanit fonksiyonu, dersin adını ve öğretmeni tanıtarak ekrana yazdırır.
Bu tasarımda, öğretmenler de aslında birer öğrenci olarak modellenmiştir, bu nedenle öğretmenlerin bilgileri de Ogrenci sınıfına ait özellikleri kullanarak saklanmaktadır.
Composition (Bileşim) ve Aggregation (Toplama) Alıştırma Çözümleri Özet Video:
Ödev:
Aggregation (Toplama) Alıştırmaları
Soru: Okul ve Öğrenci sınıflarını oluşturun. Bir Okul birden fazla Öğrenci içerebilir. Okul Sınıfı: Okul, birçok öğrenciyi içeren bir nesne olabilir. Fakat burada okul ve öğrenci arasındaki ilişki, öğrencilerin okula bağlı olmalarına rağmen öğrencilerin başka okullara da katılabilmesidir. Yani, öğrenciler bağımsızdır, bir öğrenci başka okullarda da bulunabilir.
Maile isim soy isim, sınıf ve okul numarası bilgilerinizi yazmayı unutmayınız.
egitimdebil@gmail.com
Önerilen program: IDE - PYTHON (Bilgisayarla çalışmayanlar, kodları deftere yazıp fotoğrafını gönderebilirler.)
Bilişim Teknolojileri Öğretmeni: İshak BEZCİ
Son gün ve saat : Pazar gece 12.00
Comments