Programmierübung: Objektorientierte Programmierung File

Werbung
Anwendungssysteme
Programmierübung
OOP
Objektorientierte Programmierung
Name:
Datum:
Klasse:
Blatt Nr.: 1/2
Lfd. Nr.:
Die unten dargestellte Klasse RechnerTest bietet die Funktionen eines sehr einfachen Taschenrechners.
1. Erstellen Sie das Klassendiagramm der in RechnerTest verwendeten Klasse Rechner im OOD.
2. Implementieren Sie die Klasse Rechner und testen Sie diese innerhalb der Klasse RechnerTest.
/** Testet die Klasse Rechner
* @author Ansorge, OSZ IMT
* @version 1.2 10.11.2009
*/
public class RechnerTest{
public static void main(String arg[]) {
char operator;
Rechner meinRechner;
meinRechner = new Rechner();
System.out.println("Rechner mit folgenden Moeglichkeiten");
System.out.println(" (A)kkumulator eingeben);
System.out.println(" (+),(-),(*),(/),(=)\n (o)ff \n ");
do {
System.out.print("Eingabe:\t");
operator = Tastatur.liesChar();
switch(operator) {
case 'a':
case 'A': System.out.print("Akkumulator:\t");
meinRechner.setAkku(Tastatur.liesDouble());
break;
case '+': System.out.print("Operand:\t");
meinRechner.plus(Tastatur.liesDouble());
break;
case '-': System.out.print("Operand:\t");
meinRechner.minus(Tastatur.liesDouble());
break;
case '*': System.out.print("Operand:\t");
meinRechner.mal(Tastatur.liesDouble());
break;
case '/': System.out.print("Operand:\t");
meinRechner.geteilt(Tastatur.liesDouble());
break;
case '=':
System.out.println("Ergebnis:\t"+meinRechner.getAkku());
default: ;
} //switch
} while(operator != 'o');
}//main
} // RechnerTest
Erstellen Sie eine Klasse Bruch, BruchRechner und BruchRechnerTest analog zu der ersten Aufgabe.
1. Erstellen Sie zuerst ein Klassendiagramm (OOD) der Klassen Bruch und BruchRechner.
Hinweis(oder besser: Gemeinheit): Brüche sollen immer gekürzt dargestellt werden.
2. Schreiben Sie nun die BruchRechnerTest – Klasse.
3. Implementieren Sie nun die restlichen Klassen.
©Tenbusch
Anwendungssysteme
Programmierübung
OOP
Objektorientierte Programmierung
Name:
Datum:
Klasse:
Blatt Nr.: 2/2
Lfd. Nr.:
Wir brauchen ein Programm, welches einen Briefkopf erstellt und ausdruckt. Ein typischer Briefkopf besteht aus
Absender, Empfänger, dem aktuellen Datum und dem Betreff. Empfänger und Absender haben die gleichen
Attribute, daher ist das Anlegen von 2 Klassen unnötig.
1. Erstellen ein UML-Klassendiagramm (OOA).
2. Vergleichen Sie mit der Musterlösung.
3. Implementieren Sie das OOD – Klassendiagramm, welches Sie von mir bekommen.
4. Binden Sie die Methode drucken() ein und drucken Sie einen Briefkopf mit Ihnen als Absender aus.
Bitte nutzen Sie dazu nur den PDF-Generator als Drucker.
import java.awt.*;
import java.awt.print.*;
public void drucken(){
//Druckauftag beantragen
PrinterJob pjob = PrinterJob.getPrinterJob();
if (pjob.printDialog() == false)
return;
//Druckauftrag füllen - eine Klasse Printable wird benötigt
pjob.setPrintable(new Printable() {
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
//Anzahl der Seiten
if (pageIndex >= 1)
return Printable.NO_SUCH_PAGE;
//Layout (Zeilenabstand)
int zeile = 5, fontsize = 12;
//Schriftart setzen
g.setFont(new Font("Arial", Font.PLAIN, fontsize));
//auf die Druckerseite zeichnen
g.drawString(absender.getAnrede(), 60, zeile++ * (fontsize+2));
g.drawString(absender.getVorname() + " " + absender.getNachname(), 60, zeile++ * (fontsize+2));
g.drawString(absender.getAdresszusatz(), 60, zeile++ * (fontsize+2));
g.drawString(absender.getStrasse() + " " + absender.getHausnummer(), 60, zeile++ * (fontsize+2));
g.drawString(absender.getLand()+absender.getPlz()+" "+absender.getOrt(),60,zeile++*(fontsize+2));
zeile +=3;
g.setFont(new Font("Arial", Font.BOLD, fontsize));
g.drawString(empfaenger.getAnrede(), 60, zeile++ * (fontsize+2));
g.drawString(empfaenger.getVorname()+" "+empfaenger.getNachname(), 60, zeile++ * (fontsize+2));
g.drawString(empfaenger.getAdresszusatz(), 60, zeile++ * (fontsize+2));
g.drawString(empfaenger.getStrasse()+" "+empfaenger.getHausnummer(), 60, zeile++ * (fontsize+2));
g.drawString(empfaenger.getLand()+empfaenger.getPlz()+" "+empfaenger.getOrt(),60,zeile++*(fontsize+2));
zeile +=2;
g.drawString(betreff + " vom " + datum, 60, zeile * (fontsize+2));
//Seite bestätigen
return Printable.PAGE_EXISTS;
}
});
//Druckauftrag abschicken
try {
pjob.print();
} catch (PrinterException e) {
System.out.println("Auftrag konnte nicht gedruckt werden");
e.printStackTrace();
}
}
Schreiben Sie den Quellcode für einen JButton, der in jede beliebige GUI eingebunden werden kann und auf
Knopfdruck, diese GUI ausdruckt.
©Tenbusch
Herunterladen