28 Temmuz 2014 Pazartesi

hachi: bir köpeğin hikayesi

Bir profesör ile bir köpek arasındaki müthiş dostluğu konu edinen. 1987 yılında Hachiko Monogatari isimli Japon filmine konu olan gerçek olaylar bu defa Stephen P. Lindsay tarafından senaryolaştırılmıştır.

kutup macerası

Tecrübeli kurtarma rehberi Jerry Shepard, Antarktika’nın zorlu koşullarına rağmen bir gruba daha önderlik etmektedir. Ancak ölümcül bir kazadan sadece köpeklerini terk ederek kurtulabilir. Yine de hayattaki en büyük dostlarını o kadar da kolay feda etmeye niyeti yoktur. Maceraperest ve güzel pilot Katie’nin de desteğiyle benzeri görülmemiş bir kurtarma operasyonuna girişmeye hazırlanmaktadır. Üstüne üstlük Antarktika’da yüzyılın en büyük kar fırtınası adım adım yaklaşmaktadır.

milyoner

Jamal Malik Mumbai'nin gecekondu mahallelerinden birinde yaşayan 18 yaşında bir yetimdir. Hindistan'da katıldığı bir bilgi yarışmasında 20 milyon rupe kazanmasına sadece bir adım kalmıştır.
Şovun o gecelik bitmesinin ardından Jamal, eğitimsiz olan birinin bu kadar büyük başarıyı ancak hile yoluyla gösterebileceğinden şüphelenilip tutuklanır. Ama yarışmadaki her sorunun cevabıyla o gece Jamal'ın inanılması zor gerçek hikayesi ortaya çıkacaktır. Fakat sadece bir soru gizemini korur...

hayat güzeldir

1930'ların İtalya'sında Guido adındaki tasasız, kaygısız bir Yahudi kitapçı yakın bir şehirdeki güzel kadına kur yapıp onunla evlenerek bir peri masalı başlatır. Guido ve karısının bir oğulları olur ve İtalya'yı Alman güçleri istila edene kadar birlikte mutluluk içinde yaşarlar. Ailesini bir arada tutabilmek ve oğlunun Yahudi toplama kamplarının dehşetinden elinden geldiğince uzak tutmak çabası ile Guida bu yıkımı bir oyun gibi gösterir. Bu oyunun kazanma ödülü ise bir tanktır...

o.çocukları

12 Eylül 1980 ihtilalinden sonra siyasi suçlu olarak aranan bir karı-koca yurtdışına kaçmaya karar verir. Ama çocukları bu konuda onlar için en büyük engeldir. Yurtdışına kaçmadan önce çocuklarını bırakacakları güvenli bir yer ararlar. Çift sonunda çocuklarına 'en güvenli yer' olarak 'Mehtap Anne'nin yuvasını seçer. Onların çocuklarını bıraktıkları yer aslında eski bir hayat kadını olan 'Mehtap'ın bu işi bıraktıktan sonra halen hayat kadınlığını sürdürenlerin çocuklarını bıraktıkları 'Emanetçi Anne' evidir... Karı-koca yurtdışına kaçtıktan bir müddet sonra çocuklarını alması için bir İtalyan kızı Türkiye'ye gönderir. İtalyan kız, 'Emanetçi Anne'ye bırakılan çocuğu alıp anne - babasının yanına götürmek isterken kendini bir dizi ilginç olayın içinde bulur.

tepenin ardı

Bir Western filmini andıran atmosferi ve mekan kullanımıyla gerilim dolu bir aile trajedisini anlatan film, sorunlarıyla yüzleşmek yerine bir düşman ve günah keçisi yaratan egemen erkek kültürünü mercek altına alıyor.
 

vicdan

