🎯 Advanced OOP — Enum, Date/Time, Exceptions, Lambda

Advanced OOP — Enum, Date/Time: Enum, izin verilen değerleri baştan sabitleyen kapalı bir tip kümesidir (`RED, YELLOW, GREEN`), Exception normal akışı kesip hatayı yukarı taşıyan

Enum, izin verilen değerleri baştan sabitleyen kapalı bir tip kümesidir (`RED, YELLOW, GREEN`), Exception normal akışı kesip hatayı yukarı taşıyan bir sinyaldir, Lambda ise küçük bir davranışı tek satırda paketleyip parametre olarak geçmeni sağlayan kısa yazımdır — tıpkı bir trafik ışığının yalnızca üç renge izin vermesi (enum), bir kazanın normal trafiği durdurup acil protokolü tetiklemesi (exception) ve bir trafik polisinin tek el hareketiyle "geç" komutu vermesi (lambda) gibi. Peki Enum yerine düz `String status = "RED"` kullanabiliyorken neden Enum gerekiyor? Çünkü String'de yanlışlıkla `"Red"` veya `"GREN"` yazarsan derleyici uyarmaz ve bug çalışma zamanına saklanır; Enum ise geçersiz değeri derleme zamanında imkânsız kılar. Java'nın checked exception zorunluluğu, Python'ın tamamen isteğe bağlı istisna yakalamasına kıyasla hataları ele almaya zorlar; lambda ise Java 8 ile geldi ve TypeScript'teki arrow function'a benzer. QA mühendisi için bu üçü doğrudan güvenilirlik sağlar: test durumlarını Enum ile modellemek yazım hatası kaynaklı sahte PASS'i önler, exception'ı doğru yakalamak testin gerçek hatayı raporlamasını garanti eder, lambda ise Stream ile assertion'ları okunabilir ve kısa tutar.

Enums — Sabit Değer Kümeleri

Enum tanımlama ve kullanma

Micro Lab: Kod yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Enum Neden Bir String'den Daha Fazlasıdır?

enum Browser { CHROME("chrome")…

`enum Browser { CHROME("chrome"), FIREFOX("firefox"), EDGE("edge"); }` sadece 3 değeri KABUL EDER — `Browser.SAFARI` yazmaya çalışmak DERLEME hatası verir, çalışma zamanı hatası değil.

Her enum sabiti kendi private alanını…

Her enum sabiti kendi private alanını (`driver`) ve constructor'ını TAŞIYABİLİR — bu, düz bir `String` sabitinin YAPAMAYACAĞI bir şeydir.

Browser.CHROME.getDriver() çağrısı…

`Browser.CHROME.getDriver()` çağrısı "chrome" değerini DOĞRUDAN, yanlış yazım riski olmadan döndürür — `"chrome"` yerine yanlışlıkla `"Chrome"` yazma ihtimali YOK OLUR.

Browser.values() TÜM enum sabitlerini…

`Browser.values()` TÜM enum sabitlerini otomatik bir dizi olarak döndürür — yeni bir tarayıcı eklendiğinde, onu kullanan `for` döngüleri KOD DEĞİŞTİRMEDEN yeni değeri de kapsar.