Ü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 - Soyutlama (Abstraction)
Soyutlama (Abstraction), Object-Oriented Programming'in (OOP) temel prensiplerinden biridir ve karmaşık sistemleri daha basit ve anlaşılır hale getirmek için kullanılır. Soyutlama, bir nesnenin veya sistemin önemli özelliklerini ortaya çıkarmak, gereksiz detayları saklamak anlamına gelir. Bu, kullanıcının yalnızca ihtiyaç duyduğu şeyleri görmesini ve anlamasını sağlar.
Günlük Hayattan Bir Örnek:
Bir araba düşünelim. Arabayı kullanırken sadece direksiyonu çevirir, pedalları kullanır ve vites değiştirirsiniz. Ancak, motorun nasıl çalıştığını, fren sisteminin detaylarını ya da yakıtın nasıl yandığını bilmek zorunda değilsiniz. Arabayı soyut bir şekilde sadece "sürüş işlevi" olarak algılarsınız.
Kod Üzerinden Örnek:
Bir banka sisteminde müşteri hesapları yönetiliyor olsun. Kullanıcılar, hesap bakiyelerini öğrenmek ve para çekmek isteyebilir. Ancak, hesap bakiyesinin nasıl saklandığı veya işlemlerin nasıl kaydedildiği gibi detayları bilmek zorunda değiller.
Aşağıda basit bir soyutlama örneği var:
Önemli Noktalar:
__balance Değişkeni Gizli: Hesap bakiyesi doğrudan dışarıdan erişilemez. Kullanıcı sadece belirlenmiş yöntemler (deposit, withdraw, get_balance) ile bu değişkenle etkileşimde bulunabilir.
Detaylar Kullanıcıdan Saklanır: Kullanıcı, hesabın nasıl çalıştığını bilmek zorunda değil; sadece ne yapması gerektiğini (para yatırma, çekme) bilir.
Bu örnek, soyutlamanın yazılım geliştirme sürecinde sadeleştirme ve güvenlik sağladığını gösteriyor.
Satır Satır Açıklama:
class BankAccount:
Bir banka hesabını temsil eden bir sınıf oluşturuyoruz.
Bu sınıf, bir hesap sahibinin adı (owner) ve bakiyesi (balance) gibi bilgileri içerir.
def init(self, owner, balance):
Bu, sınıfın yapıcı fonksiyonu. Sınıf her çağrıldığında bu fonksiyon otomatik olarak çalışır.
owner: Hesap sahibinin adı.
balance: Hesap bakiyesi.
self.owner = owner ve self.__balance = balance:
self.owner: Hesap sahibinin adını saklar.
self.__balance: Hesap bakiyesini saklar. __ ile başlayan değişkenler gizlidir ve doğrudan dışarıdan erişilemez.
def deposit(self, amount):
Hesaba para yatırmak için bir fonksiyon.
amount: Yatırılacak para miktarı.
Kontrol yapısı:
Eğer amount > 0 ise bakiyeye eklenir.
Negatif bir miktar girilirse "Geçersiz miktar" mesajı yazdırılır.
def withdraw(self, amount):
Hesaptan para çekmek için bir fonksiyon.
amount: Çekilecek miktar.
Kontrol yapısı:
Eğer amount pozitif ve mevcut bakiyeden küçük ya da eşitse, işlem yapılır.
Aksi durumda hata mesajı döner: "Yetersiz bakiye veya geçersiz miktar."
def get_balance(self):
Hesap bakiyesini öğrenmek için bir fonksiyon.
return self.__balance: Hesap bakiyesini dışarı döndürür.
account = BankAccount("Ahmet", 1000):
Yeni bir hesap oluşturduk. Hesap sahibi "Ahmet", başlangıç bakiyesi 1000 TL.
account.deposit(200):
200 TL yatırır. Bakiyeye eklenir ve yeni bakiye yazdırılır.
account.withdraw(500):
500 TL çekilir. Bakiyeden düşülür ve kalan bakiye yazdırılır.
print(account.get_balance()):
Hesap bakiyesini öğrenir ve ekrana yazdırır. Son durumda bakiye 700 TL olacaktır.
Kodun Çalışma Mantığı:
Kullanıcı, banka hesabını temsil eden sınıfın dışarıya sunduğu fonksiyonları (deposit, withdraw, get_balance) kullanır.
Gizli Detaylar: Kullanıcı, __balance değişkenine doğrudan erişemez. Bakiyeye sadece bu yöntemlerle ulaşabilir. Bu, soyutlama prensibini uygular.
Soyutlama (Abstraction) Özet Video:
Soyutlama (Abstraction) Alıştırmaları:
Alıştırma 1: Basit Hesap Makinesi
Bir hesap makinesi sınıfı oluşturun. Bu sınıf, toplama, çıkarma, çarpma ve bölme işlemleri yapabilmeli. Ancak, işlemleri dışarıdan erişilebilir metodlarla yaparken, işlemin nasıl gerçekleştiği gizli kalmalıdır.
Açıklamalar:
Gizli İşlemler (__add, subtract, multiply, __divide):
Bu metodlar hesaplama işlemlerini gerçekleştirir.
__ ile başlaması, metodların gizli olduğu anlamına gelir. Kullanıcı bu metodlara doğrudan erişemez.
Bölme İşleminde Hata Kontrolü:
b == 0 olduğunda, bölme işlemi yapılmaz ve hata mesajı döner.
Dışarıya Açık Metodlar (add, subtract, multiply, divide):
Kullanıcı bu metodları çağırarak toplama, çıkarma, çarpma ve bölme işlemlerini yapar. İçeride gizli metodlar çağrılır.
Alıştırma 2: Kütüphane Sistemi
Bir kütüphane sınıfı yazın. Bu sınıf, kitap ekleme ve mevcut kitapları listeleme işlevine sahip olsun. Ancak, kullanıcı kitap listesinin nasıl saklandığını bilmemeli.
Açıklamalar:
__books Değişkeni:
Kitap listesi, dışarıdan erişilememesi için gizli olarak tanımlandı.
add_book Metodu:
Kullanıcı bir kitap adı girer ve bu ad __books listesine eklenir.
list_books Metodu:
Eğer liste boş değilse kitaplar döngüyle ekrana yazdırılır.
Liste boşsa "Kütüphanede kitap yok" mesajı gösterilir.
Alıştırma 3: Öğrenci Not Sistemi
Bir öğrenci not sisteminde, öğrencinin adını ve notunu tutan bir sınıf oluşturun. Kullanıcı sadece öğrencinin adını ve not ortalamasını görebilsin. Notlar gizli tutulmalı.
Açıklamalar:
__grades Değişkeni:
Öğrenci notları gizli bir listede tutulur.
add_grade Metodu:
Kullanıcı bir not ekler.
Girilen notun 0 ile 100 arasında olup olmadığını kontrol eder.
Geçerli notlar __grades listesine eklenir.
get_average Metodu:
Eğer not listesi boş değilse, sum ve len fonksiyonlarıyla notların ortalaması hesaplanır.
Eğer liste boşsa, kullanıcıya "Henüz not girilmedi" mesajı gösterilir.
Genel Özet:
Bu alıştırmalarda soyutlama sayesinde karmaşıklık gizlenmiştir.
Kullanıcı sadece dışarıya açık metodları (örneğin: add_book, add_grade) kullanır.
Gizli değişkenlere doğrudan erişim olmadığı için, veriler korunur ve sistem daha güvenli hale gelir.
Soyutlama (Abstraction) Alıştırma Çözümleri Özet Video:
Soyutlama (Abstraction) - Görevler
Görev 1: Basit Hesap Makinesi
Bir hesap makinesi sınıfı oluşturun. Bu sınıf, toplama, çıkarma, çarpma ve bölme işlemleri yapabilmeli. Ancak, işlemleri dışarıdan erişilebilir metodlarla yaparken, işlemin nasıl gerçekleştiği gizli kalmalıdır.
Görev 2: Kütüphane Sistemi
Bir kütüphane sınıfı yazın. Bu sınıf, kitap ekleme ve mevcut kitapları listeleme işlevine sahip olsun. Ancak, kullanıcı kitap listesinin nasıl saklandığını bilmemeli.
Görev 3: Öğrenci Not Sistemi
Bir öğrenci not sisteminde, öğrencinin adını ve notunu tutan bir sınıf oluşturun. Kullanıcı sadece öğrencinin adını ve not ortalamasını görebilsin. Notlar gizli tutulmalı.
Ödev:
Bir öğrenci not sisteminde, öğrencinin adını ve notunu tutan bir sınıf oluşturun. Kullanıcı sadece öğrencinin adını ve not ortalamasını görebilsin. Notlar gizli tutulmalı ve oluşturduğunuz kodların fotoğrafını aşağıdaki mail adresine gönderiniz.
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