Java UML: Eine Frage zu public-Variablen

N

nl2brecho

Gast
Guten Tag,

ich lerne in der Berufsschule Java und habe eine Frage zu UML-Diagrammen. Wir haben gelernt, dass wir Variablen, die folgendermassen notiert sind

Code:
+ name: String

trotz dem Plus-Zeichen nicht als public, sondern als private deklarieren und Getter und Setter benutzen müssen. Meine Frage ist nun, ob das wirklich so ist und wenn ja, wieso es so ist. Wäre es nicht einfacher, man würde im Diagramm ein Minus vor die Variable setzen und bei den Methoden noch die Getter und Setter auflisten?
 

fastjack

Top Contributor
Verstehe ich auch nicht, wenn + Public bedeutet, ist es public, ansonsten soll man es halt nicht mit + deklarieren, ansonsten verwirrt es nur. Frage doch mal, warum ihr das so machen sollt?
 

faetzminator

Gesperrter Benutzer
Nunja, ist vielleicht etwas philosophische Frage, aber davon ausgegangen, dass man immer und überall nur Getter und Setter anbietet - zumindest gegenüber Fremdklassen - kann man das sicherlich so lösen, um sich alle (unnötigen) Getter- und Setterdeklarationen zu sparen. Die Frage wär dann aber, was man macht, wenn die Sichtbarkeit dieser zwei Methoden unterschiedlich ist oder eine gänzlich fehlt (z.B. bei einer Collection nur mit Getter).
 
N

nl2brecho

Gast
Da hast du recht, aber die Frage, die mich beschäftigt, ist folgende: Wieso soll ich im UML-Klassendiagramm eine Variable als public notieren, die aber im Programmcode als private deklariert wird? Das widerspricht doch bereits dem Sinn eines Klassendiagramms. Für mich ist es eine Falschinformation, und nichts anderes.
 

Empire Phoenix

Top Contributor
UMl ist zwar stark spezifiert wird aber immer schwamming angewendet, zumindest kene ich niemanden der das 1zu1 macht.

Denke wenn es sowohl public getter und setter gibt,ist das äquivalend dafür das die variable auch public sein könnte, spaart man sich halt die zwei getter hinzuschreiben. (wer hat schon lust 20 getter und setter zu schreiben bei größeren klassen?^^)
 
M

maki

Gast
[c]+[/c] heisst public, per Definition.

Wer [c]+[/c] in UML Klassendiagrammen für private Variablen nutzt, macht was falsch.

Sag doch deinem Prof. mal er soll sein Diagramm korrigieren..
 
N

nillehammer

Gast
Ich habe da eine etwas andere Meinung als meine Vorposter. Auch wenn ein Klassendiagramm stark an Code erinert und auch wenn man als Java-Programmierer immer schon in Code denkt. Ein Klassendiagramm ist kein Code. Ich empfinde es nicht als Widerspruch, wenn eine Variable in UML als public notiert ist und sie in Java dann private mit gettern und settern gemacht wird. Denn das Diagramm stellt nur die Forderung auf, dass die Variable public zugreifbar sein muss. Wie das umgesetzt wird, ist Implementierungsdetail der jeweiligen Zielumgebung.
 
M

maki

Gast
Ich habe da eine etwas andere Meinung als meine Vorposter. Auch wenn ein Klassendiagramm stark an Code erinert und auch wenn man als Java-Programmierer immer schon in Code denkt. Ein Klassendiagramm ist kein Code. Ich empfinde es nicht als Widerspruch, wenn eine Variable in UML als public notiert ist und sie in Java dann private mit gettern und settern gemacht wird. Denn das Diagramm stellt nur die Forderung auf, dass die Variable public zugreifbar sein muss. Wie das umgesetzt wird, ist Implementierungsdetail der jeweiligen Zielumgebung.
UML ist Code.

