Nesneye Dayalı Programlama

advertisement
NESNEYE DAYALI
PROGRAMLAMA
Yrd. Doç. Dr. Tuncay YİĞİT
Kapsam:
•Yazılım geliştirme aşamaları.
•Yazılım süreçleri
•Tümleştirilmiş süreç (UP)
•Nesneye dayalı programlama kavramları.
•Nesneye dayalı analiz
•Kullanım senaryoları.
•Nesneye dayalı modelleme.
•Tümleştirilmiş modelleme dili (UML).
•Tasarım kalıpları.
•Nesneye dayalı tasarım kavramları.
•Tasarımlarda tekrar kullanılabilirlik kavramı.
•Nesneye dayalı kodlama.
•Yazılımların sınanması.
•Yazılım bakımı ve güncellenmesi.
Yazılım Geliştirme Aşamaları
Yazılım:
•Programın çalışması ile bir fonksiyonu gerçekleştiren komutlar
•Programların istenilen veriyi oluşturmaları için kullanılan bir veri yapısı
•Programın çalışmasını ve kullanılmasını gösteren formlar
Yazılım çeşitliliği:
•Sistem Yazılımları:
Diğer programlara destek vermek için hazırlanan
programlardır.
•Gerçek Zamanlı (Real-Time) Yazılımlar
Gerçek dünyayı izleyen analiz eden yazılımlardır.
•İş Yazılımları
İş bilgilerini işleyen ve analiz eden yazılımlardır.
•Gömülü Yazılımlar
Salt okunur bellekte bulunurlar ve sistemin veya ürünün
kontrolünde kullanılan yazılımlardır.
•Kişisel Bilgisayar Yazılımları
Kişisel bilgisayarlar da geliştirilen ve kullanılan yazılımlardır.
•Yapay Zeka Yazılımları
Karmaşık problemlerin çözümünde kullanılan yazılımlar.
Yazılım Geliştirme Aşamaları
Yazılım Projesi Analizi ve Tasarımı:
Adımlar
•Tanımlama,
Yazılım için kullanıcı isteklerini öğrenme süreci
•Analiz,
Yazılımın, teknik açıdan gereksinimleri ortaya koyma sürecidir
•Bölme,
Analiz edilen yazılımın parçalara ayrılma sürecidir
•Kodlama,
Parçalara ayrılan yazılımın, herhangi bir programlama dilinde
kodlanması sürecidir.
•Birleştirme,
Geliştirilen parçaların/fonksiyonların bir araya getirilip komple
bir programın ortaya çıkarılması sürecidir.
•Sınama,
Gerçek hayatta kullanılması ve karşılaşılan hataların teyidi,
•Dokümantasyon,
Yazılım geliştirme sürecinin tüm aşamasında yapılmalıdır.
Yazılım Geliştirme Aşamaları
Yazılım Projesi Tasarımı:
Yaklaşımlar
•Veri akışı yaklaşımı,
Her bir yazılım birimini belirli girdileri belirli çıktılara
dönüştüren bir birim olarak ele alır. Bu yaklaşımın en belirgin
aracı Veri Akış Diyagramları'dır.
Veri Yapısı Yaklaşımı,
Veri yapısı yaklaşımının temel felsefesi de yazılım yapısının,
işlenecek veri yapısıyla uyumlu olması gereğidir.
•Nesneye Yönelimli Yaklaşım,
Nesne yönelimli yaklaşım gerçek dünyayı nesneler ve
aralarında alıp verdikleri mesajlar ile modeller.
Yazılım Geliştirme Aşamaları
Nesneye Yönelimli Modelleme
Yaşadığımız dünyada herşey birer nesnedir. Örneğin kişiler, kütükler,
sistemler, hepsi birer nesnedir. Her nesnenin bir çalışma tarzı ve kendine
has dışa yönelik davranışları vardır. Bir nesne ile interaksiyona girmek
için, nesnenin içinde ne bulunduğunu bilmemize gerek yoktur. Belirli
arayüzler (Interface) üzerinden mesajlar göndererek, nesne ile bağlantı
kurulur. Nesne bu mesajı alır ve gerekli işlemleri yapar.
Nesneye Yönelimli Tasarım Amacı
Sistem elemanlarını daha fazla tekrar kullanılabilir (reusable)
hale getirerek sistem kalitesini iyileştirmek ve sistem analiz ve
tasarımının üretkenliğini artırmaktır. Nesne yönelimliliğin ardındaki
bir diğer anahtar fikir, kalıtsallık (inheritance)'tır. Nesneler,
yapısal ve davranışsal karakteristikleri paylaşan nesne grupları
şeklinde tanımlanan nesne sınıfları (object classes) şeklinde
düzenlenirler. Kalıtsallık, mevcut sınıfların bazı karakteristiklerini
paylaşan yeni sınıfların (class) yaratılmasına olanak tanır.
Yazılım Geliştirme Aşamaları
Nesne dayalı analizde temel adımlar
•Nesnelerin belirlenmesi
•Belirlenen nesnelerin yapı ve davranışlarının tanımlanması
•Nesnelerin birbirleri ile olan ilişkilerinin belirlenmesi
•Nesne ara yüzlerinin ortaya konması
Nesne dayalı tasarımda temel görevler
•Sistem gereksinimleri sağlanacak şekilde, nesnelerin davranışlarının ve
diğer nesnele iletişimlerinin ayrıntıları ile modellenmesi
•Kalıtsallık avantajlarından daha iyi yararlanılacak şekilde nesnelerin
yeniden incelenmesi ve yeniden tanımlanması gerekir.
Nesneye Dayalı Programlama
Bir Örnek;
Mesela elimizde bir ütümüz olsun. Ütünün markası, modeli, rengi,
çalıstığı 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
fonksiyonalarıdır(metod). Eğer ütü ile ilgili bir program yapmış olsak ve
nesne yönelimli 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(metod) bulunurdu. O zaman nesne yönelimli
programlama da bir sınıfta, sınıfa ait veriler ve bu verileri işleyip bir takiı
faydalı sonuçlar üreten fonksiyonlar/metodlar bulunur.
Nesneye Dayalı Programlama
Bir Örnek;
Mesela elimizde bir ütümüz olsun. Ütünün markası, modeli, rengi,
çalıstığı 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
fonksiyonalarıdır(metod). Eğer ütü ile ilgili bir program yapmış olsak ve
nesne yönelimli 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(metod) bulunurdu. O zaman nesne yönelimli
programlama da bir sınıfta, sınıfa ait veriler ve bu verileri işleyip bir takiı
faydalı sonuçlar üreten fonksiyonlar/metodlar bulunur.
Ütü Sınıfı
Ütü 1
Ütü 4
Sınıf
Ütü 2
Ütü 3
Nesneler
Nesneye Dayalı Programlama
Sınıf Nedir?
sınıf bir yazılım kurgusudur ve gerçek hayattaki herhangi bir olguyu
modelleyen ve bu olguya ait özellikleri(veri) ve
davranışları(metdodlar) tarifleyen yapıdır.
using System;
class Ütü_Örnegi
{
static void Main(string[] args)
{
Ütü ütü1= new Ütü("Beyaz", "AyBakır");
Console.WriteLine(ütü1.Isın(70));
Console.ReadLine();
}
}
class Ütü
{
public int sıcaklık;
public string renk;
public string marka;
public Ütü(string renk, string marka)
{
sıcaklık=15;
this.renk=renk;
this.marka= marka;
Console.WriteLine(sıcaklık+ "derece sıcaklığında,\n "
+ renk + " renginde ve\n "
+ marka +" markasıyla bir ütü nesnesi
oluşturuldu\n\n");
}
public string Isın(int derece)
{
sıcaklık+=derece;
return "şu an sıcaklıgım: " + sıcaklık+ " derece";
}
}
Nesneye Dayalı Programlama
Referans Tipleri ve Nesneler
Nesnelerin en önemli özelliği referans tipinde olmalarıdır. Referans tiplerinde
bir nesnenin değeri saklanmaz. Sadece nesnenin hafızadaki yeri saklanır. Bir
nesnenin hafizadaki yerini new operatörü geri dönderir. Aşağıdaki program
kodu ile referans tiplerine ait bir kaç temel özelliği inceleyelim:
using System;
class Ütü_Örnegi
{
static void Main(string[] args)
{
Ütü ütü1= new Ütü("Beyaz", "AyBakır");
Console.WriteLine("ütü1'nin ilk özellikleri: " +
ütü1.Özellikler());
Console.WriteLine("ütü1'i 50 derece ısıtalım: "+
ütü1.Isin(50)+ "\n\n");
// ütü2 nesnemizi renksiz ve markasız olarak
olusturalım:
Ütü ütü2 = new Ütü("","");
//ütü2 nesnemizin özelliklerine bir göz atalım:
Console.WriteLine("ütü2'nin ilk özellikleri: " +
ütü2.Özellikler());
ütü2= ütü1; // ütü2 nesnemizi ütü1 nesnemize
atıyoruz.
Console.WriteLine("ütü2'nin özellikleri: " +
ütü2.Özellikler());
Console.ReadLine();
}
}
class Ütü
{
public int sıcaklık;
public string renk;
public string marka;
public Ütü(string renk, string marka)
{
sıcaklık=15;
this.renk=renk;
this.marka= marka;
Console.WriteLine(sıcaklık+ "derece
sıcaklığında,\n "
+ renk + " renginde ve\n "
+ marka +" markasıyla bir ütü
nesnesi oluşturuldu\n\n");
}
public string Isın(int derece)
{
sıcaklık+=derece;
return "şu an sıcaklıgım: " + sıcaklık+ "
derece";
}
}
Nesneye Dayalı Programlama
class Ütü
{
public int sıcaklık;
public string renk;
public string marka;
public Ütü(string renk, string marka)
{
sıcaklık=15;
this.renk=renk;
this.marka= marka;
}
public string Isın(int derece)
{
sıcaklık+=derece;
return "şu an sıcaklığım: " + sıcaklık+ " derece";
}
public string Özellikler()
{
string sonuc= " Sıcaklık: " + sıcaklık+
"\n Renk: " + renk+
"\n Marka: " + marka+ "\n\n";
return sonuc;
}
}
Download