Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling

hulahoop79

Neues Mitglied
Hallo,

ich bräuchte Hilfe bei einer Programmieraufgabe. Aufgabe ist es etwas mit einer Benutzeroberfläche zu programmieren. Ich hab mir ein Tool zur Berechnung des Wärmedurchgangs überlegt, bei dem man zwischen den Werkstoffen wählen kann und die Abmessungen händisch einträgt. Als Ausgabe gibt es dann das Ergebnis, wenn man auf den Button Ergebnis drückt. Weil die Benutzeroberfläche bei allen Werkstoffen gleich ist und die Berechnung ebenso, möchte ich eine Klasse Benutzeroberfläche definieren. In jedem Werkstoff soll diese dann enthalten sein. Nun habe ich jedoch das Problem, dass ich nicht weiß wie ich die Variable lambdaspezifisch (Wärmeleitwert/Wärmeleitwiderstand), der für jeden Werkstoff spezifisch ist, an das lambda der Benutzeroberfläche bei der Berechnung weitergeben kann bzw. es wenn es gebraucht wird durch das überschreiben kann. Ich weiß es ist vielleicht banal, aber ich steige gerade erst ein
:D
. Vielleicht habt ihr auch Anregungen wie man es besser machen könnte (ich bin für alles offen). Das worum es geht habe ich rot markiert. Hier einmal mein Code für einen Werkstoff (bspw. Ziegelstein):


Java:
package Waermedurchgangsberechnung;

public class Ziegelstein extends Benutzeroberflaeche{
    public double getlambda(double lambdaspez){
        lambdaspez=0,40;
        return lambdaspez;
    }

}
und der Codeschnipsel aus der Benutzeroberfläche:

Java:
    public void actionPerformed(ActionEvent e) {

        if(e.getActionCommand().equals("Ergebnis"))
        {


        String breite=b.getText();
        String hoehe=h.getText();
        String dicke=d.getText();
        String aussentemperatur=Ta.getText();
        String innentemperatur=Ti.getText();
        int m=breite.length();
        int n=hoehe.length();
        int o=aussentemperatur.length();
        int p=innentemperatur.length();
        int q=dicke.length();
        double lambda=getlambda();

        //Berechnung
        if((m!=0) && (n!=0)&&(o!=0)&&(p!=0)&&(q!=0))
        {
            double v=Double.parseDouble(breite);
            double w=Double.parseDouble(hoehe);
            double x=Double.parseDouble(dicke);
            double y=Double.parseDouble(aussentemperatur);
            double z=Double.parseDouble(innentemperatur);
            double K;

            if((v>0)&&(w>0)&&(x>0)&&(y>=-30&&y<=45)&&(z>=-30&&z<=45))
            {
                if(y>z) {
                    K=y-z;
                } else {
                    K=z-y;
                }
                double Q=(K*x)/(v*w*lambda);
                BigDecimal runden=BigDecimal.valueOf(Q);
                String E=String.valueOf(runden.setScale(2,RoundingMode.HALF_DOWN));
                erg.setText(E);
            }
            else
            { erg.setText("Falscher Wertebereich");
            }
            //Start der Berechnung

        }
        else
        {
            erg.setText("Bitte fehlende Werte in Eingabezeilen eintragen!");
        }
    }
}

Über eine Hilfe würde ich mich sehr freuen 🙂
 
Zuletzt bearbeitet von einem Moderator:
Also wie @MoxxiManagarm schon meinte: Du musst Dein Design dringend überdenken! Und vor allem: Die Java Grundlagen sollten halbwegs sitzen, so man ein Programm mit GUI erstellen will. So ein Designproblem ist mal dahin gestellt, aber sowas:

Java:
    public double getlambda(double lambdaspez){
        lambdaspez=0,40;
        return lambdaspez;
    }

Was meinst Du, was das macht? Und hier geht es wirklich um Basis Dinge, die man einmal macht und dann nutzt man es nur noch...

Also wenn Du eine Klasse Ziegelstein haben willst und diese Klasse eine Eigenschaft haben soll: waermeLeitwert, dann wäre das sowas:
Java:
public class Ziegelstein {
    private double waermeLeitwert;
    
    public double getWaermeLeitwert() { return this.waermeLeitwert; }
    public void setWaermeLeitwert(double value) { this.waermeLeitwert = value; }
    
    public Ziegelstein() {};
    
    public Ziegelstein(double waermeLeitwert) {
        this.waermeLeitwert = waermeleitwert;
    };
}

Das ist so Standard, dass man sogar nur folgendes schreiben kann:
Java:
public class Ziegelstein {
    private double waermeLeitwert;
}
und dann geht man in der IDE hin und lässt Getter / Setter / Konstruktoren direkt generieren ... Das ist also nur reiner Schreibkram!

Aber zurück zum Design:
Was hast Du denn da genau?
-> Du hast eine Art Rechner. Der bekommt einen Stoff übergeben und noch irgendwelche anderen Werte und dann rechnet er etwas aus.

Also hast Du erst einmal einen Stoff. Du hast also eine Klasse Stoff. Und Stoff zeichnet sich dadurch aus, dass es einen Wärmeleitwert hat. Und du willst ihn ja irgendwie ansprechen können, also hat der noch einen Namen.

Dann willst Du eine Menge an Stoffen vorhalten. Da kannst Du Dir dann ja mal anschauen, was Ihr da so hattet. Listen, Arrays, ... all sowas gibt es... Da wirst Du also ggf. eine Menge an Stoffen vorhalten können ....

Dann kannst Du an die Oberfläche gehen - die verwendet dann die Business Lögik, die Du unabhängig von der Oberfläche schon erstellen und ggf. testen konntest ...
 

Zurück
Oben