Object Oriented Programming(OOP) Temel Prensipleri

 OOP(Nesneye Yönelik Programlama) dört temel prensipten bahsetmek mümkündür;

1) Abstraction(Soyutlama) : OOP de her somut olan şey “class” olarak soyutlanarak ifade edilmektedir. Her “class” bir “obje yani nesnedir”. Her nesnenin belirli özellikleri , methodları bulunur. (Örneğin Araba class ının rengi , araba classının içine yazılmış arabanın hızını artırma methodu gibi...)

Class lar normal, abstract veya interface olarak tanımlanabilirler.
 
Abstract classlar;
- Kod içerisinde "new" komutuyla oluşturulamazlar (bu sınıflardan nesne türetilemez).
- Bir sınıf yalnızca bir abstract sınıfına extend edebilir.
- Abstract sınıfla ona extend eden sınıflar arasında genellikle "is-a" ilişkisi vardır.
 
(Mercedes is a car , Mercedes extends Car dır , Mercedes bir arabanın sahip olduğu bütün metotlara sahiptir, metotlar Car sınıfında vardır, istenirse Mercedes içinde override edilebilirler)
- Abstract sınıfta metotlar ve değişkenler tanımlanabilir.
 
Interface ;
- Kod içerisinde "new" komutuyla oluşturulamazlar (bu sınıflardan nesne türetilemez).
- Bir sınıf birden fazla interface' e implement edilebilir.
- Interface sınıfını implemente eden eden sınıflar ile aralarında "can-do" ilişkisi vardır.
Örneğin Mercedes can parkItself, Mercedes implements Park , Park sınıfı "parkItself" adında bir metoda sahiptir , tüm Mercedes'ler kendi kendini park edebilmeli anlamlarına gelmektedir.
- Interface sınıfında sadece boş metotlar ve public static final değişkenler bulunabilir.
 
2) Encapsulation(Sarmalama) : Kod ve bu kodun üzerinde çalıştığı veriyi birbirine bağlayarak dışarıdan gelebilecek müdahale ve kötüye kullanmalara karşı onları koruyan mekanizmadır.(Koruyucu ambalaj) Arabanın vitesi sarmalanmıştır. İçerisinde yazılmış methodların yaptıkları işlere müdahale edemeyiz gibi.
 
3) Inheritance(Kalıtım) : Bir nesnenin başka bir nesnenin özelliklerini devralmasıdır.Örneğin “Ford” classının “Araba” classının tüm özelliklerini devralacak şekilde inherit edilmesi gibi.
 
4) Polymorphism(Çok çeşitlilik) : Farklı nesnelerin aynı methoda farklı cevap verebilmeleridir. Örneğin “Cokgen” classından türemiş olan “Ucgen,Dortgen,Besgen” isimli classların “alanHesapla()” isimli methodları farklı çeşitte sonuç üretirler.