Einführung
in die objektorientierte Programmierung
Aufgabe 1 Lösungsansatz (nicht fertig)
import java.awt.*;
import java.awt.event.*;
public class Rechner extends Frame {
private BorderLayout borderLayout1 = new BorderLayout();
// private FlowLayout flowLayout1 = new FlowLayout();
/*
* AWT-Komponenten fuer Eingabetextfeld, Zifferntasten, Operatortasten sowie
* Ziffernpanel und Operatorpanel deklarieren und soweit moeglich bereits
* zugehoerige Objekte erzeugen
*/
public Rechner() {
/* Ggf. lokale Variablen deklarieren */
/* Layout fuer Frame festlegen */
this.setLayout(borderLayout1);
this.setSize(150, 200);
this.setLocation(100, 100);
this.setBackground(Color.gray);
/* FlowLayout fuer Ziffern- und Operatorpanel setzen */
/* Zifferntasten ggf. erzeugen und in Ziffernpanel einfuegen */
/* Operatortasten ggf. erzeugen und in Operatorpanel einfuegen */
/* Objekte in Frame plazieren */
TextField tf = new TextField("");
tf.setEditable(false);
this.add(tf, borderLayout1.NORTH);
Panel p1 = new Panel();
p1.setLayout(new FlowLayout());
Knopf[] knopfliste = new Knopf[10];
Ziffernbeobachter zb1= new Ziffernbeobachter(tf);
OperatorenBeobachter ob= new OperatorenBeobachter(tf);
for (int i=0; i<10; i++) {
knopfliste[i]= new Knopf(i,zb1);
p1.add( knopfliste[i]);
} // end of for
this.add(p1, borderLayout1.CENTER);
Panel p2 = new Panel();
p2.setLayout(new FlowLayout());
Button bplus = new Button("+");
bplus.addActionListener(ob);
p2.add(bplus);
Button bminus = new Button("-");
p2.add(bminus);
Button bmal = new Button("*");
p2.add(bmal);
Button bgleich = new Button("=");
bgleich.addActionListener(ob);
p2.add(bgleich);
this.add(p2, borderLayout1.SOUTH);
/* ... */
}
/* ... */
public static void main(String argv[]) {
Rechner rechner = new Rechner();
rechner.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
rechner.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
public class Knopf extends Button{
public int wert;
public Knopf(int s, Ziffernbeobachter zb){
super( String.valueOf(s) );
this.wert=s;
this.addActionListener(zb);
}
public int getwert( ){
return this.wert;
}
}
class Ziffernbeobachter implements ActionListener{
private TextField tf;
public Ziffernbeobachter(TextField tf){
this.tf = tf;
}
public void actionPerformed(ActionEvent e){
Knopf kn;
kn = (Knopf) e.getSource();
tf.setText(tf.getText()+kn.getwert());
}
}
class OperatorenBeobachter implements ActionListener{
private TextField tf;
int op1=0; int op2=0;
String operator = "";
public OperatorenBeobachter(TextField tf){
this.tf = tf;
}
public void actionPerformed(ActionEvent e){
Button kn;
kn = (Button) e.getSource();
if (tf.getText()=="") {
tf.setText("Fehler");
} // end of if
else if (kn.getLabel().equals("+")) {
op1=Integer.parseInt(tf.getText());
tf.setText("");
operator="+";
}
else if (kn.getLabel().equals("-")) {
op1=Integer.parseInt(tf.getText());
tf.setText("");
operator="-";
}
else if (kn.getLabel().equals("*")) {
op1=Integer.parseInt(tf.getText());
tf.setText("");
operator="*";
}
else if (kn.getLabel().equals("=")) {
op2=Integer.parseInt(tf.getText());
System.out.println(op1);
if (operator.equals("+")) {
int ergebnis=op1+op2;
tf.setText(String.valueOf( ergebnis));
} // end of if
}
} // end of if-else
}