# Klassenaufbau bzw. Klassendiagramm



## tom80 (8. Jan 2005)

hallo, ich soll ein klassendiagramm erstellen und bin mir ehrlich gesagt sehr unsicher.
ich hab hier mal meinen vorschlag gepostet, vielleicht kann ja sich das ja mal bitte jemand anschauen.

die erklärung zum programm:
- Mitarbeiter sollen artikel liefern. artikel können verfasst, geändert oder gelöscht werden können
- die artikel sollen mit einer gliederungszahl und einer überschrift versehen werden können
- der leiter soll eine übersicht über den aktuellen stand der artikel einsehen können
-die artikel werden je nach gliederungszahl entsprechend eingeordnet. das ist aber meiner ansicht nach unwesentlich 
für das diagramm

schonmal vielen dank für eure hilfe.

hier das diagramm:


----------



## tom80 (10. Jan 2005)

kann bitte jemand irgendwas dazuschreiben? ich soll das ganze mittwoch abgeben und hätte ganz gern noch etwas mehr sicherheit


----------



## bellmann29 (11. Jan 2005)

Nun ja,

vielleicht helfen Dir meine Gedanken.

Nun ich kann Dir  leider kein Diagramm schicken aber es geht vielleicht auch so.

Wie wäre es mit einer Klasse "Lager" die man mit Artikeln befüllen kann. Diese sollte dann auch die entsprechenden Methoden (insertArtikel, removeArtikel, showArtikel) haben. Die Artikel können dann im Lager in einer einfachen List gespeichert werden.
Der Leiter ist doch auch ein Mitarbeiter nur ein Besonderer. Da kommt z.B. dann die Vererbung ins Spiel.
Wenn die Artikel geordnet werden sollen, wird meißt noch ein "Comparator" benötigt. Die Klasse Lager könnte dann noch eine Methode haben wie "showOrderedArtikel". Before die Liste dann zurückgegeben wird, wird sie vom Comparator geordnet.

Es sollte dann eine Assoziation zu Lager bestehen zwischen und Mitarbeiter über die schreibst, "befüllt Lager" z.B.

Nun ja versuch dass erstmal umzusetzen und poste das Diagramm. Vielleicht schau ich heute abend noch mal drauf.


----------



## tom80 (11. Jan 2005)

hi, hab das ganze eben erst gelesen und es darum leider noch kein neues diagramm. aber ich wollte nur mal verständnishalber erwähnen, dass es sich hierbei um zeitungsartikel handelt  also das mit den "artikel liefern" wird durch die drei eigenschaften danach spezifiziert.

das mit der vererbung muss ich auf jeden fall noch umsetzen, daran hatte ich überhaupt noch nicht gedacht. 
muss ich in einem klassendiagramm angeben, wie ich die werte speichere? wegen der liste etc.

wäre nett, wenn nun nochmal jemand drüber schauen könnte, ich habe noch bis morgen mittag zeit...
vielen dank schonmal.


----------



## bellmann29 (11. Jan 2005)

Nun, normalerweise wird in einem Klassen-Diagramm nichts Implementierungstechnisches angegeben (also wie speichere ich die Artikel).

Das mit den Artikeln habe ich wohl falsch verstanden. Zeitungsartikel sind natürlich was anderes und kommen in kein Lager .......... sondern in eine Ablage zur Einsicht, oder ein Repository zur Versionsverwaltung wo eine Leiter sie querliest und zum Publishing freigibt oder zurück an den Verfasser schickt. 

Weiterhin solltest Du die Multiplizitäten zwischen Mitarbeiter und Artikel tauschen. Ein Mitarbeiter verfaßt keinen Artikel (er ist faul) oder viele (er ist fleißig), ein Artikel der erstellt wurde gehört zu min. einem Mitarbeiter (vermutlich hat dann der fleißige ihn geschrieben )  

