kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung
kramann.info
© Guido Kramann

Login: Passwort:




Vererbung und die Modifikatoren



vorlesung_2013_11_21.zip - Während der Vorlesung am 21.11.2013 entwickelte Programme

21.11.2013: Hinweise zu Unterschieden zwischen C++ und Java bei Modifikatoren - vergl. Beispiele in Vorlesung
  • Java und C++: Modifikatoren beziehen sich auf Klassen, nicht auf Objekte.
  • protected in C++ bezieht sich auf Klassenzugehörigkeit
  • protected in Java bezieht sich auf Package-Zugehörigkeit
  • kein Modifikator wird in Java als protected interpretiert
  • kein Modifikator wird in C++ als private interpretiert
21.11.2013: Übung zu Modifikatoren und Arrays
  • Alle Aufgabenteile sind in Java und danach in C++ umzusetzen
  • Grundlage ist VRML04 und QuaderB im Ordner uebung_vrml_generator
  1. Kapseln Sie die Farb-Attribute von QuaderB und schreiben Änderungs- und Zugriffsmethoden für diese.
  2. Ändern Sie die Manipulator-Klasse aus der letzten Übung so, dass ein ganzes Array an QuaderB-Objekten grün gefärbt werden kann. Testen Sie dies an einem geeigneten Beispiel
  3. QuaderC erbt von QuaderB. - Setzen Sie die Attribute von QuaderB auf protected und fügen die "aendern()"-Methode zum grün färben in QuaderC ein. Machen Sie geeignete Tests in C++ und Java.

Erbt KLasse B von Klasse A, so steht in der Kopfzeile von Klasse B nach bisherigem Wissensstand:

class B : public A

Dabei ist das Schlüsselwort public ein so genannter Modifikator, der festlegt, welche Zugriffsrechte die abgeleitete Klasse auf die Attribute und Methoden der Basisklasse hat. Weitere alternativ einsetzbare Modifikatoren sind: private und protected

Zunächst einmal ist festzuhalten:

  • Eine abgeleitete Klasse kann niemals auf private-Elemente der Basisklasse zugreifen.
  • Wird der Modifikator weggelassen, setzt der Compiler private als Modifikator ein.
  • protected-Elemente dienen dazu, Elemente einer Klasse zwar von Außen zugreifbar zu machen, diese Zugriffsmöglichkeit von Außen aber einzuschränken, wenn sie von einer anderen Klasse geerbt werden.

Die UML-Notation für die Modifikatoren ist:

  • - private
  • + public
  • # protected
  • Die Bedeutung der Modifikatoren für die Vererbung ist den folgenden beiden Tabellen (Kapitel 8.1 und 8.2) zu entnehmen.
  • Die erste Tabelle bezieht sich auf public-Vererbung von Klasse A an Klasse B, die zweite auf protected, private-Vererbung macht keinen Sinn.
  • Auch die Methoden und Attribute der Basisklasse A und der erbenden Klasse B haben Modifikatoren.
  • Die beiden Tabellen zeigen, wie die Zugreifbarkeit auf diese Elemente von der Basisklasse, von der abgeleiteten Klasse und von Außen aus vom jeweiligen Modifikator und vom Vererbungsmodifikator abhängt.