Java ile Nesne Yönelimli Programlama


KURSA ÖN KAYIT YAPTIRABİLİRSİNİZ

Java Programlama Dili kolay ve hızlı uygulama geliştirmeyi amaçlayan C++’dan türetilmiş yalın bir nesne yönelimli programlama dilidir. Java’yı kullanarak Android uygulamaları, GUI uygulamaları, web servis uygulaması, dağıtık uygulamalar için bileşenler geliştirebilirsiniz. Bu kursta bir programlama dili olarak Java ele alınmaktadır. Bu kurs Java ile Uygulama Geliştirme (I) kursu için bir önkoşul niteliğindedir.

## Temel kavramlar
+ 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ı

## Tür kavramı
+ 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
+ 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ı

## Temel Operatörler
+ 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

## Kontrol deyimleri
+ _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

## Tür dönüştürmeleri
+ 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ü
+ Koşul operatörünün özellikleri
+ Koşul operatörünün kullanıldığı durumlar

## Aynı isimde metotlar _(method overloading)_
+ 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ği
+ 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ı
+ Adres kavramı
+ Stack ve heap alanları
+ Ömür _(storage duration)_ kavramı: yerel ve parametre değişkenlerinin ömürleri

## Temel sınıf kavramları
+ 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

## Sınıfların başlangıç metotları _(constructors)_
+ 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ınıfı)_
+ 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

## String sınıfı
+ _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

## Paketler
+ 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

## İsim arama
+ 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)_

## Diziler (Arrays) ve uygulamalar
+ 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

## Sınıflarda temel erişim kuralları
+ _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 değişkenler
+ 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 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

## Sınıflar arası ilişkiler
+ _Composition_
+ _Aggregation_
+ _Association_
+ _Inheritance_
+ Sınıflar arası ilişkilerin modellenmesi

## Türetme (inheritance)
+ _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

## Taban sınıf ve türemiş sınıf arasındaki dönüşümler
+ 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 içerisinde bloklar
+ Sınıfların _static_ blokları _(static initializers)_
+ Sınıfların _static_ olmayan blokları _(non-static initializers)_

## this referansı
+ _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 referans
+ _null_ adres kavramı ve _null_ sabiti
+ _null_ referansın kullanıldığı durumlar

## Temel algoritma analizi
+ 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 dizi veri yapısı
+ 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çimlilik (polymorphism)
+ Ç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ıflar ve metotlar (abstract classes and methods)
+ 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 işlemleri
+ _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üzler _(interfaces)_
+ 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

## Dosya işlemleri
+ 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
+ _RandomAccessFile_ sınıfı
+ Dosya göstericisinin konumlandırılması
+ Örnek programlar

## Generic sınıflar ve metotlar
+ 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

Önkoşul:
Daha önce herhangi bir programlama dilinde uygulamalı çalışma yapmış olmak veya C ve Sistem Programcıları Derneği’nin açmış olduğu Programlamaya Giriş kursu başarıyla bitirmiş olmak.

* Ücretleri sorunuz.

KURSA ÖN KAYIT YAPTIRABİLİRSİNİZ

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

Java ile Uygulama Geliştirme (I)


KURSA ÖN KAYIT YAPTIRABİLİRSİNİZ

Açıklama:
Bu kurs Java ortamında uygulama geliştirme becerisini kazandırmayı hedeflemektedir. Aynı zamanda bir uygulama kursu olduğundan her konu ele alınırken uygulamalı çalışmalar yapılacaktır.
Kurs konularından bazıları aşağıdadır:
## Yararlı sınıflar
+ StringBuilder sınıfı
+ BigDecimal sınıfı
+ BigInteger sınıfı
+ Arrays sınıfı
+ Timer sınıfı
+ Çeşiti yararlı sınıfların yazılması

## Jar (Java Archive) dosyaları
+ IntelliJ ve Eclipse ile jar oluşturma
+ Birbirlerini kullanan jar dosyaları
+ Çalışabilen jar dosyaları
+ Bir kütüphane tasarımında dikkat edilecek durumlar
+ Çeşitli profesyonel kütüphaneler

