Hui, ich kann mich meinem Vorredner nur anschließen. Es ist sehr leicht zu erkennen, dass du sequenzielles Programmieren gewohnt bist. Java hingegen ist eigentlich für objektorientiertes Programmieren gedacht.
Fangen wir also an.
|
Java Quellcode
|
1
2
3
4
5
6
|
public static class Vokabel{
public String deutsch;
public String englisch;
public String franzoesisch;
}
|
An dieser Stele fällt mir auf, dass du die Attribute der Klasse Vokabelprogramm.Vokabel public gemacht hast. Das geht zwar, ist aber unüblich. Guter Programmierstiel ist es, die Attribute private zu machen und den Zugriff über get- bzw. set-Methoden zu ermöglichen. (Ich finde es interessant, dass du eine innere Klasse verwendest. Dagegen spricht eigentlich nichts.)
|
Java Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static class Vokabel{
public Vokabel(String deutsch) {
this.deutsch = deutsch;
}
private String deutsch;
public String getDeutscheUebersetzung() {
return this.deutsch;
}
public void setDeutscheUebersetzung(String deutsch) {
this.deutsch = deutsch;
}
}
|
An diesem Beispiel siehst du gleich mal, wie man Methoden schreibt.
"void" bedeutet, dass die Methode keinen Rückgabewert hat.
Mit "this" kann man Attribute der Klasse von anderen Attributen gleichen Namens unterscheiden.
Eine vernünftige Programmstruktur tut auch Wunder:
|
Java Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public class Vokabelprogramm {
public static class Vokabel {
...
}
public Vokabelprogramm(String pfadZuDerVokabelDatei) {
ladeVokabelDatei(pfadZuDerVokabelDatei);
}
private void ladeVokabelDatei(String pfadZuDerVokabelDatei) {
...
}
public void vokabelAbfragen() {
...
}
...
public static void main (String[] args) {
Vokabelprogramm vp= new Vokabelprogramm(args[0]);
...
vp.vokabelAbfragen();
...
}
}
|
Das nur mal als Anregung.
Die"Methode", die keinen Rückgabewert hat (nicht mal void) und genauso heist wie die Klasse, nennt sich Konstruktor. Dieser wird ausgeführt, wenn man ein so genanntes Objekt (Wichtig! Erkläre ich noch!) dieser Klasse erzeugen will.
Bleiben wir mal bei meinem Beispiel ganz oben, also der Vokabel-Klasse. Du hast eine Vokabelklasse, aber viele Vokabeln. Diese Vokabeln sind die Objekte der Vokabelklasse. Möchtest du jetzt ein solches Objekt erzeugen (initialisieren) dann rufst du einen Konstruktor der Klasse auf:
|
Java Quellcode
|
1
|
Vokabelprogramm.Vokabel test = new Vokabelprogramm.Vokabel("das ist ein Test");
|
Vokabelprogramm.Vokabel ist der Typ/die Klasse des zu erzeugenden Objektes.
test ist der Variablenname der Klasse.
new Vokabelprogramm.Vokabel("das ist ein Test") ist der Aufruf des Konstruktors der Klasse.
Die Angabe "static" ist in der Beziehung Objekt/Klasse von hoher Bedeutung!!!!
Alles was "static" ist, bezieht sich auf die Klasse. Ein statisches Attribut ist somit einmalig, egal wieviele Objekte die Klasse hat. Überschreibt ein Objekt dieses statische Attribut, so ist es bei allen anderen Objekten auch mit dem Wert überschrieben.
So, mehr fällt mir nicht ein. Im Prinzip musst du mal die ersten Kapittel eines guten Java-Buches lesen.
Das mit den Listen darf jemand anderes erklären.