NESNE TABANLI PROGRAMLAMA Öğr. Gör. Utku SOBUTAY
İÇERİK 2 Nesne Tabanlı Programlama Sınıf, Nesne Kavramları Kapsulleme, Kalıtım ve Çok Biçimlilik Kavramları
Nesne Tabanlı Programlama
NESNE TABANLI PROGRAMLAMA 4 Nesne Tabanlı Programlamanın Ortaya Çıkışı: Yazılım projelerinde program kodlarının 10000 lerce satırı bulması, kod karmaşasından kurtulmak için yeni yöntemler arayışı sonucunda Nesne tabanlı programlama (Object Oriented Language) ortaya çıkmıştır. Nesne tabanlı programlamanın ortaya çıkışından önce, onbinlerce kod satırı arasından değiştirmek istediğimizin bulunması veya hatalı kodların tespit edilmesi günlerce, saatlerce sürmekteydi. Nesne tabanlı programlama ile birlikte, değiştirilmek istenen kod belirli bir sınıf yapısı içerisinde bulunduğundan dolayı tespit edilmesi ve değiştirilmesi çok daha kolay olmuştur.
NESNE TABANLI PROGRAMLAMA 5 Programlamaya Katkısı: Karmaşık Yazılım Projelerinin Oluşturulmasını sağlamıştır. Karmaşık Yazılım Projelerinde Yazılımın bakımını, hataların tespit edilmesini ve düzeltilmesini kolaylaştırmıştır. Yazılım içerisinde yazılan kodların tekrar tekrar kullanılmasını sağlamıştır (Code-Reusability). Yazılımların kod sayılarında azalma meydana gelmiştir, daha az kodla aynı işlerin yapılabileceği anlaşılmıştır. Yazılım şirketlerinin kod maliyetini azaltmıştır. Kod sayısı azaldığı için yazılımların lisans ücretlerinde düşüş meydana gelmiştir. Yazılım sektörüne canlılık gelmiştir ve rekabetin gelişmesine yardımcı olmuştur.
NESNE TABANLI PROGRAMLAMA 6 Sınıf Nesne Örneği: Şekil-1 de Ağaç Sınıfından oluşturulmuş iki ağaç nesnesi gözükmektedir. Ağaç Sınıfının Yükseklik özelliği vardır. İki ağaç nesnesinde de yükseklik özelliği ağacın cinsine göre tanımlanabilir.
NESNE TABANLI PROGRAMLAMA 7 Nesne Tabanlı Programlama Nedir? Gerçek hayattaki var olan bir takım olguların programlamaya aktarılmasındaki yeni yaklaşımdır. Klasik Programlamada; veri, veri tipleri, fonksiyonlar, prosedürler bulunmaktadır. Fonksiyonlar verileri işleyerek sonuçlar elde etmektedir. Nesne Tabanlı Programlamada; veri, veriyi işleyip sonuç döndüren fonksiyonlar bulunmaktadır. Fark ise; gerçek hayatta gördüğümüz durumların iyi gözlenip yazılım dünyasına aktarılmasıdır.
NESNE TABANLI PROGRAMLAMA 8 Programcı gerçek dünya üzerindeki varlıkları soyutlama ve modelleme ile algılar ve gerçekleme yoluyla da bilgisayar ortamına aktarır. Soyutlama; varlıkların bir çok özelliğinden istenmeyen özelliklerinin elenmesidir (tükenmez kalemin içerisindeki mürekkebin markası bizim için önemli değildir. Modelleme; varlıkların bir düzen biçiminde toparlanması, özelliklerinin belirlenmesidir. Gerçekleme; programcı tarafından soyutlama ve modelleme sonucu oluşanların doğruluğunu kontrol edilip bilgisayara aktarılmasıdır.
Sınıf, Nesne Kavramları
SINIF, NESNE KAVRAMLARI 10 Sınıf: İçerisinde verileri ve bu verileri işleyecek çeşitli fonksiyonları, metotları barındıran nesne oluşturmaya yarayan önceden yazılmış özel yapıdır. Sınıf oluşturulurken, gerçek dünyadaki varlıkların özellikleri sınıf içerisinde değişken olarak tanımlanır Sınıf oluşturulurken, gerçek dünyadaki varlıkların yetenekleri, işlevleri ve yapabildikleri sınıf içerisinde fonksiyon, metot olarak tanımlanır. Nesne: Önceden yazılmış, oluşturulmuş sınıflar kullanılarak oluşturulan birbirinden farklı özel yapılardır. Sınıf kullanılarak oluşturulan her bir nesnenin sınıfın değişkenlerine ve fonksiyonlarına bağlı olarak kendi özellikleri ve işlevleri vardır.
SINIF, NESNE KAVRAMLARI 11 Gerçek Dünyadaki Ütü Varlığı için; Ütünün Özellikleri; Marka Model Renk Çalıştığı Elektrik Voltajı Ütüleyebildiği Kumaş Türü Ütü ile Yapılabilecek İşler; Ütü Isıtılabilir() Ütüleme Yapılabilir() Ütü Soğutulabilir() Ütü ile ilgili program yazıyoruz ve bunu nesne tabanlı programlama kullanarak yaparsak... Ütü Sınıfımız olmak zorunda (class)... Ütü Sınıfında ütünün özelliklerinin tanımlandığı değişkenler ve Ütü ile yapılabilecek işlerin tanımlandığı fonksiyonlar bulunmaktadır. Bu sınıf kullanılarak farklı özelliklere sahip çok sayıda farklı ütüler oluşturulabilmektedir. Yani; her bir ütü için tekrar tekrar marka, model, renk v.b. gibi veri değişkenlerinin oluşturulması, fonksiyonların tanımlanması gerekmemektedir, sadece değerleri girilir.
SINIF, NESNE KAVRAMLARI Sınıf Nesneler Araba varlığı, nesne tabanlı programlama ile oluşturulmak istenirse; Araba sınıfı oluşturulması gerekmektedir (class)... Araba sınıfının Marka, Model gibi iki değişkeni bulunmaktadır ve Korna Çal ve FarYak şeklinde iki fonksiyonu bulunmaktadır. Bunlar, araba sınıf oluşturulurken tanımlanırlar, araba sınıfının özellikleridir. Araba sınıfından oluşturulan; Önden Çeker, Arkadan Çeker ve Dört Çeker nesneleri; Marka ve Model değişkenlerine, Korna Çal ve Far Yak fonksiyonlarına sahip olurlar.
Kapsülleme, Kalıtım ve Çok Biçimlilik Kavramları
Kapsülleme, Kalıtım ve Çok Biçimlilik Kavramları 14 Nesne tabanlı programlamanın Sınıf ve Nesne olmak üzere kavramları bulunduğu gibi, Kapsülleme, Kalıtım ve Çok Biçimlilik gibi bir takım özellikleri de bulunmaktadır. Bu özellikler, sınıf ve nesnelere bazı yetenekler kazandırmaktadır. Nesne tabanlı programlamanın üç önemli özelliği vardır; Kapsülleme / Depolama (Encapsulation) Kalıtım / Miras (Inheritance) Çok Biçimlilik (Polymorphism)
Kapsülleme / Depolama (Encapsulation)
Kapsülleme / Depolama (Encapsulation) 16 Verilerin, değişkenlerin, fonksiyonların v.b. sınıf öğelerinin, gizlenmesine veya bir grup içinde toplanmasına kapsülleme denir. Kapsülleme, sınıf içinde kullanılan verilerin fonksiyonların v.b. dışarıdan herhangi bir etki ile doğrudan değiştirilmesini engeller. Böylece, isteğimiz dışında yapılacak değer atamalarının ve fonksiyon çağırmalarının önüne geçilmiş olunur. Sınıf içindeki verilerin izinsiz değiştirilmesini engeller. Fonksiyonların izinsiz erişilmesini engeller.
Kapsülleme / Depolama (Encapsulation) 17 Kapsülleme Örneği; Saat içerisinde karmaşık bir çok parça mevcuttur. Bu parçaların hepsinin farklı görevleri olabilir. Bizim için önemli olan bu saatin doğru olarak bize zamanı göstermesidir. İçindeki parçaların ve bu parçaların işlevlerinin bir önemi yoktur, bilmesek de olur. Kapsülleme bize nesne tabanlı programlamada bazı değişken ve fonksiyonların kullanıcıdan gizlenmesini sağlamaktadır.
Kapsülleme / Depolama (Encapsulation) 18 Kişi sınıf dışında tanımlanan nesnelerde doğrudan erişilemez Kapsülleme Java Örneği; Kişi sınıfı tanımlanırken ad ve soyad değişkenleri private olarak belirtilmiştir. Bu şekilde tanımlanan değişlenlere veya fonksiyonlara sınıf dışarısından doğrudan müdahale edilemez Fakat, sadece public olarak tanımlanan setad, setsoyad, getad, getsoyad fonksiyonları yardımıyla değiştirilebilir veya erişilebilir. Böylece, ad ve soyad değişkenleri dış ortamdan kapsülleme yardımıyla korunmuş olur.
Kalıtım / Miras (Inheritance)
Kalıtım / Miras (Inheritance) 20 Nesne tabanlı programlamada, günlük hayattaki kullanımına benzer anlamdadır. Örneğin; ben annemin gözlerini almışım... ben annemin gözlerini almışım... denildiğin de tıbbi olarak siz annenizden ve babanızdan kalıtımsal olarak ilgili özelliklerini almışsınızdır.
Kalıtım / Miras (Inheritance) 21 Kalıtım; önceden oluşturulan bir sınıf kullanılarak başka sınıfların türetilmesidir, oluşturulmasıdır. Bir sınıftan türetilen her bir sınıf, türediği sınıfın özelliklerini devralmaktadır. Yani, yeni sınıf türetildiği sınıfın özelliklerini miras almaktadır... Ayrıca türetilen yeni sınıf, kendine has değişkenlere ve fonksiyonlara da sahip olabilir Sonucunda; türetilen yeni sınıf, türetildiği sınıfın verilerine, değişkenlerine, fonksiyonlarına v.b. erişebilir... Fakat bu erişimin bir sınırlandırılması vardır, bu da kapsülleme yoluyla olabilir.
Kalıtım / Miras (Inheritance) 22 Ralli, Ticari, Özel ve spor otomobillerinin ortak bir takım özellikleri var. Bunlar; Motorunun olması Tekerleklerinin olması Viteslerinin olması Fakat, her bir aracında kendine has özellikleri de vardır. Örneğin; Ralli aracının güvenlik bariyerinin olması Sürücülerinin kasklı takması Her bir ralli aracı aynı zamanda otomobildir... Otomobil sınıfından; Ralli, Ticari, Özel ve Spor otomobil yeni sınıfları türetilmiştir. Bu türetilen sınıfların hepsi; otomobil sınıfının sahip olduğu motorunun olması, tekerleklerinin olması, viteslerinin olması gibi özelliklere de sahiptir. Ayrıca; Wrc, GrupN sınıfları Ralli sınıfından kalıtım ile türetilmiştir. Buna göre; Wrc Sınıfı bir Ralli aracıdır aynı zamanda da bir otomobildir...
Kalıtım / Miras (Inheritance) 23 Student ve Employee sınıfları; Person sınıfından kalıtım yoluyla türetilmiştir. Student ve Employee sınıfları, Person sınıfının sahip olduğu firstname, lastname ve dateofbirth değişkenlerini ve age() fonksiyonunu kalıtım yoluyla alıp kullanabilir. Ayrıca; Student sınıfının kendine ait; yearofstudy, faculty gibi değişkenleri ve insertscore(), acceptsemester() gibi fonksiyonları da bulunmaktadır. Yine Employee sınıfının kendine ait; jop, salary, company gibi değişkenleri ve netsalary(), changesalary() gibi fonksiyonları da bulunmaktadır. Kısacası; Student ve Employee hem kalıtım yoluyla türetildiği Person sınıfının özelliklerine hem de kendilerine has özelliklere sahiptir.
Kalıtım / Miras (Inheritance) Dikdörtgen sınıfı tanımlanan ana sınıftır. En, boy değişkenlerine ve alan hesabı için getalan() fonksiyonuna sahiptir. 24 Kare sınıfı Dikdörtgen sınıfından türetilmiştir. Kalıtım yoluyla en,boy değişkenleri ve getalan() fonksiyonunu kullanabilir. Yukarıdaki Java kodunda, Dikdörtgen sınıfından Kare sınıfı kalıtım yoluyla türetilmiştir. Bu sadece göz aşinalığı için bir örnektir, ilerleyen derslerde daha ayrıntılı olarak gösterilecektir
Çok Biçimlilik (Polymorphism)
Çok Biçimlilik (Polymorphism) 26 Bir fonksiyonun, metodun farklı veriler, farklı nesneler veya farklı ortamlarda farklı sonuçlar üretmesine çok biçimlilik denir. Çok biçimlilik aşırı yükleme (overload) denilen bir yöntem ile yapılabilir. Aşırı yükleme; bir fonksiyona farklı durumlarda farklı verilerle farklı sonuçlar elde etmesini sağlamaktır. Aynı isimde; farklı parametreler alan fonksiyonlar yazılabilir. Örneğin; DortgenAlani(int kenar_uzunluğu){..} DortgenAlani(int genişlik, int yukseklik){ } Fonksiyon isimleri aynı, fakat parametreleri ve içerisinde yaptığı işler farklıdır.
Çok Biçimlilik (Polymorphism) 27 Öğretmen; aynı Konuşmak fonksiyonunu kullanarak, Sınıfta - Yüksek Sesle, Odada - Normal Ses Tonuyla, Konferansta - Kısık Sesle konuşabilir. Bu çok biçimliliğe güzel bir örnektir; tek bir konuşmak fonksiyonu ile bulunduğu ortama göre farklı tonlarda konuşulabilir.
Çok Biçimlilik (Polymorphism) 28 Yukarıda verilen Karakök fonksiyonu; int (integer) değerler aldığında, integer sonuç üretir. Double değerler aldığında, double sonuç üretir. Long değerler aldığında ise, long sonuç üretir. Tek bir Karakök fonksiyonu çok biçimlilik ile birden çok işi yapacak hale gelir böylece farklı isimlerde fonksiyon oluşturmaya gerek kalmaz, karışıklık önlenir.
Çok Biçimlilik (Polymorphism) 29 Şekil sınıfında alanbul() fonksiyonu tanımlanmıştır. Şekil sınıfından türetilen Dikdörtgen ve Daire sınıfları içerisinde alanbul() fonksiyonunun içeriği farklı sonuçlar verecek şekilde yeniden yazılmıştır. Aynı alanbul() fonksiyonu farklı sınıflar içerisinde farklı işlevlere sahiptir. Çok biçimliliğin karmaşık biçimi budur...
Çok Biçimlilik (Polymorphism) 30 Çok Biçimlilik Java Fonksiyon Örneği; public int alanhesapla(int kenar){ return kenar*kenar; } public int alanhesapla(int en,int boy){ return en*boy; } public double alanhesapla(double en,double boy){ return en*boy; } Verilen örnekte alanhesapla() fonksiyonu 3 kez yazılmıştır ve parametreleri 3 yazımda da farklıdır. İlk yazımda int (integer) değişken tipinde kenarı verilen karenin alanını hesaplamaktadır. İkinci yazımda int (integer) değişken tipinde en ve boyu verilen dikdörtgenin alanını hesaplamaktadır. Üçüncü yazımda double değişken tipinde en ve boyu verilen dikdörtgenin alanını hesaplamaktadır. Tek bir alanhesapla() fonksiyonunu 3 farklı işlev kazandırılmıştır. Bu Çok Biçimlilik özelliğidir.
GENEL BAKIŞ 31 Nesne tabanlı programlama, standart programlamaya göre bir çok farklı özelliğe ve bir çok kolaylığa sahiptir. Tek bir sınıf içerisinde değişkenler ve fonksiyonlar oluşturarak, aynı sınıfın özelliklerini taşıyan birden fazla nesne oluşturulabilir. Örneğin; Tekerlek sınıfı oluşturulur, Tekerlek sınıfının; boyutları, hava basıncı, diş sayısı v.b. gibi değişkenleri bulunur. Tekerlek sınıfından, tekerler sınıfının özelliklerini taşıyacak, kamyon tekerleği, araba tekerleği, traktör tekerleği, uçak tekerleği gibi nesneler oluşturulabilir. Hepsinin boyutlar değeri, hava basıncı değeri, dış sayısı v.b. Değerleri bulunabilir.
Ders Bitti. Dinlediğiniz için teşekkürler