class diagram

Post on 28-Jun-2015

7.649 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Seyfullah Demir

Hacettepe Üniversitesiseyfullahdemir@gmail.com

1

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

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

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

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

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

Sınıf Diyagramları

• Sınıf Gösterimi

7

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

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

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

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

Sınıf Diyagramları

• Nitelikler - Örnek

12

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

Sınıf Diyagramları

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

14

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

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

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

Sınıf Diyagramları

• İşlemler - Örnek

18

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

Kütüphane Destek Sistemi

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

Analiz Sınıfları

(Domain Classes)

34

Kütüphane Destek Sistemi

35

Kütüphane Destek Sistemi

Detay TasarımDetay Tasarım

İlk Aşamalar

(Detailed Design)

36

KDS - Sınıf DiyagramlarıKullanici Yonetimi

37

KDS - Sınıf DiyagramlarıKatalog Yonetimi

38

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

39

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

40

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

42

top related