Programmieren II Bemerkungen zu den Praktikumsaufgaben

Werbung
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Aufgabe 5
Teilaufgabe (a) In dieser Praktikumsaufgabe geht es um die Repräsentation
einfacher dreidimensionaler Objekte: achsenparalleler Quader
und achsenparalleler Würfel.
y
z
c
zP
yP
b
P
a
xP
x
Bezugspunkt: p mit den Koordinaten (xP,yP,zp); Kante a; Kante b; Kante c
1
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Definieren Sie eine Klasse Quader. (/* Hinweis: Zur Repräsentation des
Bezugspunktes soll jedes Objekt vom Typ Quader ein Teilobjekt vom Typ
Punkt haben. */) Die Klasse Quader soll mindestens folgende Methoden
besitzen:
•
•
2
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
•
class Punkt {
private:
double x_;
double y_;
double z_;
public:
Punkt(double,double,double);
...
// notwendige Zugriffsmethoden
// deklarieren und definieren
}
einen vierstelligen Konstruktor, dem ein Objekt vom Typ Punkt sowie
die Länge der Kanten a, b und c übergeben werden
eine Methode koordinaten(), die die Koordinaten aller 8 Eckpunkte des
Quaders auf den Bildschirm ausgibt
eine Methode volumen() zur Berechnung des Volumens des Quaders
3
class Quader {
protected:
Punkt p_;
double a_;
double b_;
double c_;
public:
Quader(Punkt &, double, double, double);
void koordinaten( );
double volumen( );
}
4
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Aufgabe 5
Teilaufgabe (b) In dieser Aufgabe geht es darum, die Artikel eines
Supermarkts in einer einfach verketteten Liste zu verwalten.
Deklarieren Sie mittels Vererbung eine Klasse Wuerfel, die eine
Spezialisierung der Klasse Quader darstellt. Die Klasse Wuerfel
soll folgende Methoden besitzen:
Die folgende Klasse Artikel dient der Repräsentation eines Artikels.
•
•
einen zweistelligen Konstruktor, dem ein Objekt vom Typ
Punkt und die Länge der Kante a übergeben wird
eine eigene Version der Methode volumen(), die der Tatsache
Rechnung trägt, dass sich das Volumen eines Würfels
„einfacher“ berechnen lässt
class Artikel {
private:
string name_;
string nummer_;
double preis_;
public:
Artikel( string name, string nummer, double preis ):
name_(name), nummer_(nummer), preis_(preis) { };
void display();
};
5
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
6
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Aufgabe 5
In der zu verwaltenden Liste kommen als Elemente Objekte vom
folgenden Typ vor:
Objekt vom Typ
Element
class Element {
private:
Artikel * data_;
Element * next_;
public:
Element( Artikel * data ): data_(data), next_(NULL) { };
Artikel * get_data( ) { return(data_); };
Element * get_next( ) { return(next_); };
void set_next( Element * next ) { next_ = next;};
};
7
Hinweis: #include<iostream> nötig, damit die Konstante NULL bekannt ist
0815
data_
NULL
next_
Objekt vom Typ Artikel
mit Adresse 0815
Birnen
name_
100-1
nummer_
8.99
preis_
8
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Aufgabe 5
Objekt vom Typ Liste (/* hier: die leere Liste */)
die Klasse Liste sieht dann wie folgt aus
4711
class Liste {
private:
Element * first_;
public:
Liste( );
void insert(Artikel *);
void display( );
};
Objekt vom Typ
Element mit
Adresse 4711
first_
NULL
data_
NULL
next_
9
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
10
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Aufgabe 5
Objekt vom Typ Liste (/* hier: Liste mit einem Element */)
Die Methoden der Klasse Liste sollen folgende Funktionalität realisieren:
•
4711
first_
•
Objekt vom Typ
Element mit
Adresse 4711
Objekt vom Typ
Element mit
Adresse 4712
NULL
data_
4712
next_
0815
data_
NULL
next_
•
Objekt vom Typ Artikel
mit Adresse 0815
Birnen
name_
100-1
nummer_
8.99
preis_
11
der Konstruktor soll eine leere Liste mit einem „dummy“-Element am
Anfang der Liste erzeugen
die Methode insert() soll ein neues Element am Anfang der Liste –
also nach dem „dummy“-Element – einfügen (/* dieser Methode wird
die Adresse eines Objekts vom Typ Artikel übergeben */)
die Methode display() soll für jeden Artikel, dessen Adresse in
einem Element der Liste gespeichert ist, den Artikelnamen, die
Artikelnummer und den Preis anzeigen (/* hierbei ist die Methode
display() der Klasse Artikel zu verwenden */)
12
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
Aufgabe 5
Was muß beim Aufruf der Methode insert() geschehen, wenn das Objekt,
dem diese Nachricht geschickt wird, die leere Liste repräsentiert?
4711
4711
first_
Objekt vom Typ
Element mit
Adresse 4711
Annahme (für die nächsten Folien):
Objekt vom Typ
Element mit
Adresse 4711
NULL
data_
NULL
next_
data_neu ist eine Zeigervariable, in der
die Adresse eines Objekts vom Typ
Artikel gespeichert ist
Objekt vom Typ
Element mit
Adresse 4712
13
Programmieren II
Bemerkungen zu den Praktikumsaufgaben
Aufgabe 5
4711
Objekt vom Typ
Element mit
Adresse 4711
Objekt vom Typ
Element mit
Adresse 4712
first_
// data_neu = 0815
Element * ele_neu;
ele_neu = new Element(data_neu);
(*first_).set_next(ele_neu);
NULL
data_
4712
next_
0815
data_
NULL
next_
Objekt vom Typ Artikel
mit Adresse 0815
Birnen
name_
100-1
nummer_
8.99
preis_
15
first_
// data_neu = 0815
Element * ele_neu;
ele_neu = new Element(data_neu);
NULL
data_
NULL
next_
0815
data_
NULL
next_
Objekt vom Typ Artikel
mit Adresse 0815
Birnen
name_
100-1
nummer_
8.99
preis_
14
Herunterladen