Yazılım Mimarileri

Gerçek Web Projelerinde OOP Uygulamaları: Temiz ve Yönetilebilir Kod Mimarisi

Gerçek Web Projelerinde OOP Uygulamaları: Temiz ve Yönetilebilir Kod Mimarisi

Web geliştirme dünyasına ilk adım attığımızda genellikle spagetti kod dediğimiz, her şeyin iç içe geçtiği yapılarla projeler üretiriz. Ancak projeler büyüdükçe, yeni özellikler eklemek veya var olan hataları çözmek bir kabusa dönüşebilir. İşte tam bu noktada Nesne Yönelimli Programlama (OOP - Object-Oriented Programming) devreye girer.

Bu yazıda, teorik olarak derslerde gördüğümüz OOP kavramlarının, gerçek web projelerinde OOP uygulamaları olarak nasıl karşımıza çıktığını inceleyeceğiz.

Web tasarım elementleri ve yazılım mimarisi diyagramlarını içeren modern nesne yönelimli programlama konsepti illüstrasyonu

Neden Web Projelerinde Nesne Yönelimli Programlama Kullanmalıyız?

OOP, kodunuzu "nesneler" (objects) etrafında modellemenizi sağlar. Gerçek dünyadaki bir e-ticaret sitesini düşünün: Kullanıcılar, ürünler, sepet ve ödeme sistemleri birer nesnedir. Bu yapıları sınıflar (classes) halinde tasarlamak şu avantajları sağlar:

Gerçek Projelerden OOP Örnekleri ve Kullanım Senaryoları

OOP'nin dört temel taşı vardır: Kalıtım (Inheritance), Çok Biçimlilik (Polymorphism), Kapsülleme (Encapsulation) ve Soyutlama (Abstraction). Peki, bunlar gerçek bir web uygulamasında nasıl kullanılır?

1. Kalıtım (Inheritance) ile Temel Denetleyici (Base Controller) Yapıları

Büyük bir MVC (Model-View-Controller) tabanlı web projesinde (örneğin Laravel, Django veya .NET ile yazılmış bir projede), her sayfanın ortak özelliklere ihtiyacı vardır. Kullanıcının giriş yapıp yapmadığını kontrol etmek veya ortak sayfa ayarlarını yüklemek gibi.

Her Controller için aynı kodu yazmak yerine bir BaseController sınıfı oluşturulur. Diğer tüm denetleyiciler bu sınıftan miras (inherit) alır. Böylece DRY (Don't Repeat Yourself) prensibine uyulmuş olur.

2. Çok Biçimlilik (Polymorphism) ile Ödeme Entegrasyonları

Diyelim ki bir e-ticaret siteniz var ve kullanıcılar kredi kartı (Iyzico), PayPal veya Kripto Para ile ödeme yapabiliyor. Hepsini iç içe geçmiş if-else bloklarıyla yazmak kodunuzu çöpe çevirebilir.

Bunun yerine bir PaymentInterface (Ödeme Arayüzü) tanımlarsınız. Bu arayüzün içinde sadece bir pay() (öde) metodu bulunur. IyzicoPayment, PayPalPayment gibi alt sınıflar bu arayüzü uygular (implement) ve pay() metodunu kendi içlerinde farklı şekilde çalıştırırlar. Ana kodunuz sadece pay() metodunu çağırır, arka planda hangi sistemin çalıştığıyla ilgilenmez.

3. Kapsülleme (Encapsulation) ile Kullanıcı Güvenliği

Kullanıcı veritabanı işlemlerinde şifrelerin açıkça görünmesi büyük bir güvenlik açığıdır. Kapsülleme sayesinde, bir User sınıfının içindeki password özelliğini gizli (private) yapabilir ve sadece setPassword() metodu üzerinden değiştirilmesini sağlayabilirsiniz. Bu metot da şifreyi veritabanına kaydetmeden önce otomatik olarak "hash"ler (şifreler).

Havada uçuşan soyut sınıflar ve nesneler eşliğinde kod yazan bir yazılım geliştiricisinin izometrik illüstrasyonu

Web Geliştirme Süreçlerine ve SEO'ya Dolaylı Katkısı

"Kod yapısının SEO ile ne alakası var?" diye düşünebilirsiniz. OOP tabanlı, iyi mimariye sahip web projeleri daha hızlı çalışır ve daha az sunucu kaynağı tüketir. Temiz kod yapısı sayesinde önbellekleme (caching) ve veritabanı optimizasyonları daha kolay yapılır. Google gibi arama motorları, sayfa yükleme hızını (PageSpeed) en önemli sıralama faktörlerinden biri olarak görür. Yani arka planda çalışan temiz bir OOP mimarisi, sitenizin kullanıcı deneyimini artırarak SEO performansınıza doğrudan olumlu etki eder.

Sonuç

Bilgisayar mühendisliği öğrencisi veya Junior bir geliştirici olarak, gerçek web projelerinde OOP uygulamaları geliştirmek sizi sıradan bir kodlayıcıdan bir "yazılım mimarına" dönüştürür. Başlangıçta sınıf yapıları kurmak, arayüzler yazmak zaman kaybı gibi görünse de; projeniz büyüdüğünde bu mimarinin sizi ne kadar büyük bir kod karmaşasından kurtardığını göreceksiniz.

Kendi web sitenizi veya bir sonraki projenizi geliştirirken bu prensipleri ufak ufak entegre etmeyi unutmayın!

Bu yazıyı beğendiniz mi?

Paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.