GERİ DÖN

Ders Öğretim Planı


Dersin Kodu Dersin Adı Dersin Türü Yıl Yarıyıl AKTS
BGT-203 NESNE TABANLI PROGRAMLAMA II Ders 2 3 4,00

Önlisans



Nesneye yönelik dilde sınıf, aşırı yükleme, miras, dosyalama windows, web, veri tabanı uygulamaları konularını kullanarak program üretebilBu dersin temel amacı, öğrencilere modern yazılım geliştirme süreçlerinin temel taşı olan Nesne Tabanlı Programlama (Object Oriented Programming - OOP) paradigmasını Python programlama dili aracılığıyla kapsamlı bir şekilde aktarmaktır. Ders, temel algoritmik düşünce yapısından başlayarak; sınıflar, nesneler, kalıtım (inheritance), kapsülleme (encapsulation) ve çok biçimlilik (polymorphism) gibi OOP'nin temel prensiplerinin teorik ve pratik olarak kavranmasını hedefler. Öğrencilerin karmaşık problemleri daha küçük, yönetilebilir nesne yapılarına bölerek modüler, yeniden kullanılabilir ve sürdürülebilir kodlar geliştirmeleri amaçlanmaktadır. Ayrıca, veri yapıları ve manipülasyon teknikleri ile bellek yönetimi ve verimlilik konularında farkındalık yaratılması, böylece öğrencilerin endüstri standartlarında yazılım mimarileri tasarlayabilecek yetkinliğe ulaşmaları hedeflenmektedir.mek ve problemlere çözümler bulmak.


Öğr. Gör. Süleyman Ezdemir


1 Temel algoritma mantığını ve Python programlama dilinin sözdizimini kullanarak, veri yapıları üzerinde karmaşık manipülasyon işlemlerini gerçekleştirebilir.
2 Nesne Tabanlı Programlama prensiplerini (sınıf, nesne, kapsülleme) kavrayarak, gerçek dünya problemlerini yazılım nesneleri olarak modelleyebilir.
3 Kalıtım ve çok biçimlilik mekanizmalarını kullanarak, kod tekrarını önleyen, sürdürülebilir ve genişletilebilir hiyerarşik yazılım mimarileri tasarlayabilir.
4 Hata yakalama mekanizmalarını ve dosya/veri tabanı işlemlerini etkin bir şekilde kullanarak, veri güvenliğini ve programın kararlılığını sağlayan uygulamalar geliştirebilir.
5 Modüler programlama tekniklerini uygulayarak, üçüncü parti kütüphaneleri projelere entegre edebilir ve standartlara uygun kod dokümantasyonu oluşturabilir.

Birinci Öğretim


NESNE TABANLI PROGRAMLAMA I


Dersin verimli bir şekilde yürütülebilmesi için öğrencilerin temel düzeyde bilgisayar okuryazarlığına ve algoritmik mantık kurma becerisine sahip olmaları önerilir. Ders süresince işlenen konuların pekiştirilmesi adına, öğrencilerin derste gösterilen kod bloklarını kendi yerel geliştirme ortamlarında (IDE) tekrar etmeleri ve GitHub gibi versiyon kontrol sistemlerini aktif olarak kullanmaları tavsiye edilir. Özellikle açık kaynak kodlu projelerin incelenmesi, kod okuma ve hata ayıklama (debugging) becerilerinin geliştirilmesi açısından kritik öneme sahiptir. Öğrencilerin, ders materyallerine ek olarak Stack Overflow, Python resmi dokümantasyonu ve ilgili teknik forumları takip ederek problem çözme yeteneklerini otonom bir şekilde geliştirmeleri beklenmektedir.


Ders içeriği, prosedürel programlamadan nesne tabanlı mimariye geçiş sürecini kapsayan geniş bir spektruma sahiptir. İlk haftalarda Python sözdizimi, değişkenlerin bellekteki referans mantığı, temel veri tipleri ve kontrol yapıları ele alınır. Takip eden süreçte; liste, sözlük, demet ve küme gibi veri yapıları üzerinde manipülasyon teknikleri derinlemesine incelenir. Dersin ana omurgasını; sınıf ve nesne kavramları, yapıcı metotlar (constructors), self referansı, erişim belirleyiciler, kalıtım hiyerarşileri, metot ezme (overriding) ve soyut sınıflar (abstract classes) oluşturur. Ayrıca hata yakalama (exception handling), dosya işlemleri ve modüler programlama teknikleri de müfredata dahildir. Teorik anlatımlar, gerçek hayat senaryolarını simüle eden laboratuvar uygulamaları ve proje tabanlı çalışmalarla desteklenerek, teorinin pratiğe dönüşmesi sağlanır.


Hafta Teorik Uygulama Laboratuvar
1 Nesne Tabanlı Programlamaya Giriş ve Python Temelleri. Değişkenlerin bellekteki referans yapısı, temel veri tipleri, input(), print() fonksiyonları ve matematiksel operatörlerin kullanımı. IDE kurulumu, temel konsol uygulamaları, değişken tanımlama ve tip dönüşümleri üzerine pratikler. Vücut Kitle İndeksi (VKİ) hesaplama ve Fatura Hesaplama gibi temel algoritmik problemlerin çözümü.
2 Veri Yapıları ve Manipülasyonu. Koleksiyon tipleri (Liste, Demet, Sözlük, Küme) tanıtımı, bellek yapıları ve bu yapılar arasındaki farkların analizi. Listeler üzerinde append, remove, slice işlemleri; Sözlüklerde key-value erişimi üzerine kod yazımı. Karmaşık veri setleri üzerinde filtreleme, sıralama ve dönüştürme işlemlerini içeren senaryoların kodlanması.
3 Kontrol Yapıları ve Döngüler. Karar mekanizmaları (if-elif-else) ve yinelemeli yapılar (for, while) ile algoritma akış kontrolü. İç içe döngüler ve koşullu ifadeler kullanılarak mantıksal problemlerin çözülmesi. Sayı tahmin oyunları, faktöriyel hesaplama ve basit otomasyon döngüleri geliştirmek.
4 Fonksiyonlar ve Modülerlik. Fonksiyon tanımlama, parametre geçiş yöntemleri, return kavramı ve scope (kapsam) kuralları. Tekrar eden kod bloklarının fonksiyonlara dönüştürülmesi ve modüler yapı oluşturma örnekleri. Özelleştirilmiş matematiksel fonksiyon kütüphanesi oluşturma ve ana programda çağırma.
5 Sınıf ve Nesne Kavramı (Classes and Objects). Sınıf tanımlama sözdizimi, nesne türetme (instantiation) ve __init__ kurucu metodu. Basit sınıflar (Örn: Araba, Öğrenci) oluşturarak nitelik (attribute) ve davranış (method) tanımlama. Bir banka hesabı simülasyonu için sınıf tasarımı ve nesne tabanlı etkileşimlerin kodlanması.
6 self Anahtar Kelimesi ve Bellek Yönetimi. Örneklem (instance) değişkenleri ile sınıf (class) değişkenleri arasındaki farklar. self parametresinin metotlardaki rolünün incelenmesi ve statik değişken kullanımı. Kütüphane yönetim sistemi için kitap ve üye nesnelerinin durumlarını yöneten uygulamalar.
7 Kapsülleme (Encapsulation) ve Erişim Belirleyiciler. Veri gizleme prensipleri, public, private ve protected üyeler, Getter ve Setter metotları. Hassas verilere doğrudan erişimin engellenmesi ve property dekoratörlerinin kullanımı. Bir çalışan yönetim sisteminde maaş ve kişisel bilgilerin kapsülleme ile korunması uygulaması.
8 Ara Sınav Haftası. İlk 7 haftanın genel tekrarı ve teorik/uygulamalı değerlendirme. Sınav öncesi soru çözümleri ve kod incelemeleri. -
9 Kalıtım (Inheritance). Ana sınıf (Parent) ve alt sınıf (Child) ilişkisi, super() fonksiyonu ve kodun yeniden kullanılabilirliği. Temel bir sınıftan özelleşmiş alt sınıflar türetme (Örn: Şekil -> Daire, Kare). Oyun programlama senaryosunda karakter sınıfları arasında hiyerarşik miras yapısı kurma.
10 Çok Biçimlilik (Polymorphism) ve Metot Ezme (Overriding). Farklı nesnelerin aynı metoda farklı tepkiler vermesi, dinamik bağlama. Aynı arayüzü paylaşan ancak farklı işlevlere sahip metotların yazılması. Ödeme sistemleri simülasyonu (Kredi Kartı, Nakit, Havale sınıflarının ortak ödeme metodunu özelleştirmesi).
11 Soyutlama (Abstraction) ve Arayüzler. Soyut sınıflar (ABC modülü), soyut metotlar ve tasarım şablonlarına giriş. Tamamlanmamış şablon sınıflar oluşturma ve alt sınıflarda implementasyon zorunluluğu getirme. Akıllı ev sistemleri için cihazların ortak özelliklerini taşıyan soyut bir yapı tasarımı.
12 Hata Yönetimi (Exception Handling). try, except, else, finally blokları ve özel hata sınıfları oluşturma. Programın çökmesini engelleyen güvenli kod blokları yazma ve hataların loglanması. Kullanıcı girişi ve veri doğrulama sırasında oluşabilecek hataların (Sıfıra bölme, Tip hatası vb.) yönetimi.
13 Dosya İşlemleri ve Veri Kalıcılığı. Dosya okuma/yazma modları, with bloğu kullanımı ve basit serileştirme işlemleri. Metin (.txt) ve CSV dosyalarıyla veri alışverişi yapan uygulamalar. Bir not defteri veya adres defteri uygulamasının verilerini dosyada saklayacak şekilde geliştirilmesi.
14 İleri Python Konuları ve Dönem Projesi Değerlendirmesi. Dekoratörler, Jeneratörler ve dersin genel özeti. Dönem boyunca geliştirilen projelerin sunumu ve kod kalitesi incelemesi. Final projesi eksiklerinin tamamlanması ve performans iyileştirmeleri.

Ana Kaynaklar: Ders Notları ve Kod Deposu: github.com/ezfesoft Öğr. Gör. Süleyman Ezdemir tarafından paylaşılan haftalık sunumlar ve PDF materyalleri. Önerilen Ek Kaynaklar: Resmi Dokümantasyon: docs.python.org (Python 3.x Documentation) Kitap: "Learning Python" - Mark Lutz (O'Reilly Media) - Kapsamlı bir referans kitabı. Kitap: "Python Crash Course" - Eric Matthes - Pratik uygulamalar için. Çevrimiçi Platform: HackerRank ve LeetCode (Python algoritmaları ve veri yapıları pratikleri için). Çevrimiçi Kaynak: Real Python (realpython.com) - Derinlemesine tutorial ve makaleler.


Ders, hibrit bir öğretim modeli benimsenerek teorik anlatım ve uygulamalı laboratuvar çalışmalarının entegrasyonu ile yürütülür. Teorik derslerde; kavramsal çerçeve, UML diyagramları ve kodun çalışma mantığı (bellek yönetimi vb.) interaktif sunumlarla aktarılır. Laboratuvar saatlerinde ise; canlı kodlama (live coding) oturumları, problem çözme seansları ve eşli programlama (pair programming) teknikleri uygulanır. Dönem boyunca öğrencilere vaka analizleri (case studies) verilerek, bu vakaları OOP prensiplerine uygun şekilde çözümlemeleri istenir. Ayrıca, dönem ödevi veya proje çalışmaları ile öğrencilerin araştırma yapma, dokümantasyon oluşturma ve bir yazılım projesini baştan sona yönetme becerileri değerlendirilir.



Bu ders kapsamında zorunlu bir staj uygulaması bulunmamaktadır. Ancak, derste edinilen nesne tabanlı programlama yetkinlikleri, yazılım sektöründeki staj ve iş başvurularında temel bir gereklilik olarak aranmaktadır. Öğrencilerin ders kapsamında geliştirecekleri projeleri bir portfolyo (GitHub vb.) üzerinde sunmaları, profesyonel hayata geçiş süreçlerinde ve isteğe bağlı yapacakları stajlarda önemli bir avantaj sağlayacaktır. Sektörel beklentiler doğrultusunda, dersin çıktıları doğrudan yazılım geliştirme departmanlarındaki giriş seviyesi pozisyonların gereksinimlerini karşılayacak niteliktedir.


Etkinlikler Sayısı Süresi (saat) Toplam İş Yükü (saat)
Uygulama/Pratik 10 4 40
Laboratuvar 14 4 56
Problem Çözümü 2 1 2
Beyin Fırtınası 2 2 4
Proje Hazırlama 2 2 4
Proje Sunma 2 2 4
Proje Tasarımı /Yönetimi 4 2 8
Laboratuvar Ara Sınavı 1 1 1
Laboratuvar Sınavı 1 1 1
Toplam İş Yükü (saat) 120

PÇ 1 PÇ 2 PÇ 3 PÇ 4 PÇ 5 PÇ 6 PÇ 7 PÇ 8 PÇ 9 PÇ 10 PÇ 11 PÇ 12 PÇ 13 PÇ 14 PÇ 15 PÇ 16 PÇ 17 PÇ 18 PÇ 19 PÇ 20 PÇ 21 PÇ 22 PÇ 23 PÇ 24
ÖÇ 1
ÖÇ 2
ÖÇ 3
ÖÇ 4
ÖÇ 5
* Katkı Düzeyi : 1 Çok düşük 2 Düşük 3 Orta 4 Yüksek 5 Çok yüksek