2 Stimmen

UML-Hilfe C#-Entwurfsprinzipien

Ich habe ein Problem mit dem Verständnis einer UML:

UML Image

Wie ist insbesondere die Beziehung zwischen PersistentSet y ThirdPartyPersistentSet ? Wie ist die Beziehung zwischen PersistentObject y ThirdPartyPersistentSet ?

Bitte beachten Sie, dass die UML aus Agile Principles, Patterns, and Practices in C# stammt. Von Martin C. Robert, Martin Micah 2006. Kapitel 10

Vielen Dank im Voraus!

2voto

SwDevMan81 Punkte 47339

Wie ist die Beziehung zwischen PersistentSet und ThirdPartyPersistentSet im Einzelnen?

Die Vollraute <|>-----> ist Composition ("hat ein"), wobei die "Teile" zerstört werden, wenn das "Ganze" zerstört wird. In der Abbildung unten, wenn Sie ein Auto zerstören, zerstören Sie den Vergaser.

Die leere Raute < >-----> ist Aggregation ("hat ein"), wobei die "Teile" möglicherweise nicht zerstört werden, wenn das "Ganze" zerstört wird. In der Abbildung unten werden bei der Zerstörung eines Teichs nicht unbedingt die Enten zerstört (sie ziehen in einen anderen Teich, wenn sie klug sind).

Composition
(Quelle: <a href="http://upload.wikimedia.org/wikipedia/en/thumb/9/9f/AggregationAndComposition.svg/220px-AggregationAndComposition.svg.png" rel="nofollow noreferrer">wikimedia.org </a>)

Wie ist die Beziehung zwischen PersistentObject und ThirdPartyPersistentSet?

Dies ist ein Abhängigkeitsverhältnis. Siehe meine Antwort aquí für weitere Informationen.

Wann also wird aus einer Abhängigkeitsbeziehung eine Assoziationsbeziehung, wenn man die Parameterübergabe nutzt?

Wenn Sie den Parameter lokal speichern, wird er von einer Abhängigkeitsbeziehung zu einer Assoziationsbeziehung. Wenn Sie den Parameter nur lokal verwenden, bleibt er ein Abhängigkeitsverhältnis.

C# Code Beispiel:

// Association 
public class ThirdPartyPersistentSet
{
    private PersistentObject _object;
    public ThirdPartyPersistentSet(PersistentObject obj)
    {
        _object = obj; // Store it to a local variable.
        // Now ThirdPartyPersistentSet 'knows' about
        // the PersistentObject.
    }
}

// Dependency
public class ThirdPartyPersistentSet
{
    public ThirdPartyPersistentSet(PersistentObject obj)
    {
        obj.GetSomething(); // Do something with obj,
        // but do not store it to a local variable.
        // You only 'use' it and ThirdPartyPersistentSet
        // does not 'know' about it.
    }
}

1voto

ckramer Punkte 9351

Die Beziehung zwischen PersistentSet und ThirdPartyPersistentSet ist eine Aggregation, d. h. das PersistentSet enthält eine oder mehrere ThridPartyPersistenSet-Instanzen. Dies ist eine "schwache" Beziehung, d. h. die Instanzen von ThirdPartyPersistentSet können außerhalb des PersistentSet existieren.

Die Beziehung zwischen PersistentObject und ThirdPartyPersistentSet ist eine Abhängigkeit, was bedeutet, dass ThirdPartyPersistentSet ein PersistentObject benötigt, um seine Arbeit zu erledigen.

Um dies in Code zu übersetzen, würde Ihr PersistentSet also etwas wie dieses enthalten:

public class PersistentSet
{
    public List<ThirdPartyPersistentSet> Items { get; }
    ...
}

Und Ihr ThirdPartyPersistentSet würde etwa so aussehen:

public class ThirdPartyPersistentSet
{
    private PersistentObject _object;
    public ThirdPartyPersistentSet(PersistentObject obj)
    {
        _object = obj;
    }
    ...
}

0voto

Ray Tayek Punkte 9433

Wie ist die Beziehung zwischen PersistentSet und ThirdPartyPersistentSet im Einzelnen?

PersistentSet has-many ThirdPartyPersistentSets

Wie ist die Beziehung zwischen PersistentObject und ThirdPartyPersistentSet?

ThirdPartyPersistentSet ist abhängig von (verwendet ein) PersistentObject

alle linien in einem uml-klassendiagramm zeigen abhängigkeiten der einen oder anderen art an, mit ausnahme der gestrichelten linien zu einem kommentar (eselsohren). eine durchgezogene linie ohne pfeile zeigt eine zweiseitige (bidirektionale) abhängigkeit an.

0voto

Gustavo Mori Punkte 8033

Die schwarze Raute steht für Zusammensetzung (d. h. ein Feld des Typs, auf den der Pfeil zeigt): PersistentSet Entitäten enthalten ThirdPartyPersistentSet Einrichtungen Wenn PersistenSet zerstört wird, werden alle enthaltenen ThirdPartyPersistenSet-Objekte ebenfalls zerstört.

Die gestrichelte Linie steht für Abhängigkeiten (z. B. einen Funktionsaufruf mit einem Parameter des durch den Pfeil angegebenen Typs): ThirdPartyPersistentSet hängt ab von PersistentObject

Weitere Einzelheiten finden Sie im Wikipedia-Eintrag

0voto

StanislawSwierc Punkte 2441

Wie ist die Beziehung zwischen PersistentSet und ThirdPartyPersistentSet im Einzelnen?

http://en.wikipedia.org/wiki/Class_diagram#Aggregation

Wie ist die Beziehung zwischen PersistentObject und ThirdPartyPersistentSet?

http://en.wikipedia.org/wiki/Class_diagram#Dependency

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X