Küçük bir kasabada yaşayıp, emeğiyle varolmaya çalışan üç kişinin arasında geçen tutkulu ve karmaşa içeren acımasız bir aşk hikâyesi. Aydanur (Nurgül Yeşilçay) hayatın ona sunduklarıyla da pek yetinmiyor, ‘yırtmak’ istiyor. Mahmut ise (Murat Han) Aydanur ile karısı Songül (Tülin Özen) arasında kalıyor. Ama belli ki Aydanur ağır basıyor yüreğinde. İkisinin yolu böylece bir pavyonda kesişiyor. “Başımıza gelenler yaptığımız seçimlerden mi, yoksa kaderimiz yüzünden mi?”

bi küçük eylül meselesi

Eylül hayatta istediği her şeye sahip olan güzel ve neşeli bir kadındır. Ancak bir gün başına bir gelen şanssız bir olay sonucu son bir ayını unutur. Ailesi, arkadaşları her şeyin yolunda olduğunu söyleyip dururken, Eylül bir şeylerin ters gittiğini anlamaya başlar. Ve hatırlamadığı bir ayın peşinden Bozcaada'ya gider. Orada, daha önce hiç görmediği derbeder, garip bir adam, ona seslenir:
"Eylül. Beni hatırlamıyor musun? Sen burada, bu adada bana aşık oldun."

piyanist

Wladyslaw Szpilman, savaş patlak verdiğinde 27 yaşındaydı ve Polonya'nın geleceği en parlak konser piyanistlerinden biriydi. Luftwaffe'de radyo istasyonu bombalandığında Chopin'in C minor Nocturne'nü çalıyordu.Tüm Yahudiler gibi o ve ailesi de evlerinden çıkartılarak Varşova gettolarına sürülmüştü. Bu çok yetenekli genç adam yeni yaşamında karaborsacıların ve işbirlikçilerin eğlendiği barlarda çalmaya başlamıştır.İşte bu işbirlikçilerden biri onu ve ailesini ölüme götüren esir kampı trenlerinden birinden kurtarmıştır. Savaş fısıltıları, direnişçiler ve sürpriz bir Alman subayı sayesinde Szpilman savaşta hayatta kalmayı başarır.

ucuz roman

Ödül avcısı Butch Coolidge şeytanla yaptığı bir anlaşmada ödemeyi durdurmaya karar verir. Honey Bunny ve Pumpkin, hayatlarına biraz hareket katmak isteyen genç ve birbirlerine aşık bir çift soyguncudur. Bu arada iki işi iyi bilen gangster, Vincent Vega ve Jules, günlük işlerinden biri olarak,patronlarına ödemeyi geciktiren bir kaç sahtekar genci vurmaya giderler. Vincent patronun genç ve güzel karısına bebek bakıcılığı yapmakla da görevlendirilirken ortağı suç yaşamına son vermeye karar verir. Cesur bir boksör ise para karşılığı hile yapmayı redderek şehirden kaçar. Kader bu aykırı tipleri mutheşem bir raslantı sonucu bir araya getirecektir.

Sting - Shape of my heart


sihirbaz

Marangoz bir ailenin oğlu olan Eisenheim (Edward Norton), aristokrat bir ailenin kızı Sophia'ya (Jessica Biel) aşık olur; ancak sosyal konumları nedeniyle ilişkilerinin yasaklanması sonucu Avusturya'yı terk ederek dünyayı keşfe çıkar. Eisenheim15 yıl sonra ünlü bir illüzyonist olarak isim yapmıştır; ülkesine döndüğünde eski sevgilisi Sophie Avusturya-Macaristan veliaht prensi Leopold (Rufus Sewell) ile nişanlanmak üzeredir.

luciano pavarotti and james brown - it's a man's world


Siyah kuğu

Nina (Portman), New York’ta yaşayan çok yetenekli bir balerindir ve hayatında çoğu balerin için de olduğu gibi dansetmekten başka bir şey yoktur. Eski bir balerin olan ve bu konuda çok hırslı olan annesi Erica (Hershey) ile yaşamaktadır. Oyun yönetmeni Thomas Leroy (Cassel) KUĞU GÖLÜ’nün baş balerini Beth MacIntyre (Ryder) yeni sezonda değiştrimeye karar verir ve ilk tercihi de Nina’dır. Balenin saf ve zarif Beyaz Kuğu ile şehvetin temsilcisi Siyah Kuğuyu aynı anda canlandırabilecek birine ihtiyacı vardır. Fakat Nina’yı bekleyen bir yeni bir rakip vardır, ve o da Leroy’u etkilemeyi başarmıştır. Nina Beyaz Kuğu rolüne her ne kadar uysa da Lily de Siyah Kuğu’nun tam karşılığıdır. İki genç dansçı arasındaki rekabet garip bir arkadaşlığa dönüşürken Nina da kendi karanlık tarafıyla haşır neşir olmaya başlamıştır. Onu mahvedebilecek türden bir kayıtsızlık.

hatırla beni-goran bregovic


goran bregovic-hatirla beni ("Mustafa" film müziği-Can dündar)


Umudunu kaybetme

The Pursuit of Happyness/Umudunu Kaybetme’de, Chris Gardner (Will Smith) iki yakasını bir araya getirmeye çalışan bir aile babasıdır. Ailesini ayakta tutmak için cesurca çabalamasına rağmen, beş yaşındaki oğlu Christopher’ın (Jaden Christopher Syre Smith) annesi (Thandie Newton) maddi zorlukların yarattığı sürekli baskı altında direncini kaybetmek üzeredir. Artık dayanamayacağını anlayınca, istemeye istemeye evi terk eder... Artık bekar bir baba olan Chris, yılmadan, bildiği tüm satış becerilerini kullanarak daha iyi kazandıran bir işin peşine düşer. Prestijli bir borsa şirketinde stajyerlik bulur ve ücret almasa da programın sonunda iş ve parlak bir gelecek elde edeceğini umarak kabul eder. Parasal güvencesi olmayan Chris ve oğlu, kısa süre sonra oturdukları daireden çıkartılırlar ve düşkünler evi, otobüs durağı, tuvalet; geceyi geçirmek için bulabildikleri her yerde kalırlar. Çektiği sıkıntılara rağmen, Chris, babalık görevini sevgi ve özenle yerine getirmeye devam eder ve oğlunun kendisine karşı duyduğu sevgi ve güveni, karşısına çıkan engelleri aşmak için kullanır.

yeşil yol

Bir hapishanede gardiyanlık yapan Paul Edgecomb'un görevi, hücrelerinden alınan idam mahkumlarını, elektrikli sandalyenin bulunduğu ölüm odasına kadar olan bir millik yeşil yoldan götürmektir. Edgecomb yıllar boyunca bu yoldan sayısız idam mahkumu nakleder. Ama hiçbirisi onu John Coffey kadar etkilemez. Oldukça iri yarı biri olan Coffey, iki küçük kızı öldürmek suçundan idama mahkum olmuştur. Ürkütücü görünümünün aksine oldukça duygulu ve karmaşık bir iç dünyası olan Coffey, bazı doğa üstü güçlere sahiptir. Edgecomb onunla yakınlaştıkça artık hiç beklenmedik yerlerde mucizelerin olabileceğine inanmaya başlayacaktır.
Esaretin Bedeli filmini de yönetmiş olan Frank Darabont, bu filminde de benzer bir atmosferi seyirciye başarıyla aktarıyor. Oscar Ödüllü Tom Hanks'in yanında, Michael Clarke Duncan ve James Cromwell gibi oyuncular başrolde yer alıyor.

Çingeneler zamanı

Perhan Romanya'da büyükannesiyle yaşayan yeniyetme bir çingenedir. Çingenelerin doğayla bütün ve kendilerine has atmosferinde, Perhan da biraz kendi iç dünyasında biraz da kızarkadaşının aşk ateşinin içinde yaşamaktadır. Genç çingene, duygu yoğunluğu yaşadığında nesneleri uzaktan hareket ettirebilmektedir de.Mafyatik işler peşindeki Ahmed, ondan yararlanmak için Perhan'ı kendisiyle birlikte şehre gelmeye ve yaşadığı yeri terketmeye ikna eder. Perhan bu yeni hayata tek bir şey için katlanır: yeterince para biriktirmek ve sevdiklerine geri dönüp evlenebilmek. Bir yandan da bacağından ameliyat olmak için onlardan ayrılan kızkardeşini bulmayı ummaktadır.Yönetmen Emir Kusturica'ya uluslararası alanda tanınma getiren ve Cannes'da coşkuyla taçlandırlan bu ilgi çekici yapım, aynı zamanda tamamı çingene dilinde çekilen ilk film özelliğini de taşıyor. Müzik, dram, hayal, bildiğiniz tüm Kusturica bileşenlerini barındıran bir yapım.

Prestige

Beğenilen yönetmen Christopher Nolan’dan (“Memento,” “Batman Başlıyor”) illüzyon kumaşından örülmüş bir macera geliyor. Bu beklenmedik dönüşlerle dolu gizemli öyküde, Viktorya Devri’nde iki sahne sihirbazı, giderek şiddetlenen bir savaşa ve birbirlerinin mesleki sırlarını ortaya çıkartmak için doymaz bir susuzluğa dönüşen güçlü bir rekabete girişiyorlar. Bu iki görkemli adamın cüreti tutkuya, şovmenliği bilime ve hırsı dostluğa kırdırmalarının sonuçları tehlikeli, ölümcül ve hileli oluyor. Her şey yüzyılın başında, hızla değişen Londra’da başlıyor. Sihirbazların ünlü ve en üst mertebede idol olarak kabul edildikleri bir zamanda, iki genç sihirbaz şöhrete giden yolu çizmeye başlarlar. Gösterişli, sofistike Robert Angier (HUGH JACKMAN) tam bir şovmenken, yontulmamış ve gelenekçi Alfred Borden (CHRISTIAN BALE) sihirli fikirlerini gösterme yeteneğinden yoksun, yaratıcı bir dahidir. Birbirlerini takdir eden arkadaşlar ve ortaklar olarak yola çıkarlar. Ama en büyük numaraları ters gidince, aralarında ömür boyu sürecek bir düşmanlık başlar; ikisi de bir diğerini geçme ve altüst etme niyetindedir. Sürdürdükleri aşırı rekabet, her numarayla, her gösteriyle daha da büyür; ta ki sınır tanımayana, hatta elektriğin yeni ve inanılmaz güçlerini ve Nikola Tesla’nın bilimsel dehasını işin içine dahil edene dek...

can dostum

Will, bir üniversitede hademelik yapan süper zeki bir gençtir. Will, bir türlü sokak kavgalarından kendini alıkoyamaz ve başı derde girer. Hapise düşmek üzere olan Will'i bu durumdan kurtarabilecek tek kişi onun yeteneklerini farkeden, okulun profesörlerinden Sean McGuire'dır. Aralarında bir anlaşma yaparlar ve bu zamanla çok özel bir dostluğa doğru yol alırlar..

18 Temmuz 2014 Cuma

kış uykusu


Collaboration Diagrams

"İşbirliği" Diyagramları

İşbirliği kelimesi (collaboration), "co-labor" (ortak-iş) kelimelerinden oluşmaktadır. İşbirliği diyagramları; tasarımcıların UML içinde çok fazla tercih etmediği diyagramlardandır. Çoğu tasarımcı, sıralama diyagramlarının nesneler arasındaki dinamik yapıyı göstermede yeterli olduğunu düşünür. Ancak; tasarımlarında işbirliği diyagramlarını kullanmış ve yararlarını görmüş olan tasarımcılar, bu diyagramları da modellerine katmayı düşünürler. Bu yazıdaki UML diyagramları Rational Rose tasarım aracı ile çizilecektir. 

Önceki makalelerde; sınıf diyagramları ile sistemin statik yapısının, durum diyagramları ile karmaşık sınıfların davranışının, sıralama diyagramları ile sıra mantığının, aktivite diyagramları ile veri akışının modellenebileceğini açıklamaya çalışmıştık. Belirli bir amaca yönelik olarak ortaklaşa çalışan nesneleri ise işbirliği diyagramları ile modelleyeceğiz.

Karmaşık sistemler, tasarlanan görevleri yerine getirmek için ortaklaşa çalışan birçok nesne içermektedir. UML içindeki işbirliği diyagramları; temel olarak bu nesneler arasındaki ilişkiye yoğunlaşırken, sıralama diyagramları mesaj sırası ile ilgilenmektedir. 2 diyagram bir çok noktada benzerlik göstermektedir. Bu nedenle; birçok tasarım aracı bir diyagramın çizili olması durumunda, diğerini bir tuşa basmanızla birlikte üretebilmektedir. Örneğin; Rational Rose (2002 versiyonu) içinde sıralama diyagramının çizili olduğu durumda, kullanıcı F5 tuşuna basarak işbirliği diyagramını görebilmektedir. Bu durumu, "UML ile Sıralama Diyagramları" makalesinde ATM makinesinin çalışmasını modelleyen sıralama diyagramı üzerinde inceleyeceğiz. Bu örnek sayesinde; iki diyagram arasında geçişi ve işbirliği diyagramlarını görmüş olacağız.

Şekil 1’de örneğe ilişkin sıralama diyagramı verilmekte, Şekil 2’de ise bu örneğin F5 tuşuna basılarak elde edilmiş işbirliği diyagramı gösterilmektedir. 

Tasarım aracınızdaki sıralama diyagramı ekranında; aktör nesnesi oluşturmak için bir bileşen bulunmuyorsa, kullanım senaryosunda aktörü oluşturup sürükle-bırak ile sıralama diyagramına taşıyabilirsiniz. 

 

Şekil 1 : ATM örneğine ilişkin sıralama diyagramı

 

Şekil 2: ATM örneğine ilişkin işbirliği diyagramı

Şekillerden de görüldüğü gibi, 2 diyagram da "nesneler" ve "mesajları" modellemekte, aynı bilgiyi farklı şekillerde göstermektedir. Temel elemanlar; nesneler, bağlantılar ve mesajlardır. Bu noktada; 2 diyagram arasındaki temel farkları incelememiz gerekmektedir.

İşbirliği diyagramları ile Sıralama diyagramları arasındaki farklar 

1. Sıralama diyagramları, zamana bağımlı olarak nesneler arasındaki mesajlaşmayı göstermektedir. İşbirliği diyagramları ise zamandan bağımsızdır.

2. İşbirliği diyagramları ile tek bir diyagram üzerinde; dinamik yapıyı ve nesnelerin statik ilişkisini göstermeniz mümkündür. Sıralama diyagramları sadece dinamik yapıyı temsil etmektedir. 

3. Sıralama diyagramları, müşterilerin daha kolay anlayabileceği diyagramlardır. Bu nedenle; ilk analiz safhasında sıralama diyagramları kullanılırken, işbirliği diyagramları daha çok tasarım aşamasında kullanılır.

4. Sıralama diyagramlarında; mesajlaşma sıraları, işbirliği diyagramlarında ilişkiler daha kolay gözlemlenir. Büyük diyagramlar için; mesaj sırası ile mesajlaşmayı takip etmek (işbirliği diyagramları), şekil üzerinden takip etmeye (sıralama diyagramları) göre daha zordur. Ancak; daha az alanda birçok bilgiyi göstermenizi sağlayabilir. 

5. Belirli bir amacı yerine getiren nesneler arasındaki ilişkiler, işbirliği diyagramları ile daha net gösterilebilmektedir. Senaryoya ilişkin tüm resmi (nesneler ve arasındaki ilişkiler) işbirliği diyagramları ile daha net gösterebilirsiniz. Sıralama diyagramları, mesaj sırasına yoğunlaştığı için tüm resim net görünmeyebilir. 

