0 Daumen
2,6k Aufrufe

Fügen Sie in folgendes Klassendiagramm alle nötigen Klassenbeziehungen ein, die die Paradigmen der objektorientierten Modellierung erfüllen. Führen Sie auch entsprechende Kardinalitäten auf.

Hinweis: Die Klassennamen sind zur Vereinfachung auf Deutsch und ohne vorangestelltes „C" dargestellt, Sie müssen keine Attribute oder Methoden ergänzen.

Bildschirmfoto 2019-02-13 um 00.33.36.png 

Avatar von

Bei deiner zweiten Aufgabe kann ich dir leider nicht weiterhelfen. Ich kenne nur die Klassendiagramme in UML. Die sind schon bescheiden genug..

1 Antwort

+1 Daumen

Die Unified Modeling Language sieht in einem Klassendiagramm Kästen vor, die die Klassen darstellen. In den Kästen gibt es drei Zeilen, die obere enthält den Klassenname und Key-Wörter wie z. B. abstract.

In die Zweite Zeile kommen alle Attribute mit folgender Schreibweise:

+ Attrubutname: Typ

Wobei + für public, - für private, ~ für package und # für wird veerbt steht. In Java gibt es zwischen # und ~ keinen Unterschied, beide werden mit protected implementiert. Steht kein Zeichen davor ist üblicherweise kein Modifikator gemeint, das gibt es auch in Java (u.a.).

Der Typ wird ersetzt mit beispielsweise String oder int.

Die untere Zeile enthält alle Methoden. Auch diese werden mit Modifikator +, -, etc. versehen und der Rückgabe Typ steht hinter dem Doppelpunkt. Eine Ausnahme macht der Konstruktor. Der steht ohne ein Rückgabe Typ und mit eienm c in einem Kreis vor dem Namen: ©


Alle Kästen, die etwas miteinander zu tun haben, werden verbunden.

Verbindungen:

Klasse 1 hat irgendwas mit Klasse 2 zu tun: Assoziation (einfach eine Linie ziehen)

Klasse 1 hat ein Attribut vom Typ Klasse 2:

Aggregation (eine Linie mit einer weißen Raute am Kasten Klasse 1)

Klasse 1 ruft als einzige Klasse den Konstruktor von Klasse 2 auf und kann ohne Klasse 2 nicht existieren:

Komposition (Linie mit schwarzer Raute an Klasse 1)

Zwischen Aggregation und Komposition zu unterscheiden ist schwierig, da scheiden sich die Geister und selbst UML hat keine genaue Definition. Geh auf Nummer sicher und nutze einfach immer eine Aggregation (die schwächere von beiden).


Das war das gröbste. Es wird einfacher, wenn du nochmal googlest und dich einliest. Schreib einfach alle Informationen in die Kästen, die du aus dem Text filtern kannst und verbinde die Kästen ggf.


Grüße

Felix

Avatar von

Es ist kein text dazu geben .

Ich soll sie einfach nur verbinden ,daher auch die Schwierigkeit .

Wir sollen selbst darauf kommen wie die Beziehungen sind.

Tipps?

Bildschirmfoto 2019-02-13 um 11.45.15.png


Passt mein Diagramm so?

Ah ok. Ich verstehe.die Problematik. Ich schick dir gleich mal eine möglich Lösung. Ein paar Assoziationen sind falsch.

Alles klar .Warte drauf.Uns wird leider in der Vorlesung kaum was erklärt.:)

So, ich hab ein UML-Diagramm erstellt. Dort siehst du auch die Kardinalitäten und Optionalitäten. Wenn du dazu eine Frage hast, gerne stellen.photo_2019-02-13_13-45-39.jpg

Eigentlich sieht es logisch und verständlich aus wenn man deine Lösung sieht :)

Wieso machst du diese 1 und n?
Was ist nc?


Hier noch eine Aufgabe habe ich die richtig gelöst ?

Du scheinst dich ja gut auszukennen :)


Bildschirmfoto 2019-02-12 um 23.46.51.png Bildschirmfoto 2019-02-12 um 23.54.05.png

Ich sage dir ganz ehrlich:
UML und ERM ist das besch**** was es überhaupt gibt. Es ist kaum klar definiert und es streiten sich die Geister..
Danke für das Lob, das sind die rudimentären Kenntnisse aus dem Informatik LK Q1.


Zu den Kardinalitäten:
n, m, c kommen eigentlich vom ERM. N, M für mehrmals, c als Optionalität für 0 oder 1.
Aber du kannst auch in UML an ein Klassendiagramm Kardinalitäten schreiben. Ich hab das oben etwas abgekürzt (es ist auch faktisch falsch), normalerweise muss da hin 1..* für 1 bis viele. Oder 0 bis 2 oder was auch immer. 

Die Verbindungen:
Schwarze Raute: Komposition; eine Teil-Ganzes Beziehung, wobei das Ganze ausschließlich existiert, wenn Teil existiert. Quasi ein Kuchenstück für einen ganzen Kuchen.

