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:
Eine Kategorie enthält verschiedene Worte und kann auch neue anlegen:
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:
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.
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: