NESNEYE YÖNELİK PROGRAMLAMA 02 Ekim 2012
Nesne Yönelimli Programlama Yazılım teknolojisindeki gelişme ve ilerlemeler; yapısal programlama, yapısal tasarım, yapısal analiz ile başlasa da nesne yönelimli analiz, tasarım ve programlama ile daha çok gelişme elde edilmiştir. Nesneye yönelimli programlama gerçek dünyayı örnek almakta tıpkı gerçek dünyada olduğu gibi nesneler ve nesnelerin birbirleriyle iletimini sağlayan sistemler kurmaktadır. Bu tarz yazılan yazılımlar, daha iyi organize ve anlaşılır oldukları için bakımları da çok kolay olmakta ve programcıya zaman ve maliyetten büyük tasarruf sağlamaktadır.
NESNEYE-YÖNELİK TASARIM Nesneye-yönelik tasarım, prosedürel yaklaşımdan köklü olarak ayrılır. Nesneye-yönelik yaklaşımda problem, İşlemlere yada veri yapılarına bölünmez; Birbirleriyle etkileşen bir nesneler sistemi olarak analiz edilir. Ayrıca, prosedürel yaklaşım yukarıdan-aşağıya işleyen bir analiz tekniği olmasına rağmen, nesneye yönelik yaklaşım yukarıdan-aşağıya analiz ve aşağıdan-yukarıya sentez tekniklerini birleştirir. Nesneye-yönelik tasarım (“iterative” tarzda) şunların yapılmasını gerektirir: Sınıfların belirlenmesi, Özelliklerin ve davranışların tespiti, Sınıflar arası ilişkilerin bulunması ve Sınıfların bir hiyerarşi içinde organize edilmesi.
NESNEYE-YÖNELİK TASARIM Nesne tabanlı programlamada esas olan, gerçek hayatta var olan olguların programlamaya aktarılmasındaki yeni yaklaşımdır. Klasik prosedürsel programlamada verilerimiz ve fonksiyonlarımız vardı. Yani her şey veri ve bu veriyi işleyen metotlar etrafında dönüyordu. Aslında nesne tabanlı programlamada da iki önemli birim; veri ve veriyi işleyip mantıklı sonuçlar üreten metotlar bulunur. Ama buradaki fark gerçek hayattaki olguların da daha iyi gözlenip programlama dünyasına aktarılmasındadır.
Modelleme Gerçekleştirilmesi maliyetli ya da riskli olan projelerde, projenin beklenmedik durumlardan dolayı başarısızlığa uğramaması için bir takım fikir ve tasarım işlemleri (modelleme) yapılır. Modelleme fikir bazındaki projenin, gerçek dünyada uygulanabilirliğini sorgular. Karşılaşılabilecek sorunlara önceden çözüm bularak işgücü, maliyet, zaman gibi kaynak kayıplarını önler. Nesneye yönelimli programlamayla birlikte modellemeye duyulan ihtiyaç artmış ve Yazılım projelerinde kullanılmak üzere UML (Unified Modeling Language) modelleme dili geliştirilmiştir. Model oluşturmak şu getirileri sağlar Yapılacak iş için gereksinimleri ortaya koyar Anlaşmazlıkları çözümlemeye yardımcı olur. Yanlışları Önler
NESNEYE-YÖNELİK TASARIM
SINIFLARIN BELİRLENMESİ Nesneye-yönelik tasarımda ilk adım programın ihtiyaç duyacağı sınıfların belirlenmesidir. Bunun için kullanılabilecek basit bir teknik, programdan beklenenin doğal dil ile betimlenmesi, betimleme içindeki isimlerin listelenmesi ve bu liste içinde sınıfların seçilmesidir. Sınıflar en kolay olarak fiziksel nesneleri modelleyen programlar için belirlenir. Fakat, kavramsal nesneler yada olaylar veya etkileşimler söz konusu olduğunda bu işlem daha zor gerçekleştirilir. Ayrıca, problem modeli içindeki elemanlara karşılık gelen sınıflar tespit edildikten sonra bu sınıfları gerçekleştirmek için de yeni sınıflar tasarlamak gerekebilir.
ÖZELLİKLERİN VE DAVRANIŞLARIN TESPİTİ Bir kez sınıflar belirlendikten sonra ikinci adım, her sınıfa ait sorumlulukların belirlenmesidir. Bir sınıfın sorumlulukları iki alanda ortaya çıkar: Taşıması gereken bilgiler (“Sınıfa ait bir nesnenin neleri bileceği”) ve Sınıfa ait bir nesnenin neler yapabileceği yada bu nesneye neler yapılabileceği. Her sınıf kendisini betimleyen bazı özelliklere sahiptir. Sınıfa ait bir nesnenin özellik değerleri nesnenin içinde bulunduğu durumu (“state”) belirler. Özellik değerleri hiç değişmeyeceği gibi sık sık da değişebilir. Her nesne içinde bulunduğu durumu hatırlamak zorundadır. Her sınıf, ayrıca, nesnelerin diğer nesnelerle nasıl etkileştiğine be bu etkileşim neticesinde içinde bulundukları durumların nasıl değiştiğine karşılık gelen davranışlara sahiptir.
Sınıf (Class) ve Nesne (Object) Kavramı
Sınıf (Class) ve Nesne (Object) Kavramı
Sınıf (Class) ve Nesne (Object) Kavramı Mesela elimizde bir ütümüz olsun. Ütünün markası, modeli, rengi, çalıştığı elektrik voltajı, ne tür kumaşları ütüleyebildiği bu ütüye ait özelliklerdir (veri). Aynı zamanda ütümüzü ısıtabiliriz, ütüleme işinde kullanabiliriz ve soğumaya bırakabiliriz. Bunlar ise ütünün fonksiyonlarıdır (metot).
Sınıf (Class) ve Nesne (Object) Kavramı Eğer ütü ile ilgili bir program yapmış olsak ve nesne tabanlı programlama tekniğini kullansak hemen bir ütü sınıfı (class) oluştururduk. Bu sınıfta ütüye ait bilgiler (veriler) ve ütü ile yapabileceğimiz işler (metot) bulunurdu. O zaman nesne tabanlı programlamada bir sınıfta, sınıfa ait veriler ve bu verileri işleyip bir takım faydalı sonuçlar üreten fonksiyonlar / metotlar bulunur. Dahası, biz bir tane ütü sınıfı tasarlarsak bu sınıftan istediğimiz sayıda değişik ütüler (Object veya instance) yapabiliriz. Resimde bu şekilde ütü sınıfı ve bu sınıftan oluşturduğumuz nesnelerin görsel olarak anlatımı bulunmaktadır.
Sınıf (Class) ve Nesne (Object) Kavramı
Nesne Yönelimli Programlama Kavramları Kapsüllleme (Encapsulation) sayesinde, sınıfımız içinde kullandığımız alanların dışarıdan herhangi bir etki ile doğrudan değiştirilmelerini engellemiş oluruz. Bu durum bizim isteğimiz dışında oluşabilecek atamaların önüne geçmemize ve ille de bu alanların değerleri değişecekse bizim belirlediğimiz bir çizgide olmasına neden oluyor. Bu da programcılıkta ve özellikle nesne tabanlı programlamada çok büyük bir yere sahip olan kontrolün elimizde olmasını sağlar. Bir diğer özellik de, paketlenecek fonksiyonların nasıl bir işlev göstereceği belirtilmeksizin, sadece nasıl kullanılacağının belirtilmesi yapılabilir ki, bu zorunludur. Buna da Genelleştirme (Abstraction) adı verilir.
Nesne Yönelimli Programlama Kavramları Kalıtım (Inheritance): Normalde bu kavramı gerçek hayattan biliyoruz. En basit anlamda, örneğin “Ben, annemin gözlerini almışım.” dediğimde, tıp uzmanlarının buna getirdikleri yorum " siz annenizden kalıtımsal olarak şu özelikleri almışsınız." oluyor. Programlama dillerinde de kalıtımın rolünün aynı olduğunu söyleyebiliriz. Zaten nesne tabanlı programlama dillerini tasarlayan uzmanlar, gerçek hayat problemlerini, bilgisayar ortamına taşıyabilmek amacıyla en etkili modelleri geliştirmişler, bu model içerisine kalıtımı da katarak çok önemli bir özelliğin kullanılabilmesini sağlamışlardır.
Nesne Yönelimli Programlama Kavramları Nesneler için söylenebilecek özelliklerden biri de türeme özelliğidir. Bir nesne tanımlanırken daha önceden tanımlanmış bir başka nesneyi kendisine taban olarak seçebilir. Bu durum, yeni tanımlanan nesnenin kendisine taban seçtiği nesnenin özelliklerini kullanma hakkına karşılık gelir. Aynı zamanda yeni nesnenin taban nesne ile aynı özellikleri taşımasına neden olur. Yeni nesne kendisine yeni özellikler katabileceği gibi devraldığı özellikleri de geliştirebilir, değiştirebilir. Bu özelliğe Türeme (Derivation), özellikleri devralmaya da Miras alma veya Katılım (Inheritance) adı verilir.
Nesne Yönelimli Programlama Kavramları Kalıtım
Nesne Yönelimli Programlama Kavramları Kalıtım
Nesne Yönelimli Programlama Kavramları Üç önemli özellik göze çarpmaktadır: Türeyen nesneler taban nesnenin koruyarak devam ettirip kullanabilirler. 2. Türeyen nesneler türedikleri taban nesnelerin özelliklerini değiştirebilirler. Türeyen nesneler yeni özellikler kazanabilir veya mevcut özellikleri kaybedebilirler. Bir sistem içerisinde birbirinden türemiş sınıflar bulunsun. Miras alınan sınıfta zaten tanımlı olan bir fonksiyon, miras alan sınıfta da (Parametreleri, ismi ve geri dönüş değeri aynı olarak) tekrar tanımlanabilir. Bu durumda miras ağacı boyunca aynı fonksiyon farklı işler yapabilir. Bu duruma Çok Biçimlilik (Polymorphism) adı verilir.
Nesne Yönelimli Programlama Kavramları Çok biçimlilik metodun farklı nesnelerde veya farklı ortamlarda farklı sonuçlar üretmesidir. Mesela “konuşmak” insan sınıfına ait bir metottur Ancak bu metot ait olduğu insan sınıfının örneğine göre farklı sonuçlar üretir
Nesne Yönelimli Programlama Kavramları Türeme özelliği ile ilgili olarak söylenebilecek bir diğer özellik ise bir nesnenin bir nesneden değil de birden çok nesneden türemiş olması özelliği (Çok Tabanlılık veya Çoktan Türeme, Multiple Inheritance). Programlar içinde belirli nesne kalıplarının tekrar kullanım için hazırlanması özelliğine Şablon (Template) adı verilir. Şablonlar, yazılan bir kodun farklı benzer durumlar için kullanılmasını ifade eder.
A Short History of Object – Oriented Programming (OOP) SIMULA 1(1962) and Simula 67 (1967) are the two earliest object - oriented languages While most of the advantages of OOP were available in the earlier Simula languages, it wasn’t until C++ became entrenched in the 1990s that OOP began to flourish. The next step in the development of OOP started in January of 1991 The result was the Oak programming language (named after an oak tree outside Gosling’s window), which eventually morphed into the Java programming language. Java quickly grew in popularity, spurred by the growth of the World Wide Web. To many programmers, C# is Microsoft ’ s answer to Java. Some would even say that C# is the result ofMicrosoft ’ s stubbornness in refusing to promote a language it did not develop.
Installing C# Downloading C# Express A Test Program Using C# Express