Elementare Vererbung
Nachstehend und abrufbar als Datei finden Sie ein sehr elementares Vererbungsszenario mit zwei kleinen Klassen A und B.
// inherit01.cpp - Kleine Demonstration fuer Vererbung in C++ #include <iostream> #include <cstdlib> using namespace std; // -- Deklaration Klasse A class A { protected: int a; public: A(); A(int); void ausgabe(); }; // -- Deklaration Klasse B class B : public A { private: int b; public: B(); B(int, int = 0); void ausgabe(); }; // -- Implementierung Klasse A A::A() { a = 0; } A::A(int a) { this->a = a > 0 ? a : 0; } void A::ausgabe() { cout << "a: " << a; } // -- Implementierung Klasse B B::B() { b = 0; } B::B(int a, int b) { this->a = a; this->b = b > 0 ? b : 0; } void B::ausgabe() { A::ausgabe(); cout << " b: " << b; } int main() { A a1, a2(50); B b1, b2(100,200); a1.ausgabe(); cout << endl; a2.ausgabe(); cout << endl; b1.ausgabe(); cout << endl; b2.ausgabe(); cout << endl; return EXIT_SUCCESS; } // end main // end inherit01.cpp |
Vererbung
Falls Sie Übungsbedarf in Java haben sollten, migrieren Sie das in der vorherigen Aufgabe gezeigte C++-Programm bitte nach Java.
Vererbung
Implementieren Sie bitte folgendes Szenario.
In einem Unternehmen gibt es Abteilungen und Mitarbeiter. Der Einfachheit halber gebe es zunächst nur die Abteilungen "Einkauf", "Vertrieb", "Personal" und "Entwicklung". Jede/r der Mitarbeiter/innen des Unternehmens muss (umgangssprachlich) zu genau einer der folgenden Gruppen gehören.
Implementieren Sie die erforderlichen Klassen in sinnvoller Weise, schreiben Sie sich - jeweils in Java und in C++ - ein Probe-Hauptprogramm bzw. eine Demo-Klasse zum Testen dieser Klassen, und erläutern Sie insbesondere, wo Sie Vererbung eingesetzt und wo "Layering" genutzt haben. ("Layering" bedeutet, dass man eine Klasse als Datentyp für eine Komponente in einer weiteren Klasse nutzt.)
Vererbung: Personen und Studierende
In der Vorlesung wurden die Klassen Person und Student angesprochen. Sofern noch nicht geschehen, implementieren Sie diese beiden Klassen bitte in C++ (und, falls Ihnen die Zeit reichen sollte, auch in Java).
Erweitern Sie die Klasse Person bitte um einen Operator operator==
(C++) bzw. eine Methode equals()
(Java) zur Überprüfung zweier Objekte dieser Klasse auf inhaltliche Gleichheit. - Können Sie damit auch Objekte der Klasse Student auf Gleichheit prüfen? Was stellen Sie fest?
Vererbung: Design und Realisierung
Modellieren Sie bitte Konten, Girokonten und Sparkonten (unter Zuhilfenahme der Vererbung).
Ein
Konto habe genau einen Inhaber, i.e. eine Person mit den üblichen Attributen, genau eine maximal zehnstellige
Kontonummer (rein numerisch, wobei auch die ersten Stellen '0' sein dürfen) sowie einen Kontostand. (Wir vereinfachen
die Modellierung hier gegenüber der realen Bankenpraxis bewusst.)
Ein Girokonto ist ein Konto, das einen geduldeten überziehungsrahmen ("Dispo") besitzt, das mit einem jährlichen Zinssatz p1 im Guthabenbereich verzinst wird, das innerhalb des geduldeten überziehungsrahmen im Minus mit dem Zinssatz p2 belastet wird, und wird der Negativsaldo auf dem betreffenden Konto betragsmäßig größer als dieser überziehungsrahmen, dann wird ein Zinssatz p3 zur Verzinsung herangezogen. Außerdem verfüge ein Girokonto bei der von uns zu modellierenden Bank über ein Kennzeichen, welcher Gebührentarif für diese Konto gelten soll. Dieses Kennzeichen kann als ganzzahlig-positiv angenommen werden. (So könnte etwa 0 für Standard-Arbeitnehmer-Giro-Konto, 1 für Studenten-Konto mit geringerer Monatspauschale usw. stehen.)
Ein Sparkonto ist ein Konto, für das ein Guthabenzinssatz verwaltet werden muss. Außerdem kann ggf. eine Kündigungssperrfrist angegeben sein, ebenso möglicherweise ein (frühestes) Fälligkeitsdatum.
Skizzieren Sie die Sachverhalte zunächst (Klassenmodellierung) und implementieren Sie anschließend in Java und in C++. Testen Sie bitte wieder mit einer kleinen Demo-Klasse (in Java) bzw. in C++ mit einem eigenen kleinen Hauptprogramm.
© 1999-2023 FHDW/Peter Baeumle-Courth. Document-Id: fhdwbap:opg:027920-2