Будь Собой, Кем бы Ты Не Был!


Bayram Güçlü 12 Nisan 2014 16:30

Python'da Pyreverse ile UML Çizgelerinin Oluşturulması

UML daha çok nesneye yönelik programalama dillerine uygun ilkörneklerin tasarlanması için, kodların yeniden düzenlenmesi aşamasında çözümlemeler yaparken ileride olabilecek sorunların daha kolay görülebilmesi için, başkalarının yazdığı kodların daha kolay anlaşılabilmesı için(öncelikle sınıf tasarım ilkelerine uygun kodlar yazmak lazım kodların iyi anlaşılmasını istiyorsak) kullanılan bir dildir. Elbette burada sadece nesneye yönelik programlama ile ilgili olan kısımlarından söz ettik. Yoksa UML'nin kullanım alanı bunlarla sınırlı değil. UML ile ilkörnekler tasarlamak için Dia, Umlet, Gaphor, Umbrello vb. çizim yazılımları kullanabiliriz. Dia'dan kısaca bahsetmek gerekirse UML ile tasarımın yanısıra, elektrik, kimya, mantık, ağ vb. alanlarda da tasarımlar yapabiliriz. Dia aynı zamanda UML ile oluşturulan bir çizgenin kodlar şeklinde dışarı aktarılmasını da destekliyor. (Python, C++ vb.) Pyreverse ise çizim yazılımlarının yaptıklarının tersini yapıyor. Nasıl mı? Çizim programları UML ile bir ilkörnek oluşturup eğer destekliyorsa kodlar şeklinde dışarı aktarılırken Pyreverse ise daha önceden yazılmış Python modüllerinin UML çizgelerini sınıflar, paketler vb. şekilde oluşturuyor. Bütün bunlar bize ne sağlar peki? Kullandığımız sınıfların içeriğinin yani sınıfların yöntemlerinin(fonksiyonlar, eylemler), niteliklerinin(değişkenler, özellikler) kafamızda daha iyi canlanmasını sağlar.

Örnek olarak Pyreverse modülünün çizgesini oluşturalım:

pyreverse -o png -p Pyreverse pylint/pyreverse/

-o : Bu değiştirgeden sonra çıktı olarak alacağımız dosyanın türünü belirtiyoruz. -p : Bu değiştirgeden sonra dosyamıza vereceğimiz ismi belirtiyoruz. Ardından ise çizgesini oluşturacağımız modülün konumunu belirtiyoruz.

Paketler

packages_Pyreverse

Sınıflar

classes_Pyreverse

Burada Pyreverse öntanımlı olarak bize belirttiğimiz modül içerisindeki paketlerin ve sınıfların çizgesini oluşturdu. Ayrıca diğer değiştirgeler aracılığı ile daha farklı çıktılar da alabiliriz.(gömülü nesneleri göster, sadece sınıfları göster vb.) Daha başka neler yapabileceğimizi öğrenmek için uçbirim üzerinde pyreverse --help komutunu verebiliriz. Ayrıntılı bilgi için:

http://www.tasarimdesenleri.com/core/uml.jsp
http://www.logilab.org/blogentry/6883