UML-Bild (Erkennung ob static o. nicht)

ruuckiii

Mitglied
Hallo Leute,

folgendes Anliegen:

Mein Dozent hat uns ein UML-Bild als Einstieg geschickt, womit wir schon mal die Methoden und co. implementieren sollen. Er gesagt, "alles was unterstrichen ist, muss mit static gemacht werden". Allerdings ist in dem UML-Bild irgendwie alles unterstrichen mit "rot und blau"...

Kann mir jemand bitte erklären - ob ich jetzt von der roten o. blauen Farbe "static" erkenne (siehe Bild-Upload)

Vielen Dank im Voraus! :)

LG
 

Anhänge

  • VorlageUML.png
    VorlageUML.png
    54 KB · Aufrufe: 8

Robertop

Bekanntes Mitglied
Diese roten gezackten Striche sind doch bestimmt erkannte Rechtschreibfehler. Was das blaue heißt weiß ich gerade nicht. Aber man erkennt ja, dass die unteren drei die einzigen Zeilen sind, die eine schwarze Unterstreichung haben.
 

mrBrown

Super-Moderator
Mitarbeiter
Das solltest du ohne Unterstrich erkennen können.
Eine static Methode kann nicht auf die Daten des Objekts zugreifen.
Abgesehen von der sehr schwammigen Umschreibung stimmt das natürlich nicht, rein an den Methodendeklaration in einem UML-Diagram kann man nicht erkennen, worauf eine Methode zugreift, die Implementierung der Methode gibts ja da auch noch nicht.
 

Blender3D

Top Contributor
Abgesehen von der sehr schwammigen Umschreibung stimmt das natürlich nicht, rein an den Methodendeklaration in einem UML-Diagram kann man nicht erkennen, worauf eine Methode zugreift, die Implementierung der Methode gibts ja da auch noch nicht.
Grundsätzlich richtige Aussage.
Jedoch wenn jemand bei folgenden Signaturen auf das Objekt zugreift, dann handelt es sich wohl um schlechten Programmierstil.
Java:
boolean vergleiche( Kreis k1, Kreis k2 ){}
boolean bestimmeKollision( Kreis k1, Kreis k2 ){}
Warum ?
zu 1) es sollen die zu übergebenden Kreise verglichen werden. --> ein Zugriff auf das Objekt ist nicht nötig
zu 2) es soll getestet werden ob die übergebenen Kreise kollidieren. --> ein Zugriff auf das Objekt ist nicht nötig
--> diese Methoden sollten unbedingt static sein. Bei einem Cotainer der 1000 Kreise beinhaltet, würden die Methoden unnötigerweise 1000 x vorhanden sein.
;)
 

temi

Top Contributor
Grundsätzlich richtige Aussage.
Jedoch wenn jemand bei folgenden Signaturen auf das Objekt zugreift, dann handelt es sich wohl um schlechten Programmierstil.
Java:
boolean vergleiche( Kreis k1, Kreis k2 ){}
boolean bestimmeKollision( Kreis k1, Kreis k2 ){}
Warum ?
zu 1) es sollen die zu übergebenden Kreise verglichen werden. --> ein Zugriff auf das Objekt ist nicht nötig
zu 2) es soll getestet werden ob die übergebenen Kreise kollidieren. --> ein Zugriff auf das Objekt ist nicht nötig
--> diese Methoden sollten unbedingt static sein. Bei einem Cotainer der 1000 Kreise beinhaltet, würden die Methoden unnötigerweise 1000 x vorhanden sein.
;)
Muss nicht sein, z. B. Prüfe ob der eigene Kreis mit den beiden übergebenen Kreisen kollidiert. Warum auch immer diese Anforderung erforderlich sein sollte.

ei einem Cotainer der 1000 Kreise beinhaltet, würden die Methoden unnötigerweise 1000 x vorhanden sein.
Ich glaube das kann man so nicht stehen lassen. Ich bin jetzt kein Spezialist, was den Compiler angeht, aber das wird schon optimiert werden.
 

Blender3D

Top Contributor
Muss nicht sein, z. B. Prüfe ob der eigene Kreis mit den beiden übergebenen Kreisen kollidiert. Warum auch immer diese Anforderung erforderlich sein sollte.
Du könntest auch sagen, dass beim Aufruf der Funktion eine Klassenvariable geändert wird.
Aber das wäre wie von mir oben bemerkt sehr schlechter Programmierstil. Das selbe gilt für deine Auslegung der Semantik der oben genannten Methode.
 

mrBrown

Super-Moderator
Mitarbeiter
Warum ?
zu 1) es sollen die zu übergebenden Kreise verglichen werden. --> ein Zugriff auf das Objekt ist nicht nötig
zu 2) es soll getestet werden ob die übergebenen Kreise kollidieren. --> ein Zugriff auf das Objekt ist nicht nötig
Du vermutest einfach nur aufgrund der Signatur, dass es so sein könnte – das ist aber keinesfalls zwingen vorausgesetzt.

--> diese Methoden sollten unbedingt static sein. Bei einem Cotainer der 1000 Kreise beinhaltet, würden die Methoden unnötigerweise 1000 x vorhanden sein.
;)
Ähm Nein, Methoden gibt es immer nur einmal, die existieren nicht "pro Objekt". Ob static oder nicht macht in dem Fall keinen Unterschied in Bezug auf Laufzeit und Speicherbedarf.
 

temi

Top Contributor
Du könntest auch sagen, dass beim Aufruf der Funktion eine Klassenvariable geändert wird.
Aber das wäre wie von mir oben bemerkt sehr schlechter Programmierstil. Das selbe gilt für deine Auslegung der Semantik der oben genannten Methode
Wieso? Wenn das eine normale nicht statische Methode ist, spricht da nix dagegen.
 
K

kneitzel

Gast
--> diese Methoden sollten unbedingt static sein. Bei einem Cotainer der 1000 Kreise beinhaltet, würden die Methoden unnötigerweise 1000 x vorhanden sein.
Die Aussage verstehe ich nicht. Eine Methode, die nicht statisch ist, ist doch nicht mehrfach vorhanden im Speicher. Wie kommst Du zu so einer Aussage?

Und das, was da abgebildet ist, ist schlechter Programmierstil. So eine Methode macht man eben nicht statisch sondern es wird eine nicht statische Methode erstellt und die Methode wird auf dem ersten Parameter aufgerufen und der zweite Parameter ist dann der einzige Parameter. Und das ganze wäre dann ein Comparable<Kreis>.
 

temi

Top Contributor
Dafür spricht: Wenn ich 2 Kreise vergleichen möchte, muss ich kein Objekt erzeugen.
Aber noch weniger dafür.
Ich habe auch davon gesprochen:
z. B. Prüfe ob der eigene Kreis mit den beiden übergebenen Kreisen kollidiert.
Da du auf meine Anmerkung geantwortet hast, bin ich davon ausgegangen, dass du dich auch darauf bezogen hast.

Aus der Methodensignatur lässt sich eben nicht ableiten, was die genaue Aufgabe der Methode ist.
 

Blender3D

Top Contributor
Da du auf meine Anmerkung geantwortet hast, bin ich davon ausgegangen, dass du dich auch darauf bezogen hast.
Wenn so etwas skurriles dann eher so.
Java:
public boolean isCollision( Kreis [] k ){..}
Das hat den Vorteil, dass ich mit beliebig vielen Kreisen auf Kollision mit mindestens 1 Kreis teste.
Ist aber kein guter Stil, da ich nach einem positiven Aufruf nicht weiß welche Kreise von der Kollision betroffen sind.
Das könnte man dann so lösen
Java:
public Kreis[] dedectCollisionsWith( Kreis [] k ){..}[/CODE
Die betroffenen Kreis werden zurückgegeben.
Besser wäre eine Klassenmethode
[CODE=java]public boolean isCollision( Kreis k ){}
Die ist vielfältig einsetzbar z.B.
Java:
public static boolean isCollision( Kreis k1, Kreis k2 ){
    return k1.isCollision(k2);
}
oder falls man so etwas wirklich braucht
Java:
public static boolean isCollisionInArray(  Kreis k, Kreis[] kreise){
    for( int i= 0; i kreise.lenght; i++ ){
        if( k.isCollision(kreise[i]) )
            return true;       
    }
    return false;
}
..
 

mihe7

Top Contributor
Es geht doch letztlich um das Principle of least astonishment:

Bei kreis1.vergleiche(kreis2, kreis3) wäre mein Erstaunen gleichermaßen hoch, ganz gleich, ob kreis1 nun kreis2 und kreis3 miteinander vergleicht oder sich selbst auch noch dazunimmt. Im ersten Fall würde es mich wundern, weil kreis1 hierfür nicht benötigt wird, im zweiten Fall, weil ich dann einen Methodennamen der Art vergleicheMit erwarten würde.

Kreis.vergleiche(kreis1, kreis2) ist zwar auch nicht das gelbe vom Ei, was jedoch die Funktion betrifft, so habe ich hier die klare Vorstellung, dass kreis1 und kreis2 miteinander verglichen werden.

Das geringste Erstaunen würde natürlich kreis1.vergleicheMit(kreis2) (Comparable-Interface) auslösen.
 

temi

Top Contributor
Letztlich geht es darum, dass man es aus der Methodensignatur nicht eindeutig ermitteln kann, ob die Methode statisch ist oder nicht.

Natürlich hat @Blender3D damit Recht, dass vieles in den o. g. Beispiel auf eine statische Methode hindeutet, aber es muss halt nicht so sein, aus welchen kruden Gründen auch immer.
 

mihe7

Top Contributor
Es geht im Thread m. E. um zwei verschiedene Dinge und ich würde mich so weit aus dem Fenster lehnen, dass bzgl. dieser beiden Punkte auch überwiegend Einigkeit herrscht:
  1. Man kann anhand einer Methodensignatur nicht ermitteln, ob es sich um eine Klassen- oder Objektmethode handelt. Das ist völlig klar, kann aber eine wichtige Info für Anfänger sein, daher ist der Hinweis darauf auch völlig richtig.
  2. Umgekehrt wäre es im konkreten Beispiel und unter Berücksichtigung dessen, dass man saubere Bezeichner möchte, durchaus eine Überraschung, wenn die vergleiche-Methode nicht statisch wäre. Die Signatur suggeriert, dass die Methode zwei gegebene Kreise miteinander vergleicht, wofür man keinen dritten Kreis benötigt, der den Vergleich durchführen müsste. Natürlich kann es "krude Gründe" geben, dass es sich tatsächlich anders verhält. Dann wäre aber höchstwahrscheinlich ein anderer Bezeichner besser gewesen, der diese Assoziation erst gar nicht entstehen lässt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
J Bild loopen Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
C Erste Schritte Bild holen und speichern Java Basics - Anfänger-Themen 1
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
F Bild in ein Runnable Jar File packen (eclipse) Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
J Ganzes Bild Java Basics - Anfänger-Themen 4
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
I Bild aus Bereich laden Java Basics - Anfänger-Themen 3
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
Sogomn Bild will sich nicht skalieren lassen Java Basics - Anfänger-Themen 1
P Ein Bild für GUI (Java-Editor) Java Basics - Anfänger-Themen 4
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
P Bild bearbeiten Java Basics - Anfänger-Themen 9
Z Datenmatrix in Bild verwandeln Java Basics - Anfänger-Themen 4
C Bild verschwinden lassen Java Basics - Anfänger-Themen 7
S Bild Icon aus ID3Tag auslesen Java Basics - Anfänger-Themen 4
E Bild vom FileChooser aus via ImageIcon in DB schreiben Java Basics - Anfänger-Themen 16
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
O Auflösung einer Bild-Datei bekommen ohne sie herunterzuladen?? Java Basics - Anfänger-Themen 7
L Bild-Datein "zuschneiden" Java Basics - Anfänger-Themen 11
O DeviantArt-Bild Konverter: Fehler.. Java Basics - Anfänger-Themen 16
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
M Bild einbinden Java Basics - Anfänger-Themen 7
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
T Bild laden Java Basics - Anfänger-Themen 7
R Bild in GUI Java Basics - Anfänger-Themen 11
D Eclipse Juno zeigt Bild nicht bei Run Java Basics - Anfänger-Themen 3
Kenan89 Bild mit jar öffnen Java Basics - Anfänger-Themen 4
S Problem bei Bewegung von einem Bild! Java Basics - Anfänger-Themen 2
J Bild mit transparenter Farbe Java Basics - Anfänger-Themen 10
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
J Bild einfügen Java Basics - Anfänger-Themen 3
T ASCII Art von Bild erstellen. Java Basics - Anfänger-Themen 32
E Bild OS-unabhängig einbinden mit URL Java Basics - Anfänger-Themen 4
A BufferedImage in Android einbinden - Bild spiegeln -wie? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben