OOP Klassenaufbau korrekt? / MVC

gaabi

Neues Mitglied
Hi zusammen! :)

ich programmiere schon etwas länger in JAVA, bin mir aber immer etwas unsicher ob ich das OOP Design auch so umsetze wie es korrekt ist. Ich habe nun begonnen einen Vokabeltrainer zu implementieren, und hierfür eine ganze rudimentäre Basis gelegt durch welche es möglich ist Deutsch/Englisch Vokabeln anzulegen und diese über die Console abzufragen.

Es wäre toll wenn ihr mir anhand meiner nachfolgenden Klassen sagen könntet ob das ganze vom Aufbau her so denkbar ist oder wie Ihr das ganze Aufbauen würdet. Wie gesagt es geht rein um den strukturellen Aufbau, die Funktionalität ist noch ganz am Anfang und soll erstmal nur als Beispiel dienen.

Desweiteren hätte ich noch eine Frage zum MVC Pattern. Irgendwie habe ich dieses nie hundert %ig verstanden und würde mich freuen wenn mir dazu noch jemand sagen könnte, was ich anders Aufbauen müsste in meinem Konzept um das ganze nach MVC Richtlinien zu gestalten.

Besten Dank im Vorraus! =)
(Nachfolgend die Codes)

Die Klasse Word stellt die kleinste Einheit dar:
Java:
public class Word {

	private String english;
	private String german;

	public Word(String english, String german) {
		this.english = english;
		this.german = german;
	}

	public String getGerman() {
		return german;
	}

	public void setGerman(String german) {
		this.german = german;
	}

	public String getEnglish() {
		return english;
	}

	public void setEnglish(String english) {
		this.english = english;
	}
}

Eine Kategorie enthält verschiedene Worte und kann auch neue anlegen:
Java:
public class Category {

	String name;
	ArrayList<Word> words = new ArrayList<Word>();
	
	public Category(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public ArrayList<Word> getWords() {
		return words;
	}

	public void setWords(ArrayList<Word> words) {
		this.words = words;
	}

	public void addWord(String english, String german){
		words.add(new Word(english, german));
	}
	
}


Words enthält die verschiedenen Kategorien und bietet die Funktionalität zur Abfrage von Worten. Per Query wird immer ein zufälliges Wort gewählt und in einem Attribut festgehalten und dem Benutzer ausgeben (In der nachfolgenden Klasse). Danach kann über die checkTranslations Methoden abgefragt werden ob die Eingabe die reinkommt (von der nächsten Klasse) mit der Überstzung des aktuellen Wortes übereinstimmt:

Java:
public class Words {

	private ArrayList<Category> categories = new ArrayList<Category>();
	private Word currentQueryWord;

	public String germanQuery() {
		currentQueryWord = getRandomWord();
		return currentQueryWord.getGerman();
	}

	public boolean checkEnglishTranslation(String translation) {
		return currentQueryWord.getEnglish().equals(translation) ? true : false;
	}
	
	public String englishQuery() {
		currentQueryWord = getRandomWord();
		return currentQueryWord.getEnglish();
	}

	public boolean checkGermanTranslation(String translation) {
		return currentQueryWord.getGerman().equals(translation) ? true : false;
	}

	public Word getRandomWord() {
		int randomCategoryIndex = getRandomIndex(this.getCategories().size());
		int randomWordIndex = getRandomIndex(this.getCategories()
				.get(randomCategoryIndex).getWords().size());

		return this.getCategories().get(randomCategoryIndex).getWords()
				.get(randomWordIndex);
	}

	public int getRandomIndex(int max) {
		return (int) (Math.random() * max);
	}

	public ArrayList<Category> getCategories() {
		return categories;
	}

	public void setCategories(ArrayList<Category> categories) {
		this.categories = categories;
	}

	public void addCategory(String name) {
		categories.add(new Category(name));
	}

	public void addWord(String category, String english, String german) {
		getCategory(category).getWords().add(new Word(english, german));
	}

	public Category getCategory(String name) {
		for (Category c : categories) {
			if (c.getName().equals(name)) {
				return c;
			}
		}
		return null;
	}

}


In der Main werden Beispielhaft ein paar Kategorien und Worte angelegt und eine Abfrage durchgeführt. Dies funktioniert soweit alles :) Später soll es für die Eingabe dann ein Modul geben und die Wort Objekte dann auch persistiert werden.

Java:
import de.faabi.wordtrainer.model.Words;

public class WordTrainer {

	public static void main(String[] args) {
		Words words = new Words();
		
		words.addCategory("Basic");
		words.addWord("Basic", "be", "sein");
		
		words.addCategory("Test");
		words.addWord("Test", "good", "gut");
		words.addWord("Test", "bad", "schlecht");
		words.addWord("Test", "like", "wie");
		
		words.addCategory("Test2");
		words.addWord("Test2", "memory", "Speicher");
		words.addWord("Test2", "processor", "Prozessor");
		
		Scanner scanner = new Scanner(System.in);
		System.out.println(words.germanQuery());
		System.out.println(words.checkEnglishTranslation(scanner.nextLine()));
		
	}
}
 
Zuletzt bearbeitet:

DJ_MERKEL

