You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
6.7 KiB
Java
208 lines
6.7 KiB
Java
package com.company.lösungen;
|
|
|
|
public class toDoList {
|
|
// Öffentliche Klasse zur Repräsentation eines Listeneintrags
|
|
public class ListItem {
|
|
// Deklaration privater Variablen
|
|
private String entry;
|
|
private boolean checked;
|
|
|
|
// Öffentlicher Konstruktor, der einen Eintrag als String
|
|
// erwartet und als nicht überprüft voreinstellt.
|
|
public ListItem(String entry) {
|
|
this.entry = entry;
|
|
this.checked = false;
|
|
}
|
|
|
|
// Getter-Methode zur Abfrage des Entry-Strings
|
|
public String getEntry() {
|
|
return entry;
|
|
}
|
|
|
|
// Getter-Methode zur Abfrage des Überprüfungsstatus
|
|
public boolean getChecked() {
|
|
return checked;
|
|
}
|
|
|
|
// Setter-Methode mit dem Status als Parameter
|
|
public void setChecked(boolean checked) {
|
|
this.checked = checked;
|
|
}
|
|
|
|
// Öffentliche Methode zur Repräsentation eines
|
|
// beschreibenden ListItem
|
|
public String toString() {
|
|
return getEntry() + " (" + getChecked() + ")";
|
|
}
|
|
}
|
|
|
|
|
|
// Öffentliche Klasse zur Verwaltung einer To-do-Liste
|
|
public class TodoList {
|
|
// Deklaration privater Variablen
|
|
private ListItem[] list;
|
|
|
|
// Öffentlicher Konstruktor mit der Initialisierung
|
|
// der internen Liste.
|
|
public TodoList() {
|
|
this.list = new ListItem[0];
|
|
}
|
|
|
|
// Öffentliche Methode zum Hinzufügen eines neuen
|
|
// ListItems-Objekts.
|
|
public void addItem(ListItem item) {
|
|
// Array vergrößern
|
|
ListItem[] listNew = new ListItem[list.length + 1];
|
|
|
|
// Elemente kopieren
|
|
for (int i = 0; i < list.length; i = i + 1) {
|
|
listNew[i] = list[i];
|
|
}
|
|
|
|
// letztes Element setzen
|
|
listNew[listNew.length - 1] = item;
|
|
|
|
// Liste übernehmen
|
|
this.list = listNew;
|
|
}
|
|
|
|
// Öffentliche Methode zum Setzen des Status eines
|
|
// Listeneintrags
|
|
public void checkItem(String entry) {
|
|
// Gehe Liste durch
|
|
for (int i = 0; i < list.length; i = i + 1) {
|
|
// Wenn Eintrag mit Gesuchtem übereinstimmt, dann abhaken.
|
|
if (list[i].getEntry().equals(entry)) {
|
|
list[i].setChecked(true);
|
|
|
|
// Springe aus Schleife
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Methode zur Repräsentation aller Einträge in der
|
|
// To-do-Liste. Das Ergebnis wird von der Methode zurück-
|
|
// gegeben.
|
|
public String toString() {
|
|
// Rückgabestring
|
|
String output = "";
|
|
|
|
// Gehe jedes Element durch
|
|
for (int i = 0; i < list.length; i = i + 1) {
|
|
// Packe toString-Methode in Rückgabe
|
|
// und füge Zeilenumbruch hinzu
|
|
output = output + list[i].toString() + "\n";
|
|
}
|
|
return output;
|
|
}
|
|
}
|
|
|
|
// Öffentliche Klasse zur Repräsentation eines Einkaufslisten-
|
|
// eintrags. Hierzu wird von der Klasse ListItem abgeleitet und
|
|
// die für einen Einkaufslisteneintrag charakterisierenden Merkmale
|
|
// hinzugefügt.
|
|
public class ShoppingItem extends ListItem {
|
|
// Deklaration privater Variablen
|
|
private String entry;
|
|
private int amount;
|
|
|
|
// Öffentlicher Konstruktor, der einen Eintrag als String sowie
|
|
// die Menge dieses Eintrags verlangt
|
|
public ShoppingItem(String entry, int amount) {
|
|
// Aufruf des Basisklassenkonstruktors
|
|
super(entry);
|
|
|
|
// zusätzlich wird noch die Menge festgehalten
|
|
this.amount = amount;
|
|
}
|
|
|
|
// Öffentliche Methode zur Repräsentation eines
|
|
// aussagekräftigen Strings für einen Einkaufslisteneintrag
|
|
public String toString() {
|
|
// rufe toString-Methode der Superklasse auf
|
|
return amount + "x " + getEntry() + " (" + getChecked() + ")";
|
|
}
|
|
}
|
|
|
|
// Klasse zur Verwaltung einer Shoppingliste
|
|
public class ShoppingList {
|
|
// Deklaration der privaten Variablen
|
|
private ListItem[] list;
|
|
|
|
// Öffentlicher Konstruktor, der die Liste initialisiert
|
|
public ShoppingList() {
|
|
this.list = new ListItem[0];
|
|
}
|
|
|
|
// Öffentliche Methode, die einen Listeneintrag in Form
|
|
// eines ListItem-Objekts entgegennimmt, um diesen dann
|
|
// in die Einkaufsliste zu setzen
|
|
public void addItem(ListItem item) {
|
|
// Array vergrößern
|
|
ListItem[] listNew = new ListItem[list.length + 1];
|
|
|
|
// Elemente kopieren
|
|
for (int i = 0; i < list.length; i = i + 1) {
|
|
listNew[i] = list[i];
|
|
}
|
|
|
|
// letztes Element setzen
|
|
listNew[listNew.length - 1] = item;
|
|
|
|
// Liste übernehmen
|
|
this.list = listNew;
|
|
}
|
|
|
|
// Öffentliche Methode zum Setzen des Status eines
|
|
// Eintrags, der an die Methode übergeben wird.
|
|
public void checkItem(String entry) {
|
|
// Gehe Liste durch
|
|
for (int i = 0; i < list.length; i = i + 1) {
|
|
// Wenn Eintrag mit Gesuchtem übereinstimmt,
|
|
// dann abhaken
|
|
if (list[i].getEntry().equals(entry)) {
|
|
list[i].setChecked(true);
|
|
|
|
// Springe aus Schleife
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Öffentliche Methode zur Repräsentation der Shoppingliste.
|
|
public String toString() {
|
|
// Rückgabestring
|
|
String output = "";
|
|
|
|
// gehe jedes Element durch
|
|
for (int i = 0; i < list.length; i = i + 1) {
|
|
// Packe toString Methode in Rückgabe
|
|
// und füge Zeilenumbruch hinzu
|
|
output = output + list[i].toString() + "\n";
|
|
}
|
|
return output;
|
|
}
|
|
}
|
|
|
|
// Startpunkt des Hauptprogramms
|
|
// Hier werden die implementierten Klassen zu Demonstrations- und
|
|
// Testzwecken instanziiert und verwendet.
|
|
public void setup() {
|
|
TodoList tdl = new TodoList();
|
|
tdl.addItem(new ListItem("Erster Eintrag"));
|
|
tdl.addItem(new ListItem("Zweiter Eintrag"));
|
|
tdl.checkItem("Zweiter Eintrag");
|
|
System.out.println(tdl);
|
|
|
|
ShoppingList sl = new ShoppingList();
|
|
sl.addItem(new ShoppingItem("Aepfel", 3));
|
|
sl.addItem(new ShoppingItem("Birnen", 1));
|
|
sl.addItem(new ShoppingItem("Toastbrot", 2));
|
|
sl.addItem(new ShoppingItem("Birnenbaum", 2));
|
|
System.out.println(sl);
|
|
sl.checkItem("Birnen");
|
|
System.out.println(sl);
|
|
}
|
|
}
|