DELPHI EĞİTİMİ
Delphi eğitimi, dili "legacy" etiketi yerine RAD verimliliğiyle değerlendiren bir programdır. Object Pascal söz dizimi modern Delphi (RAD Studio) tarafında işlenir; VCL ile FireMonkey arasında masaüstü, mobil ve cross-platform için seçim yapma pratiği kazandırılır. Form, component ve event-driven mimari proje ölçeğine taşınır.
Eğitim sonunda katılımcı, FireDAC ile veritabanı bağlantısı ve transaction yönetimi kurabilir; DataSet ve REST DataModule ile veri akışı tasarlar. Interface ve generics ile reusable bileşen yazma, legacy Delphi kodundan modern Delphi'ye veya .NET'e migration planlaması eğitimin somut çıktısıdır. Eğitim, Embarcadero Delphi baz alınarak kurgulanır.
Katılımcı Profili
Bu eğitim, Delphi'yi RAD verimliliğiyle güncel projelerde kullanmak isteyen rollere yöneliktir:
- Delphi Geliştiriciler: Mevcut codebase'i modernize eden mühendisler
- Masaüstü Uygulama Geliştiricileri: VCL ve FireMonkey ile native UI yazan ekipler
- Veritabanı Uygulama Geliştiricileri: FireDAC ile data-driven uygulama yazanlar
- Cross-platform Geliştiriciler: Tek kod tabanından mobile ve desktop hedefleyenler
- Legacy Bakım Ekipleri: Pascal ve Delphi codebase'i bakımda tutan roller
Ön Gereklilikler
Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:
- Herhangi bir dilde temel programlama deneyimi (OOP tercih edilir)
- Veritabanı ve SQL kavramlarına temel aşinalık
- Windows ortamında uygulama geliştirmeye ilgi
- IDE kullanımı ve form-based UI tasarımı konusunda temel rahatlık
- Git veya benzeri bir sürüm kontrol aracıyla temel deneyim
Süresi ve Tarihi
Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.
Kazanımlar
Programın sonunda katılımcı, Delphi'yi legacy etiketi yerine RAD verimliliğiyle değerlendirip kullanır:
- Object Pascal söz dizimini modern Delphi (RAD Studio) tarafında uygular
- VCL ile FireMonkey arasında masaüstü, mobil ve cross-platform için seçim yapar
- Form, component ve event-driven yapısını proje ölçeğine taşır
- FireDAC ile veritabanı bağlantısı ve transaction yönetimini kurar
- DataSet, ClientDataSet ve REST DataModule ile veri akışı tasarlar
- Interface ve generics ile reusable bileşen yazar
- Legacy Delphi koddan modern Delphi'ye veya .NET'e migration planı çizer
Delphi Eğitimi Konuları
1. Delphi ve Object Pascal Mirası
- Pascal'dan Object Pascal'a evrim
- Embarcadero RAD Studio ekosistemi
- Native compile avantajı: Windows, macOS, iOS, Android, Linux
- Modern Delphi ve Lazarus (Free Pascal) farkı
2. RAD Studio IDE ve Proje Yapısı
- Form Designer ve Object Inspector
- Project Manager, Tool Palette, Code Insight
- .dpr, .dpk, .dproj dosyalarının rolü
- GetIt Package Manager ile bağımlılık
3. Object Pascal Söz Dizimi
- begin/end blok yapısı ve case-insensitive dil
- procedure ve function ayrımı
- Unit yapısı: interface, implementation, initialization, finalization
- uses cümlesi ve circular reference
- const, var, type bloklarının organizasyonu
4. Tipler, Records, Sets ve Enums
- Integer aileleri ve sınırları (ShortInt, SmallInt, Int64)
- String tipleri: ShortString, AnsiString, UnicodeString
- record ve record helper ile metod ekleme
- set of: enum tabanlı küme yapısı
- Variant ve OleVariant kullanımı
5. OOP - Class, Constructor, Destructor
- Class deklarasyonu ve member sıralaması
- Constructor (Create) ve Destructor (Destroy)
- FreeAndNil ve güvenli serbest bırakma
- Class method ve class var kullanımı
- Visibility: private, protected, public, published
6. Interface ve Reference Counting
- Interface tanımı ve GUID
- Reference counting (IInterface mirası)
- Delegation pattern ve composition
- IInterface vs IUnknown ayrımı
7. Generics ve Anonymous Methods
- TList<T>, TDictionary<K,V> generic koleksiyonlar
- Constraint: class, record, constructor
- Anonymous method ve closure davranışı
- TFunc, TProc, TPredicate delegate tipleri
8. Exception Handling - Try-Except-Finally Blokları
- try..except..finally yapısı
- Exception class hiyerarşisi ve EAccessViolation
- Custom exception sınıfı
- raise ile re-throw ve exception chain
9. Memory Management - TObject ve FreeAndNil
- TObject mirası ve manual memory management
- ARC (Automatic Reference Counting) tarihi
- Memory leak detection (FastMM)
- String ve dynamic array copy-on-write
10. VCL - Windows Native Forms
- VCL component hierarchy: TComponent, TControl
- Form, Frame, DataModule
- Event-driven programlama modeli
- Action ve ActionList ile davranış merkezileştirme
- Custom drawing ve OwnerDraw
11. FireMonkey (FMX) - Cross-Platform UI
- FMX ve VCL farkı
- Style ve theme yönetimi (.style dosyaları)
- 3D form ve animasyon framework'ü
- Multi-platform native widget bridge
12. FireDAC ile Veritabanı Erişimi
- FireDAC connection ve TFDQuery
- Local SQL ve TFDLocalSQL
- Connection pooling ve transaction
- Macro ve parametre kullanımı
- FireDAC vs BDE (legacy) farkı
13. LiveBindings ve Data Binding
- LiveBindings Designer kullanımı
- BindList ve BindNavigator
- Custom binding expression
- VCL ve FMX'te ortak LiveBindings yaklaşımı
14. DataSnap ve REST Servisleri
- DataSnap server ve client mimari
- REST endpoint tanımı ve JSON dönüşümü
- Server method ve authentication
- Alternatif: mORMot ve Horse framework
15. PPL - Parallel Programming Library
- TTask ve task-based concurrency
- TParallel.For ile paralel döngü
- ITask, IFuture, ICondition
- TThread yaşam döngüsü ve Synchronize
16. RTTI ve Reflection
- Extended RTTI: type, method, property bilgisi
- TRttiContext ve TRttiType
- Custom attribute tanımı
- Serialization ve ORM için RTTI kullanımı
17. Custom Component Geliştirme
- TComponent miras alarak component yazımı
- Property editor ve design-time davranış
- Package (.bpl) içine component kaydetme
- Component palette'e ekleme
18. Package ve BPL Dağıtımı
- Runtime ve design-time package farkı
- .bpl ve .dcp dosya yapısı
- Modüler uygulama tasarımı
- Plugin architecture ile genişletilebilirlik
19. Stil, Skin ve Theme Yönetimi
- VCL Styles ve runtime tema değişimi
- FMX Style Designer kullanımı
- Custom style oluşturma ve dağıtım
- High-DPI ve scaling desteği
20. Multi-Platform Deploy
- Windows installer (Inno Setup, MSI)
- macOS .app paketleme ve notarization
- iOS ve Android deploy yapılandırması
- PAServer ile remote build
- Code signing ve sertifika yönetimi
DELPHI EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
VCL ile FireMonkey arasında karar nasıl verilir?
VCL Windows native ve mature — masaüstü Windows uygulaması için en hızlı, en stabil seçim. FireMonkey (FMX) cross-platform (Windows, macOS, iOS, Android) GPU-accelerated UI sunar. VCL daha geniş üçüncü-parti bileşen ekosistemine sahip; FMX cross-platform gereksinimi varsa doğru.
FireDAC ile klasik BDE veya dbExpress arasındaki fark?
FireDAC modern, çoklu veritabanı (Oracle, SQL Server, PostgreSQL, MySQL, SQLite) destekleyen yüksek performanslı data access bileşenidir. BDE deprecated, dbExpress sınırlı sürücü desteği. Yeni projelerde FireDAC standart; legacy projelerde BDE'den FireDAC'a migration ciddi performans kazancı sağlar.
Object Pascal ile modern Delphi arasındaki fark nedir?
Object Pascal dilin temeli; modern Delphi sürümleri generics, anonymous method (closure), attribute, inline variable declaration, multi-line string gibi modern özellikler ekledi. C# veya Java deneyimi olan geliştiriciler için söz dizimi farkı küçüldü; Pascal stilindeki begin/end blokları korunuyor.
Delphi'den .NET veya C++'a migration nasıl planlanır?
Big-bang yerine aşamalı geçiş tercih edilir. Veritabanı katmanı önce taşınır (Web API ile expose edilir). UI ve business logic kademeli yeniden yazılır. Embarcadero'nun RAD Server veya InterBase Change Views gibi araçları hibrit dönem için köprü sağlar; doğrudan migration aracı sınırlı.
Delphi'de interface ve generics nasıl kullanılır?
Interface IInterface'den türeyen referans tipli yapıdır; reference counting ile otomatik memory management sağlar. Generics ile TList
Delphi cross-platform mobil performansı native'e göre nasıl?
FMX iOS ve Android'de native-benzeri performans sunar ama Swift/Kotlin'e göre runtime overhead vardır — özellikle UI thread yoğun işlerde fark görülür. Avantaj tek codebase'den iki platforma çıkış. Native özelliklere erişim için JNI ve platform-specific Delphi unit'leri kullanılır.