Weiße Raute: Aggregation; ebenfalls eine Teil-Ganzes Beziehung, allerdings weitaus weniger stark als die Komposition. Mehr Infos gibt's zum Unterschied zwischen Komp. und Aggr. nicht von UML... Daher mein Tipp: wenn du es nicht eindeutig sagen kannst, nimm die weiße Raute, du kannst immer zu deinen Gunsten argumentieren.

Eine einfache Linie: Assoziation; die haben einfach was miteinander zu tun, sind aber unabhängig

Weißes Dreieck: Superklasse; die Klasse mit dem Dreck vererbt ihre Methoden und Attribute an die verbundenen. Oft verwendet.

Es gibt auch noch eine Linie mit Pfeil, einmal gestrichelt, das bedeutet sowas wie, eine Klasse A nutzt ein Interface I. Dann zeigt der Pfeil auf das Interface.
Was genau durchgezogene Linien mit Pfeil bedeuten, kann ich dir leider auch nicht erklären, das verstehe ich selbst nicht...

Am besten hier mal vorbei schauen:
https://www.uml-diagrams.org/class-diagrams-overview.html


Gruß

Was sagst du zu meinem Zustandsautomat ? Falls du Zeit hast :)

Echt scheisse wirklich.

Man weiss nie ob man es richtig löst oder nicht

Noch da Felixius ?

Entschuldige bitte. Ich schaue es mir später an.

Danke bitte dann gerne Lösung posten :)

Also, das Diagramm ist fast richtig:

Dein Startpunkt wird in FR 05 definiert:

Standby


Also, der Startknoten ist Standby.

Von da aus geht eine Verbindung zu Heizen weg, wenn die Temperatur unter 18° fällt, dann soll geheizt werden, bis es 22° sind. Das macht man dann so:

Der Zustand geht von Standby weg, nämlich zum Zustand Heizen. Und sobald ich in diesem Zustand 22° messe, geht's wieder zurück in den Standby Zustand (->FR 04).

Jetzt gibt es noch die Möglichkeit, dass im Standby Zustand die Temperatur zu hoch wird. In FR02 und FR03 werden dazu zwei Möglichkeiten genannt:

Einmal: Heizen, wenn C≤50% (kleiner gleich) und die Temperatur≥35° steigt. Dann soll die Kühlung im Sparmodus laufen, bis Temperatur 30° erreicht hat. Also: von Standby geht eine Verbindung zu einem Sparmodus-Kühlen Zustand und von dem wieder zurück zu Standby.


Dann, wenn C>50% und Temperatur≥27° ist, soll volles Rohr gekühlt werden, bis die Temperatur unter 25° ist.

Also, Verbindung von Standby zu Power-Kühlen Zustand und von da zurück zu Standby.



Damit hätten wir alle Bedingungen erfüllt. Wenn die Klimaanlage aber smart sein soll, können wir noch etwas hinzufügen:

Sollte während des Kühlvorgangs die Kapazität von kleiner gleich 50 auf über 50% steigen, können wir vom Spar-Kühlen zum Powerkühlen wechseln. Das sogar ohne die Temperatur überprüfen zu müssen, denn wenn wir im Spar Modus sind, ist die Grenztemperatur und Solltemperatur immer größer als die vom Powermodus.

Dann noch Verbindung in die andere Richtung. Sinkt die Kapazität auf kleiner gleich 50% beim Kühlen, können wir in den Spar Modus wechseln. Aber nur, wenn die Temperaturbedingungen erfüllt sind!



Ich hoffe ich konnte helfen.


Gruß

Noch eine letzte frage zu Sequenzdiagramm falls du Zeit hast.

Das ist für mich auch neu Land :)

Ich habe es so gelöst:


Bildschirmfoto 2019-02-13 um 23.17.05.png Bildschirmfoto 2019-02-13 um 23.22.27.png


Ich war mir auch paar Stellen unsicher aber habe es mal so zu Ende gebracht ?

Wusste auch nicht wie ich genau die Methoden bezeichnen soll?
Hoffe du kannst mir hier auch noch helfen :)

Mit Sequenzdiagrammen kenne ich mich leider überhaupt nicht aus. Nach einem Briefing mit Wikipedia denke ich aber, dass es soweit richtig sein sollte.

Bildschirmfoto 2019-02-17 um 02.02.47.png Bildschirmfoto 2019-02-17 um 02.06.12.png


Was sagst du zu dem Aktivitätsdiagramm ?

Tut mir Leid, auch da bin ich überfragt... Falls du wirklich Hilfe brauchst, verfasse am besten eine neue Frage. UML hatte ich bisher nur für Klassendiagramme genutzt. Es gibt bestimmt andere hier im Forum, die  dir besser helfen können. Die Kommentare liest kaum einer..

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
1 Antwort
0 Daumen
1 Antwort
0 Daumen
0 Antworten

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community