Design-Frage

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Hallo,
wenn ich den Code schon so schreibe,

Code:
private int x;

public void setX(int x){
this.x = x;
}

dann kann ich es auch so schreiben:
Code:
public int x;

Code:
class OtherClass{
public static void main(String args[]){
  Bla bla = new Bla();
  bla.x = 5;
}

Oder was macht der obere Code für einen Sinn, der übrigens langsamer ist?

Liebe Grüße
Reality
 

thE_29

Top Contributor
das keine andere "böse" Klasse mittels Reflection ohne das du es mitbekommst den Inhalt ändern kann!

Außerdem sollte man halt it getter/setter Methoden arbeiten, da ja sonst public/protected/private ja sowieso unsinnig wäre. (wäre ja am besten wenn alles public wäre)

In C# sind die getter/setter Methoden perfektioniert worden ;) Da sagt man get set und dann welche var und der kümert sich um alles :bae:


Aber das hat einfach was mit OO Programmieren zu tun, das man Objekte außerhalb der eigenen Klassen einfach keinen Zugriff geben will/soll!

Da ist C++ wiederum super, da man dort Friend sagen kann und sich so die getter/setter Methoden sparen kann, da man explizit sagen kann, du bist mein Freund und dann darf er zugreifen... :)
 

P3AC3MAK3R

Top Contributor
Informiere Dich mal zum Thema Datenkapselung:

http://de.wikipedia.org/wiki/Kapselung_(objektorientierte_Programmierung)
 

Reality

Top Contributor
thE_29 hat gesagt.:
das keine andere "böse" Klasse mittels Reflection ohne das du es mitbekommst den Inhalt ändern kann!
???:L Per Reflection kann ich aber auch die Methode aufrufen, die mein x manipuliert, also wo ist der Unterschied?!

Außerdem sollte man halt it getter/setter Methoden arbeiten, da ja sonst public/protected/private ja sowieso unsinnig wäre. (wäre ja am besten wenn alles public wäre)
Nö, wenn ich z.B. mit Variablen nur innerhalb der Klasse arbeite, dann sollten sie private sein.

Liebe Grüße
Reality
 

dotlens

Top Contributor
hier gibt es ja keinen unterschied? von aussen kann man bei beiden versionen den wert verändern, bei der ersten direkt, bei der zweiten über die setter methode.

macht doch bloss sin wenn man mehrere eigenschaften setzen kann, aber nur möchte, dass die eine gesetzt werden darf?

oder bin ich auf dem falschen dampfer?
 

thE_29

Top Contributor
naja, da hast recht, ich könnts so halt auch ändern (also mit den Methoden ;))

ich meinte man sollte mit diesen Methoden arbeiten wenn du außerhalb brauchst!

innerhalb brauchste nie solche Methoden, das ist klar ;)
 

Reality

Top Contributor
thE_29 hat gesagt.:
ich meinte man sollte mit diesen Methoden arbeiten wenn du außerhalb brauchst!
Wieso soll ich das x von außen nicht direkt setzen?
Ich denke, das hat in diesem Fall eher etwas mit Ästetik zu tun.

Liebe Grüße
Reality
 
B

Beni

Gast
Man weiss nie, ob man eine Klasse nicht spaeter einmal veraendern moechte, (Entschuldigt meine Schreibweise, amerikanische Tastatur...).

Wenn man nun Getter und Setter verwenden, wird man keine Probleme kriegen, man kann die Variable sogar loeschen.
Arbeitet man mit public, ... viel Spass dann beim Suchen all der Fehler, und beim korrigieren.

Dieses Argument ist fuer solch kleine Klassen nicht so wahnsinnig ueberzeugend. Andererseits bringt es Vorteile, wenn alle Klassen in solchen Dingen gleich funktionieren (es sei denn, ihr schaut gerne fuer jede Zeile Code nach, ob man jetzt einen Getter oder eine public Variable verwenden muss).

Und: Getter und Setter koennen von Subklassen ueberschrieben werden (Besonders interessant, wenn bei einem Set ploetzlich noch mehr geschehen soll), bei einer public Variable geht das nicht.

Und: Man kann den Namen der public Variable in keiner Subklasse verwenden, die Gefahr aus versehen die falsche Variable zu benuzten waere zu gross. Das ist aber ziemlich unpraktisch, denn wer erfindet schon gerne andauernd neue Namen?
 

Griffin

Bekanntes Mitglied
Noch ein Argument:

Du kannst in der set-Methode den Wert der übergeben wird sofort prüfen, damit im späteren Verlauf des Programms keine Fehler entstehen. Also z.B. eine Division durch Null:

Code:
private int zahl;

public setZahl(int zahl) {
    if (zahl != 0) this.zahl = zahl;
}

private void rechne() {
    ergebnis = wert / zahl;
}

Würdest du die Variable nun direkt setzen (also Bla.zahl = 0), dann kommt es zu einem Fehler.
Natürlich könnte man jetzt sagen, dass man das auch in der Methode rechne() überprüfen könnte. :p
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
S Java Design Frage Allgemeine Java-Themen 10
M OOP Design Frage Allgemeine Java-Themen 2
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
T Design-Frage Allgemeine Java-Themen 14
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
M Frage zum Design :: allgemein Allgemeine Java-Themen 6
U Frage zu DB Design Allgemeine Java-Themen 3
S design frage Allgemeine Java-Themen 10
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S ArrayList Design Allgemeine Java-Themen 4
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
J Aktionen im State-Design-Modell Allgemeine Java-Themen 3
S Design Oberfläche Allgemeine Java-Themen 2
G Domain Driven Design Model Allgemeine Java-Themen 14
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
S JToolBar Design Allgemeine Java-Themen 3
M Bildersyncronisierung - Design Patterns? Allgemeine Java-Themen 2
T Design - Exception in Thread Allgemeine Java-Themen 3
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
K Design / Implementierung Allgemeine Java-Themen 5
N Checkstyle - Design for Extension Allgemeine Java-Themen 4
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
P Apple Design Allgemeine Java-Themen 5
T Design-Tipp gesucht Allgemeine Java-Themen 2
M Design von Java Klassen Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
S Programmierstil / design Allgemeine Java-Themen 9
S Exception design Allgemeine Java-Themen 2
m@nu Exception-Design Allgemeine Java-Themen 4
N Hilfe beim Design Allgemeine Java-Themen 13
D Design Pattern: Singleton Allgemeine Java-Themen 4
Torres Design-Problem mit Jakarta Struts Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
H Frage regex greater than less than Allgemeine Java-Themen 7
berserkerdq2 Frage zu IntelliJ und JavaFX Allgemeine Java-Themen 1
W Timer Konzept-Frage Allgemeine Java-Themen 16
T Eine Frage des Designs Allgemeine Java-Themen 2
C Frage zu eigenem TableCellRenderer Allgemeine Java-Themen 11
C Programmvorstellung & Frage zum Thema Geschäftsform Allgemeine Java-Themen 51
J Frage zu System.getproperties. Allgemeine Java-Themen 60
molat100 wie kann man die Frage beantworten Allgemeine Java-Themen 1
pkm Frage zur Präzision von Calendar.WEEK_OF_YEAR Allgemeine Java-Themen 12
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
F Frage zu System.in Allgemeine Java-Themen 3
marcooooo Frage zum Beispiel im Anhang Allgemeine Java-Themen 16
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
B For-Loop Frage Allgemeine Java-Themen 21
L Java frage Allgemeine Java-Themen 3
bueseb84 Frage zu Mock und UpperBound Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben