2009-07-28 21 views

cevap

1
   MyServer 
       | 
       | 
       | 
       Map 
       | 
       | | 
       | | 
    MyClientTypeKey MyClientType 

Yukarıdaki gibi basit değil mi?

  • MyServer Harita
  • ile bir assoication bir birine sahiptir Harita anahtarlar hem de değerler ile 1 için birçok dernek var.
+1

. Bu sadece bir korunma yöntemi. Bilmiyorum, doğru hissetmiyorum. – gooli

+0

Ama sonra sadece, diyelim ki, doğrudan sunucum ile ilişkili anahtar ve tipi sınıflı nasıl ilişkili göstermez. Harita bir kapsayıcıdır, ancak anahtar ve tip arasındaki ilişkiyi de gösterir. – Mark

7

MyClient ucundan çok sayıda 0 .. * MyServer'dan MyClient'e kadar bir ilişki gösteririm. Diğer her şey uygulama detayıdır ve programcıya bırakılabilir.

+0

Bu iki doğru cevap biridir. Diğeri ise @Kru. –

2
  MyServer 
       | 
       |* 
      T1toT2 
      / \ 
      1/  \1 
     Key  Value 

Mark'ın çözümüyle arasındaki fark, sunucunun kapsayıcılarla çok ilişkisi olduğunu gösterir. Aynı zamanda Eclipse Modeling Framework (EMF) proposes to implement maps.

Ayrıca, tuşların benzersiz olması gerektiğini (klişeler aracılığıyla) yapmak gibi bazı UML'ye özgü şeyler de atabilirsiniz.

1

Her şeyden önce, ben ve diğerleri düşünürken, UML, bazı önceki sürümlerinde olduğu gibi bazı temel toplama türlerini içermelidir. Onlar ancak gerçekten önemsiz IMHO için tipi, çok fazla öneme imho verir

"EMF yol"

doğru görünüyor ... OCL örneğin alınabilir, bu yüzden sadece bunu modellik yapar mısın bir ilişkilendirme sınıfı olarak. Bu, normal sınıf kullanılarak yakalanabilecek tüm haritaya özgü kısıtlamaları (örneğin çokluk) yakalamanızı sağlar, ancak bu sınıfı diğerlerininki kadar önemli yapmaz.

23

Sen nitelikli ilişki kullanabilirsiniz:

┌──────────┐    1 ┌───────┐ 
│ MyServer │Key│───────────│ Value │ 
└──────────┘    └───────┘ 

Bkz: http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Qualified+Associations/nitelikli dernek çokluğu değiştiğine dikkat ayrıca

Not (ASCII kullanarak çizmek zordur çünkü):

Üst kısım, bir sunucudan 0 n değerlerine kadar ilişkilendirmeyi gösterir. Buna karşılık, kalifiye ilişkilendirme, verilen herhangi bir anahtarın yalnızca bir değerle ilişkilendirileceğini ve bir anahtarın eksik bir değere sahip olamayacağını söyler.

+2

Bu, iki doğru cevaptan biridir. Diğeri ise Chimp. Sunucum işlemleri ve özelliklerini göstermek için "genişletilmiş" oldu –

+0

, harita ilişkiyi modellemek için MyServer öznitelik bölmesinin içinde ne gider? –

1

Kru'nun cevabı en iyisidir, ancak yine de sadece bir Haritaya işaret eder.

Bu diyagramın çizdiği soyutlama seviyesine bağlı olduğunu iddia ediyorum. Nispeten yüksekse şempanzenin cevabı ile giderdim. nispeten düşük olduğunu ve gerçekten kasıtlı uygulama ile ilgili ayrıntılı gösteren bir harita göstermek gerekirse, şu gelirdim:

haritası daha sonra kodda uygulanma biçimi
  MyServer 
       | 
       | 
       Map     
       | 
       |* 
      T1toT2 
      / \ 
      1/  \1 
     Key  Value 

tamamen alakasız (T1toT2 çalıştırıcı zaman nesneleri aslında gelmeyebilir).Eğer gerçekten gerçekten göstermek veya bir harita belirtmek gerekirse

Gabreil tarafından belirtildiği gibi

, bu da tabii bir dernek sınıfı

  MyServer 
       | 
       | 
       Map     
       | 
       |* 
      T1toT2 
       | 
       | 
      1--------1 
     Key  Value 

kullanılarak modellenebilir olabilir tek önemli olan. yanı aklıma gelen ilk şeyi, ama harita sınıf olmayı hak etmiyor hissediyor

İlgili konular