MezData-Logo Creative Commons License 1750 Lösungen Button :OOP: Klassen und Objekte

Das Spider-Projekt

Erzeugen Sie ein BlueJ Projekt "spider_v1" mit folgenden Klassen:

Klasse "SpiderStart"

import java.awt.*;
import java.awt.event.*;

/**
 * Title:        spider - SpiderStart
 * Description:  Projekt zur Einfuehrung der Objektorientierten Programmierung
 * Copyright:    Copyright (c) 2003
 * Company:      MezData
 * @author Oliver Mezger
 * @version 1.0
 */

public class SpiderStart {

  /**Konstruktor fuer die Applikation*/
  public SpiderStart() {
    //die SpiderBox wird erzeugt
    SpiderBox sbox = new SpiderBox();
    //die Groesse der Box wird festgelegt
    sbox.setSize(500,350);
    sbox.setTitle("SpiderBox");
    sbox.setVisible(true);
  }

  /**Main Methode zum starten der Applikation*/
  public static void main(String[] args) {
    new SpiderStart();
  }
}

Klasse "SpiderBox"

import java.awt.*;
import java.awt.event.*;

/**
 * Title:        spider - SpiderBox
 * Description:  Projekt zur Einfuehrung der Objektorientierten Programmierung
 * Copyright:    Copyright (c) 2003
 * Company:      MezData
 * @author Oliver Mezger
 * @version 1.0
 */

public class SpiderBox extends Frame {

// Die Attribute der Klasse

  private Color boxFarbe;
  private Button exit = new Button();
  private FlowLayout myFlowLayout = new FlowLayout();

// Die Methoden der Klasse

  //Konstruktor, wird beim Erzeugen der Klasse aufgerufen
  public SpiderBox() {

    boxFarbe=Color.yellow;
    this.setLayout(myFlowLayout);
    setBackground(boxFarbe);
    //Button zum Verlassen des Programms
    exit.setLabel("EXIT");
    //Wird der Button gedrueckt, wird exit_mouseClicked(e) aufgerufen.
    //Diese Methode wird dem Betriebssystem bekannt gemacht, so dass es bei
    //einem Mausklick auf den Button die angegebene Methode aufruft.
    exit.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        exit_mouseClicked(e);
      }
    });
    this.add(exit, null);

  }//Ende des Konstruktors

  //Diese Methode wird vom Betriebssystem aufgerufen, wenn das Fenster
  //neu gezeichnet werden muss, z.B. wenn ein anderes Fenster, welches
  //dieses Fenster verdeckt hatte, weggeschoben wird.
  public void paint(Graphics g)  {
    int ortX = 100, ortY = 100, groesse = 50;  
    g.setColor(Color.red);
    g.fillOval(ortX-groesse/2, ortY-groesse/2, groesse, groesse);
    //die Nase
    g.setColor(Color.black);
    int part=groesse/8;
    g.drawLine(ortX, ortY-part, ortX, ortY+2*part);
    //der Mund
    part=2*groesse/3;
    g.drawArc(ortX-part/2, ortY-part/2, part, part, -125, 80);
    //die Augen
    g.setColor(Color.green);
    part=groesse/8;
    g.fillOval((int)(ortX-3*part), ortY-2*part, 2*part,part);
    g.fillOval((int)(ortX+1*part), ortY-2*part, 2*part,part);
  }
  //Die Methode wird aufgerufen, wenn der exit-Button gedrueckt wurde.
  //Die Verbindung des Mausklicks mit der Methode, wurde im Konstruktor
  //hergestellt (siehe dort).
  public void exit_mouseClicked(MouseEvent e) {
    System.exit(0);
  }
}

Compilieren und testen Sie das Programm!

Lesen Sie folgende Seite: http://ivs.cs.uni-magdeburg.de/%7edumke/UML/2.htm

Gruppenarbeit: Erstellen Sie für die Klasse "SpiderBox" ein Klassendiagramm und ein Objektdiagramm!

FrageWodurch wird die Spinne gezeichnet? Wozu wird die Klasse "SpiderStart" benötigt?

Erweiteren Sie SpiderBox so, daß die Spinnen Beine bekommen!

Es sollen nun mehrere Spinnen in der Box sein, erweitern Sie das Klassendiagramm um eine Klasse "Spider", welche Eigenschaften und Methoden werden in dieser Klasse benötigt? Welche Änderungen ergeben sich für die Klasse "SpiderBox" ?

Implementieren Sie die Klasse "Spider" und testen Sie Ihr Programm!