Merhabalar,
Birkaç yıl önce bölümce çıkardığımız Linux dergilerine göz atarken ilk yazım olan OOP ve Java’ ya giriş yazısına denk geldim. Açıkçası zaman geçtikçe insanın kendini daha iyi ifade etmede geliştirdiğini düşünüyorum. Yazıda öyle cümleler varki toyluğun verdiği heyecan açıkça ortaya çıkıyor 😀 :D. Bu yazımda kısa temel OOP kavramları üzerinde durmak istiyorum.
OOP, problemlerin gerçek hayattaki çözümlerden esinlenerek çözülmeye çalışılmasından yola çıkar ve nesneleri kodlarla sınıflara çevirir. Sınıflar belli bir işlevi sağlamak için bir araya gelmiş alan ve metot topluluğudur. Yine benzer şekilde benzer amaçlı sınıfların bir araya gelmesi de paketleri oluşturur. Java IO paketi, Java AWT paketi gibi. Paketlerin birleşmesi ile sonuçta kütüphaneler diğer bir deyişle API’ ler meydana gelir.
Nesne gerçek hayattaki varlıklar, sınıf ise bunların programlama dilindeki karşılığı dedik. Bu karşılık alan metotlarla sağlanır. Nesnenin kullanılabilmesi için o sınıftan bir örnek yani instance oluşturulması gerekir. Bunun new anahtar kelimesi ile yapıldığını zaten biliyoruz. OOP konusunda üç temel noktaya değineceğim. Bunlar kalıtım, sarmalama, çok biçimlilik.
Kalıtım(Inheritance): Kalıtım yoluyla sınıflar birbirinden türetirli. Böylece ortak bir yapı oluşturulur, kod kalabalığı engellenir, mantık daha kolay uygulanır, dükeyde hiyerarşi meydana gelir. Java’ da tüm sınıfların türetildiği tek bir sınıf vardır. Object sınıfı. Ayrıca Java’ da çoklu kalıtım klasik extends yöntemiyle yoktur. Yani aynı anda iki sınıftan türetilme yapılamaz. Çoklu kalıtım arayüz ile sağlanabilir. Java’ da bir sınıfın birden çok arayüzü uygulamasına izin verildiği için çoklu kalıtım arayüz ile sağlanabilir. Extends yöntemiyle private dışındaki alan ve metotlar alınır.
Sarmalama(Encapsulation): Sarmalama gizli diğer bir deyişle private verilere direkt erişimin önlenmesi için kullanılan bir tekniktir. Bu tür alanlara veya metotlara ulaşmak için başka, kontrollü metotlar kullanılır. Böyle veri üzerinde direkt bir erişim ve değişim engellenmiş olur.
Çok Biçimlilik(Polymorphism): Çok biçimlilik ilkesi bir tipin beklendiği yerde başka bir tipin kullanılabilmesidir. Küçük bir olimpiyat oyunu yazdığınızı düşünelim. Elinizde sınıflar var. Kalıtımın temelinde Sporcu sınıfı olsun. Gülle, cirit, disk atan, güreş yapan vb. sporları yapan sporcular bu sınıftan türetilsin. Her ülkeye 10 kişilik kadro verdiğinizi düşünün. Olimpiyat kayıtları başladığında ülkelerden 10 sporcu getirmelerini söylüyorsunuz. Dikkat ederseniz sporcunun özel alanına dair bir şart yok. Dolayısıyla A ülkesi 5 ciritçi, 5 gülleci getirirken; B ülkesi 7 güreşçi 2 halterci, 1 de ciritçi getirmiş olsun. İşte sporcu tipinin beklendiği yerde halterci, güreşçi kullanılabiliyorsa bu bir çok biçimlilik örneğidir.
Arayüz(Interface): Çoklu kalıtımın arayüzler ile sağlanabildiğini söylemiştik. Arayüzler içi boş metotlardan oluşan sınıflardır. Burada amaç arayüzü uygulayan sınıfa, arayüzdeki metotları doldurtmaktır böylece istenilen yapıya uyum sağlanmış olur.
Bol Java’ lı günler dileğiyle…
Yazan: Faruk BOZAN (Yazılım Mimarı / Software Architect)