Nesne Tabanlı Programlama I

Bu kitap, temel programlama kavramlarını daha önce görmüş ve Python ile nesne tabanlı programlamaya geçmek isteyen öğrenciler için hazırlanmıştır. İlk bölümlerde Python’ın çalışma biçimi, temel sözdizimi, koleksiyonlar, fonksiyonlar, dosyalar ve istisnalar üzerinden kısa bir geçiş yapılır. Ardından veriyi ve davranışı birlikte düşünmeye, nesnelerin durumunu ve sorumluluklarını tasarlamaya odaklanılır.

NoteBu sürüm neden Python tekrarıyla başlıyor?

Bu kitap, Programlama Temelleri dersini C ile almış geçiş grubu için hazırlanmıştır. Bu nedenle ilk beş bölüm Python’a kontrollü bir köprü kurar; programlama kavramlarını sıfırdan yeniden öğretmez. Kalıcı ders akışında öğrencilerin Programlama Temelleri ve Veri Yapıları derslerinde Python görmüş olması beklendiğinden, Nesne Tabanlı Programlama I doğrudan nesne modeli ve sınıf tasarımı ağırlıklı başlayacaktır.

İlk beş bölümde hızlı başvuru için C’den Python’a geçiş kartını kullanabilirsiniz. Kart birebir dil çevirisi değil; özellikle atama/kopyalama, str, negatif ///%, referanslar ve hata yönetimi gibi davranış farklarını hatırlatır.

Amaç yalnızca class sözcüğünü kullanarak çalışan programlar yazmak değildir. Bir sınıfın hangi bilgiyi saklaması gerektiğini, hangi davranışlardan sorumlu olduğunu, nesnenin geçerli durumunu nasıl koruyacağını ve nesneler arasındaki ilişkilerin ne zaman kompozisyon ya da kalıtımla ifade edilebileceğini anlamaya çalışacağız.

Kitabı nasıl kullanmalısınız?

Bölümlerde mümkün olduğunda şu öğrenme döngüsü kullanılır:

Tahmin Et → Çalıştır → Nesnenin Durumunu İncele → Düzelt/Değiştir → Davranış Ekle → Üret

Web sürümündeki Python hücreleri tarayıcı içinde çalışır. Kodu değiştirebilir, Run Code ile sonucu görebilir, bazı alıştırmalarda ipucu ve çözüm açabilirsiniz. PDF sürümünde aynı örnekler statik olarak okunabilir; kodu kendi Python ortamınızda çalıştırabilirsiniz.

Important1. haftadan itibaren yerel Python ortamı kullanılacak

Tarayıcı hücreleri hızlı deneyler için yararlıdır; ancak bu ders yalnızca web hücreleriyle yürütülmez. 1. haftada Python, VS Code ve Microsoft Python eklentisi kurulup bir .py dosyası hem editörden hem terminalden çalıştırılır. 4. haftada modüller, 13. haftada paketler kullanılacağı için yerel ortam hazırlığı dersin başında tamamlanmalıdır.

Important“Çalışıyor” tek başına yeterli değildir

Bir programın doğru çıktı üretmesi yalnızca ilk kontroldür. Nesne tabanlı programlamada şu sorular da önemlidir: Bu veri neden bu nesnenin içinde? Bu davranışın sorumlusu hangi sınıf? Nesne geçersiz bir duruma düşebilir mi? İki değişken aynı nesneyi mi gösteriyor? Yeni bir davranış eklemek için kaç yeri değiştirmek gerekiyor?

Her hafta çalışır kod ürünü

Kavramsal tartışmalar, çıktı tahminleri ve tasarım gerekçeleri dersin önemli parçalarıdır; ancak tek başına yeterli değildir. Her hafta en az bir çalışır kod ürünü tamamlanır.

Bu ürün:

  • küçük ve açık kapsamlıdır,
  • ilgili haftanın temel davranışını gerçekten çalıştırır,
  • mümkün olduğunda assert, beklenen çıktı veya otomatik hücre kontrolüyle doğrulanır,
  • yalnızca “açıklayın/tartışın” cevabından ibaret değildir,
  • ders içindeki yönlendirilmiş uygulamanın devamı olarak yaklaşık 20–40 dakikada tamamlanabilecek ölçekte tutulur.

Bu nedenle bölüm sonlarındaki Çalışır kod teslimi satırları haftanın asgari uygulama çıktısını belirtir. Amaç uzun ödevler üretmek değil, öğrencinin kavramı çalışan koda dönüştürebildiğini düzenli olarak görünür kılmaktır.

NoteGeçiş grubunda ara sınav neyi ölçmeli?

İlk beş haftanın Python köprüsü zorunlu hazırbulunuşluk açığını kapatır; ancak dersin adı ve temel amacı Nesne Tabanlı Programlamadır. Bu nedenle ara sınavın yalnızca Python sözdizimi tekrarına dönüşmemesi gerekir.

