› 2013 › 12 › ... nesne yÖnelİmlİ programlama – hafta # 1paket diyagramı ("package...

43
NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 6 Yrd.Doç.Dr.Hacer Karacan

Upload: others

Post on 27-Feb-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 6

Yrd.Doç.Dr.Hacer Karacan

Page 2: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

İçerik

• UML

▫ Yapı Diyagramları

▫ Eylem Diyagramları

▫ Etkileşim Diyagramları

Page 3: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

UML

Page 4: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Diyagramlar

• UML görsel olarak modelleme için birçok diyagrama sahiptir.

▫ Yapı Diyagramları

▫ Eylem Diyagramları

▫ Etkileşim Diyagramları

Page 5: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Yapı Diyagramları

• UML' de altı tür yapı diyagramı vardır:

▫ Sınıf (Class) Diyagramları

▫ Nesne (Object) Diyagramları

▫ Paket (Package) Diyagramları

▫ Bileşen (Component ) Diyagramları

▫ Birleşik Yapı (Composite Structure) Diyagramları

▫ Dağıtım (Deployment) Diyagramları

Page 6: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Sınıf Diyagramı

Page 7: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Nesne Diyagramları

Page 8: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Paket Diyagramları

Page 9: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Bileşen (Component) Diyagramları

Page 10: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Bileşen (Component) Diyagramları

Page 11: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Birleşik Yapı (Composite Structure) Diyagramları

• Birleşik yapıların iki ayrı türü vardır:

1. Toplama, bir araya getirme (Aggregation)

2. Meydana gelme (Composition)

Page 12: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Toplama (Aggregation)

1. Toplama, bir araya getirme (Aggregation): İçerilen nesneler (alt parçalar) kendi başlarına da kullanılırlar. Sadece o nesneye ait parçalar değillerdir.

Örneğin havaalanında uçaklar vardır.

Page 13: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Meydana gelme (Composition)

2. Meydana gelme (Composition): Alt parçalar o nesneyi meydana getirmek için oluşturulmuşlardır; kendi başlarına kullanılmazlar.

Örneğin otomobilin motoru vardır.

Page 14: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Dağıtım (Deployment) Diyagramları

Page 15: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Eylem Diyagramları

• UML' de üç tür eylem diyagramı vardır:

▫ Kullanım Durumu (Use-Case) Diyagramları

▫ Durum (State) Diyagramları

▫ Aktivite (Activity) Diyagramları

Page 16: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Kullanım Durumu Diyagramları

Page 17: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Durum Diyagramları

Page 18: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Durum Diyagramları

Page 19: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Aktivite Diyagramları

Page 20: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Aktivite (Activity) Diyagramları

Page 21: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Aktivite (Activity) Diyagramları

Page 22: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Etkileşim Diyagramları

• UML' de iki tür etkileşim diyagramı vardır:

▫ İletişim Diyagramları (Communication Diagrams)

▫ Ardışıl Diyagramlar (Sequence Diagrams)

Page 23: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

İletişim Diyagramları

Page 24: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Ardışıl Diyagramlar

Page 25: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

İletişim Diyagramları

Terminal adlı sınıftan yaratılmış bir nesnenin odemeYap(verilenNakit) adlı metodu canlandırdığında bu metodun içinde Satis adlı sınıftan yaratılan bir nesneye odemeYap(verilenNakit) adlı başka bir mesaj gönderilir. :Satis nesnesi bu metodun içinde Odeme adlı sınıftan bir nesne yaratır.

Page 26: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Mesaj Sıra Numaraları

• Mesajlar gönderildikleri sıraya göre numaralanırlar. İlk mesaja numara verilmez.

• Bir mesajın neden olduğu diğer mesajlara da sebep mesajın numarasına bağlı alt numaralar verilir.

• Aşağıdaki şekilde, ClassA' nın bir nesnesi ClassB' nin bir nesnesine msg2 mesajını yolladığında ClassB' nin nesnesi de ClassC' nin nesnesine msg3 mesajını gönderecektir. msg3 sonlandığında tekrar msg2' ye dönülecektir.

Page 27: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Kendine Mesaj

• Nesneler kendilerine de mesaj gönderebilirler, yani kendi metotlarını çağırabilirler.

• Şekildeki örnekte, :Terminal nesnesi, msg1 metodunun içinde kendi sil metodunu çağırmaktadır.

Page 28: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Nesne Yaratma

• Bir mesaj nesne yaratılmasını sağlamak için gönderiliyorsa normal olarak bu mesaja create adı verilir ve bir kurucu fonksiyon (constructor) çağrısı olarak yorumlanır.

• Eğer başka bir isim verilirse <<create>> tanımlayıcısı kullanılır.

• Aşağıdaki şekilde her iki durum da gösterilmiştir. Bu örnekte, :Terminal nesnesi :Satis nesnesini yaratmaktadır.

Page 29: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Koşullu Mesajlar

• Bu tür mesajlar sadece belli bir koşul gerçekleştiğinde gönderilebilirler. Eğer köşeli parantez içinde verilen koşul gerçekleşmemişse o mesaj gönderilmez, sonraki mesaja geçilir.

• Şekil’de verilen örnekte A sınıfından yaratılan nesnenin mesaj1 metodunun içinde renk değeri sınanmaktadır. Eğer renk = mavi koşulu doğru ise :A nesnesi, :B nesnesine hesapla() mesajını gönderecektir.

• Koşul doğru değilse bir sonraki mesajla (örneğin 2 numaralı) devam edilecektir.

• Bu durum programlamadaki if-then yapısına karşı düşmektedir.

Page 30: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Karşılıklı Dışlamalı Mesajlar

• Nesneler arası etkileşim, belli bir koşula bağlı olarak farklı yollar izleyebilir.

• Şekil’de verilen örnekte "test" koşuluna bağlı olarak a ya da b yollarından biri izlenecektir.

• Diyagramda gösterilen sistem SınıfA' dan yaratılan nesneye msg1() mesajının gelmesi ile çalışmaya başlar. Bu metodun içinde test koşuluna bakılır. Eğer test=true ise 1a numaralı msg2 SınıfB'den yaratılan nesneye gönderilir ve msg3() ile devam edilir.

• Eğer test=true değil ise 1b numaralı msg4 SınıfD' den yaratılan nesneye gönderilir.

• Koşullara bağlı mesajlar gönderildikten sonra SınıfA' dan yaratılan nesne SınıfE' den yaratılan nesneye koşulsuz olarak 2 numaralı msg6 mesajını gönderir.

Page 31: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Döngüler (İterasyonlar)

• UML iletişim diyagramlarında tekrarlamalar (döngüler) "*" sembolü ile gösterilir. Şekil’de verilen örnekte Simulator sınıfından yaratılan nesne, i = 1' den N' e kadar Random sınıfından yaratılan nesneye nextInt() mesajını defalarca gönderecektir.

• Bu metot çağrısında geri gönderilen değer num adlı bir değişkende tutulmaktadır.

• Eğer tekrarın kaç defa yapılacağı tasarım aşamasında belli değilse, kodlama aşamasına bırakılmışsa ya da problemin yapısından dolayı açıkça belli ise döngü koşulu yazılmadan sadece "*" simgesi de kullanılabilir.

Page 32: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Ardışıl (Sequence) Diyagramlar (Örnek)

• Market sisteminin ardışıl diyagramı aşağıdaki şekil’de gösterilmiştir.

• Bu diyagramda da Terminal, Satis ve Odeme, sistem tasarlanırken oluşturulacak sınıfların adıdır. Bu nedenle Türkçe karakterler kullanılmamıştır.

Page 33: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Geri Dönüşler

• Mesajlardan geri dönüşleri göstermek çoğunlukla gerekli değildir. Gerekli olduğu durumlarda geri dönüşler kesik çizgi ile gösterilir.

• Çağırılan metodun geri döndürdüğü değer istenirse mesajın başına yazılır istenirse geri dönüş çizgisinin üstüne yazılır. Şekil’de verilen örnekte her iki yöntem de gösterilmiştir.

• Örnekte, msg2() mesajı geriye a değerini döndürnketedir. Benzer şekilde msg3() çağrısı da geriye paraUstu değerini döndürmektedir. msg4() ve msg5() çağrıları ise geriye değer döndürmemektedir.

Page 34: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Kendine Mesaj

• Şekil’deki örnekte :Terminal

nesnesi, msg1 metodunun içinde kendi sil metodunu çağırmaktadır.

Page 35: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Nesne Yok Etme

