Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için
tıklayın
.
71
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
UML / Analiz
Sefer Algan
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Başlangıç
Kategori
:
UML / Analiz
Yayınlanma Tarihi
:
21.6.2003
Okunma Sayısı
:
78821
Yorum Sayısı
:
4
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
17.7.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
17.7.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
UML / Analiz
/
UML ile State(Durum) Diyagramları
UML ile State(Durum) Diyagramları
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Uzun bir süreden sonra UML diyagramları ile ilgili yazılarıma devam ediyorum, bundan önceki yazlarda sınıf(class) ve use case diyagramlarını incelemiştik, bu yazıda ise
State
diyagramlarının ne anlama geldiği ve çeşitli tanımları aktarmaya çalışacağım.
"State" kelimesinin Türkçe karşılığı "Durum" dur. O halde state diyagramlarını, bir nesnenin ömrü buyonca sahip olacağı durumları modelleyen diyagramlar şeklinde tanımlayabiliriz. Peki ne demek bu? Öyle bir nesne düşününki belirli olaylar karşısında değişik durumlarda bulunsun. Ve bu durumlar arasında çeşitli yöntemlerle geçişler mümkün olsun. Mesela bir lambayı düşünün, lambanın yaşam süresince 3 farklı durumda olabileceğini söyleyebiliriz. Birinci durum lambanın kapalı olması, ikinci durum lambanın açık olması son durum da lambanın düşük enerji harcayarak yanması olsun. Bu 3 durum arasında geçişler mümkündür. Bu geçişleri sağlayan ise çeşitli olaylardır. Örneğin lambayı kapalı durumdan açık duruma getirmek için lambanın anahtarını çevirmek gerekir. Aynı şekilde lambayı düşük enerjili halde yanan durumundan açık durumuna getirmek için lamba anahtarını yarım çevirmek gerekir. Lamba nesnesi durum değiştirirken yaptığı işlere "
action
", lambanın durum değiştirmesini sağlayan mekanizmaya ise
event(olay)
denilmektedir.
Nesnelerin bu şekilde durumlarını modellemek için UML'deki standart State Diyagramları kullanılır. State diyagramları bir nesneye ait
dinamik modellemeyi
içermektedir. Dinamik modellemeden kastım nesnenin ömrü boyunca gireceği durumları belirtmesidir. Daha önce gördüğümüz sınıf diagramları ise statik modelleme olarak anılmaktadır. Şimdi bu kısa girişten sonra State Diyagramları ilgili temel bilgileri aktarayım.
State Machine (Durum Makinesi)
"
State Manchine", bir nesnenin bütün durumlarını bir şema halinde gösteren yapıdır. Temel kavramları anlattıktan sonra bir "state machine" örneği vereceğim.
State (Durum)
Tek bir nesnenin herhangi bir durumunu ifade etmek için "State" sözcüğü kullanılır.
Event (Olay)
Nesnenin "state" ler arasındaki geçişini sağlayacak yordama event(olay) denir.
Action (Aksiyon)
Nesnenin bir durumdan diğer bir duruma geçtiğinde yaptığı işlere "action" denilmektedir. Action, çalıştırılabilir herhangi bir durum olabilir.
Transition (Geçiş)
Nesnelerin durumları arasındaki geçişi sembol etmeye "Transition" denir. Bir nesnenin her durumu arasında bir ilişki olmayabilir. Örneğin lamba açıkken lamba kapatılamıyorsa bu iki durum arasında bir geçiş yoktur denir. Bir transiton(geçiş)'da 4 yapı vardır. Bu yapılardan ikisi doğal olarak "hedef(target)" ve "kaynak(source)" durumudur. Geçişler kaynak durumdan hedef duruma doğru yapılır. Üçüncü yapı Kaynak durumdan hedef duruma geçişi sağlayan "event trigger(olay ateşleyicisi)" dır. Son yapı ise nesnenin durum geçişi sonrasında ne şekilde davranacağını belirleyen "action" dır.
Self Transition (Öz-Geçiş)
Bazen bir nesnenin durum geçişleri farklı iki durum arasında olmayabilir. Mesela lamba açık durumda olduğu halde lambayı tekrar açmaya çalışmak "self transition" kavramına bir örnektir. Kısaca hedef durum ve kaynak durumun aynı olduğu durumlar "Self Transition" olarak adlandırılır.
Initial State (İlk durum)
Programatik bir anlam ifade etmiyor gibi görünsede Initial State kavramı nesnenin gerçek bir duruma geçmeden önceki durumunu belirtir. Kısaca, nesne ilk yaratıldığında alacağı duruma bir geçiş sağlamak için gerçek anlamda bir "state" olmayan şekil(içi dolu küre) kullanılır.
Final State (Son Durum)
Nesnenin ömrü bittiğinde aldığı durumu ifade etmek için kullanılan semboldür. Bir nesne birden fazla "Final State" durumuna sahip olabilir.
Yukarıda anlatılan kavramların kafanızda daha belirgin bir hale gelmesi için aşağıdaki şemayı inceleyebilirsiniz. Bu şemaya kabaca "State Macihine" de denilebilir. (Not: Aşağıdaki şema sadece kavramların kafanızda daha net olarak canlanabilmesi için verilmiştir. Gerçek yaşama yönelik bir durum makinesi değildir. )
Bu aşamada önemle vurgulamamız gereken nokta State Diyagramlarının tek bir nesne ile ilişkili olmasıdır.
Nesnelerin durumlarının UML ile nasıl gösterildiğine bakalım. Bir State yukarıdaki şemada olduğu gibi köşeleri yuvarlatılmış dörtgen şeklinde gösterilir. Bir State'in yukarıdaki şemada görülmeyen 3 ana bileşeni vardır. Birinci bileşeni State'in adıdır. İkinci bileşen State değişkenleri üçüncü bileşen ise State ile ilgili çeşitli aktiviteleri belirtmek için kullanılan yapıdır. Bu aktivitilerin bazıları UML'de standart olarak belirtilmiş olmasına rağmen istersek kendimizde aktivite tanımlayabiliriz. Standart olan aktivitelerin sayısı 3'tür. Bunlar
entry
,
exit
ve
do
isimli aktivitelerdir.
entry
aktivitesi, nesnenin ilgili duruma geçtiği andaki davranışın adını belirtir.
exit
aktivitesi, nesne ilgili durumdan diğer bir duruma geçişi sırasındaki davranışını belirler. Örneğin bir lambanın açık durumdan kapalı duruma geçtiğinde lambadaki elektrik devresinden akımın kesilmesi yada lambanın kapalı durumdan açık duruma geçişi sırasında devreye akımın verilmesi bu tür aktivitelere örnek verilebilir. Diğer bir standart aktivite olan
do
ise nesnenin belirtilen durumda olduğu sürece nasıl bir davranış sergileyeceğini belirtir. Lambanın yanması sırasında devreden geçen akımın sabitliğinin korunması
do
aktivitesine örnek olarak verilebilir. Bir "State" 'in bütün standart aktivitelerini tanımlamak zorunda değiliz. Söz gelimi bir "State" ' in yalnızca do aktivitesi olabilir.
Yukarıdaki "State" tanımlamalarını göz önünde bulundurursak UML'de en temel durum modeli aşağıdaki gibi yapılabilir.
Yukarıdaki şekil teknik makale içeriği sunan bir siteye ait kullanıcının ONLINE olma durumunu modellemektedir. Şekildeki en üstteki kısım "State Name" yani durum adını belirtir. İkinci kısım ilgili duruma ait çeşitli parametreleri gösterir. Bu örnekte ONLINE durumunda olan kullanıcının sisteme ne zaman giriş yaptığı belirtilmektedir. Parametreler bölümüne ihtiyaç olduğunda çeşitli ifadelerde(
ToplamSüre = EskiSüre + YeniSüre
gibi) yazılabilir. Son ve en alttaki bölüm ise "State" ile ilgili aktiviteleri göstermektedir. entry aktivitesinde kullanıcının "Hoş geldin" mesajı ile karşılanması, exit aktivitesinde "Güle güle" mesajı ile uğurlanması, do aktivitesinde ise kullanıcıya makale okuma iznin verileceği belirtilmektedir. Bu standart aktivitelerin dışında olan
tavsiye
isimli diğer bir aktivitede ise kullanıcıya diğer teknik makale içeren sitelerin tavsiye edileceği belirtilmektedir.
Durumlar Arası Koşullu Geçişler (Guard Condition)
Bir nesnenin bir durumdan diğerine geçişi için sadece olay tetiklenmesi yetmeyebilir. Mesela gün ışığına göre yanıp sönen aynı zamanda açma kapama düğmeside olan bir lambayı düşünün. Gündüz saatlerinde lamba kapalı durumdayken anahtar çevrilerek lambanın açılması istenmeyebilir. Yani lambanın açılması ortamın karanlık olmasınada bağlıdır. Sadece lambanın anahtarını çevirerek lambanın açılamayacağı koşullu geçişlere örnek olabilir. Lambanın açılması için "anahtar açma" olayının meydana gelmesi ve ortamın aydınlık seviyesinin lambanın açılması için yeterli olması gerekmektedir. Bu durumu geçişler üzerine açılan ve kapanan köşeli parantezler içine koşulu yazarak belirtebiliriz. Örneğin KAPALI ve AÇIK durumları arasındaki geçişe aşağıdaki gibi bir koşul yazılabilir.
[Aydınlık == Gunduz Seviyesi]
KAPALI --------------------------------------> AÇIK
Anahtarı Çevirme
Eğer geçişler arasında sadece koşul ifadesi yazılırsa, koşul ifadesi gerçekleştiği anda geçişin sağlanması beklenir. Yani olayın ateşlenmesine gerek yoktur. Yukurıdaki gösterimde ise lambanın AÇIK duruma geçebilmesi için hem koşulun sağlanması hemde olayın(anahtarı çevirme) gerçekleşmesi gerekir.
Alt Durumlar (Substates)
Gerçek hayattaki sistemler burada anlattığım sistemlerden çoğu zaman daha kompleks olacaktır. Hatta bir çok sistemin durum modeli çıkarıldığında bazı durumların içinde farklı durumların olduğu görülmektedir. Bu tür "alt durumları" içeren modellemeler UML ile yapılabilmektedir. Alt durumlara bir örnek verelim : Bir CD çalar programını düşünün. CD çalar programı belirli bir anda ya çalışıyor durumdadır yada çalışmıyor durumundadır. Eğer CD çalar programı çalışır durumda ise yine iki durum olabilir. CD çalar programı ya bir kayıt yapıyordur, yada seçilen şarkıyı çalıyordur. Çalışma durumu içindeki bu iki durumu aşağıdaki gibi modelleyebiliriz.
Alt-durumlar ile ilgili önemli durumlar :
1-a ) Bir alt-durum, varolan başka bir durum içinde olmalıdır.
1-b ) Alt-durumu olan bir duruma "Composite State" denir.
1-c ) Bir durum içinde birden fazla seviyede durum olabilir. Örneğin yukarıdaki örnekte Kayıt durumu içinde de alt durumlar olabilir.
1-d ) Herhangi bir alt-durum içermeyen durumlara "Simple State" yani basit durum denir.
Kompozite(Composite) Durumlar ilgili Önemli Özellikler
2-a ) Bir composite duruma geçiş(transition) olabileceği gibi, composite durumdan başka durumlarada geçiş olabilir. Eğer bir geçiş composite duruma doğru ise bu composite durumun "Başlangıç Durumu(Initial State)" içermesi zorunludur. Eğer böyle olmasaydı tanımsız durumlar ortaya çıkardı. Bu durumu aşağıdaki composite durum diyagramından rahatlıkla görebilirsiniz.
2-b ) Eğer geçiş(transition) bir alt-duruma doğru ise, ve dıştaki duruma ilişkin her hangi bir entry aktivitesi varsa çalıştırılır ve ardından alt-duruma ilişkin aktiviteler çalıştırılır.
2-c ) Eğer geçiş(transition), composite durum içindeki bir alt-durumdan, composite durumun dışındaki bir duruma doğru ise, önce composite durumun exit aktivitesi ardından alt-durumun exit aktivitesi çalıştırılır.
2-d ) Eğer geçiş(transition) composite durumdan, dışarıdaki farklı bir duruma doğru ise öncelik sırası
diğer alt-durumlara göre
bu geçiştedir.
Aşağıda kompleks bir durum modeli verilmiştir. Bu modelde 2-a, 2-b, 2-c ve 2-d maddelerinde verilen geçişler işaretlenmiştir.
Bu makalede durum diyagramları ile ilgili temel kavramları aktarmata çalıştım. Sonraki makalelerimde gerçek bir sistemi tüm yönleri ile ele alıp durum modellenmesi ve bu modelin nesne yönelimli bir programlama dili (C++,C#,JAVA) ile nasıl gerçeklenebileceği üzerinde duracağım.
Makale:
UML ile State(Durum) Diyagramları UML ve Sistem Analizi Sefer Algan
Yazılan Yorumlar
Yorum Yaz
KAS
14
2005
dilek meyva
/
üye hakkında
internette uml ile ilgili çok az türkçe çok az kaynak bulabildim ama sizin sayenizde umli daha iyi anladığımı düşünüyorum ayrıca vermiş olduğunuz örnekler basit ve anlaşılması çok kolay günlük yaşamla çok bağlantılı tebrikler..
ŞUB
14
2005
mehmet general
/
üye hakkında
ARKADAŞLAR sizi kutlamakla kalmayıp tebrikler ediyorum. Sizin sayenizde uml yi öğrendim
MAY
14
2004
Sirus Rahimov
/
üye hakkında
Cok anlasiyiyor yaziyorsunuz. Devamini bekliyoruz.
EKİ
27
2003
Duray AKAR
/
üye hakkında
UML makaleleri devam edecek mi ? Tanitimdan sonra pratikte uygulamaya yonelik bilgiler verilse guzel olur. Ornegin bir projede UML hangi asamalarda hangi sirayla kullaniliyor? Ayrica UML araclari da tanitilabilirse faydali olur. Ornegin VS.NET' in bazi paketleri ile birlikte gelen VISIO ile reverse engineering ve code generation ...
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl