Merhaba arkadaşlar,
Nesne yönelik programlama adı altında tasarım prensiblerimizi anlatmaya devam ediyoruz. En son anlattığımız konu Interface Segregation prensibiydi.
Her zamanki gibi en son yazdığımız makalemizi hatırlamak adına ne olduğu hakkında kısa bilgi verelim. Interface Segregation prensibi, interfaceleri doğru şekilde tanımlamayı ve implemente edilmesini önerir.
Bu yazımızda anlatacağımız konumuz ise Dependency Inversion prensibidir. Konuya girmeden önce gerçek hayattan birkaç bilgi vermek istiyorum.
Plug and Play denen bir kavram vardır. Bir nesneye başka bir nesnelerin takılıp çalıştırılabilmesi ve iş yaptırılması. Örneklersek eskiden kalma teyplerde kaset takmak, arabanın lastiğini değiştirmek, laptopun bataryasını değiştirmek.
Bunlar olmasaydı ne olurdu diye düşünelim. Bir teyp sadece 1 kaset çalıştıracak, arabanın lastiği değişilemeyecek, laptop bataryalar sökülemeyecek. E peki o zaman ben neden bunları alayım diye içinizden geçiriyorsunuzdur? İşte bu arkadaşlar bu yazımızın konusu :)
Üst sınıflarmız ile alt sınıflarımızı nasıl bağlamalıyız. Nesne yönelimli programlama gelmeden yukarıdaki örneklere insanlar çözüm bulmuş.
Nesne yönelimli programlama buna alt sınıfları soyutlaştırma işlemini yaparak çözüm bulmuş. Hemen uml diagramlarımızla konuyu anlatalım.
Yukarı uml diagramlarında görüldüğü üzere üst sınıf olan Laptop sınıfı alt sınıf olarak Anakart ve Batarya sınıflarına göbekten bağlıdır. Batarya sınıfında yapacağınız değişiklikler Laptop sınıfını direk etkileyebilir. Yukarıdaki diagramları yorumlamaya devam edersek bugün kullandığınız A markalı Anakart yerine B markalı Anakart koymak istediğiniz de Laptopunuzu değiştirmeniz gerekir.
Bu noktada Anakart ve Batarya sınıflarını soyutlaştırırsak laptopumuzun özelliklerini değiştirmemiz daha kolay olacaktır. Çözüm olarak aşağıdaki uml diagram şeklimiz olabilir mi?
Laptop üst sınıfım artık hangi anakartı veya bataryayı kullandığı o kadar önemli değil çünkü IAnakart ve IBatarya arayüzlerimi uyguladıktan sonra her türlü anakart ve batarya laptopa takılabilir.
Velhasıl arkadaşlar nesne yönelimli programlama bize işlemleri kolaylaştırmak adına imkanlar sunuyor. Bu yazımızla beraber en temel 5 prensibi incelemiş olduk.
Yazdığımız uygulamanın nesne yönelimli bir kod olup olmadığına karar vermek istiyorsanız şu sorulara kendinize sormalısınız.
1- Yazdığınız kod nesne yönelimli ise
2- Tekrar kullanılabilir ise
3- Az bir çaba ile değiştirilebiliyorsa
4- Var olan kodu değiştirmeden genişletilebiliyor ise
güzel bir nesne yönelimli kod yazmışsınız demektir. Eğer bu sorulardan birine cevap veremiyorsanız. Kodunuzu tekrar gözden geçirmenizi tavsiye ederim.
Bir sonraki yazıda buluşmak üzere arkadaşlar :)
hocam yazdıgınız makalelerin anlatım tarzı cok guzel, elinize saglik. Boyle guzel makalelerin devamı gelemsiyle dilegiyle cok tesekkurler..
YanıtlaSil