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
   
   }