
Dersin kodları ve slideları, bu dersin kaynaklarındadır.
Java'ya kısa tarihi ve temel özellikleriyle giriş yapıyoruz.
Java Nedir?
Java'nın Kısa Tarihi
Java’nın Temel Özellikleri
İlk Java kodumunuzu yazıyoruz.
İlk Java kodumuzu yazmaya devam ediyoruz.
Java'yı nasıl öğrenelim?
Java'nın diğer özelliklerini ele alıyoruz.
Neden Java'yı öğrenelim ki?
Java'ya, bir programlama dili olarak en temelinden giriş yapıyoruz. Dilin simgeleri, anahtar kelimeler, yorumlar, isimlendirme, kod geleneği ve sabiteleri ele alıyoruz.
Daha fazla ilerlemeden, örneklerden daha çok fayda sağlayabilmek için, detaylarını ileride tamamlayacağımız, Java'nın kaynak kod yapısını hızlıca ele alıyoruz.
Java'nın .java uzantılı kaynak dosyasının yapısının ele alıyoruz.
main metodunu, tüm Java çalışma zamanı yapılarının başlama yeri olarak ele alıyoruz.
Her zaman ödevlerimiz var. Lütfen ödevleri yapın.
Tipli bir dilin en temel öğeleri olarak tipler ve değişkenleri ele alıyoruz. İlkel ve karmaşık tiplere giriş yapıyoruz.
İlkel tiplerden sayıları ele alıyoruz.
Karmaşık ya da referans/nesne tipleri ile nesnelere giriş yapıyoruz, nesne-referans ayırımını işliyoruz.
Öğrendiğimiz tiplerden değişkenleri nasıl oluşturacağımızı ele alıyoruz.
Java'ya 10. sürümüyle gelen "var" anahtar kelimesini işliyoruz.
Değişkenlerin kapsamını (scope) yani görünürlük alanını ele alıyoruz.
Burada örnek bir uygulama olarak bir futbolcu modellemesi yapılmakta ve kodlanmaktadır.
Burada çevirim (conversion) yarısı ile genişleten (widening) ve daraltan (narrowing) çevirimler ele alınmaktadır.
Değişmezlik (immutability) ve final anahtar kelimesini ele alıyoruz.
Yine ödevlerimiz var.
İşlemcilere giriş yapıyoruz.
İşlemcilere devam.
Öncelik (precedence) ve değerlendirme sırasını (association) ele alıyoruz.
Sayısal yükseltmeler (promotion) ile işlemci çoklu kullanımını (operator overloading) ele alıyoruz.
Ve ödevler.
Kontrol yapılarına giriş yapıyoruz.
Karar yapılarından if ailesi ile bir kısaltma olarak üçlü operatörü (ternary operator) ele alıyoruz.
Bir uygulama: Yıldızları kullanarak dikdörtgen çizme.
Karar ve seçme yapısı olarak switch-case'i işliyoruz.
Akışı özellikle tekrar içinden yönlendirme amaçlı break ve continue ile metotlardan dönüş için return anahtar kelimelerini ele alıyoruz.
Özyineleme (recursion) ve erişilemeyen kodu (unreachable code) ele alıyoruz.
Keyifli ödevler!
Bazı ödevlerin çözümü.
Bazı ödevlerin çözümü.
Dizileri tanımlama ve elemanlarına erişimi öğreniyoruz.
Dizilerde for each anlamında for döngüsünü ele alıyoruz.
2 ve 3 boyutlu dizileri ele alıyoruz.
Dizilerle ilgili bazı faydalı işlemlere sahip olan Arrays sınıfını öğreniyoruz.
main metodu kullanarak bir Java programına dışarıdan parametre nasıl geçilir?
Sieve of Eratosthenes algoritması ile bir sayıya kadar olan asal sayıları bulma ödevini birlikte yapıyoruz.
Bir veri yapısı (data structure) olan stack (yığın) gerçekleştirmesini birlikte yapıyoruz.
Bu bölüm tek bir dersten ibarettir.
Sınıf ve nesnelere giriş yapıyoruz.
Nesnelerin alanlarını (fields) ele alıyoruz.
Nesnelerin davranışları olarak metotları ele alıyoruz.
Sağlıklı metotlar nasıl yazılır? Clean Code çerçevesinde kısa bir şekilde işliyoruz.
Metotların parçalarından olan imza (signature) ve arayüzü (interface) ele alıyoruz. Ayrıca metotların çoklu kullanımını (overloading) işliyoruz.
Metotlarla alakalı detaylı bir kaç konuyu ele alıyoruz.
Durumlu (stateful) ve durumsuz (stateless) nesne kavramını ve ilgili yapıları işliyoruz.
Ödevsiz olmaz :)
Kuruculara (constructors) giriş yapıyoruz.
Bu kısımda kurucuların çoklu kullanımını (constructor overloading) ele alıyoruz.
this anahtar kelimesini işliyoruz.
static anahtar kelimesini ele almaya başlıyoruz.
Ne zaman static kullanalım?
Başlatma (initialization) konusuna giriş yapıyoruz.
Sınıf ve nesne başlatma bloklarını işliyoruz.
Sınıfın ve nesnenin başlatılmasında yapılan işlerin hangi sırayla olduğunu ele alıyoruz.
Artık yavaştan bellek yapısı ve çöp toplamaya (garbage collection, GC) girmenin zamanı geldi.
Ve tabi ki ödevler.
Bu eğitim, dünyanın en yaygın dillerinden olan Java'yı ve nesne-merkezli programlamayı (OOP), en temelinden öğretmeyi hedefler. Eğitimi almak için, öğrenmeyi tutkuyla istemek dışında bir şart yoktur. Bu eğitimde "Java"nın kelime anlamından ve tarihinden başlayarak, satır satır nasıl kod yazılır, nasıl derlenir ve çalıştırılır, varsa hataları nasıl düzeltilir, tüm bunları keyifle öğreneceksiniz. Konular en başından kalıtım ve enuma kadar detaylı bir şekilde işlenecektir.
Eğitimde, Java SE’nin 14. sürümü kullanılmaktadır.
Eğitimin başında Java dilinin en temel özelliklerini, söz dizimi kurallarını (syntax & grammar), anahtar kelimeleri, yorumları, veri tiplerini ele aldıktan sonra Java ile yordamsal (procedural) ve nesne-merkezli (object-oriented) programlamaya derin bir şekilde girilmektedir. Dolayısıyla eğitimde for, while, if-else, switch-case vb. akış kontrol (flow control) yapılarından sonra nesne oluşturma, kurucular (constructors), nesne ve sınıf alanları ve metotları, statik ve this anahtar kelimeleri ve kalıtım/miras (inheritance) konuları ele alınacaktır. Ayrıca en çok kullanılan, String, Date, vb. sınıflar ile diziler (arrays) ve enum da eğitimin konuları arasındadır.
Bu eğitimde hem algoritmik düşünceye hem de nesne-merkezli düşünceye giriş yapılacaktır. Akış kontrol yapılarının işlendiği kısımlarda yoğun algoritmik örnekler vardır. Nesneler kısmında ise farklı nesne modelleme örnekleri verilmektedir.
Java'nın yeni sürümleri çıktıkça, ele alınan konularda yenilikler olursa, bu yenilikleri ele alan yeni bölümler eğitime eklenecektir.
Bu eğitim Oracle'ın Java sertifikalarına hazırlık olarak da alınabilir.
Bu eğitim çok detaylıdır, konuları bildiğinizi düşünseniz bile, atlamadan ve sindirerek ilerleyin. Tüm örneklerini çalıştırın, oynayın, bozun, her şeyin nedenini anlayın ve tekrar çalışır hale getirin. Kendi örneklerinizi yazın, benzer teknikleri uygulayın, ödevleri muhakkak yapın. Ödevlerin çözümlerini paylaşmıyorum ama buradan paylaşırsanız bakar ve size geri dönerim. Ayrıca bazı ödevlerin çözümlerini videolarda da bulacaksınız.
Eğitimde 300'den fazla kaynak kod ile oluşturulmuş pek çok örnek var. En ufak bir noktanın bile anlaşılması için örnek yaptım. Örneklerin kaynak kodlarına hem Github üzerinden hem de Eclipse projesi olarak ulaşabilirsiniz. Github'da ayrıca PDF yansılar (slides) da var. (Yansılarda zaman zaman sonradan yaptığım değişiklikleri de görebilirsiniz.) Bunun için 1. bölümün resourcelarına bakın.
Bu eğitim online canlı derslerle yapıldığı için sıklıkla katılımcı sorularına cevap verdiğimi göreceksiniz. Umarım bu durum eğitimden elde edeceğiniz faydayı arttırır.
Sorularınızı buradaki Q & A bölümünden sorabilirsiniz.
İyi eğlenceler.