Python vs Java: Nesne Yönelimli Programlama Farkları
Python ve Java ikisi de nesne yönelimli diller olsa da, felsefesi ve uygulaması farklı. Java'dan gelen bir programcı Python'da çalışmaya başladığında, sınıflar ve nesneler benzer görünse de, Pythonic yaklaşım çoğu zaman şaşırtıyor.
Java'da her şey sınıf içinde olmalıdır; özel (private), korumalı (protected) ve açık (public) erişim belirleyicileri kesin olarak uygulanır. Python ise daha esnektir, erişim kontrolü kural ve kültüre dayanır. Bir değişkenin başına alt çizgi koyarsın (örn. `_private_var`) ve diğer programcılar "buna dokunma" mesajını anlar, ama Python bunu zorlamaz.
Miras ve polimorfizm konusunda Java tip güvenliğine (type safety) önem verirken, Python dinamiktir. Java'da `@Override` açıklaması ile metodu açıkça geçersiz kılarsın; Python'da metodu yeniden tanımlarsın, bitti. bir örnek:
1# Java benzeri Java kodu2class Animal:3def speak(self):4return "Ses çıkar"56class Dog(Animal):7def speak(self):8return "Hav hav"910dog = Dog()11print(dog.speak()) # Hav havPython'da `__init__` yapıcısı (constructor) Java'nın sınıf adıyla aynı isimli yapıcısından farklı; Python her zaman `__init__` kullanır. Ayrıca Python'da `self` açıkça yazılır, Java'da `this` genellikle örtülüdür.
Kapsülleme (encapsulation) konusunda Java getter/setter metotları kullanırken, Python özellikleri (properties) ve dekoratörleri tercih eder. `@property` dekoratörü sayesinde bir metodu özellik gibi çağırabilirsin, temiz ve Pythonic.
Java'nın statik tip sistemi hata yakalamada yardımcı olurken, Python'un dinamik yapısı esneklik sağlar. Ancak bu esneklik, test yazmanın daha önemli olduğu anlamına gelir.
Kısacası, Java'dan Python'a geçişte sınıf yapısını aynı tutabilirsin ama Python'un daha basit, daha az formal yaklaşımını benimsemek seni daha verimli kılacak. Pythonic kod yazmak, Java'nın katı kurallarından kurtulmak demek.
0 yorum