Nr. 3 class Division{ public static void main(String parameter[]){ try

Werbung
Nr. 3
class Division{
public static void main(String parameter[]){
try{
int a,b,c,rest;
a=Integer.parseInt(parameter[0]);
b=Integer.parseInt(parameter[1]);
c=a/b;
rest=a%b;
System.out.print(args[0]+" : "+Integer.toString(b));
System.out.print(" = "+Integer.toString(c)+" Rest: ");
System.out.println(Integer.toString(rest));
} catch (Exception e) {
System.out.println("Folgender Fehler st aufgetreten:
");
System.out.print(e.toString());
} // end of catch
} // end of main
} // end of class
Nr. 4
class Division2{
public static void main(String parameter[]){
try{
int a,b,c,rest;
a=Integer.parseInt(parameter[0]);
b=Integer.parseInt(parameter[1]);
if(b==0) {
System.out.println("Keine Division durch 0 erlaubt");
} else {
c=a/b;
rest=a%b;
System.out.print(parameter[0]+" : "+parameter[1]);
System.out.print(" = "+Integer.toString(c)+" Rest:
");
System.out.println(Integer.toString(rest));
} // if(b==0) - else
} catch (Exception e) {
System.out.print("Folgender Fehler st aufgetreten: ");
System.out.println(e.toString());
} // end of catch
} // end of main
} // end of class
124
Übung auf Seite 46
class Taschenrechner{
public static void main(String parameter[]){
if(parameter.length!=3) {
System.out.println("Drei Parameter eingeben");
} else {
try{
double a,b,ergebnis=0;
String operator;
a=Double.parseDouble(parameter[0]);
operator=parameter[1];
b=Double.parseDouble(parameter[2]);
if(operator.equals("+")) {
ergebnis=a+b;
} // if +
if(operator.equals("-")) {
ergebnis=a-b;
} // if if(operator.equals("x")) {
ergebnis=a*b;
} // if *
if(operator.equals(":")) {
if(b==0) {
System.out.print("Keine Division durch");
System.out.println(" 0 erlaubt");
} else {
ergebnis=a/b;
} // if b==0
} // if :
System.out.print(parameter[0]+" "+operator+" ");
System.out.print(parameter[2]+" = ");
System.out.println(Double.toString(ergebnis));
} catch (Exception e) {
System.out.print("Folgender Fehler st aufgetreten:
");
System.out.println(e.toString());
} // end of catch
} // if parameter== 3 - else
} // end of main
} // end of class
125
Übungen auf Seite 51
a1) Entwurfsdiagramm
Auto
nummernschild : TEXT
oder
Auto
ort : TEXT
kuerzel : TEXT
nr : ZAHL
getNummernschild():TEXT
Beim Entwurf von UML-Klassendiagrammen gibt es in der Regeln mehrere richtige
Möglichkeiten. Es hängt oft vom genauen Einsatzzweck oder dem Auftraggeber ab,
welche Möglichkeit am Ende gewählt wird. Am Beispiel von der Klasse Auto werden
zwei verschiedene Lösungen gezeigt. Bei den anderen Aufgaben wird jeweils nur
eine mögliche Lösung gezeigt.
Der Konstruktor und die Standard get- und set-Methoden gehören nicht ins UMLEntwurfsdiagramm. Die Methode getNummernschild() gibt das ganze
Nummernschild aus und ist keine Standard get-Methode.
a2) Implementationsdiagramm
Auto
- nummernschild:String
+ Auto(nummernschild:String)
+ getNummernschild():String
+ setNummernschild(nummernschild:String)
oder
Auto
- ort:String
- kuerzel:String
- nr :int
+ Auto(ort:String,kuerzel:String,nr:int)
+ getNummernschild():String
+ setOrt(ort:String)
+ setKuerzel(kuerzel:String)
+ setNr(nr:int)
126
b1)Entwurfsdiagramm
Buch
titel : TEXT
autor : TEXT
preis : DEZIMALZAHL
b2) Implementationsdiagramm
Buch
- titel:String
- autor:String
- preis:double
+ Buch(titel:String,autor:String,preis:double)
+ getTitel():String
+ setTitel(titel:String)
+ getAutor():String
+ setAutor(autor:String)
+ getPreis():double
+ setPreis(preis:double)
c1) Achtung: Umlaute sind in Java- und UML-Implementationsdiagrammen nicht
erlaubt! Deshalb wird die Klasse für Schüler in diesem Beispiel absichtlich mit ue
geschrieben. Im Entwurfsdiagramm dürfte noch ein ü stehen, aber es macht
durchaus Sinn die Umlaute von Beginn an weg zu lassen.
Entwurfsdiagramm:
Schueler
vorname:TEXT
nachname:TEXT
alter:ZAHL
In diesem Beispiel wurde eine sehr schlechte Entscheidung getroffen. Das Alter
sollte man besser nicht als Attribut speichern. Schließlich ändert sich das Alter jedes
Jahr – und die Klasse wüsste noch nicht mal wann! Besser wäre es gewesen das
Geburtsdatum zu speichern. Allerdings gibt es keinen einfachen Datentyp für ein
Datum. Wenn man das Datum als String speichert, kann man mit dem Datum aber
nicht rechnen (um zum Beispiel das Alter auszurechnen). Besser wäre es
geburtsjahr, geburtsmonat und geburtstag als Integer-Wert zu speichern.
127
c2) Implementationsdiagramm
Schueler
- vorname:String
- nachname:String
- alter:int
+ Schueler(vorname:String,nachname:String,alter:int)
+ getVorname():String
+ setVorname(vorname:String)
+ getNachname():String
+ setNachname(nachname:String)
+ getAlter():int
+ setAlter(alter:int)
Übungen auf Seite 52
a) Klasse Auto:
Konstruktor
Auto(String nummernschild)
Ein neues Objekt der Klasse Auto wird mit dem angegeben
Nummernschild angelegt.
Anfrage
String getNummernschild()
Die Anfrage liefert das Nummernschild des Autos zurück
Auftrag
void setNummernschild(String nummernschild)
Die Methode ändert das abgespeicherte Nummernschild ab.
oder für die Alternative:
Konstruktor
Auto(String ort, String kuerzel, int nr)
Ein neues Objekt der Klasse Auto wird mit dem angegeben
Nummernschild angelegt.
Anfrage
String getNummernschild()
Die Anfrage liefert das Nummernschild als einen
String „MG-OB-123“zurück.
Auftrag
void setOrt(String Ort)
Die Methode setzt den Ort des Nummernschild, z.B. MG, auf
einen neuen Wert.
void setKuerzel(String kuerzel)
Die Methode setzt das mittlere Kürzel, also OB bei MG-OB-123,
auf einen neuen Wert.
Auftrag
Auftrag
b) Klasse Buch:
Konstruktor
128
void setNr(int nr)
Die Methode setzt die Zahl des Nummernschild, also 123
bei MG-OB-123, auf einen neuen Wert.
Buch(String titel, String autor, double preis)
Ein neues Objekt der Klasse Buch wird angelegt und mit
sinnvollen Werten gefüllt. Der Preis wird in Euro mit
Nachkommastellen angegeben.
Anfrage
String getTitel()
Die Anfrage liefert den Titel des Buchs als String zurück.
Anfrage
String getAutor()
Die Anfrage liefert den Namen des Autors als String zurück.
Anfrage
double getPreis()
Die Anfrage liefert den Preis in Euro zurück.
Auftrag
void setTitel(String titel)
Der Titel wird auf dem im Parameter angegebenen Wert gesetzt.
Auftrag
void setAutor(String autor)
Der Titel wird auf dem im Parameter angegebenen Wert gesetzt.
Auftrag
void setPreis(double preis)
Der Preis wird in Euro auf dem im Parameter angegebenen Wert
gesetzt.
Das Beispiel zeigt wie wichtig eigentlich ein konkreter Schazusammenhang zum
Modellieren ist. Die Frage ob nur der Nachname des Autors oder der komplette
Name des Autors und was gemacht wird wenn mehrere Autoren ein Buch
gemeinsam geschrieben haben kann in einer solchen „Pseudoanwendungsaufgabe“
nicht geklärt werden.
c)
Klasse Schueler:
Konstruktor
Schueler(String vorname, String nachname,
int alter)
Ein neues Objekt der Klasse Schüler wird angelegt und mit
sinnvollen Werten gefüllt.
Anfrage
String getVornamen()
Die Anfrage liefert den Vornamen des Schülers als String
zurück.
Anfrage
String getNachname()
Die Anfrage liefert den Nachnamen des Schülers als String
zurück.
Anfrage
int getAlter()
Die Anfrage liefert das Alter des Schülers zurück.
Auftrag
void setVorname(String vorname)
Der Vorname wird auf dem im Parameter angegebenen Wert
gesetzt.
Auftrag
void setNachname(String nachname)
Der Nachname wird auf dem im Parameter angegebenen Wert
gesetzt.
Auftrag
void setAlter(int alter)
Das aktuelle Alter wird auf dem im Parameter angegebenen
Wert gesetzt.
129
Übungen auf Seite 54
a)
class Auto {
private String nummernschild;
public Auto(String nummernschild){
this.nummernschild=nummernschild;
} // of Bruch
public int getNummernschild(){
return this.nummernschild;
} // of getNummernschild
public void setNummernschild(String nummernschild){
this.nummernschild =nummernschild;
} // of setNummernschild
} // of class
oder
class Auto {
private String ort;
private String kuerzel;
private int nr;
public Auto(String ort,String kuerzel, int nr){
this.ort=ort;
this.kuerzel=kuerzel;
this.nr=nr;
} // of Bruch
public int getNummernschild(){
return this.ort + “-“ + this.kuerzel+“-“
+ Integer.toString(this.nr);
} // of getNummernschild
public void setOrt(String ort){
this.ort=ort;
} // of setort
public void setKuerzel(String kuerzel){
this.kuerzel=kuerzel;
} // of setort
public void setnr(int nr){
this.nr=nr;
} // of setNr
} // of class
130
b)
class Buch{
private String titel;
private String autor;
private double preis;
public Buch(String titel, String autor, double preis){
this.titel=titel;
this.autor=autor;
this.preis=preis;
} // of Bruch
public String getTitel(){
return this.titel;
} // of getTitel
public void setTitel(String titel){
this.titel=titel;
} // of setTitel
public String getAutor(){
return this.autor;
} // of getTitel
public void setAutor(String autor){
this.autor=autor;
} // of setAutor
public double getPreis(){
return this.preis;
} // of getPreis
public void setPreis(double Preis){
this.preis=preis;
} // of setPreis
} // of class
131
c)
class Schueler{
private String vorname;
private String nachname;
private int alter;
public Schueler(String vorname, String nachname, double preis){
this.vorname=vorname;
this.nachname=nachname;
this.preis=preis;
} // of Bruch
public String getVorname(){
return this.vorname ;
} // of getVorname
public void setVorname(String vorname){
this.vorname=vorname;
} // of setVorname
public String getNachname(){
return this.nachname ;
} // of getTitel
public void setNachname(String nachname){
this.nachname=nachname;
} // of setAutor
public int getAlter(){
return this.alter;
} // of getAlter
public void setAlter(int alter){
this.alter=alter;
} // of setAlter
} // of class
132
Herunterladen