NESNEYE DAYALI MODELLEME VE TASARIM Dr. Tuncay YİĞİT

advertisement
NESNEYE DAYALI
MODELLEME VE TASARIM
Dr. Tuncay YİĞİT
Gazi Üniversitesi
Bilişim Enstitüsü
Bilgisayar Eğitimi ABD
Nesneye Dayalı Programlama
Nesneye dayalı programlama, güçlü bir programlama yöntemidir.
Tüm NDP dillerinin sahip oldugu üç özellik vardır:
•Depolama (encapsulation),
•Çok biçimlilik (polymorphism)
•miras (intheritance).
Nesneye Dayalı Programlama
Encapsulation (Depolama):
Depolama, kodu ve kodun işlediği verileri bir araya getiren ve onları dış
etkilerden, yanlış kullanımlardan koruyan mekanizmadır. Nesneye dayalı
dillerde kod ve veri, bir "kara kutu" oluşturacak şekilde bir araya getirilir.
Kod ve verinin bu şekilde birbirine bağlanmasıyla da nesne meydana
gelmiş olur. Diğer bir deyişle nesne depolama yaptığımız yerdir.
Nesnenin içindeki kod, veri veya her ikisi bu nesneye private (özel) veya
public (genel) olabilir. Private kod ve veriler, sadece o nesneye ait
bileşenler tarafından bilinebilir ve erişilebilir. Programında nesneye ait
olmayan bileşenleri bu private kod ve verilere erişemez. Kod ve verilerimiz
public ise, belirli bir nesnenin içinde tanımlansalar da programın diğer
parçaları tarafından erişilebilirler. Nesnelere ait public elemanları private
elemanlara denetlenebilir şekilde erişebilmek amacıyla kullanırız. Her ne
sebeple olursa olsun, nesne, kullanıcı tarafından tanımlanan tipte bir
değişkendir. Kodu ve verileri bağlayan nesneyi değişken olarak
düşünmemiz size garip görünebilir. Fakat nesnel programlamada durum
kesinlikle bu şekildedir. Nesne tipi tanımladığımızda aslında yeni bir veri
tipi oluşturuyoruzdur. Bu veri tipi de bileşik bir değişkendir.
Nesneye Dayalı Programlama
Polimorfizm (Çok Biçimlilik)
Polimorfizm genel anlamda bir adın birbiriyle ilişkili, fakat teknik açıdan
farklı iki veya daha fazla amaç için kullanılabilmesi yeteneğidir. NDP
kavramı içinde ise polimorfizm, bir adin genel bir iş (action) sınıfını
belirlemesine izin verir. Genel bir iş sınıfı içerisinde, yapılacak iş, veri tipi,
tarafından belirlenir. Örneğin, polimorfizmi pek fazla desteklemeyen C'de ,
mutlak değer bulma isi üç ayrı fonksiyon adi gerektirir: abs(), labs() ve
fabs(). Bu fonksiyonlar sırayla bir integer'in (tamsayının), bir long integer'in
ve bir reel sayının mutlak değerini hesaplar ve döndürür. Fakat
polimorfizmi destekleyen C++'da bu fonksiyonlar, abs() gibi tek bir adla
adlandırılabilirler. Fonksiyonu çağırmak için kullanılan veri tipi, gerçekte
hangi fonksiyonun çalıştırıcağını belirler. Göreceğiniz gibi, C++'da bir
fonksiyon adini birkaç farklı amaç için kullanmak mümkündür. Buna
fonksiyonların aşırı yüklenmesi (function overloading) adi verilir.
Polmorfizm hakkında hatırlamanız gereken önemli nokta, birbirleriyle
bağlantılı işlere standart arabirimler oluşturmanıza imkan vererek daha
karmaşık durumların üstesinden gelmenizi sağlar.
Nesneye Dayalı Programlama
Inheritance (Miras)
Miras, bir nesnenin, diğer bir nesnenin özelliklerini alabilmesidir. Daha
derine inecek olursak, bir nesne, kendisine ait özellikleri de ekleyebileceği
bir özellikler kümesini mirasla alabilir. Miras önemlidir, çünkü nesnelerin
hiyerarşik sınıflandırma (hierarchical classification) kavramını
desteklemesini sağlar. Pek çok bilgiyi bu hiyerarşik sınıflandırmayı
kullanarak kontrol edebiliriz.
Örneğin bir ev. Ev genel bir sınıf olan binanın altsınıfı, bina da daha genel
bir sınıf olan yapının alt sınıfıdır, yapı ise insan yapımı denen daha da
genel bir sınıfın alt sınıfıdır. Alt sınıflar üst sınıflardan miras ile özelliklerini
alacaklardır. Eğer bu sıralı sınıflandırılma kullanılmasaydı her nesnenin
kendisi ile ilgili tüm özelliklerini açık bir şekilde tanımlaması gerekirdi.
Fakat miras sayesinde nesnenin hangi genel sınıfa ait olduğu ve onu
diğerlerinden ayıran özelliklerini belirleyerek nesneyi tanımlamak
mümkündür. Miras NDP için çok önemli bir özelliktir.
Download