class diagram

42
Sınıf Diyagramları (Class Diagrams) Seyfullah Demir Hacettepe Üniversitesi [email protected] 1

Upload: seyfullah-demir

Post on 28-Jun-2015

7.649 views

Category:

Documents


1 download

DESCRIPTION

BİL751 İleri UML Uygulamaları Dersi - Sınıf Diyagramları Sunumum

TRANSCRIPT

Page 1: Class Diagram

Sınıf Diyagramları(Class Diagrams)(Class Diagrams)

Seyfullah Demir

Hacettepe Ü[email protected]

1

Page 2: Class Diagram

Sınıf Diyagramları

Tanım

• Sınıf diyagramı: Bir sistemin yapısını; sistemdeki sınıfları, sınıfların niteliklerini ve sınıflar arasındaki ilişkileri göstererek ifade eden diyagramdır.

• Sistemi oluşturan sınıflar ve bunlar arasındaki ilişkiler• Sistemi oluşturan sınıflar ve bunlar arasındaki ilişkiler

• Sistemin statik yapısını ifade eder.

• Yapısal (structural) bir diyagramdır.

• UML’deki en temel diyagram tiplerinden biridir.

• Sınıf diyagramları, nesneye-yönelik modellemenin yapıtaşıdır.

2

Page 3: Class Diagram

Sınıf Diyagramları

• Sınıf diyagramı, sistem için tanımlanan tüm sınıfları içermeyebilir.

• Bir sistemi modellemek için birden fazla sınıf diyagramı kullanılabilir.diyagramı kullanılabilir.

• Bir sistemle ilgili çizilen bir sınıf diyagramı sistemin belirli bir görünümünü ifade ederken, çizilen bütün sınıf diyagramları birlikte bütün sistemi gösterir.

3

Page 4: Class Diagram

Sınıf Diyagramları

• Sınıf diyagramı temelde statik bakış açısı sunar.

– Yol Haritası gibi

• Nesneler şehirleri, ilişkiler şehirler arasındaki yolları gösterir

• Hedefe ulaşmak için hangi yolun takip edilmesi gerektiğinisöylemezsöylemez

• Sınıf diyagramında hangi nesnelerin işbirliğiyaptığı belli,ancak nesnelerin nasıl işbirliğiyapacakları belli değildir.

– Nasıl sorusunun cevabı “sequence” veya“collaboration”diyagramlarında tanımlanır

4

Page 5: Class Diagram

Sınıf Diyagramları

• Sınıf diyagramları, nesneye-yönelik programlama dilleriyle doğrudan eşleştirilebilen tek diyagram türüdür. Bu yüzden de yazılım geliştiriciler tarafından sıkça yüzden de yazılım geliştiriciler tarafından sıkça kullanılmaktadır.

• Sınıf diyagramları geliştirme boyunca kullanılır

• Sınıf diyagramı UML 2.0’da pek değişmemiştir.

5

Page 6: Class Diagram

Sınıf ve Nesne

• Sınıf nedir?

– Ortak durum ve davranışlara sahip nesneler aynı sınıf altında gruplanır.

– UML diliyle sınıf bir çeşit sınıflandırıcı(classifier)’dır–

• Örneğin, Volkswagen, Toyota ve Ford ortak özellikleri olan ve ortak davranışlar gösteren birer arabadır. Öyleyse bunların hepsini “Araba” sınıfıyla ifade edebilirim.

• Nesne nedir?

– Belirli bir sınıfa ait olgudur(instance).

• Örneğin Araba sınıfının bir nesnesi Toyota olabilir.

6

Page 7: Class Diagram

Sınıf Diyagramları

• Sınıf Gösterimi

7

Page 8: Class Diagram

Sınıf Diyagramları

Nitelikler (Attributes)

• İki çeşit gösterim şekli vardır

– Satır içi (inlined)

– Sınıflar arası ilişkiler vasıtasıyla– Sınıflar arası ilişkiler vasıtasıyla

• Çokluk (multiplicity), biriciklik (uniqueness) vesıralama (ordering) gibi kavramlar da gösterilebiliyor.

8

Page 9: Class Diagram

Sınıf Diyagramları

Satır içinde gösterilen nitelikler

• Satır içinde gösterilen nitelikler için aşağıdaki standart gösterim kullanılır.

– visibility / name : type multiplicity = default

{property strings and constraints} visibility ::= {+|-|#|~} multiplicity ::= [lower..upper]

9

Page 10: Class Diagram

Sınıf Diyagramları

• visibility: Niteliğin görünürlüğünü belirtir.– + : public– - : private– # : protected– ~ : package

• / : Niteliğin türetilmiş(derived) bir nitelik olduğunu belirtir.• name: Niteliğin adı• type: Niteliğin türü.• type: Niteliğin türü.• multiplicity: Niteliğin kaç tane olgusunun (instance) olabileceğini belirtir.

– Kullanılmadığında “1” tane olgunun olacağı anlaşılır.– Bir tamsayı olabilir.– Niteliğin belli bir aralıkta olgusu olabiliyorsa, bu aralığı belirleyen iki tamsayı köşeli parantez

içinde ve .. İle ayrılarak gösterilir.– Üst limiti yoksa sınırı belirtmek için * simgesi kullanılabilir. – Sıfır ya da daha çok olgusu olabileceği ifade edilmek istendiğinde ise * simgesi tek başına

kullanılır.

10

Page 11: Class Diagram

Sınıf Diyagramları

• default: Niteliğin varsayılan değeri varsa belirtilir.

• property strings: Özellik ve etiketlerden oluşan bir kısımdır. Biriciklik(uniqueness) ve bir kısımdır. Biriciklik(uniqueness) ve sıralama(ordering) gibi kavramları ifade etmek için kullanılır.

• constraints: Nitelikle ilgili bir ya da daha fazla kısıtlama belirtilebilir. Doğal dille ifade edilebileceği gibi OCL ile de ifade edilebilir.

11

Page 12: Class Diagram

Sınıf Diyagramları

• Nitelikler - Örnek

12

Page 13: Class Diagram

Sınıf Diyagramları

Sınıflar arasındaki ilişkiler vasıtasıyla gösterilen nitelikler

• Daha ayrıntılı bir sınıf diyagramı

• Karmaşık türdeki nitelikler için daha açıklayıcı • Karmaşık türdeki nitelikler için daha açıklayıcı bilgi sağlar.

13

Page 14: Class Diagram

Sınıf Diyagramları

Sınıflar arasındaki ilişkiler vasıtasıyla gösterilen nitelikler

14

Page 15: Class Diagram

Sınıf Diyagramları

İşlemler (Operations)– Bir sınıfın gerçekleştirdiği işlemler

• Ekrana bir dörtgen çizme

• Listeden seçilen elemanlarının sayısını hesaplama

– İşlem imzası– İşlem imzası

• Operasyonlar şu gösterimle ifade edilir.– visibility name ( parameters ) : return-type {properties}

– parameters: • direction parameter_name : type [ multiplicity ] =

default_value { properties }

15

Page 16: Class Diagram

Sınıf Diyagramları

İşlem Gösterimi

• visibility: İşlemin görünürlüğünü belirtir.

• name: İşlemin adını belirtir. Yapılan işlemin özünü açıklayan bir eylem kullanılır.özünü açıklayan bir eylem kullanılır.

• return-type: İşlemin döndüreceği değerin türünü belirtir.

• properties: İşlemle ilişkili kısıtlamaları ve özellikleri (constraints and properties) belirtir.

16

Page 17: Class Diagram

Sınıf Diyagramları

Parametre Gösterimi• direction: Parametre işlemde “nasıl kullanılır” sorusunun

cevabını belirtir. “in”, “inout“, “out” ya da “return” olabilir.• parameter-name: Parametrenin adı.• type: Parametrenin türü.• multiplicity: İşleme geçilen parametrenin olgu sayısıyla ilgili • multiplicity: İşleme geçilen parametrenin olgu sayısıyla ilgili

bilgi verir.• default value: parametrenin varsayılan değeri.• properties: parametre ile ilişkili kısıtlamaları ve özellikleri

(constraints and properties) belirtir.

17

Page 18: Class Diagram

Sınıf Diyagramları

• İşlemler - Örnek

18

Page 19: Class Diagram

Sınıf Diyagramları

• İşlemler ve Methodlar

– Operasyon, yalnızca bir davranışı ortaya çıkarmak için (davranış tetikleme) kullanılacak bilgileri için (davranış tetikleme) kullanılacak bilgileri içerirken; metot, bu davranışın gerçekte nasıl implement edildiğini gösterir.

19

Page 20: Class Diagram

Sınıf Diyagramları

Soyut Sınıflar(Abstract Classes)

• Soyut sınıflar, gerçekleştirimi yapılmamış bir operasyon imzası (signature) sağlayan sınıflardır.sınıflardır.

20

Page 21: Class Diagram

Sınıf DiyagramlarıİLİŞKİLER (RELATIONSHIPS)

Dependency– Sınıflar arasındaki en zayıf ilişkidir.

– İki sınıf arasında dependency ilişkisinin olması demek, bir sınıf diğer sınıfı kullanır ya da onun bilgisine sahiptir demektir.

– “uses” ilişkisi vardır.– “uses” ilişkisi vardır.

– Sürekli bir ilişki yok. (transient relationship)

– Bağımlı sınıfın nesnesi diğer sınıfın nesnesini gerektiğinde kullanır.

• Window “uses” WindowClosingEvent 21

Page 22: Class Diagram

Sınıf Diyagramları

Association– Dependency ilişkisinden daha güçlü– “has a” ilişkisi vardır.– Kaynak sınıf, hedef sınıfın olgusunu nitelik olarak içerir.– Hedef sınıf diğer sınıflar tarafından da kullanılabilir – Hedef sınıf diğer sınıflar tarafından da kullanılabilir

(shared).

• Window “has a” Cursor

22

Page 23: Class Diagram

Sınıf Diyagramları

Association(Devam)• Association ilişkisi isimlendirilebilir, hangi sınıfın hangi sınıfı

kullandığı (navigability) açıkça gösterilebilir.

• Multiplicity bilgisi açıkça gösterilebilir.

23

Page 24: Class Diagram

Sınıf Diyagramları

Aggregation– Association ilişkisinin daha güçlü versiyonu– Aidiyet gerektirir.– İki sınıfın yaşam evreleri arasında bir ilişki gerektirebilir. Birbirlerinden

bağımsız olarak yok edilemeyebilirler.– “Owns a” ilişkisi vardır– “Owns a” ilişkisi vardır– Navigability, multiplicity gösterilebilir.

• Window “owns a” Rectangle

24

Page 25: Class Diagram

Sınıf Diyagramları

Composition– Sınıflar arasında çok güçlü bir ilişki kurar

– Parça-bütün ilişkisi kurar

– Bütün rolündeki nesne yok edildiğinde parça da yok olur.– Bütün rolündeki nesne yok edildiğinde parça da yok olur.

– “is part of” ilişkisi vardır.

– navigability, multiplicity gösterilebilir.

• TitleBar “is a part of” Window25

Page 26: Class Diagram

Sınıf Diyagramları

Generalization

– Sınıf genelleştirmesi yapmak amaçlı kullanılır.

– “is a” ilişkisi vardır.

– İlişki isimlendirilmez, multiplicity tanımlanmaz.– İlişki isimlendirilmez, multiplicity tanımlanmaz.

– UML çoklu kalıtımı destekler.

• Cat “is a” Animal

26

Page 27: Class Diagram

Sınıf DiyagramlarıAssociation Sınıfları (Association Classes)

• Association sınıfı; normal bir sınıf gibi ismi ve nitelikleri olan bir association’dır.

27

Page 28: Class Diagram

Sınıf Diyagramları

Arayüz (Interface)

• Gerçekleştirimi olmayan işlemler içeren sınıf.

• Sınıfın dışarıyla nasıl iletişim kuracağını gösterir.

• Saf soyut sınıflardır.• Saf soyut sınıflardır.

• Normal sınıf gösterimiyle gösterilebilir. <<interface>> sterotype’ı kullanılır.

28

Page 29: Class Diagram

Sınıf Diyagramları

Realization

• Bir çeşit genelleştirme (generalization) olarak düşünülebilir.

• Arayüz sınıfını gerçekleştiren (realize eden) sınıf • Arayüz sınıfını gerçekleştiren (realize eden) sınıf arayüzdeki bütün işlemleri gerçekleştirmek (implement) zorundadır.

29

Page 30: Class Diagram

Sınıf Diyagramları

Şablonlar(Templates)

• Üreysel(generic) bir nitelik

• Herhangi bir türden elemanları saklayabilecek bir liste; ancak listenin bütün elemanları aynı

30

bir liste; ancak listenin bütün elemanları aynı türden olacak.

Page 31: Class Diagram

Kütüphane Destek Sistemi

Gereksinimleri hatırlayalım…• Kütüphane islemlerini desteklemek amacıyla web

tabanlı bir yazılım sistemi olusturulacaktır.• Üye olmak isteyen kisi sisteme kayıt olacak ve kayıtlı

üyeler kayıtlı kitap ve dergileri ödünç alacaktır.üyeler kayıtlı kitap ve dergileri ödünç alacaktır.• Kisiler sisteme üye olmadan da kitap ve dergi

katalogunu görebileceklerdir.• Kütüphane sistem yöneticisi, yeni kitap ve dergilerin

satın almasını yapacaktır. Popüler yayınlardan birdençok kopya satın alınacaktır. Eski kitap ve dergiler, zamanasımına ugradıklarında veya çok yıprandıklarında yokedilecektir.

31

Page 32: Class Diagram

Kütüphane Destek Sistemi

• Sistemde, üye bilgilerini düzenleyecek, üye kayıt isleminionaylayacak ve gerektiginde çevrimiçi yardım hizmetiverebilecek bir kütüphane görevlisi kullanıcısı bulunacaktır.

• Kütüphane görevlisi kullanıcısı kitap veya dergi ödünçislemleri ile ilgili olarak sisteme bilgi girecektir.

• Üye, kütüphanede kayıtlı olan ama o anda bulunmayan bir• Üye, kütüphanede kayıtlı olan ama o anda bulunmayan birkitap veya dergiyi rezerve edebilecektir. Kitap veya dergikütüphaneye geri döndürüldügünde, rezervasyonu yapanüye e-posta yoluyla haberdar edilecektir. Rezervasyon, üye, kitap veya dergiyi ödünç aldıgında veya üyenin özel istegiüzerine iptal edilebilecektir.

32

Page 33: Class Diagram

Kütüphane Destek Sistemi

• Sistem; kitap ve dergi baslıklarının, kitap ve dergi kopyalarının, üyelerin, ödünç islemlerinin ve rezervasyonların kaydedilmesine,güncellenmesine ve silinmesine olanak saglayacaktır.

• Uygulama, isletim sisteminden bagımsız çalısabilecek ve modern birkullanıcı arayüzüne sahip olacaktır.

• Yazılım, merkezi bir veri tabanına baglanarak Web tabanlı olarakçalısabilecektir. Son kullanıcılar sisteme standart bir Web tarayıcısıçalısabilecektir. Son kullanıcılar sisteme standart bir Web tarayıcısıile baglanabilmeli ve kullanıcı makinenin üzerine herhangi baska birprogram yüklenmesine gerek kalmamalıdır.

• Sistem özel bilgilerin aktarımı söz konusu oldugu durumda Web tarayıcı ile güvenli kanallar üzerinden iletisim saglayacaktır.

• Sistem yeni islevler eklemek suretiyle genisletilebilir olacaktır.

33

Page 34: Class Diagram

Kütüphane Destek Sistemi

Üst Düzey TasarımÜst Düzey Tasarım

Analiz Sınıfları

(Domain Classes)

34

Page 35: Class Diagram

Kütüphane Destek Sistemi

35

Page 36: Class Diagram

Kütüphane Destek Sistemi

Detay TasarımDetay Tasarım

İlk Aşamalar

(Detailed Design)

36

Page 37: Class Diagram

KDS - Sınıf DiyagramlarıKullanici Yonetimi

37

Page 38: Class Diagram

KDS - Sınıf DiyagramlarıKatalog Yonetimi

38

Page 39: Class Diagram

KDS - Sınıf DiyagramlarıÖdünç Alma ve Rezervasyon İşlemleri Yönetimi

39

Page 40: Class Diagram

KDS - Sınıf DiyagramlarıYetki Yönetimi

40

Page 41: Class Diagram

Referanslar

• Oreilly Uml 2.0 In A Nutshell Jun 2005

• http://en.wikipedia.org/wiki/Class_diagram

• http://www.tutorialspoint.com/uml/uml_basic_notations.htmc_notations.htm

• http://www.visual-paradigm.com/VPGallery/diagrams/Class.html

41

Page 42: Class Diagram

42