GUI Controls private oder public

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, sollte man beim erstellen der gui. egal ob swing awt oder SWT die einzlnene controls als public oder private definieren. Denn eigentlcih habe ich ja durch anwenden des MVC konzeptes einen controller, welcher zugriff auf die controls benötigt, was bedeuted, wenn ich sie private mache brauch ich eine get... methode, welche wegfallen würde, wenn ich public verwende.

Wie macht ihr das so, wenn ihr ne gui klasse mit vielen textfeldern oder ähnlichem hab?
 

@x.l

Bekanntes Mitglied
private und demuzufolge getter

#edit Logisch zusammenhängende Textfelder organisier ich in Arrays
 
G

Gast

Gast
naja habe halt in meiner anwendung viele felder sowas wie name, vorname , adresse oder für artikel spezielle eigenschaftsfelder also packungsgröße name nr und so weiter und deswegen halt ziemlich viele get methoden und wollte halt mal wissen ob das so üblich ist oder anders gelöst wird
 

FenchelT

Bekanntes Mitglied
Da ein TextField mehrere Methoden hatund ich es etwas ungluecklich finde, auf diese alle mit Getter und Setter Methoden zuzugreifen, halte ich sie haeufig protected
 

Murray

Top Contributor
FenchelT hat gesagt.:
Da ein TextField mehrere Methoden hatund ich es etwas ungluecklich finde, auf diese alle mit Getter und Setter Methoden zuzugreifen(...)
Soweit muss die Kapselung doch auch nicht gehen: eigentlich reicht es ja, einen Getter für das TextField zu haben (Setter braucht man da normalerweise nicht); die Instanzmethoden des Textfields kann dann doch ruhig an der Instanz aufrufen, die man mit dem Getter bekommt.

M.E. kann man bei GUIs aber auch mit öffentlichen Feldern leben, da hier das öffentliche API ohnehin zwangsläufig ziemlich nahe an der Implementierung liegen muss und man die grundsätzlich sehr wünschenswerte Abstraktionmöglichkeit, die der Zugriff über (Interface-)Methoden bietet, in diesem Fall normalerweise nicht braucht.

Das gilt wohl umso mehr, wenn die GUI-Klassen (z.B. von einem Werkzeug) immer so gestaltet werden, dass eine Klasse immer einen kompletten Dialog beschreibt und es daher bei den GUI-Klassen weder Ableitung noch Aggregation gibt.
 

Marco13

Top Contributor
Entscheidend sind IMHO auch solche Fragen, wie: Welche Zugriffe benötigt der Controller? Wie abstrakt muß das ganze für zukünftige Änderungen gehalten werden? public ist in jedem Fall ein no-go. Aber auch ein getter muss z.B. im Falle eines TextFields nicht unbedigt angebracht sein. Was macht man denn mit einem TextField? Man setzt den Text, und man liest ihn aus. Wenn man jetzt eine get-Methode macht, hat man so ein Konstrukt
Code:
class GUI
{
    private JTextField textField = ...
    public  JTextField getTextField() { return textField; }
}
und kann von außen dann so darauf zugreifen
Code:
class Main
{
    void foo() 
    {
        String text = gui.getTextField().getText();
        ...
        gui.getTextField().setText(newText);

}

Man hat damit aber u.U. schon VIEL mehr Zugriff, als eigentlich erlaubt sein muss (oder sogar sollte). Vielleicht WILL man einer "außenstehenden" Klasse garnicht die Möglichkeit geben, das TextField z.B. zu enablen/disablen, oder seine Bounds abzufragen oder sein PreferredSize zu ändern...

Abgesehen davon ist es schon allein deswegen nicht günstig, weil man die Implementierung preisgibt. Obige Funktionen (lesen/schreiben von Text) könnten ja (später, vielleicht) von einer JTextArea oder einem JLabel oder irgendeiner anderen Textkomponente übernommen werden - und dann geht das große Ändern los.

In so einem Fall könnte IMHO ein Verstecken der Implementierung und eine Reduzierung der Schnittstelle auf das nötigste sinnvoll sein:

Code:
class GUI
{
    private JTextField textField = ...
    
    public void setTheText(String text)
    {
        textField.setText(text);
    }

    public String getTheText()
    {
        return textField.getText();
    }
}

Aber die genaue Umsetzung hängt eben von den oben genannten Punkten ab. Wenn man "fast alle" Methoden eines TextFields durchreichen müßte, würde das auch keinen Sinn mehr machen. (Aber wann muss man das schon...)
 
M

maki

Gast
Hier geht es zwar um SWT, aber da GUI und MVC genannt wurden, wollte ich nochmal eine andere Sichtweise darstellen.

Ohne Getter und Setter (die Namenskonventionen folgen) geht in JSF und struts nicht viel, wobei in struts häufig sogar DynaBeans (HashMaps) verwendet werden.

Beides sind MVC Frameworks.

Natürlich macht es den Quellcode etwas größer, ist aber nicht wirklich komplexer.

Ist natürlich alles eine Frage des Kontextes, ich habe keine Erfahrung mit SWT oder AWT.

Gruß,

maki
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX UI controls Java Basics - Anfänger-Themen 1
G Controls einem Dialog uebergeben Java Basics - Anfänger-Themen 4
G JSF: Controls aufbauen bzw. ausblenden Java Basics - Anfänger-Themen 2
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
M Private Variable Java Basics - Anfänger-Themen 2
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
Z private Klassenvariablen Java Basics - Anfänger-Themen 8
S Private int in Klasse Java Basics - Anfänger-Themen 4
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
P Methoden private int[] in main Java Basics - Anfänger-Themen 16
A Klassen Werte in den private Bereich übergeben Java Basics - Anfänger-Themen 5
C Collections: private Map Java Basics - Anfänger-Themen 4
M Wie private Methoden mit Asserstions testen? Java Basics - Anfänger-Themen 3
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
W private Array Loops Java Basics - Anfänger-Themen 4
B public/private nur 1x schreiben Java Basics - Anfänger-Themen 3
H Privat ist nicht mehr private Java Basics - Anfänger-Themen 7
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
A Variablen lokale Variable als private? Java Basics - Anfänger-Themen 3
A private string array Java Basics - Anfänger-Themen 5
B auf private Variable durch eine Methode zugreifen Java Basics - Anfänger-Themen 8
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
T public-private problem Java Basics - Anfänger-Themen 5
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
K Methoden als private deklarieren? Java Basics - Anfänger-Themen 13
K Protected und Private Deklaration Java Basics - Anfänger-Themen 8
F Im Konstruktor mit Settern auf private Attribute zugreifen - oder nicht? Java Basics - Anfänger-Themen 18
B Kapselung Klasse private, Konstruktor protected Java Basics - Anfänger-Themen 10
H NEtBeans: Fehler: XXX has private access... Java Basics - Anfänger-Themen 2
K Kapselung public / private verständis problem Java Basics - Anfänger-Themen 17
E einfache Frage zu private Java Basics - Anfänger-Themen 26
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
W Private Methode variablen übergeben..?! WIE! Java Basics - Anfänger-Themen 30
K OOP Datenkapselung mittels private - length Attribut bei Array Java Basics - Anfänger-Themen 3
L Private Methode in Subklasse? Java Basics - Anfänger-Themen 2
S Private Class Problem Java Basics - Anfänger-Themen 17
K Kann man Private-Konstruktoren doch aurufen? Java Basics - Anfänger-Themen 8
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
P zugriff auf private variablen Java Basics - Anfänger-Themen 5
A Allgemeine Frage zur Sichtbarkeit "private" Java Basics - Anfänger-Themen 5
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
G field public/private wann Java Basics - Anfänger-Themen 11
Spin private Frage Java Basics - Anfänger-Themen 16
G Zugriff auf private Variablen einer inneren Klasse Java Basics - Anfänger-Themen 5
G Private Messages versenden Java Basics - Anfänger-Themen 13
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
R Private Methoden von auserhalb aufrufen Java Basics - Anfänger-Themen 2
N private variable vom typ einer klasse Java Basics - Anfänger-Themen 20
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
G Variablen public oder private? Java Basics - Anfänger-Themen 9
P Private Klassen Java Basics - Anfänger-Themen 4
F Frage zur Vererbung und Zugriffmodifikator private Java Basics - Anfänger-Themen 3
S private public Java Basics - Anfänger-Themen 5
R private / public Frage Java Basics - Anfänger-Themen 7
S private String text; -> "Illegal start of expression Java Basics - Anfänger-Themen 7
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
G Public ,private,protected Java Basics - Anfänger-Themen 1
R Private Klasse in Applet nutzen? Java Basics - Anfänger-Themen 9
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
M Sichtbarkeit von private Java Basics - Anfänger-Themen 2
A public/private/etc. Zusatz weglassen Java Basics - Anfänger-Themen 2
M OOP frage, private variablen default-wert zuweisen sinnvoll? Java Basics - Anfänger-Themen 5
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
H Vererbung:private Java Basics - Anfänger-Themen 7
U public, private, protected und "default access" - Java Basics - Anfänger-Themen 14
T private final String oder final String? Was ist richtig? Java Basics - Anfänger-Themen 4
M Jede Variable als private, protected etc. deklarieren? Java Basics - Anfänger-Themen 7
U was macht "private" ? :) Java Basics - Anfänger-Themen 7
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
megachucky wie bekomm ich ein private attribut aus einer andren klasse? Java Basics - Anfänger-Themen 18
H private anstatt public Java Basics - Anfänger-Themen 2
H public und private Java Basics - Anfänger-Themen 5
A Public/Private und wie importieren? Java Basics - Anfänger-Themen 13
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
Say public/default Interface Java Basics - Anfänger-Themen 9
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
melaniemueller Datenkapselung Sichtbarkeit public Java Basics - Anfänger-Themen 4
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
G Klassen Mit fremder Klasse auf public Methode zugreifen Java Basics - Anfänger-Themen 23
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben