Nesne Yönelimli Programlama

                                     
Bu konu en iyi örneklendirerek anlatılacağını düşündüğüm için örneklendirerek anlatacağım.Örnek olarak bir futbol oyunu yazılımı vermek istiyorum.İlk başta nesne yönelimli programlama tekniğinin 5 ana konusundan bahsetmek istiyorum.
        Bunlar class, object, access modifier, inheritance ve polimorphism

  Class;
Prosedür el programlama dillerinde sınıf mantığı yoktur, sınıf mantığı nesne yönelimli programla dilleri ile ortaya çıkmıştır.
Peki ne işe yarar bu sınıflar?
Programı yazarken belli durumlara göre sınıflara ayrılır ve her sınıfın kendi özellikleri vardır, duruma göre kendilerine sıra geldiğinde devreye girip görevlerini yaparlar ve geri çekilirler. Yazılımcıya büyük faydaları vardır bir sayfada binlerce satır kod arasında boğulmaktan kurtulurlar görevine göre programı sınıflara ayırdıktan sonra farklı sayfalarda ki sınıfları rahat bir şekilde inceleyebilirler, debug olayında rahatlık yaşarlar ve programı tekrar başkası dahi geliştirse programlama diline hakimse eğer hiçbir sorun çekmeden üzerinde güncelleme yapabilir.

 Object;
Nesneler, programın içinde sınıfları temsil ederler bir sınıfın özellikleri kullanılacak ise bu sınıfın nesnesi üretilir ve bu nesne üzerinde sınıfın özellikleri kullanılabilir. Misal futbol oyunu üzerinden giderek örneklendirelim, futbolcu sınıfımız olsun ve sınıfın içerisinde futbolcuların özelliklerini tanımlayalım örnek olarak adı, soyadı, boyu, kilosu, yaşı vb. gibi bu özellikleri başka bir sınıfta kullanmak istediğimizde o sınıfın içerisinde futbolcu sınıfından bir tane nesne üreterek çok rahatlıkla bu özellikleri kullanabiliriz.

Access modifier;
Erişim belirleyiciler olarak çevrilmiş, bunlar aslında adından da anlaşılacağı üzere sınıfın içerisinde tanımladığımız değişkenlerin ve fonksiyonların dışarıda ki sınıfların erişip erişmeyeceğini belirten özelliklerdir. Bunlar üçe ayrılır kabaca bazı programlama dillerinde daha fazla olabiliyor fakat bu yazacağım üç tanesi neredeyse bütün nesne yönelimli programlama dillerinde bulunuyor. Bunlar public, private, protected dır.
Public;
Sınıfın içinde tanımladığımı değişken veya fonksiyonları public olarak belirlersek bu değişken ve fonksiyonlar yazılımın her yerinden ulaşılabilir demektir hatta başka projelerden bile erişebilir olabiliyorlar.
Private;
Eğer bu tür belirlersek sadece kendi sınıfının içerisinden ulaşılabilir demek oluyor.
Protected;
Bu türde belirlersek kalıtım verdiğimiz sınıflar ve kendi sınıfı içerisinden ulaşılabilir demektir.
Erişim belirleyicileri daha iyi anlaşılması için İslami bir bakış açısıyla anlatmak isterim.
Misal bir kadının elini, yüzünü ve ayaklarını bütün herkes görebilir bu public bir durumdur.
Saçını kollarını ise çocukları ve yakın akrabası görebilir bu protect bir durumdur.
Diğer vücudunun geri kalan yerlerini eşi ve kendisi görebilir buda private bir durumdur.

İnheritance;
Bir sınıftan bir sınıfa kalıtım verme durumudur, bu şu işe yarar bir sınıftan bir sınıfa kalıtım yolu ile bağlarsanız başladığınız sınıfa ana sınıftaki protected olarak tanımlanan değişkenler ve metotlar otomatik olarak kullanılabilir hale gelecektir. Yalnız bu durum tek taraflıdır, yani dedeniz size miras verirse bu mirası siz kullanabilirsiniz fakat dedeniz sizin mirasını kullanamaz.

Polimorphism;
Çok biçimcilik anlamına gelmektedir. Bunu diğer konulara göre biraz daha teknik bir konudur. Futbolcu örneğinden gidecek olursak Futbolcu sınıfında bir sahada dur metodu olsun ve futbolcu sınıfının da 3 tane kalıtım verdiği sınıf olsun bunlar forvet, defans ve kaleci bu sınıflara bu metodu kullandığımızda metodun adı değişmeden içinde ki yapacağı görev değişerek yani forvet orta saha çizgisinin önünde dur, defans orta saha çizgisinin gerisinde ve kalecide ceza sahası içinde dur olarak değiştirebiliriz yani tek metoda 3 tane iş yaptırmış olduk.

Object oriented design kabaca budur eğer yanlışlarım varsa veya eklemek istediğiniz bir durum ekleyebilirsiniz.

Hiç yorum yok:

Yorum Gönder