SlideShare a Scribd company logo
1 of 42
Download to read offline
Sınıf Diyagramları
(Class Diagrams)
    Seyfullah Demir
 Hacettepe Üniversitesi
  seyfullahdemir@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
• 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.
• 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ğini
        söylemez
• Sınıf diyagramında hangi nesnelerin işbirliği
  yaptığı belli,ancak nesnelerin nasıl işbirliği
  yapacakları 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
  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
• Çokluk (multiplicity), biriciklik (uniqueness) ve
  sı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ü.
•   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
  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ı
  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ı
• 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.
• 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
  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ç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.




                                                   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.
  – 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
      (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
  – 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.
  –   “is part of” ilişkisi vardır.
  –   navigability, multiplicity gösterilebilir.




       • TitleBar “is a part of” Window                          25
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.
  – 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.
•   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ü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ı
  türden olacak.




                                                30
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.
• 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, zaman
  asımına ugradıklarında veya çok yıprandıklarında yok
  edilecektir.

                                                           31
Kütüphane Destek Sistemi
• Sistemde, üye bilgilerini düzenleyecek, üye kayıt islemini
  onaylayacak ve gerektiginde çevrimiçi yardım hizmeti
  verebilecek 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
  kitap veya dergiyi rezerve edebilecektir. Kitap veya dergi
  kü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 bir
  kullanı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ı
  ile baglanabilmeli ve kullanıcı makinenin üzerine herhangi baska bir
  program 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
    Analiz Sınıfları
  (Domain Classes)

                           34
Kütüphane Destek Sistemi




                           35
Kütüphane Destek Sistemi



     Detay 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_basi
  c_notations.htm
• http://www.visual-
  paradigm.com/VPGallery/diagrams/Class.html



                                           41
42

More Related Content

What's hot

Tasarım Analiz Raporu: Üniversite Web Sitesi
Tasarım Analiz Raporu: Üniversite Web SitesiTasarım Analiz Raporu: Üniversite Web Sitesi
Tasarım Analiz Raporu: Üniversite Web Sitesitrkaplan
 
ÇOKLU ORTAM TASARIM İLKELERİ
ÇOKLU ORTAM TASARIM İLKELERİÇOKLU ORTAM TASARIM İLKELERİ
ÇOKLU ORTAM TASARIM İLKELERİm3rtyaman
 
Software design principles
Software design principlesSoftware design principles
Software design principlesRitesh Singh
 
Yazılımcı Gözüyle Scrum
Yazılımcı Gözüyle ScrumYazılımcı Gözüyle Scrum
Yazılımcı Gözüyle Scrumnedirtv
 
Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.Hüseyin Örer
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life CycleRIKSOF
 
Scrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimiScrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimiGokhan Boranalp
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design Arslan Anwar
 
Yazılım kalitesi ve Standartlar
Yazılım kalitesi ve StandartlarYazılım kalitesi ve Standartlar
Yazılım kalitesi ve Standartlarİbrahim ATAY
 
Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering arvind pandey
 
SÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARI
SÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARISÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARI
SÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARIEge Ihracatci Birlikleri
 
003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]Erol Bozkurt
 
Pazarlama Stratejisi Değişimi ve Değişim Yönetimi Uygulamaları
Pazarlama Stratejisi Değişimi ve Değişim Yönetimi UygulamalarıPazarlama Stratejisi Değişimi ve Değişim Yönetimi Uygulamaları
Pazarlama Stratejisi Değişimi ve Değişim Yönetimi UygulamalarıMustafa Ali ÖZAY
 
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-softwareAlenaDion
 

What's hot (20)

Tasarım Analiz Raporu: Üniversite Web Sitesi
Tasarım Analiz Raporu: Üniversite Web SitesiTasarım Analiz Raporu: Üniversite Web Sitesi
Tasarım Analiz Raporu: Üniversite Web Sitesi
 