Die Beziehung zwischen Leiter und Artikeln kann ich nicht ganz nachvollziehen. Diese besteht dann eher zwischen Leiter und Mitarbeiter wenn er mehrere Mitarbeiter "unter sich hat". hat das wird dann meißt in in Form von Abteilungen modelliert oder Projektgruppen. Der Leiter ist dann Abteilungsleiter. Eine Abteilung hat wiederum viele Mitarbeiter.

Das waere dann auch eine Möglichkeit, die ich akzeptieren könnte wenn es kein Repository gibt für die Artikel

Traue Dich ruhig die Klasse Abteilung einzufügen. Wenn Du das vernünftig begründen kannst, wird kein Dozent was dagegen haben und das Model absegnen.

Es gibt immer mehr als eine Möglichkeit.



```
(Abteilung <---> Leiter, 1 <---> 1)
(Abteilung <---> Mitarbeiter, 1 <----> *)
```


----------



## tom80 (12. Jan 2005)

also ich hab das ganze jetzt mal geändert. allerdings ohne die abteilungsklasse. das steht ja so nicht in der aufgaben
stellung und ist meiner ansicht auch nicht nötig. allerdings bin ich auch absoluter neuling und lass mich gern eines
besseren belehren 
meine beschreibung wäre dafür so:
-die klasse leiter erweitert die klasse mitarbeiter (darum hab ich erstmal den leiternamen rausgenommen, id bleibt drin, oder?)
-dann gibt es die klasse mitarbeiter mit den 5 methoden die gefordert sind
-desweiteren die artikelklasse (brauch ich da überhaupt einen namen oder reicht die id?): bei der bin ich mir etwas unschlüssig ob sie wirklich die methode artikel_anzeigen braucht, da ich die ja ebenfalls in der leiterklasse hab.
ich brauch doch aber keine weitere klasse (abteilung bzw. repository), weil doch alles in den klassen passiert. die artikel werden doch in der klasse artikel gespeichert. 
zumindest war das mein plan  oder benötigt die dann noch eine methode "artikel_speichern()" in der artikelklasse? ich dachte das funktioniert durch die "erstellt-beziehung".. und nur der leiter hat die methode, sich alles anzeigen zu lassen.

und wegen den multiplizitäten: da dachte ich, das ganze wäre mit kardinalitäten bei er-modellen vergleichbar. da gibt es ja auch zwei notationen. (chen und schlageter- stucki, oder so ähnlich)

sorry, ich kenn mich bisher wirklich nicht sonderlich gut mit der sache aus. bin jetzt grad im ersten semester, das soll zwar keine ausrede sein, aber ich hab wirklich noch grosse schwierigkeiten bei derartigen aufgaben...


----------



## bellmann29 (12. Jan 2005)

Ok, es ist Schade, daß Du meinen Rat nicht befolgst, aber da kann man nichts machen. Manchmal muß man die Leute mit der Nase draufstubsen.

Frage 1? Du benutzt im ersten Semester Borland Together J ? Zumindest sehen Deine Diagramme so aus!

Frage 2? Wird in Deinem UML Tool der Code angezeigt? Ja? Dann schau Dir mal den Code an! Artikel werden nicht in Artikel gespeichert. Die Klasse Artikel speichert nur Informationen (in den Attributen) eines Artikels, nicht von vielen.
So wie Du es im Moment modelliert hast, wird in der Klasse Mitarbeiter eine "Collection" oder ein "Set" stehen, das als Bezeichner den Namen "artikel" hat.

Wie soll es jetzt weitergehen? Noch Interesse? Du solltest es Doch heute abgeben?

Noch mehr Fragen:

Wo studierst Du? Was studierst Du?


----------



## tom80 (12. Jan 2005)

also vorweg, ich studiere wirtschaftsinformatik in magdeburg. ok, die abgabe ist nicht heute sondern erst morgen früh, genauer gesagt um 8.30 uhr. ich hab nur geschrieben, dass sie heute ist, da ich mir noch etwas zeit einplanen wollte das ganze zu verstehen. sorry, aber vll kannst du das nachvollziehen.
und ja das ist borland together, ich hab mir das nicht ausgesucht, aber es ist hier auf den rechnern installiert. es reicht auch, dass diagramm morgen per hand an die tafel zu zeichnen (bzw. wird das auch passsieren), aber um es hier ins netz zu stellen, war es für mich einfacher es damit zu machen als es per hand zu zeichnen und einzuscannen.

und zum eigentlichen problem. wäre es falsch, wenn ich jetzt, wie geschrieben, eine methode "artikel_speichern" in die artikelklasse einführe?
weil in dem moment, wo ich die respository klasse einführe, weiss ich wirklich garnicht mehr, wie das diagramm aussehen soll.


----------



## bellmann29 (12. Jan 2005)

Also gut, da ich ebenfalls WI studiere werde ich Dir noch ein wenig helfen.
Also die Klasse Artikel repräsentiert einen Artikel nicht mehrere. Sie sollte nicht andere Artikel aufnehmen können. Eine  Klasse Zeitung wäre ein guter Aufbewahrungsort (Speicher) eine Zeitung ohne Artikel wäre ja nur ein weißes Blatt Papier. 
Noch mals zur Abteilung(Redaktion, was auch immer) man hat Euch sicherlich  erzählt diese Modelle stellen die Realität dar. Also wie sieht es denn im Leben aus? Hängen Leiter oder Mitarbeiter einfach im luftleeren Raum, oder gehören sie nicht zu einer Redaktion? Das kann man so weiterspinnen bis in alle Ewigkeit. Und so wird es auch gemacht.

Auch wenn das nicht in der Aufgabe steht, Du hast Dich eben sehr intensiv mit der Aufgabe beschäftigt und weitergedacht. 

Wie sieht es denn Programmiertechnisch bei Dir aus? Hast Du damit auch erst angefangen, oder bist Du da etwas weiter?

Versuch doch mal das was Du jetzt hast zu programmieren.

Ist das möglich für Dich?


----------



## bellmann29 (12. Jan 2005)

Deine Idee war nicht ganz richtig. ArtikelId und ArtikelUeberschrift sind Attribute der Klasse Artikel, das hast Du richtig.  Aber da sie "privat" (nicht sichtbar für andere Objekte) sein sollen, muß die Klasse Methoden zur Verfügung stellen, dass sie verändert werden können. Also sogenannte "setter"- und "getter"-Methoden. Du hast diese in der Klasse Mitarbeiter, das ist falsch.

Ich habe Dein Modell etwas verbessert. Die Beziehung von Mitarbeiter zu Artikel habe ich unidirektional gemacht, der Artikel muß nicht wissen, von wem er geschrieben wurde. Bei einer einfachen Assoziation werden diese ja durch Referenzen zum anderen Objekt erzeugt.

Der Leiter hat keine LeiterID bekommen, da er eine eindeutige MitarbeiterID hat. Er brauch keine zusätzliche ID.

Was soll eigentlich die Gliederungszahl genau sein? Ich hab da mal eine ID in Artikel reingepackt.


----------



## bellmann29 (12. Jan 2005)

Mist, wie kriegt man hier eine Grafik rein?


----------



## DesertFox (13. Jan 2005)

aufn webspace laden und dann link in IMG tags sehen


----------



## bellmann29 (13. Jan 2005)

Geht es etwas genauer?

Ich habe noch keien Foren-Erfahrung. Wenn man das so nennen kann.

Auf welchen Webspace? Meinen? Dem vom Forum, wenn das geht? Wie?

Danke


----------



## DesertFox (13. Jan 2005)

Also du brauchst einen eigenen webspace (gibts tausend kostenlose angebote), auf die du dein Bild drauflädst, dann bruachst du die URL des bildes, welche du dann in IMG tags setzt, dann wird das bild angezeigt


----------

