Hi, da bin ich wieder. Jetzt zu den UML-Diagrammen
. Ich habe hier gerade das Aufgabenblatt offen.
Da ist hier ja so eine URL angegeben. Die solltet
ihr eingeben. Müsst ihr euch dann irgendwie, glaube ich,
kostenlos registrieren oder so. Zumindest war das bei mir so.
Und kommt dann zu so einer Vorlage von einem UML-Diagramm.
Ich habe das mal eingegeben. Und was man dann sieht,
ist das da. Hiermit könnt ihr noch nichts machen.
Ihr könnt es hoch und unterschieden. Das ist aber auch
alles. Das könnt ihr nicht bearbeiten, arbeiten im Aufgabenzettel
steht ja auch drin, dass ihr das Ganze duplizieren sollt.
Da geht ihr dazu hier auf Pfeil.
Und irgendwo steht,
hier steht Duplicate
Wenn wir da jetzt draufklicken, dann können wir hier einen Namen vergeben.
Hier nimmt er einfach Default-mäßig Copy-off und dann das,
was er vorher schon stand.
Ich nehme das jetzt einfach mal so.
Und dann dauert es bei mir ein ganz klein bisschen.
Und jetzt lädt er irgendwas. Also normalerweise ist mein Internet
nicht ganz so langsam, aber vielleicht ist es auf deren Seite.
Und jetzt sehen wir hier an der Seite auch schon
ein paar Shapes
Die sind so in Kategorien eingeteilt. Hier unten ist UML-Klassendiagramm,
Use-Case-Diagramm und noch ein paar andere. Jetzt könnten wir hier
damit arbeiten. Aber erstmal möchte ich euch,
wollte ich euch ja nochmal die ganzen Pfeiltypen in Erinnerung
rufen und kann euch bei der Gelegenheit auch gleich zeigen,
wie ihr ein eigenes Diagramm macht.
Wir gehen dann hier einfach auf Pfeil, New,
Dunshed a Blank, Document, klicken wir mal drauf.
Und dann kommt hoffentlich, hoffentlich, Wenn der Browser zu Ende gerödelt hat.
Neues, leeres Dokument. Bei den Shapes haben wir jetzt
deutlich weniger. Wir haben vor allen Dingen UML nicht dabei.
Ist aber nicht weiter wild, weil wir können hier auf
das Wort Shapes klicken. Kriegen dann hier eine Auswahlliste.
Und wenn wir ziemlich weit nach unten scrollen,
ist hier unten UML
Da gehe ich hier nochmal auf diesen kleinen Pfeil.
Dann geht das nochmal weiter auf. Klassendiagramm, Use Case
Diagramm, Zustandsdiagramm, Sequenzdiagramm. Wir brauchen zumindest bis auf Weiteres
erstmal nur das Klassendiagramm. Wenn ich jetzt hier bei OML
einfach reinklicken würde, würde ich sie alle kriegen.
Ich mache mir aber gerne den Arbeitsplatz so wenig voll wie möglich.
Deswegen nehme ich jetzt hier einfach mal einfach das Klassendiagramm hake
ich nur an und sage, ja mach.
Dann haben wir hier unten Die ganzen Dinge, die zum Klassendiagramm gehören,
die in normalen Shapes, brauche ich eigentlich auch nicht.
Flow Chart brauche ich eigentlich auch nicht. So,
und jetzt kann ich euch da mal ganz kurz nochmal die
Pfeile in Erinnerung rufen, die es da so gab.
Wenn wir hier so draufgehen, dann geht gleich so ein Kontextmenü auf mit Klaas.
Klaas haben wir offensichtlich in drei Formen. Das hier ist das,
was wir wahrscheinlich dann später auch mal öfter benutzen werden,
wo dann die ganzen Attribute und Methoden drinstehen.
Also Exemplarvariablen heißen in der UML Attribute, aber wir können
hier jetzt auch einfach mal so einen einfachen Kasten nehmen,
den ziehe ich hier einfach rüber
Und da der Name Klaas für so einen Klassennamen nicht besonders aussagekräftig ist,
klicke ich hier einfach zweimal drauf und nehme den deutlich aussagekräftigeren Klassennamen A.
Und dann ziehe ich mir hier nochmal so eine Klasse rein.
Und nennen die dann spannenderweise B. So,
und angenommen Klasse A
hat eine Exemplarvariable vom Typ
Dann würden wir ein Pfeil, hier oben haben wir die Pfeile,
wir können ja auf dieses kleine Dreieck klicken,
dann gehen die hier auf.
Wir haben ein Pfeil mit offener Pfeilspitze und durchgezogener Linie.
Hier haben wir gleich die Linie, den Linientypen von dem Pfeil.
Und jetzt können wir einfach von hier nach hier
ein Pfeil ziehen. Und haben damit gesagt, okay,
klasse A hat offensichtlich eine Exemplare Yable von Typ B.
Ziehe ich hier nochmal zwei
Klassenreihen. Ich bleibe bei meiner langweiligen Benennung, nenne die einfach C.
Und die nenne ich. Die nenne ich D. So,
wenn jetzt in Klasse C eine Methode ist mit einem
formalen Parameter vom Typ D. Ihr habt eine Methode,
do something und die nimmt einen Parameter entgegen
Und dieser Parameter ist vom Typ D. Dann hätten wir hier
wieder eine offene Pfeilspitze. Aber mit einem gestrichelten Schaft,
das ist wahrscheinlich am ehesten der hier.
Und dann können wir hier auch wieder das so rüberziehen.
Und haben dann damit ausgedrückt, in Klasse C, existiert eine Methode.
Die hatten formal ein paar Rahmeter vom Typ D. Wenn wir beides haben,
ja, also wenn wir eine Klasse C hätten,
in der sowohl eine Exemplarvariable vom Typ D ist,
als auch eine Methode mit einem formalen Parameter vom Typ D,
dann würde die Exemplarvariable overruleen und wir hätten hier nur einen durchgezogenen Pfeil.
Das Letzte, was ich euch als kleine Wiederholung noch zeigen will,
ist, wenn wir eine Klasse haben, eh meinetwegen,
die ein Interface implementiert,
wieso ist das jetzt so gestrichelt
Keine Ahnung, warum das jetzt so gestrichelt ist.
Eigentlich habe ich es so nicht gewollt. Ich mache das
mal weg. Okay, aus irgendeinem, ah,
wahrscheinlich, weil ich hier oben den Linientyp umgestellt habe.
Das ist ja verrückt. Und schon haben wir es wieder durchgezogen.
Dieser Linientyp scheint offensichtlich nicht nur zu gelten für die Pfeile,
so wie es sinnvoll wäre, sondern der macht in den Linientypen für alles.
Okay, das Ding nennen wir jetzt mal eh.
Und diese Klasse soll ein Interface implementieren,
Interface ist das hier,
das sieht man aus dem Kontextmenü heraus
Das ziehen wir mal hier rüber. Und was wir
dann brauchen, ist ein Pfeil mit einer geschlossenen Spitze.
Also das Ding hier. Und wieder gestrichelt.
Aber ich mache jetzt hier erst nochmal das Interface durchgezogen.
Das Interface. Na. In der durchgezogenen Linie.
Weil es schöner ist. Jetzt baue ich aber für den
Pfeil tatsächlich die gestrichelte. Die suche ich mir hier raus
Das ist, wenn Klasse E, das Interface Interface implementiert.
Also nochmal ganz kurz zur Wiederholung.
Klasse A hat eine Exemplare, Jable vom Typ B.
Also durchgezogener Pfeil mit offener Spitze von A zu B. Klasse
C hat eine Methode mit einem formalen Parameter vom Typ D,
also gestrichelter Pfeil mit offener Pfeilspitze von C
Die Klasse E implementiert das Interface, Interface. Also habt ihr
einen gestrichelten Pfeil mit geschlossener Pfeilspitze von E zum Interface.
Das sind erstmal die Pfeiltypen, die ihr bisher kennt.
Da kommt dann noch Vererbung dazu. Aber das liegt ja später. So,
wenn wir jetzt wieder uns im Prinzip den Vordruck hier zu
unserer Aufgabe angucken, dann ist ja einiges schon da,
was wir da nehmen sollen.
Oder es sind die Klassen, beziehungsweise Interface ist schon da,
die uns hier interessieren sollen.
Also müssen wir mal gucken, mit welchen Pfeilen wir die verbinden.
Ich werde jetzt mal so ein paar exemplarisch machen und nach
dem System könnt ihr dann auch den Rest machen.
Ich gehe jetzt mal zurück zu Eclipse. Und hier hatten
wir die Klasse CD, die wir vorhin als Beispiel hatten,
die implementiert das Interface-Medium. Also gehen wir gleich hier wieder hin,
haben hier die Klasse CD, haben hier das Interface-Medium.
Wir wissen, wir brauchen einen Pfeil mit geschlossener Spitze
Und gestricheltem Schaft und magen also quasi jetzt hier diesen Implements-Pfeil hin.
Okay, dann haben wir CD-Implements-Medium schon abgefrühstückt. Dann gehen wir
CD weiter durch. Wie sieht es mit den Exemplarva-Jablen aus?
Das sind alles, also entweder primitive Datentypen oder klasse
String ist ja von Java vorgefertigt, ja, war vorgefältigt.
Die Klassen interessieren uns in so einem URML-Diagramm in den allermeisten
Fällen nicht. Also gucken wir weiter hier im Konstruktor
Haben wir String, String, String, Int,
interessiert uns auch nicht weiter. Hier haben wir Rückgabetyp, String.
Also interessiert uns klasse, CD jetzt einfach nicht mehr weiter.
Also gucken wir mal wieder zurück, was gibt es denn sonst noch so?
Wir haben zum Beispiel hier die klasse Kunde,
also gehen wir hier mal und suchen uns Kunde raus,
klicke ich zweimal drauf, kriegen wir hier Kunde.
Hier haben wir jetzt, die klasse Kunde implementiere kein Interface,
das sehen wir hier,
weil da steht nichts
Aber sie hat eine Exemplarvariable vom Typ Kundennummer
und ein Exemplarvariable vom Typ PLZ, also Postleitzahl allerhöchstwahrscheinlich.
Also ziehen wir von Kunde zu Kundennummer und Postleitzahlen.
Ein Pfeil mit offener Spitze. Und durchgezogener Linie.
Also einmal von da nach da. Und dann nochmal von
danach da. Dann gucken wir uns Kunde weiter an
Beim Exemplar war, ja, dann haben wir nichts mehr.
Wir haben hier im Konstruktor einen formalen Parameter vom Typ Kundennummer,
aber hatte ich ja gerade gesagt, Exemplar variable, overruled das.
Also wir machen jetzt nicht zwei Pfeile dahin,
sondern nur denjenigen, der stärker ist.
Und das ist eben der mit Exemplar variable,
also der durchgezogen, den haben wir schon gemacht.
Haben wir hier sonst noch irgendwas anderes drin.
Hier haben wir nirgendwo irgendwelche formalen Parameter noch
Das sieht so aus. Hier haben wir nochmal einen formalen
Parameter, aber da hatten wir auch eine entsprechende Exemplarvariable.
Da kommt also auch nicht mehr viel. Dann könnten wir
uns die nächste Klasse angucken. Nehmen wir mal Verleihkarte,
da wird wahrscheinlich relativ viel sein, das werde ich
wahrscheinlich nicht alles malen, sondern auch einiges euch überlassen.
Ich gucke da einfach jetzt mal so spaßeshalber rein.
Verleihkarte haben wir hier,
Doppelklick da drauf
Da haben wir hier wieder, es wird nichts implementiert.
Wir haben zwei, nein,
wir haben drei Exemplarvariablen vom Typ Datum, Kunde und Medium.
Dann gucken wir hier nochmal bei der Verleihkarte.
Was hat man gesagt? Datum, Kunde, Medium.
Das heißt, wir haben hier einen Pfeil mit offener Spitze
und der durchgezogen ist von Verleihkarte.
Vom Verleihkarte zum Interface-Medium
Und ich gucke jetzt nochmal nach, dann noch zu Datum und Kunde.
Okay, ich verschiebe mir das Ganze jetzt mal ein bisschen,
damit nicht zu viel über Kreuz geht.
Ich mache mal CD hier einfach nach oben. Uiuiuiui,
das ist ja hässlich. Also das geht schöner,
ich mache das jetzt mal aus Zeitgründen hässlich. So,
und dann machen wir nochmal so ein Pfeil mit geschlossen,
äh, mit offener Spitze und durchgezogen zu Kunde.
Und zu, na, irgendwie so ein Einflugkämpferungspunkt zum Datum. Das mit dieser,
dieses File-Ding, das stört mich ja jetzt tatsächlich,
das mach ich mal wieder weg mit Entfernen,
verschiebt mir CD irgendwie schöner hin und mach mir nochmal einen Pfeil mit geschlossener Spitze.
Da haben wir, der gestrichelt ist, damit sich hier nicht
zu viel Überkreuzt mache ich ihn einfach nochmal so von Hand.
So, hier haben wir wieder formale Parameter, ein Konstruktor,
aber da hatten wir alle schon als Exemplarer.
Ja, bin auch die Typen. Und dann haben wir hier
noch was Geldbetrag. Wir erzeugen hier was vom Typ Geldbetrag.
Da tun wir so, als hätten wir ein Exemplarvariable.
Das heißt, wir nehmen hier auch den Pfeil mit offener
Spitze, der aber durchgezogen ist
Oh je, jetzt hatte ich mir das so nach unten
gezogen und jetzt, also ich ziehe Geldbetrag einfach hier runter.
Zack. So, offene Spitze, durchgezogene Linie.
Zack. Und dann gucken wir noch mal ein bisschen weiter.
Es wäre jetzt schön, wenn wir irgendwo einen formalen
Parameter hätten
Okay, also ich habe jetzt hier nichts gefunden mit einem formalen Parameter,
was wir noch nicht als Exemplarvariable hatten. Aber ihr wisst dann ja genau,
ihr könnt dann von der entsprechenden Klasse,
ich gehe jetzt nochmal zu unserem ganz einfachen Beispiel,
wenn wir jetzt was haben, wie gesagt,
eine Methode in Klasse C, mit einem formalen Parameter vom Typ D,
dann hätten wir diese Pfeilart, das heißt offene Spitze gestrichelt.
Da habe ich jetzt in unserem kurzen Beispiel nichts gefunden,
aber nach dem System geht ihr im Prinzip jede Klasse,
die ihr hier dem Diagramm habt, und auch jedes Interface,
weil dieses Interface hat ja sämtliche Methodenköpfe.
Operationen nennt man das in einem Interface. Und da werdet ihr
dann ja auch irgendwelche formalen Parameter unter Umständen drin haben.
Nach dem System geht ihr das ganze Ding durch.
Und so löst ihr dann die UML-Aufgabe. Das war's von
mir für heute. Ja, und wir sehen uns dann
nächste Woche.
Also bis dann.