# Zooverwaltung



## pisco (25. Jan 2011)

Hey Leute,
ich hab am Do Programmiertest und wir haben einige Übungsbeispiele bekommen:

1. Aufgabe: Typbeziehungen

Für einen kleinen Zoo soll eine Verwaltungsapplikation entwickelt werden. Es gibt zwei grundsätzliche Arten von Tieren: Fleischfresser und Pflanzenfresser. Von einem Tier kann abgefragt werden, ob es Fleisch frisst oder nicht: boolean eatsMeat(). Weiters gibt es die Möglichkeit abzufragen, wieviel Kilogramm Futter ein Tier pro Tag benötigt: double dailyFeedQuantity().
Bei den Fleischfressern wird zwischen Tigern (4kg Futter pro Tag) und Löwen (6kg Futter pro Tag) unterschieden. Bei den Pflanzenfressern gibt es Schafe (2kg Futter pro Tag) und Elefanten (10kg Futter pro Tag). 

so ich hätte das so implementiert:

Zoo ist meine main

dann hab ich noch eine abstract class Tiere

und 2 Klassen mit Fleisch und Pfalnzenfressern 

dann nehm ich ein Interface um die Methoden hinzuzufügen

Würde das in etwa so hinkommen?

if(ja)
  dann geh ichs mitn implementieren an
else
  Wie würdets ihr machen, bzw. so eine Aufgabe generell angehen?


gruss und dank euch schon mal für eure Antwort


----------



## pisco (25. Jan 2011)

ach neeeee slater... warum hast es verschoben. Ich will mir doch gar keine HÜs erschleichen, ich hät eher gern eine gscheite Diskussion darüber gehabt, aus der ich was lernen kann ;(

bitte schiebs wieder zurück....

ach ja: sorry für den blöden Titel.... und danke fürs ändern


----------



## SlaterB (25. Jan 2011)

der Bereich steht nicht unbedingt für 'erschleichen' sondern einfach nur dafür, dass eine Hausaufgabe im Mittelpunkt steht, weniger konkrete Java-Probleme,
'Wie würdets ihr [..] so eine Aufgabe generell angehen?' ist letzlich genau das Stichwort,
mal abwarten was hier noch an Antworten kommen


----------



## w0ddes (25. Jan 2011)

Klingt doch gut soweit. Würde aus auch so angehen


----------



## pisco (25. Jan 2011)

dank euch ;D für eure antworten

gruss


----------



## Andi_CH (25. Jan 2011)

pisco hat gesagt.:


> und 2 Klassen mit Fleisch und Pflanzenfressern


Die sollten auch abstrakt sein.

Aber ansonsten sehe ich keine Fehler - bin gespannt auf den ersten Code.


----------



## pisco (25. Jan 2011)

Hey Leute,
also ich sitz immer noch an meinem http://www.java-forum.org/hausaufgaben/112521-zooverwaltung.html - Beispiel...

also ich habs bis jetz so gemacht:

main ist: zoo extends Tiere{...}
public abstract class Tiere{ boolean eatsMeat(){...};double dailyFeedQuantity() {...}; }
public class Fleischfresser{ ... }
public class Pflanzenfresser { ... }

so... also compilieren gehts, nur stell ich mir die Frage ob es richtig ist(angeblich sollen wir auch Interfaces verwenden ;? )

Ich hätte aber gesagt dass es ohne interface auch schaffe, denn schließlich ist hier eine Generalisierung abgeben: #



> Es gibt zwei grundsätzliche Arten von Tieren: Fleischfresser und Pflanzenfresser.



gruss und dank euch für eure Antwort


----------



## SlaterB (25. Jan 2011)

letztes Post hierher verschoben, neu formuliert ein neues Thema zu erstellen zeugt von Intelligenz, ist aber auch nicht im Sinne des Erfinders, 
warte hier doch einfach paar Stunden ab, paar Antworten sind ja auch schon da, was erwartest du viel mehr?

----

dass Zoo von Tiere erbt scheint unsinnig,
und immer Einzahl verwenden: Tier statt Tiere


----------



## Gonzo17 (25. Jan 2011)

Hab das so, wie du es beschrieben hast, nicht ganz verstanden. Ich würde es so machen, dass es eine abstrakte Klasse Tier gibt. Jedes Tier, zB der Elefant, hat auch eine eigene Klasse und erbt von Tier. Zusätzlich gibt es dann zwei Interfaces, Fleischfresser und Pflanzenfresser, die du beim jeweiligen Tier einbindest. Und wie du schon sagtest, geht das alles von der Klasse Zoo aus, die eine main-Methode hat und dort die Tiere verwaltet (oder wie auch immer).


----------



## chalkbag (25. Jan 2011)

Grüß dich,

an sich kann man beides verwenden.

Die eigentliche Frage ist, was du genau fordern willst.

Mit einer abstrakten Klasse kannst du Methoden schon implementieren (also die Abstrakten Methoden) welche die implementierende Klasse nicht zwangsweise neu implementieren muss.

Bei einem interface definierst du ja nur eine "Schnittstelle" welche aussagt, welche Funktionalitäten (die definierten leeren Methodenrümpfe) die implementierende Klasse bereitstellen, dh. selber definieren, muss.

Ich hoffe ich konnte für Klarheit sorgen. Nochmal kurz, 

Interface = Defnierung der Schnittstelle und Anforderung der Funktionalität
Abstrakt = Neue Funkionalitäten definieren aber auch einen Teil von Funktionen schon zur Verfügung stellen (welche nicht neu implementiert werden müssen, aber können)

Grüße

Chalkbag


----------

