Java ile Nesne Yönelimli Programlama
- Java ortamı
- JDK ve JVM
- Çevirici programlar, derleyiciler yorumlayıcılar
- İşletim Sistemleri
- IDE (Integrated Development Environment) programları
- Temel sayı sistemleri
- JDK kurulumu
- Merhaba Java program
- Metot bildirimi
- Metotların çağrılması
- Java’da temel türler
- Tamsayı türleri, gerçek sayı türleri, char türü ve boolean türü
- Değişkenler ve faaliyet alanı
- Yerel değişkenler
- Metotların geri dönüş değerleri
- return deyimi
- Metotların parametre değişkenleri
- Matematiksel işlem yapan yararlı metotlar: Math sınıfı
- Sabit kavramı
- Sabitlerin türleri
- Tamsayı sabitleri
- Gerçek sayı sabitleri
- boolean türden sabitleri
- Karakter sabitleri
- Escape sequence karakterler
- Tamsayı sabitlerinin hexadecimal, binary ve octal gösterilişleri
- Gerçek sayı sabitlerinin bilimsel gösterilişi
- Sabitl bildiriminde alttire karakterinin kullanımı
- Operatörlerin sınıflandırılması
- Operatör önceliği
- Aritmetik Operatörler
- Karşılaştırma operatörleri
- Mantıksal operatörler
- Mantıksal operatörlerin kısa devre davranışları
- Atama operatörü
- İşlemli atama operatörleri
- if deyimi
- while döngü deyimi
- do while döngü deyimi
- for döngü deyimi
- break ve continue deyimleri
- Etiketli break ve etiketli continue deyimleri
- switch deyimi
- Örnek programlar
- Farklı türlerin birbirine atanması
- İşlem öncesi otomatik tür dönüşümleri
- Tür dönüştürme operatörü
- Koşul operatörünün özellikleri
- Koşul operatörünün kullanıldığı durumlar
- Bir sınıf içerisinde aynı isimde metotlar
- Bir metodun imzası
- Çağırma sırasında hangi metodun çağrılacağının belirlenme süreci (overload resolution)
- Tam uyum (best match)
- Tam uyum olmadığında hangi metodun çağrılacağının belirlenme süreci
- Nesne yönelimli programlama tekniğine ilişkin temel kavramlar
- Sınıf ve nesne kavramları
- Aynı isimde metotların anlamı
- Diğer programlama teknikleri hakkında bilgiler
- Adres kavramı
- Stack ve heap alanları
- Ömür (storage duration) kavramı: yerel ve parametre değişkenlerinin ömürleri
- Sınıf ve nesne kavramları
- Referans türleri ve değer türleri
- Referans kavramı
- new operatörü
- Sınıfın static olmayan veri elemanlarına erişim ve nokta operatörü
- Sınıfın static olmayan veri elemanlarının varsayılan değerleri
- Referans parametreli metotlar
- Referans geri dönüş değerli metotlar
- Sınıfın static veri elemanları
- Sınıfın non-static ve static metotları
- Sınıfın non-static metotları içerisinde non-static ve static elemanlara doğrudan erişim durumu
- Sınıfın static metotları içerisinde non-static ve static elemanlara doğrudan erişim durumu
- Örnek yararlı sınıflar
- Nesne oluşturulması adımları
- Sınıfın varsayılan (default) başlangıç metodu
- Başlangıç metotlarının overload edilmesi
- Örnek yararlı sınıflar
- Rasgele sayı üretimi
- Random sınfının metotları
- Tohum değeri (seed value) kavramı
- Random sınıfının tohum değeri parametreli başlangıç metodu ve setSeed metodu
- Örnek programlar
- Immutable sınıf kavramı
- String nesnesinin bellekteki durumu
- String sabitleri (String literals)
- String sınıfının metotları
- String işlemlerine yönelik yararlı metotların yazılması
- Örnek programlar
- Paket kavramı
- Farklı paketlerdeki sınıflara erişim
- İçiçe paket bildirimleri
- Paketler ve dizinlerin ilişkisi
- Paket isimlendirmesine ilişkin teknikler
- Kaynak dizin (source folder)
- Yazılmış olan yararlı sınıflara ilişki uygun paketler
- Niteliksiz (unqualified) isim arama
- Nitelikli (qualified) isim arama
- import bildirimleri (import on demand declaration, import single type declaration)
- import static bildirimleri (import static on demand declaration, import static single type declaration)
- Dizi referansları
- Diziye ilişkin nesnelerin bellekteki durumu
- Dizi elemanlarına erişim
- Dizilere ilk değer verilmesi
- Dizilerin metotlara geçirilmesi: dizi referansı parametreli metotlar
- Dizi referansı döndüren metotlar
- Dizilere ilişkin temel algoritmaların yazımı
- Dizilere ilişkin yararlı metotların yazımı
- Dizilerde bazı sıralama algoritmaları: kabarcık sıralaması (bubble sort) ve _seçerek sıralama (selection sort) algoritmaları
- char türden diziler
- char türden diziler ve String sınıfı
- Referans dizileri
- Referans dizilerine ilkdeğer verilmesi
- String türden diziler
- Dizi dizileri
- Dizi dizilerinin çok boyutlu dizi gibi kullanılması
- Dizi dizilerine ilk değer verilmesi
- Matrisler ve matrislere ilişkin algoritmalar
- Örnek programlar
- public erişimcisi
- private erişimcisi
- Erişim belirleyicilerin paketlerle ilişkisi
- no-modifier erişimcisi
- protected erişimcisi
- Başlangıç metodunun private olması durumu
- Singleton sınıf tasarımı: lazy implementation
- Örnek sınıflar
- final yerel değişkenler
- final parametre değişkenleri
- final veri elemanları
- final static veri elemanları
- final non-static veri elemanları
- Singleton sınıf tasarımı: eager implementation
- immutable sınıf tasarımı
- Örnek immutable sınıflar
- enum sınıflar
- enum sabitleri
- enum sınıfların ordinal metotları
- enum sınıfların values static metotları
- enum sınıfların sabit dışındaki elemanları
- enum sınıfların başlangıç metotları (constructor)
- enum'ların eşitlik karşılaştırması
- enum'ların karşılaştırılması
- enum sınıfların kullanımı
- Örnek enum sınıflar
- Composition
- Aggregation
- Association
- Inheritance
- Sınıflar arası ilişkilerin modellenmesi
- Super class (taban sınıf) ve sub class (türemiş sınıf) kavramları
- Türetme sentaksı
- Başlangıç metodu içerisinde taban sınıfın başlangıç metodunun çağrılması
- Başlangıç metodu içerisinde taban sınfın istenilen başlangıç metodunun çağrılması: super sentaksı
- Başlangıç metodu içerisinde başka bir başlangıç metodunun çağrılması: this sentaksı
- protected bölümün anlamı
- Object sınıfı
- Örnek sınıflar
- Yukarıya doğru dönüşüm (upcasting)
- Yukarıya doğru dönüşümün anlamı
- Referansların statik ve dinamik türleri
- Aşağıya doğru dönüşüm (down-casting)
- Haklı ve haksız dönüşüm kavramı
- instanceof opetörü
- Sarmalayan (wrapper) sınıflar
- Number sınıfı ve metotlarının anlamı
- Otomatik kutulama (auto-boxing) ve otomatik kutuyu açma (auto-unboxing)
- final sınıflar
- Örnek programlar
- Sınıfların static blokları (static initializers)
- Sınıfların static olmayan blokları (non-static initializers)
- this referansının anlamı
- non-static metotlar içerisinde this kullanmı
- this referansının kullanıldığı örnek durumlar: fluent kalıbı
- Örnek sınıflar
- null adres kavramı ve null sabiti
- null referansın kullanıldığı durumlar
- Nesnelerin ömürleri
- Nesnelerin seçilebilir (garbage collected) duruma gelmesi
- Çöp toplayıcı'nın çalışma biçimi
- Nesnelerin gösteren referansların takibine yönelik tipik algoritmalar
- Algoritmanın karmaşıklığı
- Karmaşıklığın ölçütü
- Karmaşıklığın gösterimine ilişkin notasyonlar
- Big O notasyonu ile çeşitli karmaşıklık durumlarının incelenmesi
- O(1), O(logn), O(n), O(n * Logn), O(n ^ 2), O(n ^ 3), ... , O(n ^ k) karmaşıklıkları
- O(k ^ n), O(n!) gibi özel karmaşıklıklar
- Dinamik büyüyen veri yapısına ilişkin temel kavramlar: capacity, size vs.
- Dinamik büyüyen veri yapısına ilişkin metotların karmaşıklık durumları
- ArrayList ve Vector sınıfları
- Örnek programlar
- Örnek bir dinamik büyüyen dizi sınıfının yazılması
- Çok biçimliliğin programlamaya yönelik tanımları
- Çok biçimli mekanizma
- Sanal metotlar
- Sanal metotların override edilmesi
- Metotların override edilmesinin anlamı
- super referansı
- Override edilen metot içerisinde taban sınıfın aynı metodunun çağrılması (augmentation)
- Override edilen metodun erişim belirleyicisinin erişim anlamında yükseltilmesi
- final metotlar
- Çok biçimliliğe ilişkin örnek tasarımlar ve kodlanması
- Soyut sınıf ve metotların anlamı
- Soyut metotların override edilmesi
- Soyut metotların override edilmemesi durumu
- Soyut sınıfların taban sınıf referansı olarak kullanılması
- Soyut sınıfların başlangıç metotları
- Örnek sınıflar
- Exception kavramı kullanımı
- Exception sınıf hiyerarşisi: Throwable, Exception, Error ve RuntimeException sınıfları
- throw anahtar sözcüğü ve bir exception nesnesinin fırlatılması
- try blokları
- catch blokları
- catch blokları parametrelerine ilişkin sınıflar ve uygun catch bloğunun bulunması
- Yeniden fırlatma (rethrow)
- İçiçe try bloklarının bulunması durumu
- finally bloğu
- Yakalanamayan exception durumu
- Exception sınıflarının anlamı
- Cause exception
- checked ve unchecked exception sınıfları
- throws anahtar sözcüğü
- Önemli exception sınıfları
- Örnek sınıfların exception açısından düzenlenmesi ve genel hale getirilmesi
- Arayüzlerin elemanları
- Arayüzler içerisinde olabilecek elemanların Java sürümlerine göre farklılıkları
- Bir sınıfın desteklediği arayüzler ve metotların override edilmesi
- Marker arayüzler, fonksiyonel arayüzler
- Java 8 ile eklenen arayüz içerisinde default metotlar ve static metotlar
- Arayüzler ile abstract sınıflar arasındaki farklar
- Arayüzler arası tür dönüştürme ayrıntıları
- Çok kullanılan bazı arayüzler
- try-with resources bloğu ve kullanımı: AutoCloseable ve Closeable arayüzleri
- Generic sınıflar
- Generic sınıflarda türetme işlemleri
- Generic sınıflarda new operatörü ile <> (diamond syntax) kullanımı
- Generic arayüzler
- Generic türlerde kısıtlar: extends ve super anahtar sözcüğünün generic parametrelerde kullanımı
- Generic türlerde joker karakter
- Generic sınıflarda alt sınır ve üst sınır belirlenmesi (invariant, covariant ve contra-variant)
- Generic metotlar
- Generic metotlarda parametre türlerinin tespiti
- Generic türlerin ve metotların generic parametrelerinin arakoda Object olarak aktarılması
- Örnek sınıflar ve programlar
- Program ve Process kavramları
- Programın komut satırı argümanları
- Progamın giriş noktası (entry point) olan main metodunun parametresi ve anlamı
- Örnek uygulamalar
- Dosya ve dizin (directory) kavramları
- Dosya yol ifadeleri: absolute and relative path
- Processin çalışma dizini (current working directory)
- Metin (text) ve ikili (binary) dosyalar
- Dosya üzerinde bütünsel işlemler yapan sınıflar
- Dosyalar üzerinde ayrıntılı işlem yapan sınıflar
- File sınıfının dosya ve dizinler üzerinde işlem yapan metotlar
- Path arayüzü ve Files sınıfı
- InputStream ve OutputStream soyut sınıfları
- FileInputStream ve FileOutputStream sınıfları
- Dosya göstericisi (file pointer) kavramı
- Dosya göstericisinin EOF durumu
- Dosyadan okuma ve yazma işlemleri
- Little endian ve big endian kavramları
- Temel türlerin byte dizisine çevrilmesi ve byte dizisinin temel türlere çevrilmesi (ByteBuffer sınıfı)
- DataInputStream ve DataOutputStream adaptör sınıfları
- BufferedReader ve BufferedWriter adaptör sınıfları
- RandomAccessFile sınıfı
- Dosya göstericisinin konumlandırılması
- Dosya formatı kavramı
- Örnek programlar