Objektorientierte Programmierung OOP

Werbung
10 Wiederholung der Grundelemente in Java
1. Schleifen
Objektorientierte Programmierung OOP
Objektorientierte Programmierung (OOP) mit Java
2. Plattformunabhängigkeit
3. BankKonto
4. KontoKorrent
10 Wiederholung der Grundelemente in Java
5. KontenArray
Übungen
© Prof. Dr. Rolf Dornberger
10 Wiederholung der Grundelemente in Java
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
2
Aufgabe 1: Schleifen
Wiederholung:
– Objektorientierte Programmierung; Rolf Dornberger;
http://www.hsw.fhso.ch/dornberger/Documents/Lectures/oop.html; Fachhochschule
Solothurn Nordwestschweiz; 2004-2006.
• In Java können for-Schleifen auch mehrere Zählvariablen beinhalten. Die
Variablen werden dann alle zuerst definiert und initialisiert, danach wird
deren Zulässigkeit für einen weiteren Schleifendurchlauf getestet und dann
erfolgt ein Update der Variablenwerte. Betrachten Sie nun nachfolgendes
Programm.
public class For1x {
public static void main (String[] args) {
for (int i=1, j=4; (i<=4) || (j>=-4); i++, j-=2)
{
System.out.println(i + " / " + j);
}
}
Kapitel:
– 1 Übersicht und Einleitung
– 2 JDK/SDK/JRE und Java Entwicklungswerkzeuge
}
– 3 Hauptbestandteile von Java: Token, Kommentare, Datentypen, Operatoren
– 4 Hauptbestandteile von Java: Datenfelder, Parameterübergabe, Casting
– 5 Elementare Anweisungen und Bedingungen
– 6 Schleifen
– 7 Methoden, Algorithmen und Rekursion in Java
– 8 Klassen, Objekte, Methoden, Vererbung, Konstruktoren
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
3
1. Was gibt das Programm aus?
2. Wie müssen Sie die for-Schleife ändern, damit die Ausgabereihenfolge
umgekehrt ist, also die letzte Zeile zuerst und die erste Zeile zuletzt
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
ausgegeben werden?
3. Was passiert, wenn Sie folgende Zeile anstelle der ursprünglichen for-
4
Lösung 1: Schleifen
1.
Aufgabe 2: Plattformunabhängigkeit
Wie ist die Plattformunabhängigkeit in Java realisiert?
public class For2x {
public static void main (String[] args) {
for (int i=5, j=-4; (i>=1) || (j<=4); i--, j+=2)
{
System.out.println(i + " / " + j);
}
}
}
2.
3.
Erklären Sie kurz.
Ordnen Sie dabei die Begriffe Source-, Byte- und Maschinencode ein.
Der Compiler gibt einen Fehler aus, da die Variable j nicht definiert ist, in
der Zeile System.out.println(i + " / " + j); aber benötigt wird.
4.
public class For3x {
public static void main (String[] args) {
for (int i=3; i<=15; i+=4)
{
System.out.println(i);
}
}
}
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
5
© Prof. Dr. Rolf Dornberger
•
Die Plattformunabhängigkeit in Java ist dadurch realisiert, dass der JavaCompiler den Java-Sourcecode nur in einen so genannten Byte-Code
kompiliert (maschinenneutral). Dieser Byte-Code ist noch auf keiner
Maschine lauffähig d.h. dass der Byte-Code durch eine JVM (für jeden
Maschinentyp verschieden) in maschinenspezifischen Code zur Laufzeit
umgewandelt wird.
Editor
Java
Compiler
22.09.2010
6
Aufgabe 3: BankKonto
Lösung 2: Plattformunabhängigkeit
Java
Sourcecode
(.java)
OOP: 10 Wiederholung der Grundelemente in Java
Java
Bytecode
(.class)
Erstellen Sie die Klasse BankKonto mit den Attributen betrag und inhaber und der Methode
getInfo. Die Methode schreibt den Namen und den Kontostand auf den Bildschirm.
a) Zeichnen Sie dazu zuerst ein Klassendiagramm.
b) Programmieren Sie danach die Klasse (BankKonto.java). Zusätzlich soll diese Klasse die
main-Methode enthalten.
c) Zeichnen Sie die Objektdiagramme für das Objekt KontoMeier mit dem Namen „Meier“, der
25‘000.-- besitzt, und für das Objekt KontoMoser mit dem Namen „Moser“, der 10‘000.-besitzt.
JVM
d) Schreiben Sie in die main-Methode der Klasse BankKonto die Code-Zeilen, mit denen diese
Objekte aus der Klasse BankKonto gebildet und ihnen die entsprechenden Attributwerte
zugewiesen werden.
e) Führen Sie für jedes der beiden Objekte (KontoMoser und KontoMeier) die Methode
getInfo() in der main-Methode aus.
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
7
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
8
Lösung 3: BankKonto
Aufgabe 4: KontoKorrent
a) und c) Klassendiagramm und Objektdiagramme:
BankKonto
b), d) und e)
KontoMeier:BankKonto
KontoMoser:BankKonto
betrag
inhaber
betrag = 25000
inhaber = Meier
betrag = 10000
inhaber = Moser
getInfo()
getInfo()
getInfo()
• Erstellen Sie eine neue Klasse KontoKorrent, welche von BankKonto erbt.
• Die neue Klasse hat einen Konstruktor, mit dem direkt der Name des Inhabers sowie
der Kontostand gesetzt werden können.
• Fügen Sie der Klasse noch die Methode einzahlen zu. Mit dieser Methode soll ein
Betrag b übergeben werden können, welcher auf den bestehenden Betrag addiert
wird.
public class BankKonto{
int betrag;
String inhaber;
public void getInfo(){
System.out.println("Inhaber: " + inhaber);
System.out.println("Betrag: " + betrag);
}
• Fügen Sie der Klasse die Methode auszahlen zu. Diese Methode subtrahiert den
übergebenen Betrag b vom Kontobetrag.
public static void main(String[] args){
BankKonto KontoMeier = new BankKonto();
KontoMeier.betrag = 25000;
KontoMeier.inhaber = "Meier";
BankKonto KontoMoser = new BankKonto();
KontoMoser.betrag = 10000;
KontoMoser.inhaber = "Moser";
KontoMeier.getInfo();
KontoMoser.getInfo();
}
• Ändern Sie die Methode auszahlen so ab, dass nicht ausbezahlt werden kann,
wenn der Betrag danach unter 0 wäre.
• Erstellen Sie in der main-Methode zwei KontoKorrent-Objekte und testen Sie den
Konstruktor und die Methoden auszahlen und einzahlen.
}
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
9
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
10
22.09.2010
12
Lösung 4: KontoKorrent
public class KontoKorrent extends BankKonto{
Aufgabe 5: KontenArray
public KontoKorrent(String inhaber, int betrag){
this.betrag = betrag;
this.inhaber = inhaber;
}
• Erstellen Sie eine neue Klasse KontenArray.
• Die Klasse hat wieder die Attribute betrag und inhaber, diesmal
sind sie aber private.
public void einzahlen(int betrein){
betrag = betrag + betrein;
}
• Fügen Sie für die Attribute die get- und set-Methoden hinzu.
public void auszahlen(int betraus){
if(betraus>betrag){
System.out.println("Es kann nicht ausbezahlt werden!");
} else{
betrag = betrag - betraus;
}
}
• Erstellen Sie in der main-Methode einen Konto-Array mit 5
Positionen.
• Erstellen Sie in der main-Methode einen String-Array mit 5 Namen,
dem Sie 5 willkürlich gewählte Namen zuweisen.
public static void main(String[] args){
KontoKorrent k1 = new KontoKorrent("Doller", 15);
k1.einzahlen(20);
k1.getInfo();
• In einer for-Schleife sollen nun alle Konten mit inhaber und
betrag im KontenArray erstellt werden. Weisen Sie dabei
betrag einen Zufallswert zwischen 0 und 1000 zu.
KontoKorrent k2 = new KontoKorrent("Maurer", 20);
k2.auszahlen(40);
k2.getInfo();
}
• In einer weiteren Schleife sollen nun alle Konten
mit den Attributen ausgegeben werden. Geben Sie
auch den Array-Index als Kontonummer aus.
}
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
11
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
Lösung 5: KontenArray
public class KontenArray{
private int betrag;
private String inhaber;
public void setBetrag(int b){
betrag = b;
}
public int getBetrag(){
return betrag;
}
public void setInhaber(String i){
inhaber = i;
}
public String getInhaber(){
return inhaber;
}
public static void main(String[] args){
KontenArray[] kArray = new KontenArray[5];
String[] namen = new String[]{"Meier","Müller","Moser","Baumann","Bergmann"};
for(int i = 0;i<kArray.length;i++){
kArray[i] = new KontenArray();
kArray[i].setBetrag((int)(Math.random()*1000));
kArray[i].setInhaber(namen[i]);
}
for(int i = 0;i<kArray.length;i++){
System.out.println("KontoNr. " + i);
System.out.println("Inhaber " + kArray[i].getInhaber());
System.out.println("Betrag " + kArray[i].getBetrag());
System.out.println();
}
}
}
© Prof. Dr. Rolf Dornberger
OOP: 10 Wiederholung der Grundelemente in Java
22.09.2010
13
Herunterladen