# Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben)



## axöööl (17. Dez 2010)

Hallo,

ich soll für die Schule ein Projekt in Java entwickeln, und zwar geht es darum:

Eine Erbengemeinschaft möchte Auskunft über den Vermögenswert eines Erbes haben. Alle Gegenstände wie Bankauszüge, Wertpapiere, Rechnungen, Geräte, Schallplatten, Bücher, Bilder und Schmuck sollen erfasst und danach aufgelistet werden, und der Gesamtwert berechnet werden.

Zusätzlich auch noch der Wert jeder Gruppe, bzw. der Wert der Gruppen Kapital (Bankauszüge, Wertpapiere und Rechnungen), Inventar (Schallplatten, Schmuck, Geräte) und Sonstiges (Büher und Bilder).

Zu den Gegenständen sollen jeweils Werte gespeichert werden, wie z.B. Autor und Titel bei einem Buch.







Ich hab schonmal ein Klassendiagramm gemacht, wie findet Ihr das? Ist der Ansatz richtig?

Danke schonmal im vorraus für Eure Mithilfe.


----------



## Gast2 (17. Dez 2010)

Hm, sollen alle deine Striche da Vererbungen sein? Wenn ja, dann :noe:
Wozu eine eigene Klasse Methoden?

Ich würd da ein paar Vererbungen rausschmeißen und z.b. in der Klasse Datenbank drei Listen führen:
List<Kapital>, List<Inventar> und List<Sonstiges>.
Dazu noch nen schönes Interface, dann siehst schonmal etwas besser aus


----------



## axöööl (17. Dez 2010)

Ja, es sollen Vererbungen sein, da jeder Gegenstand einen Wert hat, wird dies in der Oberklasse, bzw. in den Klassen Kapital/Inventar/Sonstiges festgelegt/erstellt.

Ich soll in dem Programm nämlich auch eine "sinnvolle" Vererbung verwenden.

Aber wie mache ich das bei deinem Vorschlag? An Arrays bzw. ArrayLists habe ich auch gedacht, jeodh pro gegenstand (Buch, Schmuck, Rechnung,...) Weil Sonst kann ich ja nicht die Unterschiedlichen Attribute zuweisen...Beim Buch Titel und Autor, bei der Rechnung die Rechnungsnummer...etc.


----------



## Gast2 (17. Dez 2010)

Naja so halt etwa:

Datebank:

```
public class Datenbank (evtl. noch implements Valuable) {

	private List<Valuable> valuables = new ArrayList<Valuable>();

	public void add(Valuable valuable) {
		this.valuables.add(valuable);
	}
	
	public void remove(Valuable valuable) {
		this.valuables.remove(valuable);
	}
	
	public float getValue() {
		float sum = 0f;
		for (Valuable valuable : valuables) {
			sum += valuable.getValue();
		}
		return sum;
	}
}
```

Valuable:

```
interface Valuable {
		public float getValue();
	}
```
Kapital:

```
abstract class Kapital implements Valuable {
		private float value;
		
		@Override
		public float getValue() {
			return value;
		}
	}
```
Rechnung:

```
class Rechnung extends Kapital {
		private int nummer;

		public int getNummer() {
			return nummer;
		}

		public void setNummer(int nummer) {
			this.nummer = nummer;
		}
	}
```
Inventar:

```
abstract class Inventar implements Valuable {
		private float value;
		
		@Override
		public float getValue() {
			return value;
		}
	}
```
Schmuck:

```
class Schmuck extends Inventar {
		private String description;

		public String getDescription() {
			return description;
		}

		public void setDescription(String description) {
			this.description = description;
		}
	}
```


----------



## axöööl (17. Dez 2010)

Ja das versteh ich schon soweit ganz gut, bis auch das hier:


```
interface Valuable {
        public float getValue();
    }
```

Was bedeutet das? (Habe natürlich schon gegoogelt, konnte aber kein passendes Ergebnis für mich finden)

Also besonders interface ? das Haben wir bis jetzt noch nicht behandelt...


----------



## Gast2 (17. Dez 2010)

Haste dir das z.b. schon durchgelesen?
Tutorial / Java Grundlagen / Interfaces

EDIT:
Das Interface ist auch nicht zwingend notwendig, dadurch wird der code nur etwas ordentlicher.


----------



## axöööl (17. Dez 2010)

Danke habs mir durchgelesen, verstehe es aber nicht komplett. Wozu ist nein Interface da? In den Beispielen sind Methoden deklariert, dann steht da aber wieder das der Methodenrumpf nicht in das Interface darf...

Ich sitz hier grade vor eclipse und versuch mir hier was zusammen zu bauen, aber irgend wie komm ich grade nicht weiter...

Mein Problem:

Ich will ja z.B. Eine neue Rechnung hinzufügen. Dann gebe ich also die Rechnungsnumemr und den Wert (negativ, aber das ändert ja nicht, da float)...Dazu muss ich ja in meinem Menu ersteinmal auswählen, das ich in den "Bereich" Rechnung möchte und da dann halt eine Position hinzufügen will...

achja, das Programm soll nur über die Konsole bedient werden...

Das ist bis jetzt mein Menu, ich bräuchte also unbedingt die Variable bereich in valuables... nur wie?


```
private void go()
	{
		String menuWahl;
		boolean fertig = false;
		//Menuschleife
		while(!fertig) 
		{
			System.out.println("Erbengemeinschaft (Version 1.0). Erfasst sind "+valuables.getSize()+" Positionen. Aktueller Bereich:  "+valuables.getAktBereich());
			System.out.println("<1> Position Hinzufügen, <2> Position Ändern, <3> Position Löschen, <4> Bereich auswählen, <5> Wert berechnen, <6> Gesamtwert berechnen, <7> Ende");
			menuWahl=Input("Bitte wählen Sie: ");
			try {
				selection = Integer.parseInt(menuWahl);
			}
			catch (NumberFormatException e) {
				System.out.println("Falsche Eingabe. Nochmal bitte.");
				continue;
			}
			switch(selection) {
			case 1:
					addPos();
					break;
			case 2:
					editPos();
					break;
			case 3:
					removePos();
					break;
			case 4:
					selectBereich();
					break;
			case 5:
					berechneWert();
					break;
			case 6:
					berechneGesamtwert();
					break;
			case 7:
					fertig=true;
					System.out.println("Danke das Sie das Programm gewählt haben");
					break;
			default:
					System.out.println("Falsche Eingabe. Bitte nochmal versuchen");
			}
			
		}
	}
```


----------