Zwar "nur" eine grafische Notation, an vielen Stellen auch schwammig definiert, aber manche Dinge sind ganz klar festgelegt (OCL zB., aber auch die Diagrammtypen und die Elemente darin).

Zu den festgelegten Dingen gehört nunmal, das ein [c]+[/c] in einem Klassendiagramm für "public" steht.

Wenn man meint da könnte man sonstwas hineininterpretieren dann ist das grundsätzlich richtig, man darf das dann nur nicht "UML Klassendiagramm" nennen ;)
 
N

nl2brecho

Gast
Danke erstmal für die zahlreichen Antworten. Ich bin auch der Meinung, das + sollte für public und nichts anderes verwendet werden, und die Diskussion hier hat mich darin nur bestärkt. Ich habe auch bei uns noch einige Java-Programmierer gefragt und die stimmen mir ebenfalls ohne Ausnahme zu.

Im Moment sind bei uns "leider" gerade Schulferien, aber danach werde ich unseren "Lehrer" mal drauf ansprechen. Er soll das Fach in Zukunft gefälligst korrekt unterrichten! :pueh:
 

JRussian

Mitglied
UML ist eine Sammlung verschiedener Modellierungstechniken, die einem gewissen Standart angelehnt sind.

In der Uni wurde bei Prüfungen von Softwaretechnik penibel drauf geachtet, dass wir uns an die UML-Standartisierung halten. Abweichungen von der UML-Norm wurden hart bestraft. private Variablen mit + zu Kennzeichnen ist schlichtweg falsch. Dafür wurden uns einige Punkte abgezogen in der Prüfung.

Dein Dozent sollte evtl. seine arbeitsweise überdenken. Sowas sollte man von anfang an richtig lernen.
 

ARadauer

Top Contributor
Per Konvention macht man Variablen in Java nicht public.
Ist im UML Diagramm ein + davor würd ich Getter und Setter machen, ist ein - davor würde ich diese nicht machen.
Auf keinen Fall die Variable public...
 
N

nillehammer

Gast
Zu den festgelegten Dingen gehört nunmal, das ein + in einem Klassendiagramm für "public" steht.
Da stimme ich zu, habe auch nichts anderes behauptet. Ich sage nur, dass es ein Fehler ist, UML-Klassendiagramme eins zu eins in Code übertragen zu wollen. Das
Code:
+
(also public) heißt: "Es gibt die Anforderung, dass diese Variable von überall aus Zugreifbar sein muss." In Java wäre eine private Variable mit public getter/setter eine Valide Umsetzung dieser Anforderung. So sehe ich das zumindest, wenn das Klassendiagramm für die Dokumentation von Anforderungen verwendet wird.

Wenn es verwendet wird, um Code zu dokumentieren. Dann wäre es sicher besser
Code:
-
zu nehmen und die getter/setter in die Methodenliste aufzunehmen. Dann würde ich aber sofort die Frage nach dem Sinn dieser Dokumentation stellen. Weil sie eigentlich nur etwas anders darstellt, was ich auch direkt im Code nachvollziehen kann.
 

Timothy Truckle

Top Contributor
UML ist eine Sammlung verschiedener Modellierungstechniken, die einem gewissen Standart angelehnt sind.

In der Uni wurde bei Prüfungen von Softwaretechnik penibel drauf geachtet, dass wir uns an die UML-Standartisierung halten. Abweichungen von der UML-Norm wurden hart bestraft. private Variablen mit + zu Kennzeichnen ist schlichtweg falsch. Dafür wurden uns einige Punkte abgezogen in der Prüfung.
Und dass mit Recht.

Dein Dozent sollte evtl. seine arbeitsweise überdenken. Sowas sollte man von anfang an richtig lernen.
Wobei "richtig" IMHO heist: ein
Code:
+
vor einer Variablen in einem UML-Diagram ist an sich schon ein Fehler (weil es gegen das Prinzip des "Information Hiding" verstößt)

bye
TT
 

Bleiglanz

