2013-08-07 14 views
5

IsRoot, IsAbstract & IsLeaf'un aşağıdaki açıklamasında karşılaştım ancak bunları ne zaman kullanacağınızı anlamayın. http://www2.sys-con.com/itsg/virtualcd/dotnet/archives/0108/clark/index.htm denIsRoot, UML'de IsAbstract & IsLeaf ne zaman kullanılır?

alıntı:

IsRoot onay kutusunu işaretleyerek diğer sınıfların kalıtımla almasından sınıfını kısıtlıyor. IsAbstract'ın kontrol edilmesi, sınıfın taklit edilmesini kısıtlar ve istemcileri, sınıfın işlevselliğine erişmek için türetilmiş bir sınıfı başlatmaya zorlar. IsLeaf'ın kontrol edilmesi, sınıfın mühürlendiğini gösterir. Mühürlü sınıflar, devralınabilir değildir ve bir miras zincirinin derinliğini sınırlamaya yardımcı olur.

Benim anlayış

  1. IsRoot o
  2. IsAbstract o soyut sınıf
  3. IsLeaf olduğunu düşündürmektedir gibi görünen bir üst sınıf olduğunu düşündürmektedir görünüyor miras edilemez ancak örneğini içeren bir sınıftır .

birisi bana bu kullanan bir modelin gerçek dünya örnek verebilir misiniz? Mesela, bir 'süper' sınıfı olan 'araba' gibi bir sınıf hayal edebiliyorum ve bunun altında 'Volvo', 'Chevrolet' vb. Sınıflar olacak.

+0

Hala resmi UML kullanan biri var mı? (tasarım eskizleri hariç) –

+2

@Mitch Wheat - Özellikle mimari ya da yazılım olarak mimarlık için şaşıracaksınız. İş modellemesi için de kullanılır. – PeanutsMonkey

+0

@PeanutsMonkey çok iyi bir soru – user2019510

cevap

7
  • isRoot artık UML2 bulunmaktadır.Uml 1'de bu (tarifnameden) anlamına gelir:

isRoot: GeneralizableElement atalara sahip bir kök GeneralizableElement olup olmadığını belirtir. True, 'un atalarının olmayabileceğini gösterir, false, atalarına sahip olabileceğini belirtir (şu anda herhangi bir ataya sahip olsun ya da olmasın).

  • isAbstract eleman eksiktir ve örneği anlamına gelir.

Doğruysa, Sınıflandırıcı tam bir deklarasyon sağlamaz ve tipik başlatılamaz. Bir soyut sınıflandırıcısının diğer klasörler tarafından kullanılması amaçlanmıştır (örneğin, genel meta-ilişkilerin veya genel metailizasyonların hedefi olarak ilişkileri). Varsayılan değer yanlıştır.

  • isLeaf bazı programlama dillerinde final aynı eleman, yeniden tanımlamak anlamına gelir.

onların ayrıca bir RedefinableElement yeniden tanımlamak mümkün olup olmadığını gösterir. Değer true ise, RedefinableElement öğesini yeniden tanımlamak mümkün değildir. Varsayılan değeri yanlıştır.

+0

Teşekkürler Xaelis. Bana bunları kullanabileceğim gerçek dünya örnekleri verebilir misin? – PeanutsMonkey

+2

Evet @PeanutsMonkey. Unuttur isRoot, artık yok. Bir araç Özet, çünkü onu başlatamazsın. Onun beton tipini bilmiyorsun. Araba mı, otobüs mü, bot mu? IsLeaf daha çok bir yazılım tasarımıdır. Diyelim ki bir TrustedUser sınıfı var ve başka bir mimarın bu sınıfı miras yoluyla yeniden tanımlamasını önlemek istiyorsunuz. Sonra isLeaf özelliğini doğru olarak koydu. – Xaelis

2

Gerçek olmayan örnekler değil, bazı.

  1. isRoot: Bence bu artık UML'nin bir parçası değil. Bu makale 2004'ten beri UML 2'nin ortaya çıktığı dönemdi ve Visio'nun desteklediğinden şüpheliyim. Hala desteklemeyebilir.
  2. isAbstract: Alt sınıfların bir üyesi olan örneğini oluşturamayacak şekilde tüm üst sınıfların soyutlanması iyi bir fikirdir. Sınıflar temel olarak örneklerdir. Bir örnek için bir üst kümenin üyesi ve alt kümelerin hiçbiri olmaması ne anlama geliyor? Tam olarak böyle bir örneğin sınıflandırmasının ne olduğu açık değildir ve zaman içinde istemeden değişebilir. Ayrıca disjoint alt sınıfları yapmak için iyi bir fikirdir (örtüşmeyen) ve covering (bilinen tüm alt sınıfları belirtilen). Daha fazla ayrıntı ve bunun gerçek bir örneği olan Avians'ı Lahman's book'da kullanıyoruz.
  3. isLeaf: esasen kodunuzu geçersiz insanları tutar. Ben this quotation doğrulamak olamaz, ama sözde The Unified Modeling Language Reference Manual diyor:

    bir yaprak olmak veya yaprak olarak kısıtlanan kontrolü insan davranışına temel anlamsal özellikler daha ziyade yazılım mühendisliği mekanizmaları değildir.

bu yardım ediyor mu?

+0

Üzgünüz, öyle değil. Çok muğlak. Bir şemada bazı gerçek örnekler elde etmek için iyi olun. – PeanutsMonkey

+0

Lahman'ın kitabına baktın mı? Çoktan gerçek bir dünya örneği sunmaya muazzam bir iş koydu (2). Size ücretsiz olarak okuyabileceğiniz bir link bile verdim. (1) ilgisizdir. (3) hakkında net olmayan nedir? –

+0

Jim L - Açıkça bilinmediğim şey, UML'de ne zaman ve nasıl kullanacağınızdır (IsLeaf). – PeanutsMonkey