• Şekil’deki örnekte :Satis nesnesi, önce :Odeme nesnesini yaratmakta daha sonra da yok etmektedir. Bu işlemler C++' da new ve delete operatörleri ile yapılır.

Page 36: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Koşullu Mesajlar

• Bu tür mesajlar sadece belli bir koşul gerçekleştiğinde gönderilebilirler. Eğer köşeli parantez içinde verilen koşul gerçekleşmemişse o mesaj gönderilmez, sonraki mesaja geçilir.

• Şekil’de verilen örnekte A sınıfından yaratılan nesnenin msg1 metodunun içinde önce :B nesnesine msgx() mesajını gönderilmektedir. Ardından msg1 metodunda renk değeri sınanmaktadır. Eğer renk = mavi koşulu doğru ise :A nesnesi, :B nesnesine hesapla() mesajını gönderecektir.

• Daha sonra (koşul doğru olsa da olmasa da) bir sonraki mesajla (msgy() ) devam edilecektir.

Page 37: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Karşılıklı Dışlamalı Mesajlar (UML 1.X)

• Nesneler arası etkileşim, belli bir koşula bağlı olarak farklı yollar izleyebilir.

• Şekil’de verilen örnekte "X>10" koşuluna bağlı olarak :B ya da :C nesnelerine hesapla mesajı gönderilir. Bu diyagram UML' in bir önceki sürümünde (1.X) kullanılan gösterilime göre çizilmiştir. Bu gösterilimde nesnelerin isimlerinin altı çizilmektedir.

Page 38: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Karşılıklı Dışlamalı Mesajların Yeni Biçimi (UML 2.x)

• UML 2.0' da karşılıklı dışlamalı durumları göstermek için "alt" anahtar sözcüğü kullanılır. Bu sözcüğün yanına koşullardan biri yazılır. Koşul gerçekleşmediği durumlarda gönderilecek mesajlar ise kalın bir kesik çizgiden sonra sıralanır. Bu grubun başına "else" anahtar sözcüğü yazılır.

• Şekil’de UML 2.0' da karşılıklı dışlamalı mesajların ardışıl diyagramlarda nasıl çizildiği gösterilmiştir.

Page 39: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

İterasyonlar (Döngüler)

• Şekil’de UML' in eski sürümü 1.5' te tek mesajlı bir döngü yapısı gösterilmiştir.

• Bu örnekte Simulator sınıfından yaratılan nesne, i = 1' den N' e kadar Random sınıfından yaratılan nesneye nextInt() mesajını defalarca gönderecektir.

Page 40: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

İterasyonlar (Döngüler)

• Önceki örnekle aynı sistem UML' in 2.0 sürümü ile gösterilmiştir. UML’in yeni sürümünde döngüler "loop" anahtar sözcüğü ile belirtilmektedir.

Page 41: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Diyagramlar Arası Etkileşim

• Altprogram çağırmak gibidir. Çok tekrarlanan işlemler için kullanılır.

• Başka diyagramdan alınacak olan kısım ana diyagramın içinde "ref" bloğu ile belirtilir. Bu bloğun içine aynı isimdeki ardışıl diyagramın yerleşeceği anlaşılır.

Page 42: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Genel Kurallar

• UML bir programlama (ya da yazılım geliştirme) dili olmaktan ziyade iş sistemlerinin nasıl modellenebileceğini belirleyen ve açıklayan yöntemlerin bir araya toplanmış halidir.

• Daha çok yazılım geliştiriciler tarafından kullanılıyor olsa da UML ile yapılan modellemeler sadece yazılım projelerinde kullanılmak zorunda değildir.

▫ Örneğin bir iş sistemin yapısını sade ve anlaşılır şekilde ortaya çıkarmak için Paket Diyagramı ("Package Diagram") kullanılabilir.

• Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı yazılar ne kadar az olursa, diyagram o kadar açıklayıcı olur.

▫ Detayların tümünü bir diyagramda göstermeye çalışırsanız hem kendiniz hem de yazılımı kullanacak olanlar temel bakış açısını yitirebilirler.

Page 43: › 2013 › 12 › ... NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1Paket Diyagramı ("Package Diagram") kullanılabilir. •Altın kural: Diyagramdaki elemanlar ve elemanları açıklayıcı

Kaynaklar

• Y.Doç.Dr.Feza BUZLUCA ders notları

http://www.buzluca.info/dersler.html