C# Software Development

UML Nedir? Nasıl Kullanılır?

Written by Burak Yılmaz

Object Oriented Programming ile beraber modellemeye duyulan ihtiyaç artmış ve  yazılım projelerinde UML (Unified Modeling Language) kullanılmaya başlamıştır. UML, yazılım bileşenleri ve onların aralarındaki ilişkiyi gösteren bir standarttır. Bu makalemizde nesneler arasındaki ilişkileri incelerken UML gösterimlerini de işleyeceğiz.

***Dependency, ilişkinin kaynak ucundaki sınıfın, ilişkinin hedef (ok başı) ucundaki sınıfa bir tür bağımlılığı olduğu anlamına gelir. Diğer ilişki türlerine en az formal olanıdır.

Örneğin veri tabanı işlemlerini yaptığımız bir sınıfımız(DbOperations) var ve loglama(EventLogger) işlemlerini yaptığımız ayrı bir sınıfımız var. Veritabanına yazma işlemi sırasında bir hata oluştu ve biz bu hatayı text bir dosyaya loglamak istiyoruz. Sizinde anlayacağınız üzere burada bir bağımlılık oluştu.

    public class DbOperations
    {
        public void Insert()
        {
            try
            {
                
            }
            catch (Exception x)
            {
                EventLogger.LogText("hata alındı");
            }
        }
    }

 

***Association, iki sınıf arasındaki referans tabanlı ilişkidir. Bu iki sınıf arasındaki bağlantı zayıftır. Sınıflar arasında hizmet alma/vermeye dayalı ilişki diyebiliriz.

Aşağıda Araba ve Sürücü arasındaki ilişkini UML gösterimini ve kodlarını göreceğiz. Bu iki sınıfa baktığınızda aralarında çok sıkı bir ilişki yoktur. Arabayı herhangi bir sürücü kullanabilir veya sürücü herhangi bir arabayı kullanabilir. Birbirlerinden ayrı hayatlarına devam edebildikleri için aralarındaki ilişki association olarak gösterilir. Örnekten de anlaşılacağı üzere Araba sınıfı, Sürücü sınıfının bir instance ını içerir ve kullanır.

    public class Araba
    {
        private Surucu _surucu;

        public Surucu getSurucu()
        {
            return _surucu;
        }
    }

***Aggregation, bir parça-bütün ilişkisidir. Nesneler birleşerek bir bütünü oluştururlar fakat ayrıldıklarında kendi hayatlarına devam edebilirler. İki nesnenin de yaşam döngüsü farklıdır. Aralarında bir sahiplik(has-a) ilişkisi bulunmaktadır.

Bir cep telefonu ve kılıf arasındaki ilişki bu sınıfa girmektedir(phone has-a case). İki ayrı nesne olmalarına rağmen bir bütünü oluştururlar. Fakat aslında ikisini de ayrı ayrı kullanabilir, satabiliriz. Yaşam döngüleri aynı değildir.

    public class CepTelefonu
    {
        private Kilif _kilif;
        public CepTelefonu(Kilif kilif)
        {
            _kilif = kilif;
        }
    }

***Composition, bir parça-bütün ilişkisidir. Fakat nesneler arasındaki bağlantı çok sıkıdır. Nesneler birbirlerinden bağımsız kullanılamazlar. Aralarındaki ilişki is-a-part-of  ilişkisidir. Yaşam döngüleri aynıdır.

Az önce cep telefonu örneğinden gidecek olursak, telefon ile ekranı arasındaki ilişki arasındaki ilişki composition’dır. İki ayrı nesnelerdir fakat tek başlarına hiç bir şey ifade etmezler.

    public class Kilif
    {
        
    }

    public class CepTelefonu
    {
        Kilif _kilif = new Kilif();
    }

 

About the author

Burak Yılmaz