Python köprüsündeki tür, kontrol akışı, koleksiyon, fonksiyon ve istisna bilgisi araç/ön koşul olarak kullanılabilir; yüksek ağırlıklı değerlendirme odağı ise sınav tarihine kadar işlenmiş OOP kazanımları olmalıdır: nesne zihinsel modeli, class/self/__init__, durum ve davranış, sınıf/örnek niteliği ve mümkünse kapsülleme başlangıcı. Python’a geçiş becerileri haftalık çalışır ürünlerle düşük riskli ve sürekli biçimde doğrulanır.

Akademik takvim ara sınavı 7–8. haftaya yerleştiriyorsa soru dağılımı o tarihe kadar gerçekten işlenmiş OOP kapsamına göre ayarlanmalı; henüz işlenmemiş kompozisyon, kalıtım veya polimorfizm beklenmemelidir.

Haftalar

Aşağıdaki sıra dönem boyunca izleyeceğimiz öğrenme yolunu gösterir. Bir bölümü tamamladıktan sonra bölüm başlığının üstündeki gezinme çubuğuyla önceki haftaya, sonraki haftaya veya bu sayfaya dönebilirsiniz.

Python’a geçiş

Hafta 1

Python çalışma modeli, türler ve temel ifadeler

Yerel Python/VS Code ortamı; Python’ın çalışma modeli, değerler, türler, değişkenler, ifadeler ve C’den kritik davranış farkları.

Hafta 2

Koşullar, döngüler ve string işlemleri

Karar yapıları, tekrar kalıpları, enumerate/zip ve temel metin işlemlerini Python sözdizimiyle yeniden kurma.

Hafta 3

Koleksiyonlar, değiştirilebilirlik ve referans sezgisi

Koleksiyon seçimi; mutability, aliasing, sığ kopya ve sözlük dolaşımı üzerinden nesne referansı sezgisi.

Hafta 4

Fonksiyonlar, kapsam ve modüller

Fonksiyon tasarımı, varsayılan parametreler, kapsam, docstring ve kodu modüllere ayırma.

Hafta 5

Dosyalar, istisnalar ve hata ayıklama

Dosya modları/kodlama, raise ve istisnaları kontrollü ele alma; sistematik hata ayıklama yaklaşımı.

Nesne tabanlı programlama

Hafta 6

Nesne zihinsel modeli

Kimlik, tür, değer, durum, referans ve aynı nesneye birden fazla değişken üzerinden erişme davranışı.

Hafta 7

Sınıf, nesne ve metotlar

class, self, __init__, örnek/sınıf nitelikleri, gölgeleme ve davranışı metotlarla ifade etme.

Hafta 8

Kapsülleme, property ve invariant

Nesne durumunu koruma, property/setter, name mangling ve geçerli durum kurallarını sınıf içinde yönetme.

Hafta 9

Kompozisyon ve nesne koleksiyonları

Kompozisyon/delegation; nesne koleksiyonları ve mutable iç koleksiyonu kapsülleme.

Hafta 10

Kalıtım ve override

is-a, override, normal metotta super(), Liskov yerine geçme sezgisi ve MRO kavram radarı.

Hafta 11

Polimorfizm ve duck typing

Farklı nesneleri ortak davranış üzerinden kullanma; hasattr, EAFP/LBYL ve duck typing yaklaşımı.

Hafta 12

Özel metotlar ve özel istisnalar

__str__, __repr__, __eq__, NotImplemented ayrımı ve probleme özgü istisna sınıfları.

Hafta 13

Paketler ve tip ipuçları

Python sürümü, çalışma dizini, __init__.py, python -m, paketler ve temel type hint kullanımı.

Hafta 14

Bütünleştirici nesne tasarımı

Sorumluluk, kapsülleme, nesneler arası tutarlılık, eşitlik/koleksiyon etkileşimi ve doğrulamayı tek problemde birleştirme.

Ek tasarım çalışmaları

TipTasarım alıştırmasında tek ölçüt “çalışıyor” değildir

Ek problemlerde önce mevcut davranışı testlerle sabitleyin. Sonra sınıf/sorumluluk sınırını değiştirin ve aynı davranışın korunduğunu doğrulayın. Gerekçenizde sorumluluk, invariant, bağımlılık ve davranış terimlerinden uygun olanları kullanın.

İlk bölümlerde Python sözdizimine alıştıktan sonra aynı temel soruyu giderek daha ayrıntılı biçimde ele alacağız: Bir programdaki veriyi ve davranışı hangi nesne üstlenmelidir?

Temel başvuru kaynakları

Bu kaynaklar bölüm metninin yerine geçmez; gerektiğinde Python’ın kesin davranışını ve daha ileri ayrıntıları doğrulamak için başvuru noktasıdır.

Back to top