Java – Object Oriented Kavramı IV
Yazılım Tasarım Prensipleri özellikle büyük projelerde gerçekten önem arz ediyor. Proje boyunca en çok üzerinde durulması ve düşünülmesi gereken noktanın burası olduğunu yaşayarak anlamış bulunuyorum. Yazılım tasarımı derken kastettiğimiz ekranların tasarımı gibi birşey değil. Class hiyerarşisi, db yapısı, kullanılacak frameworkler ve bunların entegrasyonu, kullanılacak tasarım şablonları (design patterns) ve bunların uyumu gibi konuları kapsayan bir tasarımdan bahsediyorum. Burada dikkat edilecek pek çok nokta var. Ancak en temel ve objektif olanları yazılım tasarım prensipleri ismini haketmiş ve burada onlardan bahsedeceğiz.
Bu prensipleri üstad Robert Martin’in “Agile Software Development: Principles, Patterns, and Practices” isimli kitabında bulabilirsiniz. Bu fikirlerin ilk olarak toplandığı kitaptır ve çok değerlidir. Bu kitaba göre yazılımınızı tasarlarken 3 şeyden kaçının;
Java – Object Oriented Kavramı III
Bu yazıda tamamen interface mantığı üzerinde durmak istiyorum. Çünkü önemli bir konu. Serinin ilk yazısında interface kavramına kısa bir giriş yapmıştık. Class‘ların dış dünya ile arayüzlerinin interface yardımıyla tanımlandığını ifade etmiştik. Ama tamamen yabancı birinin gözüyle bakmaya çalıştığımda bu tanım çok havada duruyor. Tanımı biraz daha açıp “class‘ta bulunması gereken methodların listesi” dediğimizde ise yine aynı gözler “iyi de neden böyle bişeye ihtiyaç duyuyoruz ki?, açar class‘ı bakarım” diye düşünebilirler. Çünkü genelde lisans eğitimi boyunca tek başınıza proje geliştirirsiniz. Bu durumda her modül elinizin altındadır. Ama hayat her zaman böyle olmayacaktır…
Büyük ve kurumsal bir firmada çalışıyor olabilirsiniz. Muhtemelen projelerde onlarca yazılımcı çalışacaktır ve bu yazılımcılar ayrı ayrı takımlara ayrılacaktır. Bu takımların her biri yazılımın bir bölümünü, bir modülünü geliştirecektir. Ve bu modüller mutlaka birbirleriyle ilişki içerisinde olacaktır. Bu noktada farklı gruplardaki yazılımcıların kendi geliştirdikleri modüllerin hangi noktalarda ne şekilde bir bağlantı kuracağı konusunda hemfikir olması gerekir.
Java – Object Oriented Kavramı I
Daha önce bir object oriented programlama (OOP) dili kullanmadıysanız muhtemelen Java ile ilgili yazacağım yazılarda zorlanacaksınız. Ben her ne kadar bilindiğini varsayacağımı söylesem de bazı temel kavramlara değinmem gerektiğini düşündüm. Çünkü OOP kullanılsa bile bazı kavramlar bilinmiyor, ezbere kullanılıyor. Object, class, inheritance, interface, encapsulation… gibi terimlerin ne anlama geldiğinden bahsederken bu kavramları gerçek hayattan örneklerle ilişkilendirerek iyi anlaşılmasını sağlamayı amaçlıyorum. Örnekler de tabiki Java syntax ‘ı kullanılarak verilecek. Terimleri anlatırken Türkçe’ye çevirmemeyi tercih ediyorum. Çünkü o zaman karışabiliyor, en iyisi orjinal haliyle öğrenmek.
Object:
OOP mantığını anlamanın temeli Object kavramını anlamaktan geçiyor…