0

BMI Rechner selbst programmieren (Java/Treasureboat/TB)

Anhand dieses Beispiels zeige ich euch wie man einen BMI Rechner im Treasureboat / WebObjects programmiert. Der Java Code kann auch für Java ganz normal verwendet werden.
Main.html

<h4>BMI Class: [<wo:TBString value = "$myBMIRechner.wert" />] </h4>
	Geschlecht: <webobject name="Geschlecht" />
	Gewicht: <webobject name="Gewicht" />
	Grösse: <webobject name="Groesse" /><br />
	BMI: <webobject name="BMI" /><br />
	<wo:submit value="BMI Berechnen" action="$doBMIAction" />

Main.WOD

BMI : TBString {
	value = bmi;
	escapeHTML = false;

}

Geschlecht : TBNumberField {
	value = geschlecht;
}

Gewicht : TBNumberField {
	value = gewicht;
	
}

Groesse : TBNumberField {
	value = groesse;
}

Main.java

public WOActionResults doBMIAction() {
// "doBMIAction" anklicken, sollten alle Werte abgefragt werden um fehler zu vermeinden.
// TBFString.stringIsNullorEmpty() Methode prüft ob ein String "null" oder 0 ist. 

    if (TBFString.stringIsNullOrEmpty(geschlecht) || TBFString.stringIsNullOrEmpty(groesse) || TBFString.stringIsNullOrEmpty(gewicht)) {

      // mache nichts , da ein Wert fehlt.

    } else {

// {} ist wie printf, Vorteil wenn ein feld Leer ist, wird nichts zurückgegeben, und kein error generiert.

      log.info("doBMIAction wurde aufgerufen. {}, {}, {}", geschlecht, groesse, gewicht);

// Übergibt alle Werte gleich an den Constructor, welcher automatisch die funktion aufruft.
// mit TBFV.intValue() können werte umgewandeltwerden, die Methode führt dabei gleich mehrere Checks durch.
// Der Browser übermitteln die Daten vom HTML als String, weshalb Sie für die Berechnung 
// zu einem anderen Value umgewandelt werden müssen. (z.b. zu einem int)

      myBMIRechner = new Bmi_Rechner(TBFV.intValue(geschlecht), TBFV.intValue(groesse), TBFV.intValue(gewicht));
    }
      
// Weitere Möglichkeit den BMI_Rechner zu benutzen, mit getrennten Constructor, Methoden.
// Bmi_Rechner bmi5 = new Bmi_Rechner();
//  bmi5.bmi_berechnung(TBFV.intValue(geschlecht), TBFV.intValue(groesse), TBFV.intValue(gewicht));


// Wäre richtig. Ist aber nicht nötig wenn man sich selbst aufruft. 
// Sofern man eine Weitere Page aufruft ist dies die Richtige wahl.
// Main nextPage = pageWithName(Main);
// nextPage.setGewicht(gewicht);
// nextPage.setGeschlecht(geschlecht);
// nextPage.setGroesse(groesse);

//  return context().page();

Die Klasse: Bmi_Rechner.java

package org.treasureboat.app.components;

public class Bmi_Rechner  {

  public Bmi_Rechner() {
    super();

    // bmi = 50;
  }

  public Bmi_Rechner(int geschlecht, int groesse, int gewicht) {
    // this(); Ruft den Main Constructor auf , und führt dann den Code unterhalb aus. Da super() schon im Main Constructor inizialisiert wird.
    this(); 

    bmi_berechnung(geschlecht, groesse, gewicht);
  }

  public void bmi_berechnung(int geschlecht, int groesse, int gewicht) {
    bmi =  (gewicht * 10000 / (groesse * groesse));

    setWert(geschlecht, bmi);
  }

  public float bmi() {
    return bmi;
  }

  private float bmi = 0;


  public String wert() {
    return wert;
  }

  private String wert;


  private void setWert(int geschlecht, float bmi) {

    if (geschlecht == 1) {
      if ( bmi < 19 ) {
        wert = "Untergewicht"; 
      } else if ( bmi < 29 ) {
        wert = "Normalgewicht";
      } else {
        wert = "Uebergewicht"; 
      }

    } else {
      if ( bmi < 20 ) {
        wert = "Untergewicht";
      } else if ( bmi < 28 ) {         wert = "Normalgewicht";        } else {         wert = "Uebergewicht";       }     }     if ( bmi > 30 ){
      wert = "Dieses Gewicht ist behandlungsbeduerftig!";
    }
  }

}
Loading Facebook Comments ...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.