Nesneye Yönelik Programlama(INF243-A)
| Ders Kodu | Dersin Adı | Yarıyıl | Teori | Uygulama | Lab | Kredisi | AKTS |
|---|---|---|---|---|---|---|---|
| INF243-A | Nesneye Yönelik Programlama | 4 | 2 | 0 | 2 | 3 | 5 |
| Ön Koşul | INF114 |
| Derse Kabul Koşulları | INF114 |
| Dersin Dili | Fransızca |
| Türü | Zorunlu |
| Dersin Düzeyi | Lisans |
| Dersi Veren(ler) | Ayşegül TÜYSÜZ ERMAN aerman@gsu.edu.tr (Email) |
| Dersin Yardımcıları | Şükrü Demir İnan ÖZER (Email) |
| Dersin Amacı |
Bu dersin temel amacı, öğrenciye modern yazılım geliştirme süreçlerinin kalbi olan Nesneye Yönelik Programlama (NYP) paradigmasını ve prensiplerini derinlemesine kavratmaktır. Kurs boyunca öğrencilerin; - Problemleri nesne odaklı bir bakış açısıyla analiz etme, - Karmaşık yazılım sistemlerini soyutlama (abstraction) ve modülerlik ilkeleriyle yönetilebilir parçalara bölme, - Sınıf (Class) ve Nesne (Object) yapılarını kullanarak tekrar kullanılabilir, esnek ve sürdürülebilir kod üretme becerisi kazanmaları hedeflenmektedir. - Veri kapsülleme (encapsulation), kalıtım (inheritance) ve çok biçimlilik (polymorphism) gibi temel direklerin yanı sıra, tasarım aşamasında UML diyagramları aracılığıyla sistem mimarisini modelleme yetkinliği kazandırılması amaçlanmaktadır. |
| İçerik |
- Nesne Yönelimli Paradigmanın Temelleri: Yazılım geliştirmede nesne odaklı yaklaşım, sınıf (class) ve nesne (object) kavramları - Soyutlama ve Kapsülleme: Veri gizleme prensipleri, erişim belirleyiciler ve modüler yapı tasarımı. - Sınıf İlişkileri ve Modelleme: Nesneler arası ilişkilerin (is-a, has-a) analizi ve UML sınıf diyagramları ile sistem modelleme. - Kalıtım ve Kodun Yeniden Kullanılabilirliği: Hiyerarşik yapıların kurulması, metot ezme (overriding) ve genişletilebilir yazılım mimarisi. - Çok Biçimlilik ve Esnek Tasarım: Dinamik bağlama, arayüzler (interfaces) ve soyut sınıflar (abstract classes) ile bağımlılığı düşük (loosely coupled) sistemler geliştirme. - Hata Yönetimi ve Veri Yapıları: İstisnai durumların (exceptions) kontrolü ve dinamik veri yönetimi. - Giriş/Çıkış İşlemleri ve Kalıcılık: Dosya sistemleri ile etkileşim ve nesne serileştirme teknikleri. |
| Dersin Öğrenme Çıktıları |
Bu dersi başarıyla tamamlayan öğrenci aşağıdaki konularda yeterliliğe sahip olacaktır: 1. Programlamadaki nesne yönelimli yaklaşımı açıklamak. 2. Program yazmak ve test etmek için nesne yönelimli bir programlama dilini ve ilgili sınıf kütüphanelerini kullanmak. 3. Gerçek dünya problemlerini çözmek amacıyla; veri kapsülleme (encapsulation), kalıtım (inheritance) ve çok biçimlilik (polymorphism) kavramlarını kullanarak UML tabanlı tasarımlar geliştirmek. 4. Mimari karmaşıklık ve sınıflar arası yoğun iletişim içeren problemler için (sınıf diyagramlarına dayalı) UML tabanlı tasarımları hayata geçirmek. 5: Nesne yönelimli uygulamaları tasarlamak, uygulamak, hatalarını ayıklamak (debug) ve çalıştırmak için IDE (Entegre Geliştirme Ortamı) kullanmak. |
| Öğretim Yöntemleri | Konu anlatımı, sınıf içi uygulama, tartışma, soru-cevap, problem çözümü ve proje |
| Kaynaklar |
- Y. Daniel Liang, “Introduction to Java Programming”, Pearson, International Edition, Comprehensive 9th/10th /11th Edition - Y. Daniel Liang, "Introduction to Java Programming and Data Structures", Pearson, 13E - Sarnath Ramnath, Brahma Dathan, “Object-Oriented Analysis and Design“, Springer |
Teori Konu Başlıkları
| Hafta | Konu Başlıkları |
|---|---|
| 1 | Giriş ve NYP Paradigması: Prosedürel vs. Nesne Yönelimli Programlama, Temel Kavramlar |
| 2 | Java Temelleri ve Bellek Yönetimi: JVM, JRE, Değişkenler, Veri Tipleri (İlkel Tip ve Referans Tipi), Stack ve Heap Mantığı |
| 3 | Sınıf ve Nesne Yapısı: Constructor (Yapıcı Metotlar), Method Overloading |
| 4 | Veri Kapsülleme (Encapsulation): Access Modifiers (public, private, protected), Getter/Setter Metotları, this anahtar kelimesi, scope |
| 5 | Sınıf İlişkileri ve UML: Association, Aggregation, Composition ve Sınıf Diyagramları |
| 6 | Association, Aggregation, Composition ve Multiplicity |
| 7 | Kalıtım (Inheritance): extends kullanımı, super anahtar kelimesi, Method Overriding |
| 8 | Vize haftası |
| 9 | Soyut Sınıflar ve Arayüzler: Abstract Classes vs. Interfaces, Çoklu Kalıtım Problemi |
| 10 | Çok Biçimlilik (Polymorphism): Dinamik Bağlama (Dynamic Binding), Upcasting ve Downcasting / Ders Projesinin İlanı |
| 11 | Hata Yönetimi (Exception Handling): Try-Catch blokları, Custom Exceptions, Hata Hiyerarşisi |
| 12 | Dosya İşlemleri ve I/O Akışları: Dosya okuma/yazma, Serialization (Serileştirme) |
| 13 | Jenerik Programlama: Veri Yapıları örneği |
| 14 | Baştan sona NYP tasarımlarına güncel örnekler ile tekrar |
Uygulama Konu Başlıkları
| Hafta | Konu Başlıkları |
|---|---|
| 1 | Java Programlamaya Giriş: Temeller, örnek uygulamalar ve IDE kullanımı |
| 2 | Nesnelere Giriş ve UML: Nesne tanımlama, oluşturma ve erişim; Visual Paradigm ile UML'e giriş. |
| 3 | Nesneler ve Bellek Yapısı: Referans Tipler (Reference) vs. İlkel Tipler (Primitive); Nesne yönetimi. |
| 4 | Nesne Listeleri ve Statik Yapılar: Nesnelerin metotlara aktarılması, Nesne dizileri (ArrayList), Statik değişkenler ve metotlar |
| 5 | Kapsülleme ve Görünürlük: Erişim belirleyiciler (Visibility), Kapsülleme (Encapsulation), Değişmez (Immutable) Nesneler, Kapsam (Scope) ve this kullanımı |
| 6 | Sınıf İlişkileri - I: Kompozisyon (Composition), Birleşim (Aggregation), İlişkilendirme (Association) ve Çokluluk (Multiplicity) kavramları |
| 7 | Sınıf İlişkileri - II: Sınıf arası ilişkilerin uygulama örnekleri ve UML modelleme çalışmaları |
| 8 | Kalıtım (Inheritance): Üst sınıflar, alt sınıflar ve miras alma mekanizması |
| 9 | Kalıtım ve Soyut Sınıflar: Kalıtım hiyerarşisi içinde Soyut (Abstract) Sınıfların kullanımı |
| 10 | Soyut Sınıflar ve Arayüzler: Abstract Class ve Interface yapıları arasındaki farklar ve uygulama senaryoları |
| 11 | Çok Biçimlilik (Polymorphism): Dinamik bağlama ve nesnelerin çok biçimli davranışları |
| 12 | Hata Yönetimi: İstisnai durumlar (Exceptions) ve Try-Catch mekanizması |
| 13 | Dosya İşlemleri ve Kalıcılık: Dosya okuma/yazma işlemleri ve Nesne Serileştirme (Serialization) |
| 14 | Genelleyici (Generic) Programlama: Veri yapısı örneği üzerinden Generic Programlama mantığı |
Başarı Notuna Etki Oranları
| Sayı | Katkı Payı | |
|---|---|---|
| Yarıyıl içi çalışmaların başarı notuna katkısı | 0 | 60 |
| Yarıyıl sonu çalışmaların başarı notuna katkısı | 0 | 40 |
| Toplam | 0 | 100 |
Yarıyıl İçi Çalışmaları
| Sayı | Katkı Payı | |
|---|---|---|
| Ödevler | 0 | 0 |
| Sunum | 0 | 0 |
| Arasınavlar (Hazırlık Süresi Dahil) | 1 | 25 |
| Proje | 1 | 20 |
| Laboratuar | 0 | 0 |
| Diğer Uygulamalar | 0 | 0 |
| Kısa Sınavlar | 5 | 15 |
| Dönem Ödevi / Projesi | 0 | 0 |
| Portfolyo Çalışmaları | 0 | 0 |
| Raporlar | 0 | 0 |
| Öğrenme Günlükleri | 0 | 0 |
| Bitirme Tezi/Projesi | 0 | 0 |
| Seminer | 0 | 0 |
| Diğer | 0 | 0 |
| Bütünleme | 0 | 0 |
| Toplam | 7 | 60 |
| Numara | Program Yeterlilikleri | Puan | ||||
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 1 | Matematik, fizik ve mühendislik bilimlerine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, mühendislik problemlerinin modellenmesi ve çözümünde kullanabilme becerisi. | X | ||||
| 2 | Karmaşık bilgisayar mühendisliği problemlerini saptama, tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi. | X | ||||
| 3 | Yazılımsal veya donanımsal karmaşık bir sistemi, süreci veya donanımı gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi. | X | ||||
| 4 | Mühendislik uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları geliştirme, seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi. | X | ||||
| 5 | Analitik düşünce ile bir sistemi, sistem bileşenini ya da süreci analiz etme, modelleme, deney tasarlama ve yapma, veri toplama, çözüm algoritmaları üretebilme, uygulamaya alma ve geliştirme becerileri. | X | ||||
| 6 | Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi. | X | ||||
| 7 | Türkçe sözlü ve yazılı etkin iletişim kurma becerisi; en az iki yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, yazılım ve donanım tasarımını, gerekirse teknik resim metotları kullanarak raporlayabilme, etkin sunum yapabilme becerisi. | X | ||||
| 8 | Bilgiye erişebilme ve bu amaçla kaynak araştırması yapabilme, veri tabanları ve diğer bilgi kaynaklarını kullanabilme becerisi | X | ||||
| 9 | Yaşam boyu öğrenmenin gerekliliği bilinci; kendini sürekli yenileme becerisi. | X | ||||
| 10 | Mesleki etik ilkelerine uygun davranma, mesleki sorumluluk bilinci; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi. | X | ||||
| 11 | Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi. | X | ||||
| 12 | Mühendislik uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları hakkında bilgi. | X | ||||
| 13 | Bilgisayar mühendisliği uygulamalarının hukuki ve etik boyutları konusunda farkındalık. | X | ||||
| Etkinlikler | Sayı | Süre | Toplam İş Yükü |
|---|---|---|---|
| Ders Süresi | 14 | 2 | 28 |
| Sınıf Dışı Çalışma Süresi | 0 | 0 | 0 |
| Ödevler | 0 | 0 | 0 |
| Sunum | 0 | 0 | 0 |
| Arasınavlar (Hazırlık Süresi Dahil) | 1 | 25 | 25 |
| Proje | 1 | 20 | 20 |
| Laboratuar | 14 | 2 | 28 |
| Diğer Uygulamalar | 0 | 0 | 0 |
| Yarıyıl Sonu Sınavı (Hazırlık Süresi Dahil) | 1 | 25 | 25 |
| Kısa Sınavlar | 0 | 0 | 0 |
| Dönem Ödevi / Projesi | 0 | 0 | 0 |
| Portfolyo Çalışmaları | 0 | 0 | 0 |
| Raporlar | 0 | 0 | 0 |
| Öğrenme Günlükleri | 0 | 0 | 0 |
| Bitirme Tezi/Projesi | 0 | 0 | 0 |
| Seminer | 0 | 0 | 0 |
| Diğer | 0 | 0 | 0 |
| Bütünleme | 0 | 0 | 0 |
| Ts Yıl Sonu | 0 | 0 | 0 |
| Hazırlık Yıl Sonu | 0 | 0 | 0 |
| Hazırlık Bütünleme | 0 | 0 | 0 |
| Toplam İş Yükü | 126 | ||
| Toplam İş Yükü / 25 | 5.04 | ||
| Dersin AKTS Kredisi | 5 | ||