6. Sıralama diyagramlarında bir bağlantı, bir nesneden diğerine giden mesajı gösterirken; işbirliği diyagramlarında bir bağlantı, nesneler arasındaki 1 veya daha fazla mesajı gösterebilir.

7. Sıralama diyagramlarının bir avantajı; nesnelerin yaratılışı ve sonlandırılışını kolay şekilde gösterebilmenize imkan vermesidir. Zaman boyutunda "yeni ()" mesajı ile nesneyi yaratabilir, X işareti ile de nesnenin sonlandırıldığını gösterebilirsiniz. İşbirliği diyagramlarında bu kadar basit olarak aynı işlemi gerçekleştiremezsiniz. Bu durumu gerçekleştirmek için "oluştur( )" ve "sonlandır( )" mesajlarını modele katmanız gerekir. 

8. İşbirliği diyagramlarınlarında zaman kavramı olmadığı için; bir nesnenin ne zaman aktif ne zaman pasif olduğunu mesaj tiplerini incelemeden anlayamazsınız ancak sıralama diyagramlarında bu durum çok kolay algılanmaktadır. 

9. İşbirliği diyagramları; daha karmaşık dallanmalara (branch), eş zamanlı akış denetimine (concurrent flow of control) izin verirken sıralama diyagramları doğası gereği daha basit dallanmalara izin vermektedir. Bu açıdan; işbirliği diyagramları ile daha karmaşık sistemler modellenebilmektedir.

Nesne tipleri 

Nesneler, diyagramlarda 2 türde yer alabilmektedir. Tedarikçi (supplier) ve istemci (client). Bu 2 kavram; işbirliği diyagramlarında parametreleri gösterirken karşınıza çıkabilir. Temel olarak tedarikçi nesneler; çağrılan metodu sunan nesnelerdir. A------->B şeklindeki bir örnek için; B nesnesi mesajı alan ve çağrılan metodu sunan "tedarikçi nesne" olarak ifade edilir. İstemci nesneler, tedarikçi nesneler üzerindeki metotları çağırır. 

Bu durumda; A nesnesi istemci, B nesnesi de tedarikçi nesne olarak ifade edilir.

Özel semboller

İşbirliği diyagramları içinde kullanılan özel semboller bu bölümde açıklanacaktır. Bu kapsamda; Şekil 3’de sadece kavramları göstermek için bir örnek verilmektedir.



Şekil 3: İşbirliği diyagramındaki kavramları, sembolleri ve mesajlaşma çeşitlerini gösteren bir örnek 

1. Nesne: Sıralama diyagramlarındaki nesne kavramının aynısıdır. a: A ile gösterilen nesne; A sınıfından yaratılan ve ismi a olan nesneyi temsil etmektedir. 

2. Senkron mesaj: Senkron mesajlar, gönderildiği nesneden cevap bekleyen mesajlardır ve belirli bir süre sonra aynı bağlantı üzerinden cevap alınmaktadır. Şekil 3 ’de mesaj1( ) senkron bir mesajı temsil ederken,buna ilişkin dönüş cevabı mesaj2( ) ile gösterilmektedir.

3. Asenkron mesaj: Senkron mesajların aksine cevap beklemeyen mesajlardır. mesaj5( ), asenkron mesajlara örnek olarak verilebilir. 

3. Prosedür çağırma: mesaj3( ) mesajı ile prosedür çağırma temsil edilmektedir. c nesnesi üzerinden, bu prosedür çağrılmaktadır. 

4. Sıra numaraları: İşbirliği diyagramlarında zaman bilgisi bulunmadığı için sıra numarası kullanılır. Sıralama diyagramlarında, bu sıra bilgisi seçime bağlıdır ancak işbirliği diyagramlarında kullanılmak zorundadır. Her mesajın bir numarası örnekte görülmektedir. 

5. Belirsiz nesne (anonymous object): Bir sınıfın herhangi bir nesnesinin aynı şekilde davranacağı düşünüldüğü zaman, ilgili nesne için isim kullanmayabilir. :D nesnesi, belirsiz bir nesnedir.

6. Kendi üzerine referans (self-reference): Kendi üzerinde bir metot çağıran nesne olarak düşünebiliriz. Çoğu durumda, nesne kontrol amaçlı sahip olduğu metotları kullanabilir. mesaj4( ) kendi üzerine referansa örnek olarak verilebilir. 

7. Zaman aşımı olayı (timeout): Belirli bir zaman cevap gelmeyince çağrılan mesaj tipidir. mesaj6( ) bu mesaja örnek olarak verilebilir.

8. Çoklu nesne (multi-object): Bir nesne birden fazla nesne içeriyorsa; çoklu nesne olarak ifade edilir ve :G nesnesinde olduğu gibi gösterilebilir. Örneğin; modem nesnesi kendi içinde birden fazla nesne barındırabilir.

9. Yorum: Diyagramı kimin, ne zaman oluşturduğunu ve kapsamını gösteren bir yorum bileşeni diyagramın sağ üst köşesine konulabilir. 

İşbirliği diyagramlarındaki önemli noktalar aşağıda açıklanmaktadır: 

  • İşbirliği diyagramlarında; özyineleme (iteration) ve şartlı (condition) ifadeler sıralama diyagramlarındaki gibi gösterilebilir. Özyineleme için; * sembolü, [i==true] ifadesi de şart için kullanılabilmektedir. Örneğin; 4*[i=İlkbahar..Kis] ifadesi her mevsim için bir defa çalıştırılarak, toplamda 4 defa çalıştırılmış olacaktır.
  • İşbirliği diyagramlarında dönüş değerlerini de göstermeniz mümkündür. Örneğin; 5: sonuc := işle( ) ifadesi isle( ) metodu neticesinde oluşan sonuc ifadesini geri döndürmektedir.
  • Döngüleri ve geri dönüşleri aynı ifade de gösterebilirsiniz. Örneğin 8*[i=Ocak..Aralik]:sonuc := işle(i) ifadesi, 8 nolu mesajın; 12 defa işle( ) yöntemini çağırdığını göstermektedir.
  • Giriş ve çıkış argümanları da işbirliği diyagramları üzerinde temsil edilebilir. Örneğin; ModemBaslat(modelId:ModelTipi, out true:YeniModem) ifadesi ile modem oluşturulabiliyorsa doğru (true) bilgisi geri dönüş değeri olarak verilebilmektedir. ModelId parametresi de giriş parametresidir.
  • UML içinde özyineleme ifadeleri yazabilmek için, programlama dili sentaksından yararlanabilmeye izin verilmiştir. Ancak; modeli dilden bağımsız tasarlamak, daha etkin modelleme mantığıdır.
  • Çok parçacıklı (multi-threaded) sistemlerle çalışıyorsanız; eş zamanlı süreçlere aynı sıra numarası vererek gösterebilirsiniz. Ayırt edici nokta, mesajların ismi olacaktır. Örneğin; 1: thread1, 1: thread2, 1: thread3 seklinde bir gösterim mümkün olabilmektedir.
  • Diyagramınızdaki bir bağlantı üzerinde, bazen get() ve set() türünde birçok mesaj göstermeniz gerekebilir. Diyagramın okunurluğunu bozmamak için, bilgiyiAl() ve bilgiyiEkle() gibi mesajlarla birçok mesajı tek bir mesaj olarak ifade edebilirsiniz.
  • İşbirliği diyagramı oluştururken; en önemli nesneleri diyagramın ortasına koymanızda yarar vardır. Bu sayede; önemli noktaları daha net gözlemleyebilirsiniz.
  • İşbirliği diyagramını çizmeden önce, diyagramı ne amaçla çizdiğinizi saptamanız gerekmektedir. Sıralama diyagramlarında olduğu gibi bir işbirliği diyagramı, çoğu kez bir kullanım senaryosunu (use-case) modellemek için kullanılmaktadır.
  • Bir nesne, etkileşim sırasında durum değiştirebilir. Nesnenin yeni örneği oluşturularak; aralarında bir bağlantı çizilir ve <<become>> şeklinde gösterilir. Rational Rose içinde, bir nesnenin durumu gösterilemez. Bazı tasarım araçları bu duruma destek sunmaktadır.
