CodeGym /Java Blogu /Rastgele /UML Sınıf Diyagramı
John Squirrels
Seviye
San Francisco

UML Sınıf Diyagramı

grupta yayınlandı

giriiş

"İki kere ölç, bir kere kes" sözünü sanırım herkes duymuştur. Programlamada gerçek bir tavsiye. Bunu gerçekleştirmek için herhangi bir zaman harcamadan önce uygulamayı düşünmek her zaman daha iyidir. Uygulama sırasında, genellikle sınıflar oluşturmanız ve nasıl etkileşim kuracaklarını düşünmeniz gerekir. Hepsinin görsel bir temsili, genellikle en doğru çözümü bulmanıza yardımcı olabilir. UML Sınıf Diyagramının yardımımıza geldiği yer burasıdır.

UML nedir?

Arama motorlarında ilgili resimlere bakarsanız, UML'nin diyagramlar, oklar ve karelerle ilgili olduğunu görürsünüz. UML'nin Birleşik Modelleme Dili anlamına geldiğini bilmeniz gerekir. Birleşik burada önemli kelimedir. Bu, görsellerimizin sadece bizim tarafımızdan değil, UML'yi bilen herkes tarafından anlaşılacağı anlamına gelir. Diyagram çizmek için ortak dildir.

Wikipedia'ya göre,

"UML, bir sistemin tasarımını görselleştirmek için standart bir yol sağlamayı amaçlayan, yazılım mühendisliği alanında genel amaçlı, gelişimsel bir modelleme dilidir."
Herkesin tahmin edemeyeceği en ilginç şey, UML'nin spesifikasyonlara sahip olmasıdır. Ve hatta bir UML 2 özelliği bile var. Spesifikasyon hakkında daha fazla bilgi Object Management Group web sitesinde mevcuttur. Aslında, bu grup UML belirtimlerini geliştirir. UML'nin sınıfların yapısını açıklamakla sınırlı olmaması da ilginçtir. Pek çok UML diyagramı türü vardır. Vikipedi'de çeşitli UML diyagramı türlerinin kısa bir açıklaması vardır: UML diyagramları . UML sınıf diyagramlarına dönersek, tasarım modellerini göstermek için UML diyagramlarını kullanan "Head First Design Patterns" kitabından bahsetmeye değer . Sonuç olarak, UML gerçekten kullanılıyor. Ve bunu bilmenin ve nasıl kullanılacağını anlamanın oldukça faydalı olduğu ortaya çıktı.

Başvuru

Bir IDE'de UML ile çalışabileceğimizi bulalım. IDE olarak IntelliJ IDEA kullanacağız. IntelliJ IDEA Ultimate kullanıyorsanız, "kutudan çıkar çıkmaz" "UML Desteği" eklentisini yüklemiş olacağız. Otomatik olarak güzel sınıf diyagramları oluşturmanıza olanak tanır. Örneğin, ArrayList sınıfına gitmek için Ctrl+N veya "Gezin" -> "Sınıf" menü öğesini kullanın. Şimdi sınıf adının içerik menüsünde "Diyagram" -> "Diyagram açılır penceresini göster"i seçin. Sonuç olarak, güzel bir diyagram elde ediyoruz. UML: teoriden pratiğe - 2 Peki ya diyagramı kendiniz çizmek isterseniz? Peki ya Ultimate sürümüne sahip değilseniz? IntelliJ IDEA Community Edition'ı kullanarak başka seçeneğimiz yok. Bu yüzden bir UML diyagramının nasıl organize edildiğini anlamamız gerekiyor. Birinci,. Bir dizi grafik görselleştirme aracıdır. Kullanacağımız eklenti buna bağlıdır. Kurulumdan sonra, Graphviz kurulum dizininden bin dizinini PATH ortam değişkenine eklemeniz gerekir. Bundan sonra, IntelliJ IDEA'da menüden Dosya -> Ayarlar'ı seçin. "Ayarlar" penceresinde "Eklentiler" kategorisini seçin, "Depolara gözat" düğmesine tıklayın ve PlantUML entegrasyon eklentisini yükleyin. PlantUML hakkında bu kadar iyi olan ne? Nokta dili PlantUML'den daha fazlası tarafından kullanıldığından, UML'yi "nokta" adı verilen bir grafik tanımlama dili kullanarak tanımlar, bu da onu daha evrensel yapar. Dahası, aşağıda yaptığımız her şey yalnızca bir IDE'de değil, aynı zamanda planttext.com'da çevrimiçi olarak da yapılabilir.. PlantUML eklentisini kurduktan sonra "Dosya" -> "Yeni" seçeneklerini kullanarak UML diyagramları oluşturabileceğiz. Bir "UML sınıfı" diyagramı oluşturalım. Bu, otomatik olarak bir örnek içeren bir şablon oluşturacaktır. İçeriğini silip kendimizinkini ekleyeceğiz. Bunun metinde nasıl temsil edileceğini anlamak için PlantUML manual: plantuml class-diagram'a bakın. UML: teoriden pratiğe - 3Bu materyallere güvenerek UML diyagramımızı oluşturmaya başlayalım. İki sınıfı açıklayan aşağıdaki içeriği ekleyin:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
Sonucu IDEA'da görmek için "Görünüm" -> "Araç Pencereleri" -> "PlantUML" öğesini seçin. Sınıfları temsil eden iki kare elde ederiz. Bu sınıfların her ikisinin de List arabirimini uyguladığını biliyoruz . Bu sınıf ilişkisine gerçekleştirme denir. Bu ilişki noktalı çizgili bir ok kullanılarak temsil edilir. Hadi çizelim:

interface List
List <|.. ArrayList
List <|.. LinkedList
List , Koleksiyon sınıfının çocuklarından biridir . Yani, Koleksiyonu devralır . Bu ilişkiye genelleme denir. Sıradan bir sürekli çizgiye sahip bir oka benziyor. Hadi çizelim:

interface Collection
Collection <|-- List
Bir sonraki ilişki türü için, ArrayList sınıf açıklamasına bir paket özel öğe dizisi hakkında bir giriş ekleyin :

~Object[] elementData
Şimdi ArrayList'in bazı nesneler içerdiğini göstermek istiyoruz . Bu durumda, bir toplama ilişkisi olacaktır. Dizi Listesibaşka nesneler içerdiğinden bir kümedir. Toplama diyoruz çünkü listenin nesneleri liste olmadan var olabilir: onlar listenin ayrılmaz parçaları değildir. Ömürleri listenin ömrüne bağlı değildir. "Agrega" kelimesi bize Latince'den gelir ve "birleştirilmiş", yani bir şeyden oluşan bir şey olarak tercüme edilir. Örneğin, hayatta bir pompa ve bir motordan oluşan bir pompa tertibatımız (agrega) vardır. Düzeneğin kendisi demonte edilebilir ve bazı bileşenlerini olduğu gibi bırakabiliriz. Örneğin satmak veya başka bir meclise sokmak. Bir listede aynı şekilde. Bu, toplamda boş bir eşkenar dörtgen ve sürekli bir çizgi ile ifade edilir. Bunu aşağıdaki gibi temsil edeceğiz:

class Object{
}
ArrayList o- Object
Şimdi, ArrayList'ten farklı olarak LinkedList sınıfının , depolanan verilere başvuran Node s kapsayıcıları içerdiğini göstermek istiyoruz . Bu durumda, Düğümler LinkedList'in parçasıdır ve bağımsız bir varlıkları yoktur. Düğüm , içeriğin kendisi değildir. Yalnızca içeriğe bir referans içerir. Örneğin, bir LinkedList'e bir dize eklediğimizde , dizeye bir referansın yanı sıra önceki ve sonraki Düğüme bir bağlantı içeren yeni bir Düğüm ekliyoruz.. Bu ilişkiye kompozisyon denir. Bileşik (kurucu parçalardan yapılmış bir şey) üzerine doldurulmuş bir eşkenar dörtgen ile sürekli bir çizgi çizilerek tasvir edilmiştir. Şimdi ilişkiyi metin olarak göstereceğiz:

class Node{
}
LinkedList *-- Node
Ve şimdi başka bir önemli ilişki türünü nasıl tasvir edeceğinizi öğrenmeniz gerekiyor: bağımlılık. Bir sınıf diğerini kullandığında kullanılır, ancak sınıf kullanılan sınıfı içermez veya miras almaz. Örneğin, LinkedList ve ArrayList, bir ListIterator oluşturmayı bilir . Bunu noktalı çizgili oklar olarak gösteriyoruz:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
Tüm bunları yaptıktan sonra şunu elde ederiz: UML: teoriden pratiğe - 4Gerektiği kadar ayrıntı ekleyebilirsiniz. Elbette böyle bir diyagram çizmenin doğaüstü bir yanı yok. Kendi görevleriniz üzerinde çalışırken, onu elle hızlıca çizebilirsiniz. Bu, bir uygulamanın mimarisi üzerinden düşünme yeteneğinizi geliştirmenize ve sınıf yapısındaki eksiklikleri, günü zaten yanlış modeli uygulayarak geçirdikten sonra değil, erkenden belirlemenize yardımcı olacaktır. Denemek için iyi bir sebep gibi görünüyor, değil mi? :)

Otomasyon

PlantUML diyagramlarını otomatik olarak oluşturmanın çeşitli yolları vardır. Örneğin, IDEA'nın SketchIT eklentisi vardır, ancak diyagramları tamamen doğru şekilde çizmez. Diyelim ki arayüzlerin uygulanması yanlış çizildi (kalıtım olarak gösteriliyor). İnternette bunu projenizin yapım sürecine nasıl entegre edebileceğinize dair örnekler var. Örneğin, uml-java-docklet'in Maven ile nasıl kullanılacağını bulabilirsiniz . Göstermek için, hızlı bir şekilde bir Maven projesi oluşturmak için Maven Arketipini kullanacağız . Koşmak

mvn archetype:generate
Numara seç veya filtre uygula'ya yanıt olarak, varsayılanı bırakın - sadece Enter'a basın. Her zaman "maven-arketip-hızlı başlangıç" olacaktır. En son sürümü seçin. Ardından, bazı soruları cevaplayacağız ve projeyi oluşturmayı bitireceğiz: Maven bu makalenin konusu değil, bu nedenle Maven ile ilgili sorularınızın yanıtlarını Maven Kullanıcı Merkezi'ndeUML: teoriden pratiğe - 5 bulabilirsiniz . Oluşturulan projede, düzenleme için pom.xml proje açıklama dosyasını açın. uml-java-docklet kurulum açıklamasındaki içeriği bu dosyaya kopyalayacağız . Açıklamada kullanılan yapı, Maven Central deposunda bulunamıyor. Ancak aşağıdakiler benim için çalıştı: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Başka bir deyişle, açıklamada "info.leadinglight" olan groupId'yi "com.chfourie" olarak değiştirmeniz ve sürümü "1.0.0" olarak ayarlamanız yeterlidir. Bundan sonra pom.xml dosyası ile dizinde aşağıdaki komutları excute edebiliriz:

mvn clean install
Ve

mvn javadoc: javadoc
Şimdi oluşturulan belgeleri (explorer target\site\apidocs\index.html) açarsak, UML diyagramlarını göreceğiz. Bu arada, uygulama ilişkisi artık doğru bir şekilde görüntüleniyor :)

Çözüm

Gördüğünüz gibi UML, uygulamanızın yapısını görselleştirmenizi sağlar. Ancak UML çok daha fazlasını yapabilir. UML'yi şirketinizdeki çeşitli süreçleri tanımlamak veya eserler yazdığınız bir işlevi kapsayan iş sürecini tanımlamak için kullanabilirsiniz. UML'nin kişisel olarak sizin için ne kadar yararlı olduğuna kendiniz karar vermeniz gerekecek, ancak neye karar verirseniz verin, onun hakkında daha fazla bilgi edinmek için zaman ayırmanız faydalı olacaktır.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION