UML Bilgisi
UML Giriş:Yabancı dildeki orjinal açılımı: Unified Modeling Language şeklindedir.
Yazılım mühendisliğinde, yazılımı görsel olarak ortaya koymak, yazılımın planını, akışlarını çıkarmak için kullanılan çok amaçlı modelleme dilidir.
İyi yazılım, kullanıcının isteklerini en iyi şekilde karşılayan yazılımdır. Bunun dışındaki tanımların hepsi de ikinci planda kalır. Bu yüzden yazılımdaki detayların ve istenenlerin iyi bir şekilde analiz edilmesi, belirtilmesi çok önemlidir. Modelleme bu durumda çok kritik bir görev almaktadır. Özellikle analiz ve tasarım evrelerinde, yazılımın planlanması ve detaylarının ortaya konulması gerekir. İşte UML bu durumlarda, yazılım mühendisleri için güçlü görsel modelleme olanakları sunar. Modelleme görsel olduğu için, anlaşılması çok daha kolay ve hızlıdır. Yazılım mühendislerine, sistemin yapısı ve davranışları konusunda güçlü iletişim imkanları sunar. Modeller kullanılarak fırsatlar ve hatalar kolayca görülebilir. Yazılımların çok daha iyi anlaşılmaları sağlanır.
Tasarım desenleri anlatılırken, UML sınıf çizelgelerinden faydalanılmıştır. UML'deki tek çizelge tipi bu değildir. UML'deki çizelge tipleri yapısal çizelgeler, davranışsal çizelgeler ve etkileşim çizelgeleri şeklinde üç ana kolda toplanırlar. Bunlardan yapısal çizelgeler ana kolundaki başlıca çizelgeler: sınıf, bileşen, nesne ve paket çizelgeleridir. Davranış çizelgeleri: hareket, durum makinesi ve kullanıcı durumları çizelgeleri. Etkileşim çizelgeleri: İletişim, akış ve zamanlama çizelgeleridir. Her bir çizelge yazılımın farklı bir yönünü ifade etmektedir. Bu sitenin ana konusu tasarım desenleri ve bu sitede de UML'deki yapısal çizelgelerden sınıf çizelgeleri kullanıldığı için yalnızca bu çizelgelerden detaylı bahsedilecektir. Belki başka sitede UML konusu detaylı bir şekilde incelenebilir.
UML >> Yapısal Çizgeler >> Sınıf ÇizelgeleriNesneye dayalı programlama da, sınıf, aynı özelliklere, davranışlara ve kod kalıplarına sahip olan nesnelerin açıklamasıdır. Nesneye dayalı programlamanın temeli, birbirlerine bağımlılıkları en az olan fakat iletişim halindeki nesneleri ifade eden sınıflardır. UML böyle önemli bir yere sahip olan yapıların sınıf çizelgeleri ile ifade edilmelerine imkan sağlamıştır.
Sınıf çizelgeleriyle sınıfın ismi, sınıfın değişkenleri ( özellikleri ) ve sınıfın yordamları ( operasyonları, işlemleri ) aşağıdaki gibi gösterilir:

Yukarıda görüldüğü gibi, bir sınıf üç bölüme ayrılmış dikdörtgen ile ifade edilir. Bu bölümlerin en üst kısmında sınıf ismi, orta kısımda sınıf özellikleri ve en alt kısımda ise sınıf yordamları( işlemleri ) bulunur. Sınıf çizelgelerinde mutlaka sınıf ismi kısmının bulunması gerekir. Fakat sınıf özellik veya işlemlerinin belirtilmesi gerekmez. Çizelgede bu konuda detay verilmek istenmeyebilir. Şimdi aşağıda, sınıf çizelgelerinin detayları verilecektir:
Sınıf Çizelgeleri >> Erişim Sembolleri, Geri dönüş ve değiştirge tipleriNesneye dayalı programlama dillerinde ( Java, C++, ... ) sınıfların özellik ve yordamlarının dışarıya açık olup olmamasına bağlı olarak, üç temel erişim şekli bulunur: public, protected, private. "Public" olanlar tüm sisteme açıktır. "Protected" olanlar sınıf ile aynı pakette bulunan sınıflara açıktır. "Private" olanlar ise dışarıya açık olmayıp, yalnızca sınıf içersinden erişime açıktır. Bunlar UML sınıf çizelgelerinde ifade edilebilir: "Private" olan özellik ve yordamların başına -, "protected" olanların başına #, ve "public" olanların başına da + getirilebilir. Aağıdaki örnek sınıfta, fiyat özelliği ile, sipariş ver yordamı "public", kimlik numarası özelliği "private", stoklara ekle yordamı işe "protected" erişim tipine sahiptir.
Nesneye dayalı programlama dilleri, veri tipi bazlıdır. Yani veri tiplerine çok bağlıdır ve derleme aşamasında tip kontrolleri yapılır. Sınıf özelliklerin her birisinin bir veri tipi bulunur. Ayrıca yordamlarda, her bir değiştirgenin veri tipi olduğu gibi, yordamdan dönen verinin de veri tipi belirlidir. UML sınıf çizelgelerinde, bu veri tiplerininde açıkça gösterilmesini sağlamıştır. Sınıf özelliklerinin tipi, özellik isminden sonraki : işaretinden sonra yazılabilir. Sınıf yordamlarının değiştirgeleri, yordam isminden sonraki parantez içinde tek tek belirtilir. Her bir değiştirgenin isminden sonra, veri tipi : işaretinden sonra yazılır. Geri dönülen verinin tipi ise, değiştirgelerin yazıldığı parantez kapatıldıktan sonra yine noktalı virgülden sonra yazılabilir. Aşağıdaki örnekte, fiyat sınıf özelliğinin veri tipi "integer" dır. Kimlik numarası özelliğinin veri tipi "String" dir. Sipariş ver yordamı geriye tipi "integer" olan veri döner. Tarih isminde "Date" veri tipinde ve adet isminde "integer" tipinde iki tane değiştirgesi bulunur. Stoklara ekle yordamı ise bir değiştirge almamıştır, fakat geriye "integer" tipinde veri döner.

Sınıf Çizelgeleri >> Sınıf Belirteçleri, Soyut isimler
Sınıf çizelgelerinde, sınıf isminin üzerinde <<,>> sembolleri arasındaki gösterimlere sınıf belirteçleri denir. Bu sembol ile sınıfın tipi ve ne yaptığı konusunda bilgi verilebilir. Sınıf belirteçlerinin ne olduğu kesin olarak UML de belirlenmemiştir. Bu ifadeler, çizelgeyi oluşturan yazara bağlı ifadelerdir. Fakat genel olarak, nesneye dayalı programlama dillerindeki arayüz ve soyut sınıfların başlarına <<arayüz>>, <<soyut>> belirteçleri konur. Ayrıca UML deki sınıflar ile ilgili bir başka kullanım ise şudur: Soyut sınıf isimleri ve soyut yordam isimleri, yatık yazı tipiyle ifade edilir. Nesneye dayalı programlama dillerinde, soyut ( abstract ) sınıfların nesneleri oluşturulamaz. Soyut yordamlar ise, alt sınıflar tarafından yeniden yazılmalıdırlar. Aşağıdaki örnekte İşlev isimli sınıf soyut olduğu için <<soyut>> belirtecini almıştır. Sınıf ismi soyut sınıf olduğu için yatık yazılmıştır. Ayrıca işleviYerineGetir yordamı da soyut yordam olduğu için yatık yazılmıştır.

Sınıf Çizelgeleri >> Sınıf İlişkileri
Sınıf çizelgelerinde, her bir sınıf dikdörtgen sembollerle ifade edilir. Fakat birbirleriyle etkileşimde olmayan sınıflar, bir sistem içinde işe yaramazlar. Bir işi, görevi yerine getirebilmeleri için sınıfların birbirleriyle ilişki halinde olmaları gerekir. Uml sınıf çizelgelerinde sınıfların birbirleriyle olan ilişkileri çizgi ve ok şeklindeki sembollerle gösterilirler. Dört temel sınıf ilişki şekli bulunur:
- Mesajlaşma veya ilişki
- Bağımlılık
- Türeme
- Gerçekleştirme
Bu ilişkiler aşağıdaki semboller ile ifade edilirler:

Mesajlaşma ilişkisinde, iş akışı sırasında, bir sınıftan, diğer sınıfa bir yönelim vardır. Diğer sınıfa bir mesaj gönderilir, diğer sınıfın bir yordamı çağırılarak, iş akışı devam ettirilir. Yani kısaca nesneler arasında bir bağlantı vardır. Bağımlılık ilişkisinde, sınıflar birbirlerine bağımlıdır. Bir sınıfta meydana gelecek bir değişiklik diğerini de etkileyecektir. Türeme ilişkisinde, bir sınıf diğer bir üst sınıftan türemiştir. Yani üst sınıfın alt sınıfı konumundadır. Gerçekleştirme ilişkisi, türemeye benzer. Fakat burada üst sınıf bir arayüz sınıfıdır. Alt sınıf, onun soyut yordamlarını içererek, onların gerçekleştirimini yapar.
Sınıf Çizelgeleri >> Rol İsimleri ve Çarpan İfadeleriSınıf çizelgelerinde, sınıflar arasındaki ilişkiler çeşitli ok ve çizgili gösterimlerle ifade edilirler. Bu ilişki gösterimlerine, sınıflar ile ilgili rol isimleri ve çarpan değerleri verilebilir. Aşağıdaki örnekte, bir şirketteki personeller arasındaki ilişki verilmiştir. Şirket ve personel birer sınıftırlar. Bu sınıflardan personele işçi, şirkete ise iş veren rolü verilmiştir. Sınıf çizelgesinde, personele 1..*, şirkete ise * şeklindeki çarpan ifadeleri verilmiştir. Bunun anlamı, bir şirkette en az bir olmak üzere bir çok personel çalışmaktadır, bir personel ise birden fazla şirkette çalışabilir anlamındadır.