Naberius Geschrieben 5. September 2002 Geschrieben 5. September 2002 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? Zitieren
Elo Geschrieben 6. September 2002 Geschrieben 6. September 2002 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. Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 Ü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 Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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! Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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). Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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). Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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! Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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. Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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. Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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? Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 noch was... http://www-3.ibm.com/software/ad/smalltalk/discussion/2000/september/dev0900.html Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
Elo Geschrieben 10. September 2002 Geschrieben 10. September 2002 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. Zitieren
fmarx2000 Geschrieben 10. September 2002 Geschrieben 10. September 2002 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 Zitieren
Empfohlene Beiträge
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.