Mitglied
Habs nur mal überflogen sieht bis auf fehlende Kommentare ganz brauchbar aus.
Da du die Grundkonzepte zu verstehen scheinst, lege ich dir wärmstens ans Herz zu kommentieren, dann hätte ich mir den Code auch mal eingehender durchgelesen, sonst ist das recht anstrengend.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
E Stilistische Fragen zu Klassenaufbau und Namengebung Java Basics - Anfänger-Themen 13
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
Kotelettklopfer Output korrekt trotz falschem Lösungsweg !? Java Basics - Anfänger-Themen 99
dome385 Ball Ball Kollision physikalisch korrekt Java Basics - Anfänger-Themen 5
H Endkapital wird nicht korrekt ausgegeben. Java Basics - Anfänger-Themen 5
M Warum werden character, die Leerzeichen sind, nicht korrekt verarbeitet? Java Basics - Anfänger-Themen 2
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
tom.j85 Map - Values nicht korrekt ersetzt (Abzählspiel) Java Basics - Anfänger-Themen 13
R Compiler-Fehler HalloWelt-Programm korrekt abgeschrieben, trotzdem Fehlermeldungen Java Basics - Anfänger-Themen 2
M Strasse und Huasnummer korrekt eingeben Java Basics - Anfänger-Themen 13
D JAVA JDK korrekt installieren javac wird nicht gefunden Java Basics - Anfänger-Themen 2
C JFreeChart Linie nicht korrekt dargestellt Java Basics - Anfänger-Themen 1
M java.io.FileNotFoundException trotz dass Verzeichnis korrekt angegeben ist! Java Basics - Anfänger-Themen 20
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
E Gleitkomma zahlen mathemathisch korrekt multiplizieren Java Basics - Anfänger-Themen 5
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
M JMadex funktioniert nicht korrekt Java Basics - Anfänger-Themen 8
S JTabel korrekt mit Datensätzen aus ResultSet füllen Java Basics - Anfänger-Themen 4
R Upload Servlet: Ausgabe nicht korrekt Java Basics - Anfänger-Themen 2
J String Ausgabe nicht-leerer Zeichen nicht korrekt Java Basics - Anfänger-Themen 10
K Wie übergebe ich hier korrekt die Werte Java Basics - Anfänger-Themen 5
U Attributsnamen korrekt oder falsch? Java Basics - Anfänger-Themen 4
G Exe-Datei korrekt in JAR ablegen Java Basics - Anfänger-Themen 4
B func(Object ....args) korrekt weitergeben Java Basics - Anfänger-Themen 4
Burny91 Compiler-Fehler Regular Expressions matchen nicht korrekt Java Basics - Anfänger-Themen 5
M Tag Monat Jahr korrekt berrechnen! Java Basics - Anfänger-Themen 10
M Calendar-Prüfung funktioniert nicht korrekt Java Basics - Anfänger-Themen 6
M String wird nicht korrekt ausgelesen. Java Basics - Anfänger-Themen 11
S Kapselung Member korrekt nach aussen verfügbar machen Java Basics - Anfänger-Themen 6
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
M OOP JLabel werden nicht korrekt eingefärbt Java Basics - Anfänger-Themen 6
F JSlider korrekt implementieren Java Basics - Anfänger-Themen 19
G byte[] (Base64) korrekt übergeben Java Basics - Anfänger-Themen 4
R ArrayList(int index, Object) funktioniert nicht korrekt? Java Basics - Anfänger-Themen 7
S Benutzereingabe über Scanner Klasse korrekt behandeln Java Basics - Anfänger-Themen 9
L If/else nicht korrekt ausgeführt. Java Basics - Anfänger-Themen 22
K methode wird nur einmal korrekt durchlaufen Java Basics - Anfänger-Themen 4
F Verschlüsselten Text korrekt ausgeben Java Basics - Anfänger-Themen 2
Developer_X Applikation kann nicht korrekt von anderen Applikationen aufgerufen werden Java Basics - Anfänger-Themen 10
K Symbole werden nicht korrekt angezeigt ? Java Basics - Anfänger-Themen 7
G Maven Dependency für Oracle JDBC-Driver korrekt festlegen Java Basics - Anfänger-Themen 4
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
Antoras Durchschnitt ist nicht korrekt; Eingaben löschen Java Basics - Anfänger-Themen 7
G Wochentag und Jahrtag werden nicht korrekt ermittelt Java Basics - Anfänger-Themen 8
G SwingWorker funktioniert nicht korrekt Java Basics - Anfänger-Themen 16
J Ein Fenster korrekt schließen? Java Basics - Anfänger-Themen 4
U Double-Variable führt Division nicht korrekt aus Java Basics - Anfänger-Themen 4
S UML korrekt umgesetzt? Java Basics - Anfänger-Themen 14
U GUI wird nicht korrekt angezeigt Java Basics - Anfänger-Themen 8
M Kommentare - so korrekt? Java Basics - Anfänger-Themen 8
G Geöffnete Datei schreiben korrekt schreiben? Java Basics - Anfänger-Themen 6
G Warum ist der folgende Code korrekt? Java Basics - Anfänger-Themen 2
G Eingabe wird nicht korrekt eingelesen? Java Basics - Anfänger-Themen 2
G Buffered REader, String, ist mein code korrekt? Java Basics - Anfänger-Themen 4
R Look & Feel wird nicht korrekt angezeigt Java Basics - Anfänger-Themen 9

Ähnliche Java Themen


Oben