NESNEYE DAYALI PROGRAMLAMA

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar
Yazılım Geliştirme Süreci
Yazılım Geliştirme ve Java
Fonksiyonlar.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Tuğba DEMİREL
Nesneye Yönelik Programlama
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
NESNEYE YÖNELİK PROGRAMLAMA
Yazılım Mühendisliği Bölüm - 7 Yazılım Doğrulama ve Geçerleme
OOP UYGULAMA 5.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
NESNEYE DAYALI MODELLEME VE TASARIM
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Java Programlama Koleksiyon(Collection) Sınıfları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
NESNEYE YÖNELİK PROGRAMLAMA
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
Fonksiyonlar.
Nesneye Dayalı Programlama
C# Metot Overloading (Aşırı yükleme)
İSİM UZAYLARI (NAMESPACE)
LINQ (Language Integrated Query)
Java Sınıf ve Nesne Kavramı UML Gösterimi
Net Class Framework ’ ün en üst yapısına İsim Uzayı denir. İsim uzayları ; pascal programlama dilinde 1990 ve hatta öncesinden beri varolmuş, C’de yer.
FONKSİYONLAR.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller Aslı Ergün.
ÇOK BİÇİMLİLİK POLYMORPHISM
Önceki Dersi Hatırlama !!
JAVA’DA DÖNGÜLER.
EDUTIME Java Day 8 Serdar TÜRKEL.
Numaralandırmalar(Enumaration)
Kalıtım , Sınıf Asli Ergün.
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Nesneye Dayalı Programlama
JAVA’DA DİZİLER Dr.Galip AYDIN.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
Bölüm 5 Nesneler ve Metotlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
Görsel C# ile Windows Programlama
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Bilgisayar Programlama III C
Hafta2 Rekürsif Algoritmalar
Bilgisayar Mühendisliğindeki Yeri
Fonksiyonlar ve Diziler
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Nesneye Dayalı Programlama Temel Kavramlar Hüseyin ESKİ.
ERP Projesinin Aşamaları İzmir. ERP Projesinin Aşamaları SatışSatış - Başlangıç – Kurulum – Analiz – Plan – Uyarlama – Eğitim – Geliştirme.
Problem Çözme Yaklaşımları
YAPISAL PROGRAMLAMA Hafta-6
Bilgisayar Programlama
ONTOLOJİ GELİŞTİRME ALANINDA ÇEVİK YAKLAŞIMLAR
Nesneye Dayalı Programlama 1
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
İLERİ VERİ TABANI UYGULAMALARI
Nesneye Dayalı Programlama 1
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Sunum transkripti:

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ı 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ü 2 Ütü 4 Ütü 3 Sınıf 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";      } } Yukarıdaki örnek programımızda önce altta bulunan Ütü sınıfımızı inceleyelim. Bu sınıfın sıcaklık, renk ve marka olmak üzere üç adet verisi vardır. Ayrıca Ütü sınıfımızın Ütü(string renk, string marka) şeklinde tanımlanmış yapılandırıcısı (constructor) vardır. Yapılandırıcılar bir sınıftan oluşturulan nesnelerin ilk değerlerini atama ve baslangıç işlemlerini yapmak için kullanılırlar. Ütü sınıfınımızın yapılandırcısı, oluşturulan her ütü nesnesinin sıcaklığını varsayılan değer olarak 15 dereceye ayarlıyor. Ayrıca paratmetre olarak alınan renk ve marka değerlerini de atayıp, ütüye ait özellikleri ekrana yazdırıyor. Ütü sınıfına ait olan diğer metod ise Isın(int derece) olarak tanımladığımız metoddur. Bu metod ütünün sıcaklığını derece parametresinde verilen değer kadar artırıp sonucu string tipinde geri dönderiyor. Ütü_Örnegi sınıfına geri dönersek, burda sadece Main() metodunun bulunduğunu görürüz. Main() metodu, C# dilinde her programda bulunması gereken zorundu bir metoddur. Çünkü programın çaliştırılması buradan başlar. Ayrıca her C# programında sadece bir tane Main() metodu bulunur. Örneğimizde Main() metodundaki en önemli satir:         Ütü ütü1= new Ütü("Beyaz", "AyBakır"); satırıdır. Bu satırda Ütü sınıfına ait ütü1 nesnemizi oluşturuyoruz. Yukarıdaki satırdan da görebileceğimiz gibi herhangi bir sınıfa ait yeni nesneyi oluştururken genel olarak şu yapş kullanılır:         SınıfAdı nesneAdı = new SınıfAdı(parametre1, parametre2, … parameter N) ısterseniz kodumuzu incelemeye yine Ütü sınıfından başlayalım. Bir önceki örneğe göre sınıfımızda degişikler yaptık. Ütü sınıfının özelliklerini gösteren ayrı bir metod yazdık. Bu metod Özellikler() isimli olsun. Doğal olarak Ütü sınıfının yapılandırıcısında, sınıf oluşturulduktan hemen sonra nesnenin özelliklerini gösteren kısım kaldırıldı. şimdi ise Ütü_Örnegi sınıfındaki Main() metodu üzerinde yoğunlaşalım. Yine, birinci örnekte olduğu gibi, ütü1 nesnemizi ile oluşturuyoruz. Sonra ütü1 nesnesinin özelliklerini ekrana yazdırıyoruz. Bir sonraki satırda ise ütü1 nesnemizi 50 derece ısıtıp sonucu ekrana yazıyoruz. Artık ikinci bir ütü nesnesinin oluşturmanin zamanı geldiğini düşünüp         Ütü ütü2 = new Ütü("",""); satırında ütü2 nesnemizi oluşturuyoruz. Burada dikkatinizi çektiği gibi ütü2 nesnesinin renk ve marka özelliklerini boş olarak (null) oluşturuyoruz. ütü2 nesnesini oluşturunca özelliklerine gözatmak için         Console.WriteLine("ütü2'nin ilk özellikleri: " +                                  ütü2.Özellikler()); satırlarını yazıyoruz. Bir sonaki satır programımızın en önemli satırıdır. Bu satırda ütü2= ütü1 ifadesi ile ütü2 nesnesinin referansını ütü1 nesnesinin referansına atıyoruz. Değer tiplerinde "=" operatörü ile bir değişkenin değeri diğerine kopyalanır. Ama nesneler referans tipleri oldukları için, "=" operatörü bir nesnenin referansı diğerine atar. Bu durumda ütü2 nesnesi artik ütü1'in elemanlarının adreslerini içerir. Bu andan sonra ütü2'nin eskiden gösterdiği sicaklik, renk ve marka verilerine erişmemiz mümkün değildir. Artık onlar hafızada bir yerde ve biz bilmiyoruz. Bu verilerin hafızada kapladıkları alanı .NET Framework'nun çöp toplayıcısı (garbage collector) uygun gördüğü bir anda temizleyecektir. ütü2 nesnesinin son durumda özelliklerine bakacak olursak gerçektende ütü1'i referans ettiğini görürüz. Yukarıdaki programımızı çalıştırdığımızda aşağıdaki sonucu elde ederiz: Son olarak şu ilginç soruya cevap vermeye çalışalım. "Bir önceki program kodunun sonuna aşağıdaki kısmı eklersek ne gibi bir değişiklik olur?" // ütü2 nesnemizin özelliklerini degiştiriyoruz: ütü2.sıcaklık=30; ütü2.renk="Kırmızı"; ütü2.marka="Dolu"; //ütü1 nesnemizin özellikerine bir göz atalım: Console.WriteLine("ütü1'nin son durumdaki özellikleri: " +                           ütü1.Özellikler()); //ütü1 nesnemizin özellikerine bir göz atalım: Console.WriteLine("ütü2'nin son durumdaki özellikleri: " +                           ütü2.Özellikler()); Yukarıdaki kodun eklenmiş halini derleyip çalıştirmayı deneyelim. Sonuç aşağıdaki gibi olacaktır: Evet ütü1 ve ütü2'nin son durumdaki özellikleri aynıdır. Bu durumdan şu sonuca ulaşabiliriz: " ütü1 ve ütü2'nin herhangi biri ile özellikleri degiştirirsek diğeri de aynı özelliklere sahip olur. Çünkü her iki nesne de hafızada aynı yere referans ediyorlar." Bu makalede nesne yönelimli programlamaya giriş yaptık. Nesne yönelimli programlamanın iki temel kavramı olan sınıf(class) ve nesne(object)'yi inceledik. Sonraki makalelerde nesne yönelimli programlamanın diğer önemli özellikerini birlikte incelemek dileğiyle.

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";      } } Yukarıdaki örnek programımızda önce altta bulunan Ütü sınıfımızı inceleyelim. Bu sınıfın sıcaklık, renk ve marka olmak üzere üç adet verisi vardır. Ayrıca Ütü sınıfımızın Ütü(string renk, string marka) şeklinde tanımlanmış yapılandırıcısı (constructor) vardır. Yapılandırıcılar bir sınıftan oluşturulan nesnelerin ilk değerlerini atama ve baslangıç işlemlerini yapmak için kullanılırlar. Ütü sınıfınımızın yapılandırcısı, oluşturulan her ütü nesnesinin sıcaklığını varsayılan değer olarak 15 dereceye ayarlıyor. Ayrıca paratmetre olarak alınan renk ve marka değerlerini de atayıp, ütüye ait özellikleri ekrana yazdırıyor. Ütü sınıfına ait olan diğer metod ise Isın(int derece) olarak tanımladığımız metoddur. Bu metod ütünün sıcaklığını derece parametresinde verilen değer kadar artırıp sonucu string tipinde geri dönderiyor. Ütü_Örnegi sınıfına geri dönersek, burda sadece Main() metodunun bulunduğunu görürüz. Main() metodu, C# dilinde her programda bulunması gereken zorundu bir metoddur. Çünkü programın çaliştırılması buradan başlar. Ayrıca her C# programında sadece bir tane Main() metodu bulunur. Örneğimizde Main() metodundaki en önemli satir:         Ütü ütü1= new Ütü("Beyaz", "AyBakır"); satırıdır. Bu satırda Ütü sınıfına ait ütü1 nesnemizi oluşturuyoruz. Yukarıdaki satırdan da görebileceğimiz gibi herhangi bir sınıfa ait yeni nesneyi oluştururken genel olarak şu yapş kullanılır:         SınıfAdı nesneAdı = new SınıfAdı(parametre1, parametre2, … parameter N)

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;     } } Yukarıdaki örnek programımızda önce altta bulunan Ütü sınıfımızı inceleyelim. Bu sınıfın sıcaklık, renk ve marka olmak üzere üç adet verisi vardır. Ayrıca Ütü sınıfımızın Ütü(string renk, string marka) şeklinde tanımlanmış yapılandırıcısı (constructor) vardır. Yapılandırıcılar bir sınıftan oluşturulan nesnelerin ilk değerlerini atama ve baslangıç işlemlerini yapmak için kullanılırlar. Ütü sınıfınımızın yapılandırcısı, oluşturulan her ütü nesnesinin sıcaklığını varsayılan değer olarak 15 dereceye ayarlıyor. Ayrıca paratmetre olarak alınan renk ve marka değerlerini de atayıp, ütüye ait özellikleri ekrana yazdırıyor. Ütü sınıfına ait olan diğer metod ise Isın(int derece) olarak tanımladığımız metoddur. Bu metod ütünün sıcaklığını derece parametresinde verilen değer kadar artırıp sonucu string tipinde geri dönderiyor. Ütü_Örnegi sınıfına geri dönersek, burda sadece Main() metodunun bulunduğunu görürüz. Main() metodu, C# dilinde her programda bulunması gereken zorundu bir metoddur. Çünkü programın çaliştırılması buradan başlar. Ayrıca her C# programında sadece bir tane Main() metodu bulunur. Örneğimizde Main() metodundaki en önemli satir:         Ütü ütü1= new Ütü("Beyaz", "AyBakır"); satırıdır. Bu satırda Ütü sınıfına ait ütü1 nesnemizi oluşturuyoruz. Yukarıdaki satırdan da görebileceğimiz gibi herhangi bir sınıfa ait yeni nesneyi oluştururken genel olarak şu yapş kullanılır:         SınıfAdı nesneAdı = new SınıfAdı(parametre1, parametre2, … parameter N)