UML 2 içinde yapılan değişiklikler 

Bu bölüme kadar yapılan açıklamalar, özel semboller UML 1.x içinde yer aldığı şekilde verilmiştir. Birçok tasarım aracı, halen sadece UML 1.x ile diyagram çizebilmeyi desteklerken, bazıları UML 2’yi de desteklemeye başlamıştır.

Bu noktada; işbirliği diyagramları yönünden UML 2’deki değişimi inceleyebiliriz. UML 2 içinde işbirliği diyagramları; iletişim (communication) diyagramları adını almıştır. Bu diyagramlar; işbirliği diyagramlarına çok benzese de, daha az karmaşıktır ve işbirliği diyagramları kadar güçlü bir mekanizması yoktur. Bazı tasarımcılar; OMG içindeki UML grubuna, kaybolan bu özelliklerin eklenmesi için başvurmuşlar ve gerekli düzenlemelerin yapılmasını istemişlerdir. Yapılan bu değişikliklerin zamanla olgunlaşacağı ve tasarımcıların tercihine göre yön bulacağı beklenmektedir. Ancak; diyagramların temel felsefesinde çok fazla değişiklik bulunmamakta, daha çok gösterim açısından değişimler olmaktadır. 

Bunun yanı sıra; UML 2, nesne etkileşimlerinin 4 farklı diyagramla modellenmesini önermektedir (UML 1.x içinde bu amaçla, sıralama ve işbirliği diyagramları kullanılmaktaydı). Bu diyagramlar; sıralama diyagramları, iletişim diyagramları (eski adıyla işbirliği diyagramları), etkileşim tanıtım diyagramları (interaction overview) ve zamanlama (timing) diyagramlarıdır. 

İşbirliği diyagramları için daha fazla açıklama yapmak mümkündür. Ancak; UML 2 içindeki birçok özellik çoğu tasarım aracı tarafından şu anda desteklenmemektedir. Bu yazıda belirtilen temel kavramları kullanarak, kullandığınız tasarım aracının yeteneği ölçüsünde, projelerinizdeki nesneler arasındaki mesaj akışını kolaylıkla modellemeniz mümkün olacaktır. 

Alia

Alia İzzet Rahmanoviç (40), Tito dönemi Yugoslavya’sının varlıklı ve kariyer sahibi seçkin Boşnaklarından biridir. Yugoslavya’daki iç savaş gündelik yaşamla birlikte Alia’nın hayatında da çok şey değiştirir ve savaşta ailesi hariç her şeyini yitiren Alia Sırp kökenli karısı Anna ve iki küçük çocuğuyla birlikte Birleşmiş Milletler koruması altındaki bir Boşnak Mülteci kampına sığınmak zorunda kalır. Geçimlerini sağlayabilmek için yer altı dövüş kulüplerinden birinde ringe çıkar. Ailesini kamptan ve bu ülkeden çıkarma telaşı içindeki Alia için finale çıkarak bu parayı almaktan başka kurtuluş yolu yoktur… Alia finalde karşılaştığı Sırp dövüşçüyü yenerek büyük ödülü kazanır ama kampa döndüğünde hiç beklemediği bir manzara ile karşılaşır: Kampta kalan 65 kadar kadın, çocuk ve yaşlılardan oluşan Boşnak Sırplar tarafından katledilmiştir! Bu olaydan tam yedi yıl sonra Alia’yla İstanbul’da karşılaşırız. Katliamın yaşandığı kampın komutanı Eric Donavan’ın peşindedir…

13 Temmuz 2014 Pazar

Coldplay - Paradise

UML ile state(durum) diyagramları

"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 iseevent(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 entryexit 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 olantavsiye 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örebu 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.