ÇOKLU ORTAM TASARIM İLKELERİ
ÇOKLU ORTAM TASARIM İLKELERİÇOKLU ORTAM TASARIM İLKELERİ
ÇOKLU ORTAM TASARIM İLKELERİ
 
Software design principles
Software design principlesSoftware design principles
Software design principles
 
Yazılımcı Gözüyle Scrum
Yazılımcı Gözüyle ScrumYazılımcı Gözüyle Scrum
Yazılımcı Gözüyle Scrum
 
Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.
 
Gereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı HazırlamaGereksinim Analizi Dokümanı Hazırlama
Gereksinim Analizi Dokümanı Hazırlama
 
Atlassian JIRA
Atlassian JIRAAtlassian JIRA
Atlassian JIRA
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
 
Scrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimiScrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimi
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
6.bölüm i̇ş anali̇zi̇
6.bölüm i̇ş anali̇zi̇6.bölüm i̇ş anali̇zi̇
6.bölüm i̇ş anali̇zi̇
 
Yazılım kalitesi ve Standartlar
Yazılım kalitesi ve StandartlarYazılım kalitesi ve Standartlar
Yazılım kalitesi ve Standartlar
 
Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering
 
SÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARI
SÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARISÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARI
SÜREÇ YÖNETİMİ VE İYİLEŞTİRİLMESİ SEMİNERİ SUNUM NOTLARI
 
003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]003 Uml Semalari [94 Slides]
003 Uml Semalari [94 Slides]
 
Pazarlama Stratejisi Değişimi ve Değişim Yönetimi Uygulamaları
Pazarlama Stratejisi Değişimi ve Değişim Yönetimi UygulamalarıPazarlama Stratejisi Değişimi ve Değişim Yönetimi Uygulamaları
Pazarlama Stratejisi Değişimi ve Değişim Yönetimi Uygulamaları
 
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-software
 
Slides chapter 11
Slides chapter 11Slides chapter 11
Slides chapter 11
 
Design Principles
Design PrinciplesDesign Principles
Design Principles
 

Viewers also liked

Okul otomasyon rapor
Okul otomasyon raporOkul otomasyon rapor
Okul otomasyon raporEnes Caglar
 
Prof.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlar
Prof.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlarProf.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlar
Prof.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlarProf. Dr. Halit Hami Öz
 
006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]Erol Bozkurt
 
001 Giris [8 Slides]
001 Giris [8 Slides]001 Giris [8 Slides]
001 Giris [8 Slides]Erol Bozkurt
 
002 Uml Sizin Icin Anlami [34 Slides]
002 Uml Sizin Icin Anlami [34 Slides]002 Uml Sizin Icin Anlami [34 Slides]
002 Uml Sizin Icin Anlami [34 Slides]Erol Bozkurt
 
Prof.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülü
Prof.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülüProf.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülü
Prof.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülüProf. Dr. Halit Hami Öz
 
Metod Türleri ve Erişim Belirteçleri
Metod Türleri ve Erişim BelirteçleriMetod Türleri ve Erişim Belirteçleri
Metod Türleri ve Erişim BelirteçleriÖmer Beden
 
4.class diagramsusinguml
4.class diagramsusinguml4.class diagramsusinguml
4.class diagramsusingumlAPU
 
Intro to UML - Use Case diagrams
Intro to UML - Use Case diagramsIntro to UML - Use Case diagrams
Intro to UML - Use Case diagramsjsm1979
 
An Architectural Model for Adapting Domain-Specific AOM Applications
An Architectural Model for Adapting Domain-Specific AOM ApplicationsAn Architectural Model for Adapting Domain-Specific AOM Applications
An Architectural Model for Adapting Domain-Specific AOM Applicationseduardomg23
 
Sistem analizi ve yönetim bilgi sistemleri
Sistem analizi ve yönetim bilgi sistemleriSistem analizi ve yönetim bilgi sistemleri
Sistem analizi ve yönetim bilgi sistemleriGokhan Gokkurt
 
Bilgi Sistemleri - Ders 3
Bilgi Sistemleri - Ders 3Bilgi Sistemleri - Ders 3
Bilgi Sistemleri - Ders 3guest0296675
 
Domain Model
Domain ModelDomain Model
Domain Modeldzenanr
 
Sistem analizi ve tasarımı(final)
Sistem analizi ve tasarımı(final)Sistem analizi ve tasarımı(final)
Sistem analizi ve tasarımı(final)Ahmet Yanik
 
Domain model example
Domain model exampleDomain model example
Domain model exampleHeba Fathy
 
Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Chris Richardson
 
Building Rich Domain Models
Building Rich Domain ModelsBuilding Rich Domain Models
Building Rich Domain ModelsChris Richardson
 

Viewers also liked (20)

Hastane Poliklinik Otomasyonu
Hastane Poliklinik OtomasyonuHastane Poliklinik Otomasyonu
Hastane Poliklinik Otomasyonu
 
Okul otomasyon rapor
Okul otomasyon raporOkul otomasyon rapor
Okul otomasyon rapor
 
Prof.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlar
Prof.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlarProf.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlar
Prof.dr. halit hami oz 01-hastane otomasyonu-amaç kapsam ve standartlar
 
006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]006 Uml Modelleri Gereksinimler [120 Slides]
006 Uml Modelleri Gereksinimler [120 Slides]
 
001 Giris [8 Slides]
001 Giris [8 Slides]001 Giris [8 Slides]
001 Giris [8 Slides]
 
002 Uml Sizin Icin Anlami [34 Slides]
002 Uml Sizin Icin Anlami [34 Slides]002 Uml Sizin Icin Anlami [34 Slides]
002 Uml Sizin Icin Anlami [34 Slides]
 
Prof.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülü
Prof.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülüProf.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülü
Prof.dr. halit hami oz 08-hastane otomasyonu-poli̇kli̇ni̇k modülü
 
Metod Türleri ve Erişim Belirteçleri
Metod Türleri ve Erişim BelirteçleriMetod Türleri ve Erişim Belirteçleri
Metod Türleri ve Erişim Belirteçleri
 
4.class diagramsusinguml
4.class diagramsusinguml4.class diagramsusinguml
4.class diagramsusinguml
 
Intro to UML - Use Case diagrams
Intro to UML - Use Case diagramsIntro to UML - Use Case diagrams
Intro to UML - Use Case diagrams
 
E-library mangament system
E-library mangament systemE-library mangament system
E-library mangament system
 
An Architectural Model for Adapting Domain-Specific AOM Applications
An Architectural Model for Adapting Domain-Specific AOM ApplicationsAn Architectural Model for Adapting Domain-Specific AOM Applications
An Architectural Model for Adapting Domain-Specific AOM Applications
 
Sistem analizi ve yönetim bilgi sistemleri
Sistem analizi ve yönetim bilgi sistemleriSistem analizi ve yönetim bilgi sistemleri
Sistem analizi ve yönetim bilgi sistemleri
 
Bilgi Sistemleri - Ders 3
Bilgi Sistemleri - Ders 3Bilgi Sistemleri - Ders 3
Bilgi Sistemleri - Ders 3
 
Domain Model
Domain ModelDomain Model
Domain Model
 
Sistem analizi ve tasarımı(final)
Sistem analizi ve tasarımı(final)Sistem analizi ve tasarımı(final)
Sistem analizi ve tasarımı(final)
 
Domain model example
Domain model exampleDomain model example
Domain model example
 
Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)
 
Building Rich Domain Models
Building Rich Domain ModelsBuilding Rich Domain Models
Building Rich Domain Models
 
Proje raporu
Proje raporuProje raporu
Proje raporu
 

Class Diagram

  • 1. Sınıf Diyagramları (Class Diagrams) Seyfullah Demir Hacettepe Üniversitesi seyfullahdemir@gmail.com 1
  • 2. 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 • 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
  • 3. 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. • 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
  • 4. 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ğini söylemez • Sınıf diyagramında hangi nesnelerin işbirliği yaptığı belli,ancak nesnelerin nasıl işbirliği yapacakları belli değildir. – Nasıl sorusunun cevabı “sequence” veya “collaboration”diyagramlarında tanımlanır 4
  • 5. 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 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
  • 6. 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
  • 8. 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 • Çokluk (multiplicity), biriciklik (uniqueness) ve sıralama (ordering) gibi kavramlar da gösterilebiliyor. 8
  • 9. 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
  • 10. 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ü. • 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
  • 11. 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 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
  • 13. 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ı bilgi sağlar. 13
  • 14. Sınıf Diyagramları Sınıflar arasındaki ilişkiler vasıtasıyla gösterilen nitelikler 14
  • 15. 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ı • Operasyonlar şu gösterimle ifade edilir. – visibility name ( parameters ) : return-type {properties} – parameters: • direction parameter_name : type [ multiplicity ] = default_value { properties } 15
  • 16. 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. • 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
  • 17. 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 bilgi verir. • default value: parametrenin varsayılan değeri. • properties: parametre ile ilişkili kısıtlamaları ve özellikleri (constraints and properties) belirtir. 17
  • 19. Sınıf Diyagramları • İşlemler ve Methodlar – Operasyon, yalnızca bir davranışı ortaya çıkarmak için (davranış tetikleme) kullanılacak bilgileri içerirken; metot, bu davranışın gerçekte nasıl implement edildiğini gösterir. 19
  • 20. 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. 20
  • 21. 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. – 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
  • 22. 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 (shared). • Window “has a” Cursor 22
  • 23. 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
  • 24. 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 – Navigability, multiplicity gösterilebilir. • Window “owns a” Rectangle 24
  • 25. 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. – “is part of” ilişkisi vardır. – navigability, multiplicity gösterilebilir. • TitleBar “is a part of” Window 25
  • 26. 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. – UML çoklu kalıtımı destekler. • Cat “is a” Animal 26
  • 27. 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
  • 28. 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. • Normal sınıf gösterimiyle gösterilebilir. <<interface>> sterotype’ı kullanılır. 28
  • 29. 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üzdeki bütün işlemleri gerçekleştirmek (implement) zorundadır. 29
  • 30. 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ı türden olacak. 30
  • 31. 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. • 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, zaman asımına ugradıklarında veya çok yıprandıklarında yok edilecektir. 31
  • 32. Kütüphane Destek Sistemi • Sistemde, üye bilgilerini düzenleyecek, üye kayıt islemini onaylayacak ve gerektiginde çevrimiçi yardım hizmeti verebilecek 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 kitap veya dergiyi rezerve edebilecektir. Kitap veya dergi kü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
  • 33. 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 bir kullanı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ı ile baglanabilmeli ve kullanıcı makinenin üzerine herhangi baska bir program 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
  • 34. Kütüphane Destek Sistemi Üst Düzey Tasarım Analiz Sınıfları (Domain Classes) 34
  • 36. Kütüphane Destek Sistemi Detay Tasarım İlk Aşamalar (Detailed Design) 36
  • 37. KDS - Sınıf Diyagramları Kullanici Yonetimi 37
  • 38. KDS - Sınıf Diyagramları Katalog Yonetimi 38
  • 39. KDS - Sınıf Diyagramları Ödünç Alma ve Rezervasyon İşlemleri Yönetimi 39
  • 40. KDS - Sınıf Diyagramları Yetki Yönetimi 40
  • 41. Referanslar • Oreilly Uml 2.0 In A Nutshell Jun 2005 • http://en.wikipedia.org/wiki/Class_diagram • http://www.tutorialspoint.com/uml/uml_basi c_notations.htm • http://www.visual- paradigm.com/VPGallery/diagrams/Class.html 41
  • 42. 42