T
Tito
Gast
Hallo,
ich hab laut meinem Prof ein großes Problem mit objektorientiertem Programmieren, er findet meine Programme regelmäßig zu prozedural.
Die Theorie Objekte aus der Realität mit einer Programmiersprache abzubilden leuchtet mir ein, aber es scheint in der Praxis noch Probleme zu geben, so dass meine Progs zu prozedural sind.
Im Folgenden habe ich einen Gewichtsberater geschrieben der den BMI errechnen soll.
Das Prog ist in 4 Klassen gegliedert: GewichtsberaterMain, Gewichtsberater, MeineEingabe, MeineAusgabe
Meine Fragen an euch:
Findet ihr das Prog objektorientiert/prozedural? Wenn ja/nein warum?
Habt ihr Vorschläge um das Prog objektorientierter zu programmieren?
Hier die Klasse GewichtsberaterMain
Hier die Klasse Gewichtsberater
Hier die Klasse MeineEingabe
Hier die Klasse MeineAusgabe
ich hab laut meinem Prof ein großes Problem mit objektorientiertem Programmieren, er findet meine Programme regelmäßig zu prozedural.
Die Theorie Objekte aus der Realität mit einer Programmiersprache abzubilden leuchtet mir ein, aber es scheint in der Praxis noch Probleme zu geben, so dass meine Progs zu prozedural sind.
Im Folgenden habe ich einen Gewichtsberater geschrieben der den BMI errechnen soll.
Das Prog ist in 4 Klassen gegliedert: GewichtsberaterMain, Gewichtsberater, MeineEingabe, MeineAusgabe
Meine Fragen an euch:
Findet ihr das Prog objektorientiert/prozedural? Wenn ja/nein warum?
Habt ihr Vorschläge um das Prog objektorientierter zu programmieren?
Hier die Klasse GewichtsberaterMain
Code:
import java.io.IOException;
/** Der Gewichtsberater ermöglicht die Eingabe von Alter, Größe und Gewicht.
Aus diesen Daten wird der BMI berechnet, außerdem wird dem Benutzer berichtet
in welchem Maß das eingegebene Gewicht vom Normalgewicht abweicht und weist
auf das Idealgewicht hin. */
public class GewichtsberaterMain
{
/** Der Gewichtsberater ermöglicht die Eingabe von Alter, Größe und Gewicht.
Aus diesen Daten wird der BMI berechnet, außerdem wird dem Benutzer berichtet
in welchem Maß das eingegebene Gewicht vom Normalgewicht abweicht und weist
auf das Idealgewicht hin. */
public static void main (String[] args) throws IOException
{
Gewichtsberater gewichtsberechnung = new Gewichtsberater();
}
}
Hier die Klasse Gewichtsberater
Code:
import java.io.IOException;
/** Der Gewichtsberater ermöglicht die Eingabe von Alter, Größe und Gewicht.
Aus diesen Daten wird der BMI berechnet, außerdem wird dem Benutzer berichtet
in welchem Maß das eingegebene Gewicht vom Normalgewicht abweicht und weist
auf das Idealgewicht hin. */
public class Gewichtsberater
{
/** zur Erfassung des Alters*/
private double alter;
/** zur Erfassung der Groesse*/
private double groesse;
/** zur Erfassung des Gewichts.*/
private double gewicht;
/** zur Erfassung des BMI*/
private double bmi;
/** zur Beurteilung des Gewichts*/
private String beurteilung;
/** zur Erfassung des empfohlenen Gewichtsbereichs*/
private double bereichVon;
/** zur Erfassung des empfohlenen Gewichtsbereichs*/
private double bereichBis;
/** zur Erfassung einer Altersklasse.*/
private double altersklasse;
/** Der Gewichtsberater ermöglicht die Eingabe von Alter, Größe und Gewicht.
Aus diesen Daten wird der BMI berechnet, außerdem wird dem Benutzer berichtet
in welchem Maß das eingegebene Gewicht vom Normalgewicht abweicht und weist
auf das Idealgewicht hin. */
public Gewichtsberater() throws IOException
{
/**Ermöglicht die Eingabe des Alters*/
legeAlterFest();
/**Ermöglicht die Eingabe von Gewicht und Groeße.*/
legeKoerperDatenFest();
/**Berechnet den BMI*/
berechneBMI();
/**Zeigt den berchneten BMI an*/
zeigeBMIAn();
/**Legt für eine korrekte Beurteilung des BMI's ein Altersklasse fest.*/
legeAltersklasseFest();
/**Berechnet die Beurteilung des BMI's.*/
berechneBeurteilung();
/**Berechnet das Idealgewicht.*/
idealBerechnung();
/**Zeigt die Beurteilung für den BMI an*/
zeigeBeurteilungAn();
}
/**Ermöglicht die Eingabe des Alters*/
private void legeAlterFest() throws IOException
{
MeineAusgabe.schreibe(" Gewichtsberater");
MeineAusgabe.schreibe("\n\nBitte geben Sie ihr Alter in Jahren an: ");
alter = MeineEingabe.erfasseDouble();
if (alter < 19)
{MeineAusgabe.schreibe("Da Sie unter 19 Jahre alt sind, macht eine BMI-Berechnung bei Ihnen keinen Sinn.");
System.exit(0);
}
}
/**Ermöglicht die Eingabe von Gewicht und Groeße.*/
private void legeKoerperDatenFest() throws IOException
{
MeineAusgabe.schreibe("Bitte geben sie Ihre Groesse in cm an : ");
groesse = MeineEingabe.erfasseDouble();
MeineAusgabe.schreibe("Bitte geben Sie ihr Gewicht in KG an : ");
gewicht = MeineEingabe.erfasseDouble();
}
/**Berechnet den BMI*/
private void berechneBMI() throws IOException
{
bmi = (gewicht / (groesse * groesse) * 10000);
}
/**Zeigt den berchneten BMI an*/
private void zeigeBMIAn() throws IOException
{
bmi = Math.round( bmi * 10. ) / 10.;
MeineAusgabe.schreibe("\nIhr Body-Mass-Index betraegt: " + bmi);
}
/**Zeigt die Beurteilung für den BMI an*/
private void zeigeBeurteilungAn() throws IOException
{
MeineAusgabe.schreibe("\nSie haben " + beurteilung);
bereichVon = Math.round( bereichVon * 10. ) / 10.;
bereichBis = Math.round( bereichBis * 10. ) / 10.;
MeineAusgabe.schreibe("\nIhr Gewicht sollte in folgendem Bereich liegen: " + bereichVon + " - " + bereichBis + " kg\n\n");
}
/**Berechnet das Idealgewicht*/
private void idealBerechnung() throws IOException
{
bereichVon = (19 + altersklasse) * ((groesse * groesse) / 10000);
bereichBis = (23.9 + altersklasse) * ((groesse * groesse) / 10000);
}
/**Legt für eine korrekte Beurteilung des BMI's ein Altersklasse fest.*/
private void legeAltersklasseFest() throws IOException
{
if (alter >= 19) if (alter <= 24)
{
altersklasse = 0;
}
else if (alter >= 25) if (alter <= 34)
{
altersklasse = 1;
}
else if (alter >= 35) if (alter <= 44)
{
altersklasse = 2;
}
else if (alter >= 45) if (alter <= 54)
{
altersklasse = 3;
}
else if (alter >= 55) if (alter <= 64)
{
altersklasse = 4;
}
else if (alter >= 65)
{
altersklasse = 5;
}
}
/**Berechnet die Beurteilung des BMI's.*/
private void berechneBeurteilung() throws IOException
{
if (bmi < 14 + altersklasse)
{
beurteilung = ("krankhaftes Untergewicht");
}
else if (bmi >= (14 + altersklasse)) if ((bmi <= 18.9 + altersklasse))
{
beurteilung = ("Untergewicht");
}
else if (bmi >= (19 + altersklasse)) if (bmi <= (23.9 + altersklasse))
{
beurteilung = ("Normalgewicht");
}
else if (bmi >= (24 + altersklasse)) if (bmi <= (28.9 + altersklasse))
{
beurteilung = ("leichtes Uebergewicht");
}
else if (bmi >= (29 + altersklasse)) if (bmi <= (38.9 + altersklasse))
{
beurteilung = ("Übergewicht");
}
else if (bmi >= (39 + altersklasse))
{
beurteilung = ("krankhaftes Übergewicht");
}
}
}
Hier die Klasse MeineEingabe
Code:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/** Hiermit soll die Eingabe des Gewichtsberaters vereinfacht werden in dem Javabefehlen selbstdefinierte
*Begriffe zugeordnet werden.*/
public class MeineEingabe
{
private static BufferedReader eingabe = new BufferedReader(new InputStreamReader (System.in));
/**ermöglicht das Erfassen von Daten des Typs String*/
public static String erfasseText() throws IOException
{
return eingabe.readLine();
}
/**ermöglicht das Erfassen von Daten des Typs Integer*/
public static int erfasseInteger() throws IOException
{
return Integer.parseInt(erfasseText());
}
/*public static boolean erfasseBoolean() throws IOException
{
return Boolean.parseBoolean(erfasseText());
}*/
/**ermöglicht das Erfassen von Daten des Typs short*/
public static short erfasseShort() throws IOException
{
return Short.parseShort(erfasseText());
}
/**ermöglicht das Erfassen von Daten des Typs Double*/
public static double erfasseDouble() throws IOException
{
return Double.parseDouble(erfasseText());
}
}
Hier die Klasse MeineAusgabe
Code:
/** Hiermit soll die Ausgabe des Gewichtsberaters vereinfacht werden in dem Javabefehlen selbstdefinierte
*Begriffe zugeordnet werden.*/
public class MeineAusgabe
{
/** Macht "schreibe" zu einer Anweisung die es ermöglicht Text zu erzeugen. */
public static void schreibe(String text)
{
System.out.print(text);
}
}