Gesperrter Benutzer
Ist doch in der Praxis reine Ansichtssache, ob man den getter/setter Mechanismus in UML rüberträgt oder nicht?

Java:
+ name : String

zu verstehen als

1. private Java Variable mit getter und setter Funktion

oder

2. public Java Variable

Man könnte ja in UML genauer

Java:
- name : String
+ getName() : String
+ setName(String)

ausführen. Das sind doch Geschmacksfragen
 
A

Akeshihiro

Gast
Also ich würde das auch als falsch markern. Allerdings ist das bei UML in der Praxis oft so, dass die Teams die UML Regeln neu definieren und wenn es eine Regel gäbe, in der mit public markierte Variablen private sind unt mit Getter und Setter ausgestattet werden, damit man die Diagramme nicht mit unwichtigem Zeug zumüllt, dann ist das eine teaminterne Regel hat in dem Kontext auch Gültigkeit. UML ist sicherlich ein Standard. Jedoch ist UML so ausgelegt worden, dass man es auch nur als Leitfaden nutzen und die Regeln neu definieren kann. Dann müssen die Änderungen den Leuten aber auch bekannt gemacht werden und gelten auch nur für den jeweiligen Kontext. Ich sehe das daher nicht zwangsläufig als falsch an. Wenn die Regeln so formuliert wurden und alle zugestimmt haben, dann ist das ok. Und es ist sicherlich auch keine Seltenheit, dass hier und da ein paar Regeln leicht verbogen werden.
 

JRussian

Mitglied
Ist doch in der Praxis reine Ansichtssache, ob man den getter/setter Mechanismus in UML rüberträgt oder nicht?

Uns wurde beigebracht, dass allein durch Konventionen Getter und Setter in jedem Objekt enthalten sein sollten. Deswegen können diese bei einem UML Klassendiagramm als explizite Methodenangabe weggelassen werden.

Jede mit - gekennzeichnete Variable in einer Klasse (und das sollte sie nach OOP auch sein (Datenkapselung)) impliziert vorhandene Getter und Setter für dieses Klassenattribut.
 
M

maki

Gast
Uns wurde beigebracht, dass allein durch Konventionen Getter und Setter in jedem Objekt enthalten sein sollten. Deswegen können diese bei einem UML Klassendiagramm als explizite Methodenangabe weggelassen werden.

