2016-03-22 9 views
1

Ich beginne mit einer Software, die den Umgang mit Wahrscheinlichkeitsverteilungen beinhaltet.Klassendiagramm für Wahrscheinlichkeit

Ich versuche, es mit Hilfe von Klassendiagrammen zu entwerfen, und stieß auf ein Designproblem, das ich hier extrahiert habe (es noch nicht kodieren).

Class diagram for probability

Ich habe zwei Zufallsvariable Instanzen bekam, X und Y. Sie eine Wahrscheinlichkeit haben, die ich als P subclassed habe (X) und P (Y) von Wahrscheinlichkeit.

Sollte ich eine "Wahrscheinlichkeit der" Assoziation von den variablen Instanzen zu den Wahrscheinlichkeitswerten haben? Oder ist das eine Redundanz in meinem Design?

Ich denke, in Bezug auf den tatsächlichen Code hätte ich nur eine Assoziation zwischen P (X) -Werten und meinen X-Instanzen ... würde das bedeuten, dass die Assoziation mit der Oberklasse Wahrscheinlichkeit redundant ist?

Wenn ja, hätte ich eine unbestimmte Anzahl von Assoziationen für eine nicht spezifizierte Anzahl von zufälligen Variablen Instanzen ... obwohl das könnte tatsächlich sein, wie mein Code aussehen würde. Wären diese Assoziationen nicht im Diagramm und nur eine Assoziation mit der Oberklasse "Probability", um mein System zu beschreiben?

für meine Gründe, dies in UML ausdrücken (reagiert unter Kommentar): Ich glaube, ich könnte meine Wahrscheinlichkeiten als nur eine Funktion auf einige Objekte und speichern diese in einer Art Karte auszudrücken ... dann eine Funktion haben, die sicherstellt Invarianz, dass die Summe aller Wahrscheinlichkeiten zu 1 usw. summiert ... dann könnte ich mehr Daten hinzufügen und meine gesamte Map erneut bearbeiten und bearbeiten ... was sich auf gemeinsame Verteilungen auswirken würde ... und so weiter und so weiter, um Komplexität hinzuzufügen und jede Art von Verfahrensansatz ziemlich unordentlich zu machen. Nicht, dass ein prozeduraler Ansatz nicht funktionieren würde, aber ich möchte wirklich ein klares, objektorientiertes Bild der Software, die ich bauen werde. Klassendiagramme scheinen ein ziemlich gutes Werkzeug dafür zu sein. Ich möchte jede Verteilung als ein Objekt betrachten, nicht als etwas, das prozedural erzeugt wird.

+0

Sie sollten die Gründe für das Ausdrücken eines anderen mathematischen Problems mit UML näher ausführen. Eine Wahrscheinlichkeit als solche ist keine Klasse. Es ist eine Funktion für ein Objekt. –

Antwort

1

Übersicht

Sie brauchen nicht die "Wahrscheinlichkeit der" Assoziationen von "Y" zu "P (Y)" oder "X" zu "P (X)". Sie sind redundant.

Ihre "Probability Of" -Klasse oder Objekt repräsentiert eine Assoziation. Belassen Sie die Zuordnungen dieser Klasse zu einem Objekt.

Manchmal kann eine Operation, Methode oder Assoziation auch als eine Klasse oder als eine Instanz einer Klasse (a.k.a. "Variable") dargestellt oder konzeptualisiert werden.

Lange Boring Erweiterte Antwort

Modellierung Objekte, Klassen und Verbände, vielleicht ein wenig umständlich sein.

Sie haben eine Variable, die irgendwann einen Wert haben wird.

Objekt Diagramm 1 (Incomplete)

............... 
..+---------+.. 
..| 5 |.. 
..+---------+.. 
............... 

Da wurde UML-Programme zur Modellierung entwickelt, müssen Sie den Typen angeben, in diesem Fall ist Ihr Wert nicht um ein vollständiges Objekt, nur ein Fließkommazahl.

Objekt Diagramm 2 (unvollständige)

............... 
..+---------+.. 
..| Float |.. 
..+---------+.. 
..| 5 |.. 
..+---------+.. 
............... 

Wenn es komplexe Werte war, Sie Eigenschaften verwenden können, Methoden und andere UML-Funktionen, aber von dem Moment, dann ist dies nicht der Fall.

Es könnten auch andere Werte sein, für das gleiche Konzept oder eine Variable, zB:

Objekt Diagramm 3 (Incomplete)

............................ 
..+---------+..+---------+.. 
..| Float |..| Float |.. 
..+---------+..+---------+.. 
..| 5 |..| 3.1416 |.. 
..+---------+..+---------+.. 
............................ 
..+---------+..+---------+.. 
..| Float |..| Float |.. 
..+---------+..+---------+.. 
..| -55.12 |..| 0 |.. 
..+---------+..+---------+.. 
............................ 

Jeder der Wert mehrere andere Werte aufweisen können, die darstellen, Die Wahrscheinlichkeit.

Daher gibt es eine Zuordnung zwischen jedem ursprünglichen Wert und den Wahrscheinlichkeitswerten.

Lassen Sie uns einige Objektbeispiele modellieren.

Objekt Diagramm 4 (Incomplete)

.................................... 
..+---------+..........+---------+.. 
..| Float |..........| Float |.. 
..+---------+..........+---------+.. 
..| 5 +-------+--+ -444 |.. 
..+---------+.......|..+---------+.. 
....................|............... 
....................|..+---------+.. 
....................|..+ Float |.. 
....................|..+---------+.. 
....................+--+ 0 |.. 
....................|..+---------+.. 
....................|............... 
....................|..+---------+.. 
....................|..| Float |.. 
....................|..+---------+.. 
....................+--+ +1 |.. 
.......................+---------+.. 
.................................... 

Es könnte mehr Beispiele für jeden ursprünglichen Wert sein, und seine Wahrscheinlichkeitswerte, aber könnte es sehr kompliziert sein, sie zu vertreten.

Ändern wir dieses Beispiel Objektdiagramm zu einem konzeptionelleren Klassendiagramm.

Sie haben eine Klasse diagran, die eine Variable darstellt oder durch eine Variable instanziiert werden kann. In einem bestimmten Moment speichern Sie den Wert dieser Variablen.

Und, nennen wir es'X'.

Klassendiagramm 5 (unvollständige)

.................. 
..+------------+.. 
..| X: Float |.. 
..+------------+.. 
.................. 

Denken Sie daran, dass'X' darstellt oder nur einen einzigen Wert, zu einer Zeit, aber kann es ändern.

Nun kann es mehrere Wahrscheinlichkeitswerte für'X' geben. Lassen Sie uns alle von ihnen mit einer einzigen Klassenbox anstelle von vielen vertreten.

Und nennen Sie sie'PX' ohne die Klammern, weil sie nicht als Variablen- oder Klassennamen in UML verwendet werden können.

Klassendiagramm 5 (unvollständige)

........................................ 
..+------------+........+------------+.. 
..| X: Float |........| PX: Float |.. 
..+------------+........+------------+.. 
........................................ 

Da dieses Wertepaar verbunden sind, lassen Sie uns noch eine Zeile in den Verein zu vertreten.

Klassendiagramm 5 (unvollständige)

........................................ 
..+------------+........+------------+.. 
..| X: Float +--------+ PX: Float |.. 
..+------------+........+------------+.. 
........................................ 

Aber für jeden Wert von'X' können mehrere Werte von'PX' sein, lassen Sie uns einen Diamanten hinzuzufügen anzuzeigen.

Es gibt Fälle, in denen es eine Eins-zu-eins-Zuordnung gibt, aber dieser Fall ist eine Eins-zu-viele-Verknüpfung.

Klassendiagramm 6

........................................ 
..+------------+...../\.+------------+.. 
..| X: Float +----< >+ PX: Float |.. 
..+------------+.....\/.+------------+.. 
........................................ 

Der Diamant in der Nähe der Box, die "viele" Werte darstellen gezogen wird.

Fügen wir ein optionales Label hinzu, um das Ziel der Assoziation zu erklären.

Und ein Pfeil, der angibt, wie dieser Pfeil angewendet wird.

Klassendiagramm 7

........................................ 
..........<<..Probability Of............ 
..+------------+...../\.+------------+.. 
..| X: Float +----< >+ PX: Float |.. 
..+------------+.....\/.+------------+.. 
........................................ 

Zusammenfassung

Es gibt mehrere Arten von Verbänden sein können, verwenden Sie die "Vererbung" Assoziation, die nicht zu Ihrem Fall nicht anwendbar.

Objektdiagramme sind gut für bestimmte Beispiele und haben Werte, und verwendet keine Variablen häufig.

Klassendiagramme sind Konzeptualisierungen und haben normalerweise Variablen oder Eigenschaften und verwenden Werte nur für Anfangswerte oder Konstanten.

Viele UML-Entwickler, überspringen Objektdiagramme und verwenden Klassendiagramme direkt, um ein Szenario darzustellen. Altoughth, Objektdiagramme, sind immer noch nützlich.

"Objektdiagramme" werden mit gerundeten Kästchen dargestellt, Klassendiagramme verwenden scharfe Ecken. Ich konnte sie mit den ASCII-Beispielen nicht gut darstellen.

Die Hintergrundpunkte erscheinen nicht in einem UML-Diagramm, ich benutze es nur, um die Diagramme hervorzuheben.

+0

Ich denke, dass Objektdiagramme für mich nützlich sein könnten, um ein bestimmtes Beispiel darzustellen, bevor ich zu einem Klassendiagramm übergehe (generalisierend von einem Beispiel). Ich werde das überarbeiten. Vielen Dank. –

1

Von „Ich habe 2 Zufallsvariablen Instanzen“ Ich verstehe, dass X und Y Objekte sind und random variables Klassen sind.

Wenn Sie Objekte darstellen möchten, müssen Sie UML object diagrams verwenden. Aber wenn Sie eine class diagram wollen, sollten Sie die Objekt-Instanziierungen loswerden und nur ihre Klassen betrachten, d. H. random variable, probability und probability distribution of variable (aka P (x), P (y), die durch Funktionen dargestellt werden könnten).

Es ist nicht klar aus Ihrer Erklärung, wenn probability einen Wahrscheinlichkeitswert oder -satz bedeutet, oder wenn Sie einige Basiswahrscheinlichkeitsgesetze meinen. Im ersten Fall würden Sie eine Zuordnung von probability distribution of variable mit probability verwenden. In der zweiten könnte man eine Generalisierungsbeziehung in Betracht ziehen.

+0

Ich wusste nichts über Objektdiagramme ... danke. –