17 Kasım 2015 Salı

Sınıf Şemalarına Giriş

Martin Fowler "UML Distiled" kitabında en çok görülen UML şemalarının sınıf şemaları olduğunu yazıyor. Bu tür şemalar sistemi oluşturan nesneleri ve aralarındaki sürekli yan, durağan ilişkileri görselleştirmek içindirler. Sınıf şemaları ayrıca nesnelerin özellik ve davranışlarını da nesneleri temsil eden kutularda listelerler.

Sınıfı temsil eden kuru başlığında sınıf adı, kutu içeriğinde ise sınıfta tanımlı özelliklerin (attributes, properties) adları yer alır. Özellik adlarının önünde dışarıdan erişilebilirlik derecesini belirleyen sembol veya etiketler yer alır. Bu küçük örnekteki eksi işaretleri bu özelliklerin nesneye ait özel, yani dışarıdan gizlenmiş özellikler olduğu anlamına geliyor.

Böyle bir örnekte gösterilen şekliyle, sınıf şeması bu adla tanımladığınız türden her nesnenin sahip olacağı özellikleri listeliyor. Bu sınıf türünden bir nesne yarattığınızda, bu tanımın bir örneğini (instance) yaratmış olursunuz. Bu nesne de sınıfı temsil eden kutudaki özelliklere sahip olur.

"Özellik" deyince aklınıza .NET programlama dillerindeki dışarıdan öğrenilip değiştirilebilen bilgileri temsil eden property tanımları gelmiş olabilir. Aslında nesneye yönelik programlamanın teorisine bakacak olursanız, nesneye ait her tür bilgi bir "özellik"tir. Genellikle gizli üye değişkenlerde saklanan özel bilgiler nesneye ait karakteristik bilgilerdir; onlar için "attributes" terimi kullanılır. "property" terimi de bu bilgilerden dışarı açık olanları için kullanılır. Bu ayrıntıya takılmayın. Burada işin programlama kısmıyla ilgilenmeyeceksiniz. Siz bir sınıf şemasında sistemi oluşturan nesnelerin sahip oldukları bilgileri listeleyeceksiniz, o kadar. Nesneye ait bilgilerin de olur olmaz hepsini değil, yalnızca sistemin çalışmasını ilgilendiren bilgileri listeleyeceksiniz.

Sınıf şemasında bir nesnenin (sistemle ilgili) davranışları da nesne türünü temsilş eden kutunun üçüncü bölmesinde listelenir:

Kutunun bu alt bölümünde listelenen davranışlara UML terminolojisinde "eylemler" (operations) denir. Bu küçük örnekte bir elemanın reklamcılık şirketinde bir kampanyaya atanmasını sağlayan ve ücretini belirleyecek yeni bir kadro verilmesini sağlayan iki eylemin adını listeledik. Adlandırma şekline kafayı takmayın; bu küçük resmi Bennet, McRobb ve Farmer kitabındaki bir örnekten uyarlamıştık. Oradaki adlandırma şeklinde sadık kaldık.


Nesnenin "eylemleri" deyince genellikle başka nesnelerin o nesneden talep edeceği davranışların adları gelsin. Bu açıdan bakılınca, nesne eylemlerini bir profesyonel kişinin sipariş üzerine yapacağı işler gibi düşünebilirsiniz. Bu nedenle nesne eylemleri genellikle dışarıdan erişilebilir olmalıdır. Dışarıya açık derken, eylemin nasıl yapıldığını herkes biliyor sanmayın. Profesyonel bir kişi iş yapma şeklini gizli tutar, ama yapacağı işe bir ad koymuştur, başka birisi de işi o adla talep eder. Yukarıdaki küçük kutuda + semboplüyle dışarı açık olarak gösterilen eylemler nesnenin sipariş üzerine gerçeklşeştirebileceği eylemlerin adlarıdır. Gerçek bir programlama dilinde bunları dışarı açık, yani sınıf tanımı dışındaki kodlardan çağrılabilen fonksiyonlarla uyarlarsınız.

Hiç yorum yok:

Yorum Gönder