Jede mit - gekennzeichnete Variable in einer Klasse (und das sollte sie nach OOP auch sein (Datenkapselung)) impliziert vorhandene Getter und Setter für dieses Klassenattribut.
Diese Konventionen beziehen sich nur auf JavaBeans, nicht auf POJOs, da braucht es keine Getter/Setter weil keine Konvention ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
DaniSahne96 Frage zu Java ist auch eine Insel Java Basics - Anfänger-Themen 12
A Eine Frage zu AWt in JAVA, wie wähle ich ein Punkt aus`? Java Basics - Anfänger-Themen 4
T Frage aus dem Buch JAVA ist auch eine Insel Java Basics - Anfänger-Themen 11
T Newbie Frage Eine Java Anwendung fernsteuern? Java Basics - Anfänger-Themen 4
G eine Frage zur Generic Java ? Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
C Java liest nur eine Zeile ein Java Basics - Anfänger-Themen 3
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
F Erste Schritte Java ist auch eine Insel kaufen? Java Basics - Anfänger-Themen 2
B Hilfe bei eine Java-Methode Java Basics - Anfänger-Themen 4
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
D Java erkennt eine deklarierte Variable nicht Java Basics - Anfänger-Themen 2
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
D Türme von Hanoi in "Java ist auch eine Insel" Java Basics - Anfänger-Themen 4
J für eine java klausur Java Basics - Anfänger-Themen 5
Y Wie setze ich genau eine Stückliste (UML) in Java um? Java Basics - Anfänger-Themen 9
S mit Java eine EXE im vordergrund ausführen Java Basics - Anfänger-Themen 3
I Variablen Wie initialisiert man in Java eine Variable ohne das Setzen von 0 oder einer anderen Zahl? Java Basics - Anfänger-Themen 8
V Mit JS eine JAVA Methode aufrufen Java Basics - Anfänger-Themen 5
M Mit Java eine HTML-Seite speichern Java Basics - Anfänger-Themen 11
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
J Geldberechner(aus Java ist auch eine Insel) Java Basics - Anfänger-Themen 6
G Erste Schritte JAVA ist auch eine Insel Java Basics - Anfänger-Themen 7
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
A Wie mit Java eine .vbs Datei starten lassen? Java Basics - Anfänger-Themen 4
3 Eine HTML Datei in eine Java Datei umschreiben Java Basics - Anfänger-Themen 23
M Was ist genau eine Abstraktion in java Java Basics - Anfänger-Themen 3
H Reflexion: Eine Methode, beliebig viele Parameter (Java 1.4.2) Java Basics - Anfänger-Themen 8
T Java Webstart soll eine Datei speichern Java Basics - Anfänger-Themen 2
C Aus Java eine Javascript Funktion aufrufen Java Basics - Anfänger-Themen 14
N Per Java in ein HTML-Suchfeld eine Variable reinschreiben Java Basics - Anfänger-Themen 4
M Spielt der Debugger bei java eine große Rolle Java Basics - Anfänger-Themen 3
M Aus wieviel Klassen darf in Java eine (Programm)besitzen? Java Basics - Anfänger-Themen 21
2 Mit Java in eine WORD-Datei schreiben Java Basics - Anfänger-Themen 18
X Via Java auf eine Webseite einloggen. Java Basics - Anfänger-Themen 6
R Java, Bluetooth: mit PC eine SPP Verbindung aufbauen Java Basics - Anfänger-Themen 1
schroedi Wie startet man eine JAVA EE Projekt Java Basics - Anfänger-Themen 22
S Codebeispiel aus Java ist auch eine Insel. Java Basics - Anfänger-Themen 2
J Ein Java-Programm in eine *.exe Datei 'packen' Java Basics - Anfänger-Themen 20
G Eine HP mit Java läuft nicht Java Basics - Anfänger-Themen 4
J Aus einem Java Programm eine .java datei Kompilieren Java Basics - Anfänger-Themen 6
G Java Klasse durch eine andere Java Klasse starten? Java Basics - Anfänger-Themen 13
M Java Quellcode in eine exe datei umwandeln Java Basics - Anfänger-Themen 4
W Klasse in eine extra Java-Datei Java Basics - Anfänger-Themen 21
M Mit Java eine neue DB anlegen über XAMPP? Ist das möglich ? Java Basics - Anfänger-Themen 4
V Wie kann ich mit Java eine Tastatureingabe simmulieren ? Java Basics - Anfänger-Themen 26
vogella Mit Java eine Webpage schreiben Java Basics - Anfänger-Themen 7
P mit Java auf eine PowerPoint-Präsentation zugreifen Java Basics - Anfänger-Themen 3
M Datenbankabfrage über eine Java Oberfläche Java Basics - Anfänger-Themen 3
C eine dringende bitte an alle java-programmierer Java Basics - Anfänger-Themen 4
S Daten in eine Variable in einem anderen Java File schreiben Java Basics - Anfänger-Themen 10
T Eine HTML Datei mit Java bear. Wie soll kann man anfangen? Java Basics - Anfänger-Themen 11
B Mit Java eine Website "steuern" Java Basics - Anfänger-Themen 18
A aus Java-Code eine jar-Datei ausführen Java Basics - Anfänger-Themen 8
T Java ist auch eine Insel: Beispielprogramm fehlerhaft? Java Basics - Anfänger-Themen 2
G Wie kann ich mit Java eine Textdatei auslesen? Java Basics - Anfänger-Themen 20
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
C Aus Java eine Email wo der Body den Inhalt aus einer .... Java Basics - Anfänger-Themen 6
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben