Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

ich bin gerade dabei ein Klassendiagramm zu erstellen. Die Klassen hab ich auch soweit ohne Probleme abbilden können jetzt fehlen mir nur noch die Beziehungen.

Ich habe schon Rausgefunden das es drei verschiedene Arten gibt:

Abhängigkeiten

Assoziation

und Aggregation

Unter Aggregation kann ich mir noch was vorstellen. Wo ist aber der Unterschied zwischen einer Abhängigkeit und einer Assoziation??

Kann mir das einer mit einem einfachen Beispiel erklären?

Welcher Fall liegt zum Beispiel vor wenn ich aus einem Objekt die Methode eines anderen Objektes aufrufe?

Geschrieben

Hi!

Also...

Eine Assoziation beschreibt eine Relation zwischen Klassen, d.h. die gemeinsame Semantik und Struktur einer Menge von Objektbeziehungen. Es werden gerichtete Assoziationen (nur einseitig direkt navigierbar) und bidirektionale Assoziationen (beidseitig direkt navigierbar) unterschieden. Die beiden Enden einer Assoziation sind sogenannte Assoziationsrollen.

Eine Abhängigkeitsbeziehung ist eine Beziehung zwischen zwei Modellelementen, die zeigt, daß eine Änderung in dem einen (unabhängigen) Element eine Änderung in dem anderen (abhängigen) Element notwendig macht. Ein einfaches Beispiel fällt mir hierfür auf Anhieb leider nicht ein, aber ich denke unter der Beschreibung kann man sich schon was vorstellen.

Zum Aufruf von Methoden kann ich nur sagen:

Der Aufruf bzw. die Ausführung einer Methode ist davon abhängig, ob sie innerhalb oder außerhalb der Klasse aufgerufen wird, in der sie deklariert ist, und ob sie eine Instanz-Methode oder Klassen-Methode ist. Wie dies in UML dargestellt wird weiß ich nicht genau bzw. bin ich mir nicht sicher, ob dies überhaupt dargestellt wird.

Geschrieben

Überlicherweise wird der Aufruf von Methoden nicht in einem statischen Klassendiagramm sondern in einem Sequenzdiagramm dargestellt. Wobei "Objekte" Nachrichten an andere Objekte schicken ( was dann einem Methodenaufruf gleichkommt).

Aber eigentlich ist das zuviel um das hier zu erklären deswegen sollte man sich entsprechende

Fachliteratur besorgen (Amazon.de etc.).

Frank

Geschrieben
Original geschrieben von fmarx2000

Überlicherweise wird der Aufruf von Methoden nicht in einem statischen Klassendiagramm sondern in einem Sequenzdiagramm dargestellt. Wobei "Objekte" Nachrichten an andere Objekte schicken ( was dann einem Methodenaufruf gleichkommt).

Aber eigentlich ist das zuviel um das hier zu erklären deswegen sollte man sich entsprechende

Fachliteratur besorgen (Amazon.de etc.).

Frank

Objekte senden keine Nachrichten an andere Objekte. Es werden Nachrichten/Methoden an Objekte gesendet!

Geschrieben

Also aus "Lehrbuch der Objektmodellierung, Analyse und Entwurf", dass ich während meines Studiums beackern durfte:

Botschaft (message) (Nachricht):

Eine Botschaft (Nachricht) ist die Aufforderung eines Senders (Client) an einen Empfänger (Server) eine Dienstleistunf zu erbringen. Der Empfänger interpretiert diese Botschaft und führt eine Operation aus.

In UML werden Methoden-Aufrufe als abstrakte Botschaft behandelt, da z.B. in einem verteilten System wirklich eine Botschaft über das Netzwerk geschickt wird.

Die Tatsache , dass manche Programmiersprachen Botschaften als Methodenaufrufe abbilden hat nichts damit zu tun das es in UML immer noch Botschaften sind.

So wird z.B. eine Exception in JAVA als eine asynchrone Botschaft modelliert.

Frank

Geschrieben

Die Aussage Objekte senden Nachrichten an andere Objekte ist so nicht richtig!

Nachrichten werden an Objekte gesendet,

d.h. Objekt - Nachricht - evtl. Argument.

Mann kann davon sprechen, daß Objekte an Objekte gesendet werden, vorrausgesetzt, man bezeichnet eine Methode wiederum als eine Instanz einer Klasse, sprich einem Objekt. (was in einer rein objektorientierten Sprache auch der Fall ist).

Geschrieben
Original geschrieben von Elo

Die Aussage Objekte senden Nachrichten an andere Objekte ist so nicht richtig!

Nachrichten werden an Objekte gesendet,

Ja Nachrichten (Botschaften) werden an Objekte gesendet von Objekten oder Akteuren.

Mann kann davon sprechen, daß Objekte an Objekte gesendet werden, vorrausgesetzt, man bezeichnet eine Methode wiederum als eine Instanz einer Klasse, sprich einem Objekt. (was in einer rein objektorientierten Sprache auch der Fall ist).

Geschrieben

jetzt wirds aber ein klein wenig persönlich, findest du nicht?

Ich kann leider nichts dafür, daß dein Horizont, was objektorientierte Programmiesprachen betrifft, auf Java und C++ begrenzt ist.

In einer rein-objektorientierten Programmiersprache (kennst du ja nicht, wie ich eben festgestellt habe) sind eben alles Objekte. Somit ist eine Methode genauso ein Objekt, wie eine Klasse!

Geschrieben
Original geschrieben von Elo

jetzt wirds aber ein klein wenig persönlich, findest du nicht?

Ich kann leider nichts dafür, daß dein Horizont, was objektorientierte Programmiesprachen betrifft, auf Java und C++ begrenzt ist.

In einer rein-objektorientierten Programmiersprache (kennst du ja nicht, wie ich eben festgestellt habe) sind eben alles Objekte. Somit ist eine Methode genauso ein Objekt, wie eine Klasse!

Das sehe ich nicht so. Ich habe das während meines Studiums anders gelernt und die Bücher, welche ich kenne beschreiben das auch anders:

Wenn jede Methode eine Objekt ist die wieder aus Objekten besteht würde man sich ja in eine endlose Rekursion auf ewig verirren.

Und was meinst du mit rein-objektorientierten Sprachen ... Smalltalk oder was ?

Des weiteren wirfst du hier ständig irgendwelche Begrifflichkeiten durcheinander.

Eine Klasse ist nicht unbedingt ein Objekt. Wenn ich eine Instanz einer Klasse erzeuge dann habe ich ein Objekt.

Frank

Geschrieben
Original geschrieben von Elo

Hi!

Zum Aufruf von Methoden kann ich nur sagen:

Der Aufruf bzw. die Ausführung einer Methode ist davon abhängig, ob sie innerhalb oder außerhalb der Klasse aufgerufen wird, in der sie deklariert ist, und ob sie eine Instanz-Methode oder Klassen-Methode ist. Wie dies in UML dargestellt wird weiß ich nicht genau bzw. bin ich mir nicht sicher, ob dies überhaupt dargestellt wird.

Klassenmethoden werden in der UML unterstrichen dargestellt.

Frank

Geschrieben

Ja, ich meine Smalltalk.

Ich rede auch nicht von Klassen und Methoden, sondern natürlich von Instanzen davon... bin es nur nicht gewohnt, das explizit erwähnen zu müssen, es sei denn, ich versuche dies Azubis zu erklären. Vielleicht sollte ich mich einfach auf einem niedrigeren Niveau mit dir unterhalten.

Fakt ist, Methoden sind Instanzen von ihrer entsprechenden Klasse, genauso wie es Klassen sind.

Geschrieben
Original geschrieben von Elo

Ja, ich meine Smalltalk.

Ich rede auch nicht von Klassen und Methoden, sondern natürlich von Instanzen davon... bin es nur nicht gewohnt, das explizit erwähnen zu müssen, es sei denn, ich versuche dies Azubis zu erklären. Vielleicht sollte ich mich einfach auf einem niedrigeren Niveau mit dir unterhalten.

Fakt ist, Methoden sind Instanzen von ihrer entsprechenden Klasse, genauso wie es Klassen sind.

Kann sein, dass es in Smalltalk so ist, in der UML wird es jedenfalls nicht so abgebildet.

Des weiteren bin ich kein Azubi Herr IT-Consultant.

Frank

Geschrieben
Original geschrieben von fmarx2000

Kann sein, dass es in Smalltalk so ist, in der UML wird es jedenfalls nicht so abgebildet.

Des weiteren bin ich kein Azubi Herr IT-Consultant.

Frank

Vielleicht ist dem so...

Ich habe dich auch nicht als Azubi bezeichnet (wollte nur ein wenig Sarkasmus an den Tag legen). Daß du studiert hast, kann man ja an jedem deiner Beiträge lesen.

Geschrieben
Original geschrieben von Elo

Vielleicht ist dem so...

Ich habe dich auch nicht als Azubi bezeichnet (wollte nur ein wenig Sarkasmus an den Tag legen). Daß du studiert hast, kann man ja an jedem deiner Beiträge lesen.

Ich habe mal bei IBM mir so ein Smalltalk - Tutorial angesehen und dabei folgendes gefunden:

"As mentioned before, all Smalltalk processing is accomplished by sending messages to objects. An initial problem solving approach in Smalltalk is to try to reuse the existing objects and messages. The Smalltalk programmer works to develop an object-message sequence that will provide the desired solution. (See also "Object-Oriented Problem Solving Approach".)

Objects are instances of a particular class. The messages that an object can respond to is defined in the protocol of its class. How messages are executed or implemented is defined in the class methods. Methods give the implementation details for the messages and represent a class behavior."

Das entspricht eigentlich genau dem was ich gesagt habe.

Aber es ging um die Notation in UML und die ist eigentlich unabhängig von der verwendeten Programmiersprache.

Frank

Geschrieben

wieso entspricht das dem, was du behauptet hast?`

hier mal eben, was ich im Bezug auf Klassen gefunden habe...

Classes

Edited and created using the class browser.

Each class has: a name, a superclass, a category, instance variables, class variables, instance methods and class methods.

See example of point class in browser (Mevel, p29).

Classes are objects too! The class method returns the class of the current object.

Instances are created by sending the new message (or new:, for variable sized objects) to a class.

Eg. what does self class new do?

Geschrieben
Original geschrieben von Elo

wieso entspricht das dem, was du behauptet hast?`

hier mal eben, was ich im Bezug auf Klassen gefunden habe...

Classes

Edited and created using the class browser.

Each class has: a name, a superclass, a category, instance variables, class variables, instance methods and class methods.

See example of point class in browser (Mevel, p29).

Classes are objects too! The class method returns the class of the current object.

Instances are created by sending the new message (or new:, for variable sized objects) to a class.

Eg. what does self class new do?

Klassen können darüber verfügen in UML ist es durchaus möglich Objekte oder Klassen zu haben ( ich sage mal dann Objekt = Klasse ) die weder Klassenmethoden noch Klassenvariabeln haben, d.h. welche nicht auf einer konkreten Instanz operieren.

Sicherlich ist da die Philosophie unter Smalltalk anders als unter C++ oder JAVA aber es geht in UML ja auch darum ein sprachneutrales Werkzeug anzubieten um solche Systeme zu modellieren, und darum ging es mehr letztendlich.

Frank

Geschrieben
Original geschrieben von fmarx2000

Klassen können darüber verfügen in UML ist es durchaus möglich Objekte oder Klassen zu haben ( ich sage mal dann Objekt = Klasse ) die weder Klassenmethoden noch Klassenvariabeln haben, d.h. welche nicht auf einer konkreten Instanz operieren.

Entweder verstehe ich den Satz nicht weil er rein grammatikalisch keine Höchstleistung darstellt oder weil dessen Aussage ziemlich schwachsinnig ist?!

Im zweiten Punkt muß ich dir recht geben, es ging sicherlich mehr um die UML und dich dadurch verbundene Sprachunabhängigkeit. Nichtsdestotrotz senden Objekte keine Nachrichten an andere Objekte.

Geschrieben
Original geschrieben von Elo

Entweder verstehe ich den Satz nicht weil er rein grammatikalisch keine Höchstleistung darstellt oder weil dessen Aussage ziemlich schwachsinnig ist?!

Im zweiten Punkt muß ich dir recht geben, es ging sicherlich mehr um die UML und dich dadurch verbundene Sprachunabhängigkeit. Nichtsdestotrotz senden Objekte keine Nachrichten an andere Objekte.

Was ich mit dem ersten Satz ausdrücken wollte war:

Es muss nicht sein, dass Objekte Klassenmethoden oder Klassenvariabeln besitzen, in der UML kann man das auch entsprechend abbilden und so wird das auch in JAVA und C++ behandelt.

Und laut UML senden Objekte Nachrichten an andere Objekte, das wird dort jedenfalls so abstrahiert (siehe UML Sequenzdiagramme).

In JAVA oder C++ kommt dies (soweit das lokal stattfindet) dem Aufruf einer Methode gleich.

Was senden denn dann Objekte an andere Objekte ?

Frank

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...