## Annotation’lar
+ Annotation bildirimi
+ Annotation’ın anlamı
+ Class, Source ve runtime annotation’lar
+ Retention annotation
+ Target Annotation
+ Inherited Annotation
+ Java’nın standart annotation’ları

## Temel Reflection işlemleri
+ Class sınıfı
+ Sınıf elemanlarına ilişkin bilgilerin elde edilmesi
+ Annotation bilgisinin reflection ile elde edilmesi
+ Sınıfın public olmayan elemanlarına çalışma zamanı sırasında erişim
+ Reflection kullanarak çalışma zamanında eklenen jar dosyaları ile plugin oluşturma
+ Örnek uygulamalar

## İçiçe tür bildirimleri
+ Effectively final kavramı
+ Anonim sınıflar
+ Anonim sınıfların değişkenleri yakalaması (capture)
+ Yerel sınıflar
+ Sınıf içinde static sınıf bildirimi (nested classes)
+ Sınıf içinde non-static sınıf bildirimi (inner classes)
+ Yerel sınıflar (local classes)
+ Örnek uygulamalar

## Java Programlama diline eklenen yeni özellikler
+ Özellikle Java 8 ile eklenen özellikler ile kurs sırasındaki son Java versiyonuna göre eklentiler anlatılacaktır
+ Fonksiyonel arayüzler (functional interfaces)
+ java.util.function paketi içerisindeki fonksiyonel arayüzler
+ Lambda ifadeleri
+ Lambda ifadelerinde değişkenlerin yakalanması (capture)
+ Lambda ifadelerinde tür çıkarımı
+ Lambda geri dönen metotlar
+ Optional sınıfları (Optional, IntOptional, LongOptional ve DoubleOptional sınıfları)
+ var değişkenler (Java 10)
+ switch expression (Java 14)
+ record türleri (Java 14)
+ Module kavramı
+ Örnek uygulamalar

## Java ile Fonksiyonel Programlama
+ Fonksiyonel programlama tekniği
+ Java’ da fonksiyonel programlama
+ Parametresi fonksiyonel arayüz referansı olan metotlar
+ Callback kavramı
+ Örnek uygulamalar

## Nesne tutan sınıfların (collections) ayrıntılı incelenmesi
+ İleri generic işlemleri
+ Iterable ve Iterator arayüzleri
+ Bir sınıfın for-each döngü deyimi ile dolaşılabilir biçimde yazılması
+ Örnek sınıfların yazılması ve jar dosyaları oluşturma
+ Collection arayüzü ve anlamı
+ Liste tarzı collection sınıflar ve List arayüzü
+ Object sınıfının equals metodu ve anlamı
+ Küme tarzı collection sınıflar ve Set arayüzü
+ TreeSet sınıfı
+ Comparable ve Comparator arayüzleri
+ Object sınıfının hashCode metodu ve anlamı
+ HashMap sınıfı
+ Diğer collection sınıflar (Stack, PriorityQueue vb.)
+ Sözlük tarzı collection sınıfları ve Map arayüzü
+ HashMap sınıfı
+ Collections sınıfının yararlı metotları
+ Uygulama geliştirmede doğru collection sınıflarının seçimi
+ Örnek uygulamalar

## Stream API kullanımı
+ Stream arayüzü ve anlamı
+ Stream, IntStream, LongStream ve DoubleStream arayüzleri
+ StreamSupport sınıfı
+ Stream arayüzlerinin metotları
+ Örnek uygulamalar

## Spring uygulamaları
+ Maven build aracı kurulumu ve kullanımı
+ Spring framework
+ Spring boot
+ Core annotaions (Component, Configuration, Bean, Order, DependsOn, Qualifier vb.)
+ Bean kavramı ve bean sınıflar
+ ApplicationRunner arayüzü
+ Scope annotation
+ application.properties dosyası
+ profile oluşturma
+ yml dosyaları
+ Maven ile jar oluşturma ve kullanma
+ Test işlemleri (JUnit vb)
+ Spring boot uygulamasının jar ile yayınlanması (deployment)
+ Spring asenkron işlemler
+ Scheduled annotation’ı
+ Controller kavramı ve MVC (Model View Controller) tasarım kalıbı
+ Servlet kavramı, HttpServletRequest ve HttpServletResponse sınıfları
+ Spring REST servisler (JSON ve XML)
+ Katmanlı mimari uygulamaları (Repository, Service ve Application katmanları)
+ DTO (Data Transfer Object) tasarım kalıbı
+ MVVM (Model View View Model) tasarım kalıbı
+ Map Struct kütüphanesi
+ ModelMapper kütüphanesi
+ JDBC ile veritabanı işlemleri
+ Spring JPA ve Hibernate
+ CrudRepository arayüzü
+ JPARepository arayüzü
+ PostgreSQL veritabanı, JPA, Hibernate kullanımı
+ Thymeleaf kullanımı (temel düzeyde)
+ Spring boot exception işlemleri
+ Spring Security
+ Spring ile reactif programlama (WebFlux)
+ Spring MongoDB uygulamaları
+ Mikroservisler
+ Örnek Uygulamalar
+ Ve diğerleri…

Önkoşul: Daha önce Java Programlama Dili ile Nesne Yönelimli Programlama konusunda çalışma yapmış olmak ya da C ve Sistem Programcıları Derneği’nin açmış olduğu Java ile Nesne Yönelimli Programlama kursuna katılmış olmak.

*Ücretleri Sorunuz.

KURSA ÖN KAYIT YAPTIRABİLİRSİNİZ

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

Programlamaya Giriş


Açıklama : Programlamaya Giriş kursu program yazmak isteyenler için bir başlangıç kursudur. Kursun temel amacı programlama mantığını öğretmek ve sonucunda katılımcıları herhangi bir programlama dilinde çalışma yapmaya hazır hale getirmektir. Kursta Java programlama dili kullanılacaktır. Ancak kursun amacı Java programlama dilini öğretmek değildir. Java sadece bir araç olarak kullanılacak, çalışma ortamından ve sözdiziminin C programlama diline benzerliğinden faydalanılacaktır.

Programlamaya Giriş kursu C, C++, C#, Java, Python gibi programlama dili kurslarından farklıdır. Programlama dilinin öğretildiği kurslarda somut şeyler öğretilir, bundan dolayı kursun içeriği hazırlanabilir. Ancak programlamaya giriş kursunda daha çok soyut şeyler öğretilir, bu nedenle bu kurs için hazırlanacak bir içerik gerçekçi olmayacaktır. Bu kursta temel programlama mantığı, bilgisayara bir işi tarif etme öğretilmektedir.

Önkoşul : Windows işletim sistemlerinden birini kullanmış olmak.


* Ücreti sorunuz.

 

İleri Android Programlama ve Uygulama Geliştirme


Açıklama : Bu kurs Android işletim sistemi üzerinde temel düzeyde uygulama geliştirmiş olan kişilere yönelik ileri düzey bir programlama kursudur. Android işletim sistemi üzerinde aşağı seviyeli geliştirme ortamı (NDK) da ayrıca ele alınacaktır. NDK uygulamaları için C/C++ bilinmesi gerekmektedir. Ancak bilmeyen kişiler de kavramsal olarak bilgi kazancı sağlayabilirler. Bununla birlikte genel ileri düzey (örneğin TCP/IP Client-Server programlama) uygulamaların da Android işletim sisteminde geliştirilmesi de kurs kapsamındadır. Tüm konular uygulamalı olarak ele alınacaktır.

Kurs konularından bazıları aşağıdadır:
• Android programlarının test edilmesi.
• Android işletim sisteminin aşağı seviyeli incelenmesi
• Android sistem programlama
• İleri çizim işlemleri (2B/3B işlemler, OpenGL ES kullanımı)
• Android ile sanal ve genişletilmiş gerçeklik (Virtual/Augmented reality) uygulamarı geliştirme
• Android için geliştirilen yazılımların güvenliği.
• Android işletim sistemi ile çeşitli sensörlerin kullanımı
• Çokluortam (multimedia) programlama
• NDK kullanarak uygulama geliştirme
• Android için geliştirilen yazılımların performanslarının artırılmasına yönelik işlemler
• Android üzerinde ileri düzey haberleşme uygulamaları geliştirme (TCP/IP programlama, Web Servisleri, Whatsapp benzeri programların yazılması)
• Temel düzeyde Android TV ve giyilebilir (wearable) teknolojiler için uygulama geliştirme
• Ve diğerleri…

Ön Koşul : Android işletim sistemi üzerinde temel düzeyde uygulama geliştirmiş olmak veya derneğimizin açmış olduğu “Android Programlama” kursunu başarıyla bitirmiş olmak

* Ücreti sorunuz.

C++ Programcıları için Java


Açıklama : Bu kurs C++ Programcılarının Java Programlama Dilinde uygulama geliştirmelerini sağlamayı amaçlıyor. C++ Java’ya göre daha aşağı seviyeli, daha güçlü, daha ayrıntılı bir semantik yapıya sahiptir. Kursta JAVA Programlama Dili C++ bakış açısıyla ele alınarak açıklanacaktır.

Kurs konularından bazıları aşağıdadır;
•C++ ile Java’nın genel farklılıkları
•Java veri türleri ve operatörlerinin incelenmesi ve C++’tan farklılıkları
•C++ bakış açısıyla Java’da referans kullanımı
•Java deyimlerindeki farklılıklar
•Java sınıflarının genel yapısı
•Java sınıflarının şematik organizasiyonu
•Sınıflarla ilgili işlemler
•Java’da türetme ve polymorphism
•Java sınıflarının kullanımı
•Java’da olmayan C++ özellikleri

Önkoşul: C++ Programlama Dilinde uygulamalı çalışma yapmış olmak ya da C ve Sistem Programcıları Derneği’nin açmış olduğu C++ ve Nesne Yönelimli Programlamaya Giriş kursuna katılmış olmak.

* Ücreti sorunuz.

UML ve Tasarım Kalıpları (C# ve Java Kod Örnekleriyle)


KURSA ÖN KAYIT YAPTIRABİLİRSİNİZ

Modül 1 : UML (Unified Modelling Language)

• 1.1 : Modelleme Olgusu

• 1.2 : Modelleme Dilleri

• 1.3 : UML (Unified Modelling Language)

o 1.3.1 : UML Standardizasyonu ve UML Versiyonları

o 1.3.2 : UML Kullanımının Getirileri

• 1.4 : UML Modelleri ve İlişkili Diyagramlar

• 1.5 : UML Destekli Tasarım Araçları

• 1.6 : Constraint, TaggedValue ve Stereotype Kavramları

• 1.7 : Use Case (Kullanım Senaryosu) Diyagramları

• 1.8 : Activity (Faaliyet) Diyagramları

• 1.9 : Nesne Yönelimli Modellemeye İlişkin Temel Kavramlar

• 1.10 : Sınıf ve Nesne Diyagramları

• 1.11 : Nesneler Arasındaki İlişkiler

o 1.11.1 : Association (Referans)

o 1.11.2 : Aggregation (Barındırma, İçerme)

o 1.11.3 : Composition (Bağımlı İyelik)

o 1.11.4 : Generalization (Genelleme)

o 1.11.5 : Realization (Gerçekleme)

o 1.11.6 : Dependency (Bağımlılık)

o 1.11.7 : Use (Kullanma)

• 1.12 : State (Durum) Diyagramları

• 1.13 : Sequence (Etkileşim) Diyagramları

• 1.14 : Communication (İletişim) Diyagramları

• 1.15 : Component (Bileşen) Diyagramları

• 1.16 : Package (Paket) Diyagramları

• 1.17 : Deployment (Dağıtım) Diyagramları

Modül 2 : Dizayn ve Paketleme Prensipleri

• 2.1 : Dizayn Prensipleri

o 2.1.1 : Ayrıştırma (Decomposition)

o 2.1.2 : Kohezyon (Yapışıklık)

o 2.1.3 : SRP : Tek Sorumluluk (Single Responsibility) Prensibi

o 2.1.4 : LCP : Zayıf Bağlaşım (Low Coupling) Prensibi

o 2.1.5 : Yeniden Kullanılabilirlik (Reusability) Prensibi

o 2.1.6 : OCP : Açık/Kapalı Prensibi (Open/Closed Principle)

o 2.1.7 : LSP : Liskov Yerine Geçme Prensibi (Liskov Substitution Principle)

o 2.1.8 : DIP : Bağımlılığı Ters Çevirme Prensibi (Dependency Inversion Principle)

o 2.1.9 : ISP : Arayüz Ayırma Prensibi (Interface Segregation Principle)

o 2.1.10 : Polimorfizm Nedir

• 2.2 : Granülarite ve Paket Kavramı

• 2.3 : Paketlemeye İlişkin Prensipler

o 2.3.1 : REP : Yeniden Kullanılabilir Sürüm Eşdeğerliği Prensibi (Release Reuse Equivalence Principle)

o 2.3.2 : CCP : Ortak Kapatma Prensibi (Common Closure Principle)

o 2.3.3 : CRP : Ortak Yeniden Kullanım Prensibi (Common Reuse Principle)

o 2.3.4 : ADP : Çevrimsiz Bağımlılık Prensibi (Acyclic Dependencies Principle)

o 2.3.5 : SDP : Kararlı Bağımlılıklar Prensibi (Stable Dependencies Principle)

o 2.3.6 : SAP : Kararlı Soyutlamalar Prensibi (Stable Abstractions Principle)

Modül 3 : Dizayn Paternlere Giriş ve Temel Kavramlar

• 3.1 : Giriş

• 3.2 : Patern Kümeleri (Pattern Cluster)

• 3.3 : Idiom (Deyim) Kavramı ve Örnekleri

• 3.4 : Anti-Patern (Karşıt Kalıp) Olgusu

• 3.5 : GOF Sistematiği

Modül 4 : Nesne Oluşturulmasına/Yaratılmasına Ait (Creational) Paternler

• 4.1 : Singleton

• 4.2 : Factory Method / Virtual Constructor

• 4.3 : Prototype

• 4.4 : Object Pool

• 4.5 : Builder

• 4.6 : Abstract Factory

Modül 5 : Davranışsal (Behavioral) Paternler

• 5.1 : Iterator / Cursor

• 5.2 : Observer / Publish Subscribe

• 5.3 : Mediator

• 5.4 : Chain of Responsibility

• 5.5 : Command

• 5.6 : Visitor

• 5.7 : Strategy/Policy

• 5.8 : State

• 5.9 : Template Metot

• 5.10 : Interpreter

• 5.11 : Memento

Modül 6 : Yapısal (Structural) Paternler

• 6.1 : Decorator

• 6.2 : Adapter / Wrapper

• 6.3 : Facade

• 6.4 : Proxy / Surrogate

• 6.5 : Bridge

• 6.6 : Compozite

• 6.7 : Flyweight

Modül 7 : Yazılım Mimarisi ve Mimari Paternler

• 7.1 : Dependency Injection ve (IoC) Inversion of Control

• 7.2 : UI (User Interface) Patern’leri

• 7.3 : MVC (Model View Controller) Patern’i

• 7.4 : Model2 Patern’i (FrontController ve HTTP Interceptor)

• 7.5 : MVP (Model View Presenter) Patern’i

• 7.6 : PM (Presentation Model) ve MVVM (Model-View-ViewModel) Patern’leri

• 7.7 : İş Katmanı (Business Layer) Paternleri

• 7.8 : Transaction Script Patern’i

• 7.9 : Table Module Patern’i

• 7.10 : Active Record Patern’i

• 7.11 : Domain Model Patern’i

• 7.12 : Repository Patern’i

• 7.13 : Special Case Patern’i

• 7.14 : Seperated Interface ve Plugin Patern’leri

• 7.15 : APM Patern’i

• 7.16 : Service Locator Patern’i

• 7.17 : Diğer mimari paternler

Modül 8 : Yazılım Geliştirme Sürecinin Modellenmesi

• 8.1 : Proje Yönetiminin Temel Kavramları

• 8.2 : Şelale (Waterfall) Yöntemi

• 8.3 : Spiral Yöntemi

• 8.4 : XP Sıra dışı (Extreme) Programlama ve Scrum

• 8.5 : RUP (Rational Unified Process)

• 8.6 : CRC (Class, Responsibilities, Collaborators)

• 8.7 : MSF (Microsoft Solutions Framework)

• Ve diğerleri …

Önkoşul : C# ve/veya Java programlama dilleri konusunda temel bilgilere sahip olmak ya derneğimizin açmış olduğu C# – Java ile Nesne Yönelimli Programlama kurslarına katılmış olmak.

KURSA ÖN KAYIT YAPTIRABİLİRSİNİZ

 * Kurs ücreti duyuru sayfasında belirtilmektedir.

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

C# Programcıları için Java


Açıklama : Bu kurs C# Programlama Dilini bilen programcıların Java Programlama Diline geçişlerini sağlamayı amaçlamaktadır. Kurs içerisinde Java Programlama Dili, katılımcıların C# Programlama Dilini bildikleri varsayımıyla ele alınıp anlatılmaktadır.

Önkoşul:
C# Programlama Dilini bilmek ya da C ve Sistem Programcıları Derneği’nin açmış olduğu C# İle Nesne Nesne Yönelimli Programlama kurslarını başarıyla bitirmiş olmak.

* Ücreti sorunuz.

Java Programcıları İçin C#


Açıklama : Bu kurs Java Programlama Dilini bilen programcıların C# Programlama Diline geçişlerini sağlamayı amaçlamaktadır. Kurs içerisinde C# Programlama Dili, katılımcıların Java Programlama Dilini bildikleri varsayımıyla ele alınıp anlatılmaktadır.

Önkoşul: Java Programlama Dilini bilmek ya da C ve Sistem Programcıları Derneği’nin açmış olduğu Java İle Nesne Nesne Yönelimli Programlama kurslarını başarıyla bitirmiş olmak.

* Ücreti sorunuz.

Java ile Uygulama Geliştirme (II)


Online Java ile Uygulama Geliştirme 2
Spring uygulamaları
• Örnek Uygulamalar
Veri Yapıları ve Algoritmalar
• Algoritma Kavramı
• Algoritmanın Karmaşıklığı
• Algoritma Karmaşıklığının Hesaplama Yöntemleri
• Asimtotik Notasyonlar
• Big O Notasyonu
• Algoritmaların Sınıflandırılması
• Sayılar Teorisine Yönelik Algoritmalar
• Algoritmik Bulmacalar
• Veri Yapısı Kavramı ve Temel Veri Yapıları
• Dinamik Diziler, Kullanım Alanları ve Gerçekleştirimleri
• Bağlı Listeler, Kullanım Alanları ve Gerçekleştirimleri
• Kuyruk Veri Yapısı, Kullanım Alanları ve Gerçekleştirimleri
• Stack Veri Yapısı, Kullanım Alanları ve Gerçekleştirimleri
• Çift Yönlü Dinamik Diziler (Deque), Kullanım Alanları ve Gerçekleştirimleri
• Sıralama Algoritmaları
• Arama (Searching) İşlemleri, İçsel ve Dışsal Arama Kavramları
• İkili Aramalar
• Üstel Aramalar
• Hash Tabloları, Kullanım Alanları, Varyasyonları ve Gerçekleştirimleri
• Tahsisat Algoritmaları Kullanım Alanları ve Gerçekleştirimleri
• Çöp Toplayıcı (Garbage Collector) Kavramı, Kullanım Alanları ve Gerçekleştirimleri
• Ağaç Kavramı, Özellikleri
• İkili Ağaçlar
• Ağaçlarda Dolaşım İşlemleri
• Arama Ağaçları
• İkili Arama Ağaçları, Kullanım Alanları ve Gerçekleştirimleri
• İkili Arama Ağaçlarında Dengeleme
• Heap Ağaçları, Heap Veri Yapısı ve Gerçekleştirimleri
• Heap Veri Yapısıyla Öncelik Kuyrukları
• Heap Sort Yöntemi
• Dışsal (External) Aramalar
• B-Tree ve B+Tree Ağaçları ve Gerçekleştirimleri
• Veri Yapılarının Genelleştirilmeleri (Türden Bağımsız Veri Yapılarının Oluşturulması)
• Graf Veri Yapısı
• Graf Veri Yapısının Gerçekleştirimleri
• Graf Veri Yapısında Dolaşım İşlemleri
• Bazı Tipik Graf Problemlerinin Çözümüne İlişkin Algoritmalar
Asenkron işlemler ve Çoklu thread (Multithreading) uygulamaları
• Process kavramı
• Asenkron programlama hakkında temel bilgiler
• Çizelgeleme algoritmaları (scheduling algorithms)
• Thread kavramı
o Thread sınıfı ve Runnable arayüzü
o Executor’lar ve thread havuzları
• RxJava ile asenkron işlemler
o Schedulers sınıfı (Schedulers factory class)
 computation
 io metodu
 newThread
 single
 trampoline
• Thread’lerarası senkronizasyon
• Örnek uygulamalar
TCP/IP Protokol Ailesi İle Proseslerarası Haberleşme
• Protokol Kavramı
• OSI Katmanlarının Anlamı
• IP Protokol Ailesine Genel Bakış
• IP Protokolü
• TCP ve UDP Protokolleri
• TCP Protokolü ile Client/Server Haberleşme
• Soket Kavramı BSD Soket Sistemi
• Windows Soket API’leri
• TCP Server Programlarının Yazımı
• TCP Client Programlarının Yazımı
• Client ile Server Arasında Haberleşme Teknikleri
• Çok Client’lı Server Uygulamaları
• IP Ailesinin Uygulama Katmanına İlişkin Protokoller (POP3, TELNET, HTTP, SSH Protokolleri)
• UDP Haberleşmesi
• UDP Client ve Server Programları
• IP protokolü ve temel kavramlar
• TCP ve UDP protokolleri
• Socket kavramı
• Network byte order (little mandian, big endian kavramları)
• Client, server programlama modeli
• TCP protokolü ile uygulama geliştirme
o Server programın organizasyonu
o Client programnın organizasyonu
o Binary haberleşme
o Text haberleşme
o Farklı platformlarda geliştirilmiş uygulamalar ile haberleşen uygulmalar
• UDP protokolü ve uygulama geliştirmne
o Datagram kavramı
o UDP programlarının organizasyonu
o UDP kullanılan örnekler
• Örnek uygulamalar
Paralel Programlama
• Paralel Programlamanın Anlamı ve Önemi
• Paralel Programlamanın Sorunları
• Paralel Programlamada Kullanılan Kütüphaneler ve Ortamlar
Temel JNA ve JNI uygulamaları
Java uygulamalarının performans analizi
İleri düzey Spring uygulamaları

• Örnek Uygulamalar
Java’da düzenli ifadeler (regular expressions)
JavaFX uygulamaları
• Örnek uygulamalar
Docker kurulumu ve yönetimi
Java programlarının analiz edilmesi
Çöp toplayıcı’nın ayrıntılı incelenmesi
Yazılım geliiştirmede kullanılan temel araçlar

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.

*Ücreti sorunuz.