C++ Klassen weitere Funktionen
|
|
- Erna Winter
- vor 6 Jahren
- Abrufe
Transkript
1 C++ Klassen weitere Funktionen
2 Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2
3 Statische Klassenkomponenten Alle Objekte einer Klasse erhalten bei der Instanzierung ihre eigenen Member-Variablen. Alternativ dazu können statische (static) Member- Variablen deklariert werden, die dann für alle Objekte der Klasse gemeinsam zur Verfügung stehen. Gründe für die Verwendung können sein: Ein Zähler, der die Anzahl der gerade aktiven Objekte der Klasse wiederspiegelt. Ein Zeiger auf einen dynamisch allokierten Speicherbereich, der von allen Objekten der Klasse geteilt wird. Eine Testvariable, die objektübergreifend gemeinsame Informationen aufnehmen kann. Vorteile gegenüber der Verwendung globaler Variablen sind: Durch die private-deklaration kann der Zugriff auf Member-Funktionen beschränkt werden. Der Bezugsrahmen bleibt innerhalb der Klasse. Damit können keine Kollisionen mit anderen Variablen gleichen Namens entstehen. 3
4 Statische Member-Variablen Regeln für die Initialisierung von static-member-variablen: Die Initialisierung darf nur außerhalb der Klassen-Definition vorgenommen werden und wird vom Compiler ohne Instanzierung von Objekten durchgeführt. Bei der Initialisierung muss der Datentyp angegeben und der Klassenbezug hergestellt werden. Das Schlüsselwort static darf nur bei der Definition und nicht bei der Initialisierung stehen. Die Variable kann initialisiert werden, auch wenn sie in der Klasse als private deklariert wurde. Eine Variable darf nur einmal initialisiert werden. Wird die Variable nur definiert und nicht initialisiert, so wird sie vom Compiler vorbelegt. 4
5 Statische Member-Variablen Beispiel für die Initialisierung von static-member-variablen: class Demo private: static double stv; //Initialisierung hier nicht möglich... double Demo::stv = 10.; //Initialisierung trotz private Demo::stv = 10.: //Fehler: Typangabe fehlt static double Demo::stv = 10.; //Fehler: static nicht erlaubt double stv = 10.; //Fehler: Klassenbezug notwendig double Demo::stv = 20.; //Fehler: Variable bereits initialisiert Empfehlung: Initialisierung von static-member-variablen nicht in Header-Dateien vornehmen, sondern zusammen mit der Definition der Member-Funktionen. 5
6 Statische Member-Variablen Regeln für den Zugriff auf static-member-variablen: Elementfunktionen der Klasse haben Zugriff auf static-member-variablen wie auf alle anderen Member-Variablen. Objekte der Klasse haben Zugriff auf static-member-variablen wie auf alle anderen Member-Variablen incl. aller Einschränkungen (Zugriffsschutz). Auf die static-member-variablen kann direkt unter Verwendung des Bezugsoperators und des Klassennamens zugegriffen werden. Allerdings greift auch hier der Zugriffsschutz. Empfehlung: Greifen Sie auf static-member-variablen nicht über die Instanzierung von Objekten sondern besser direkt zu, da die Variable allen Objekten gemeinsam zur Verfügung steht. 6
7 Statische Member-Variablen Beispiel für den Zugriff auf static-member-variablen: class Demo private: static int stvint; public: static double stvdbl;... int Demo::stvint = 10; double Demo::stvdbl = 20.; int j = Demo::stvint; Demo::stvint = 100; double x = Demo::stvdbl; Demo::stvdbl = 200.; Demo doobj; int k = doobj.stvint; doobj.stvint = 100; double y = doobj.stvdbl; doobj.stvdbl = 200.; //Initialisierung trotz private //OK //Fehler: Zugriffsverletzung //Fehler: Zugriffsverletzung //OK //OK //Instanziiere Objekt //Fehler: Zugriffsverletzung //Fehler: Zugriffsverletzung //erlaubt, aber nicht empfohlen //erlaubt, aber nicht empfohlen 7
8 Statische Member-Funktionen Problem: Eine Variable, die sowohl static als auch private deklariert ist, kann zwar direkt initialisiert werden, aber für den sonstigen Zugriff über eine gewöhnliche Elementfunktion muss immer ein Objekt instanziert werden. Nach den Ausführungen über static- Member-Variablen sollte genau dies aber vermieden werden. class Demo private: static int stv; public: int GetNumber(void) return stv;} //inline-definition... Demo doobj; //Instanziiere Objekt int j = doobj.getnumber( ); //Der einzige Weg zum Datum 8
9 Statische Member-Funktionen Lösung: Deklariere eine static-member-funktion, die folgende Eigenschaften aufweist: Die static-member-funktion wird definiert wie eine normale Element-Funktion. Die static-member-funktion kann direkt unter Verwendung des Bezugsoperators und des Klassennamens auf die static-member-variablen zugreifen, ohne ein Objekt instanzieren zu müssen. Allerdings greift auch hier der Zugriffsschutz. Der Compiler ergänzt keinen this-zeiger. Daher kann die static-member- Funktion ohne weitere Maßnahmen nur auf static-member-variablen zugreifen. Für Nicht-static-Member-Variablen müssen Objekte instanziert werden. Der Aufruf als normale Funktion über die Instanzierung von Objekten ist möglich, sollte jedoch vermieden werden. 9
10 Beispiel: Statische Member-Funktionen class Demo private: double nstvdbl; //non-static-variable static int stvint; //static-variable static void SetNumber(int i, double x); //Deklaration public: static int GetNumber(void) return stvint; //inline-definition void Demo::SetNumber(int i, double x) stvint = i; nstvdbl = x; }... Demo::SetNumber(2, 3.); int j = Demo::GetNumber( ); Demo doobj; int k = doobj.getnumber( ); //Definition //OK: static //Fehler: non-static //Fehler: Zugriffsverletzung //OK: direkter Zugriff //Instanziiere Objekt //erlaubt, aber nicht empfohlen 10
11 Konstante Klassenkomponenten Bei der Instanzierung eines Objektes einer Klasse kann diesem die Eigenschaft const zugeordnet werden. Damit darf das Objekt die Datenelemente seiner Klasse weder direkt (soweit public) noch indirekt über seine Elementfunktionen modifizieren. Für den lesenden Zugriff auf die Datenelemente muss die Elementfunktion ebenfalls als const deklariert sein. Regeln für const-deklarierte Elementfunktionen: Eine const-deklarierte Elementfunktion darf nur von const-deklarierten Objekten einer Klasse aufgerufen werden. Das Schlüsselwort const muss sowohl bei der Deklaration als auch bei der Definition angegeben werden. Eine const-deklarierte Elementfunktion kann von einer nicht-const-deklarierten Elementfunktion gleichen Namens überladen werden. Empfehlung: Verwenden Sie const-deklarierte Objekte insbesondere dort, wo große Objekte zur Einsparung von Kopieraufwand beim call-by-value als Zeiger oder Referenz übergeben werden. 11
12 Beispiel für const-deklarierte Elementfunktionen: class Demo private: int i; double *ptdbl; public: int GetNumber(void) const; void SetNumber1(double x) const; void SetNumber1(double x); void SetNumber2(double *y) const; void Demo::SetNumber1(double x) const *ptdbl = x;} void Demo::SetNumber1(double x) *ptdbl = x; i = 10} void Demo::SetNumber2(double *y) const ptdbl = y;}... const Demo conobj; Demo varobj; conobj.setnumber1(10.); varobj.setnumber1(20.); //Zeiger //Deklaration //const-elementfunktion //überladene Elementfunktion //Deklaration //Definition //OK: Zeiger bleibt unverändert //überladene Elementfunktion //OK: Funktion darf alles //Definition //Fehler: Zeiger darf nicht //verändert werden //const-objekt //verwendet SetNumber1 const //verwendet SetNumber1 non-const 12
13 Konstruktoren Spezielle Konstruktoren Standard Konstruktor (siehe vorh. Abschnitt) o KlassenName (void)..} o KlassenName (int k=0)..} Kopier-Konstruktor o KlassenName (const KlassenName &Objekt) Konversions-Konstruktor o KlassenName (const AndereKlasse &Objekt) 13
14 Kopier-Konstruktor Wird ein Objekt bei der Instanzierung durch ein anderes Objekt der gleichen Klasse initialisiert, und fehlt die explizite Definition eines Kopier- Konstruktors, so generiert der Compiler einen einfachen Kopier- Konstruktor, der die Inhalte der Member-Variablen elementweise kopiert: Problem: Beide Objekte haben zwar unterschiedliche Zeiger aber sie zeigen auf die identische Speicheradresse. class Demo private: int Test; int *Point; public: Demo() Test=10; Point=&Test;} void print () cout << "Test = " << Test << endl << "*Point = " << *Point << " at Adr : " << Point << endl; } int main () Demo obj; Demo obj1(obj); obj.print(); obj1.print(); return 0;} 14
15 Kopier-Konstruktor Führt eine "flache" Kopie aller Variablen (Standard Kopier- Konstruktor) zu falschen Ergebnissen: Eigenen Kopier-Konstruktor schreiben Eigenschaften genau ein Referenzparameter derselben Klasse normalerweise const Evtl. noch zusätzliche Default- Parameter kein normaler Parameter derselben Klasse o da call by value sonst zum rekursiven Aufruf führt class Demo private: int elemente; double *vektor; public: Demo(void); //Standard-Konst. Demo(int k);//überl.konstruktor Demo(const Demo &obj); //Kopier-Konstruktors Demo::Demo(const Demo &obj) elemente = obj.elemente; vektor = new double [elemente]; for (int i = 0, i < elemente, i++) vektor[i] = obj.vektor[i]; }... Demo obj1(10); // Demo(int) Demo obj2 = obj1; // Kopie (obj1) Demo obj3(obj2); // Kopie (obj2) 15
16 Zusammenfassung Kopier-Konstruktor Der automatische Aufruf des Kopier-Konstruktors erfolgt, wenn ein Objekt einer Klasse instanziert und mit einem Objekt der gleichen Klasse initialisiert wird oder ein Objekt als Aktualparameter einer Funktion verwendet (call-by-value) wird oder ein Objekt Rückgabewert (call-by-value) einer Funktion ist. Ist der Kopier-Konstruktor nicht explizit definiert, so wird er vom Compiler generiert. Formen des Kopier-Konstruktors, wenn Demo die Klasse ist und obj ihr Objekt: Demo (const Demo &obj); Demo (Demo &obj); Demo (const Demo &obj, int i = 0, double x = 0.); Demo (Demo &obj, int i = 0, double x = 0.); Kopier-Konstruktor immer mit Referenzparameter (->Rekursiv) Falls man das Kopieren von Objekten geziehlt verhindern möchte Demo (Demo &obj) ; // deklarieren aber nicht definieren 16
17 Konversions-Konstruktor Wird ein Objekt bei der Instanzierung durch ein anderes Objekt einer anderen Klasse initialisiert, so bedarf es eines Konversions-Konstruktors. Ein solcher Konstruktor wird vom Compiler nicht automatisch generiert. Das Fehlen des Konversions- Konstruktors wird vom Compiler moniert. class Klasse... class Demo public: Demo(const Klasse &pp); //Deklaration des Konversions- Konstruktors Klasse objklasse(100); //Instanziiere + initialisiere Objekt aus Klasse Demo objdemo(objklasse); //Instanziiere Objekt aus Demo //und initialisiere mit objklasse 17
18 Initialisierungslisten Bisher wiesen die Member- Variablen von Klassen nur einfache Datentypen auf. Sind Objekte einer anderen Klasse Member-Variablen der zu definierenden Klasse, so werden diese mit dem Konstruktor der zu definierenden Klasse über Initialisierungslisten initialisiert. class Sample public: Sample(Sample &ss);// Kopier-K. // Sample muss definiert sein! class Demo private: Sample objsample; const double y; int k; public: Demo(int i, double x, const Sample &oo); Demo::Demo (int i, double x, const Sample &oo) : y(x), objsample(oo) k = i;} Sample obj; Demo odemo(1, 1.4, obj); 18
19 Initialisierungslisten Syntax der Initialisierungsliste: klassenname::klassenname(parameterliste) : initialisierungsliste Eigenschaften der Initialisierungsliste: Sie steht bei der Definition des Konstruktors, nicht bei der Deklaration. Bei einfachen Variablen wird der Wert in der Klammer zur Initialisierung der Variablen verwendet. Die Klammer kann auch einen komplexen Ausdruck ent-halten. Bei Objekten wird der Kopier-Konstruktor zur Initialisierung des Objektes verwendet. Hat die Klasse, zu der das Objekt gehört, keinen Kopier-Konstruk-tor, so wird einer vom Compiler generiert, der eine einfache Kopie der Daten durchführt. Empfehlung: Definieren Sie immer einen Kopier-Konstruktor. Variablen und Objekte erhalten ihre Werte aus der Initialisierungsliste, bevor der Konstruktor zur Ausführung kommt. Die Member-Variablen werden in der Reihenfolge initialisiert, wie sie in der Definition der Klasse aufgeführt sind, nicht in der Reihenfolge, wie sie in der Initialisierungsliste erscheinen. Normale Variablen können durch Initialisierung oder durch Zuweisung mit Werten versorgt werden. Objekte und const-variablen müssen initialisiert wer-den. 19
20 friend-klassenkomponenten Ergänzend zu dem bisherigen Zugriffschutz für das Innere von Objekten mit zwei Differenzierungen private (keiner darf von außen zugreifen, außer über Elementfunktionen) public (alle dürfen von außen zugreifen) kann es sinnvoll sein, besonders vertrauenswürdigen Elementen den freien Zugriff auf private-elemente zu gestatten. Solche Elemente können sein: globale Funktionen Elementfunktionen anderer Klassen ganze Klassen Syntax: - friend typ funktionsname(parameter); - friend class klassenname; - friend typ klassenname::elementfunktionsname(parameter); Empfehlung: Gehen Sie zurückhaltend mit dem Einsatz des friend-konzepts um, da hiermit indirekt der Zugriffsschutz (Datenkonsistenz) umgangen wird. 20
21 friend-klassenkomponenten Die friend-deklaration erfolgt innerhalb der Definition derjenigen Klasse, deren private-daten und private-elementfunktionen zum Zugriff freigegeben werden sollen. Die Deklaration der friend-klasse oder friend-funktion kann irgendwo innerhalb der Klassendefinition stehen. Empfehlung: Direkt hinter den Deklarationskopf der Klasse positionieren. class Klasse1;//Vorwärts-Deklaration class Klasse2;//Vorwärts-Deklaration class Demo friend class Klasse1; //Klasse private: friend void Funktion1(float x); //Funktion1 ist friend zu Demo //und globale Funktion public: friend int Klasse2::Funktion2 (int i); //Funktion2 ist friend zu Demo //und Elementfunkt. von Klasse2 21
22 friend-klassenkomponenten Ist eine ganze Klasse (B) friend-klasse einer anderen Klasse (A), dann können alle Elementfunktionen der friend-klasse (B) auf die private-daten und private- Elementfunktionen von Klasse (A) zugreifen. Umgekehrt gilt dies nicht. Ist die Klasse, die friend-klasse einer zu definierenden Klasse werden soll, bisher selbst noch nicht definiert, so ist wenigstens eine Vorwärts-Deklaration notwendig und ausreichend. Eine Funktion, die in einer Klasse als friend-funktion deklariert wurde, ist nicht Member- Funktion dieser Klasse, d.h. - die friend-funktion befindet sich nicht im Bezugsrahmen der Klasse - die friend-funktion selbst hat keinen direkten Zugriff auf die Member-Daten. Es sind die instanzierten Objekte der Klasse, die innerhalb der Definition der friend-funktion den Zugriff auf die Member-Daten ermöglichen. - der Klassenbezugsoperator darf bei der Definition der Funktion nicht verwendet werden. Eine friend-funktion kann mit einer anderen Funktion überladen werden. Falls alle Funktionen friend-funktion der Klasse sein sollen, so muss jede überladende Funktion entsprechend als friend-funktion deklariert sein. Eine Funktion oder Klasse kann friend mehrerer (anderer) Klassen sein. Bei abgeleiteten Klassen vererbt sich die friend-eigenschaft nicht. 22
23 Beispiel friend Aufruf Fkt() ist "normal" definiert (nicht Demo::Fkt() Funktion kann nur über ein Objekt (d.h. eine Instanz) auf Klassenvariablen zugreifen Dann aber auch auf "private" Die Funktion muss auch "normal" aufgerufen werden. Sie ist KEINE Member -Funktion class Demo... friend void Fkt(void); private: int ipriv; public: int ipub ; void Fkt(void) }... ipub = 1; //Fehler: Demo obj1; obj1.ipub = 2; obj1.ipriv = 3; Demo obj2; obj2.ipub = 2; obj2.ipriv = 3; //Fehler: Fkt( ); obj2.fkt( ); //Fehler: 23
Prof. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrAufbau von Klassen. class punkt {...
Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrJava Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
MehrC++ - Operatoren. Eigene Klassen mit neuen Funktionen
C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,
MehrObjektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen
Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung
MehrKlassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrKurzeinführung in C/C++ Elementare Datentypen in C++
Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt
MehrPass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrVerwendung von Klassen in C++
Verwendung von Klassen in C++ Heute: Benutzerdefinierte Datentypen (Konkrete Klassen) Vektoren Komplexe Zahlen Adressdatei Morgen: Objektorientierte Programmierung (Abstrakte Klassen) Vererbung Polymorphie
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrKapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
MehrThemen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren
Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
Mehr7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung
7.1 7 Vererbung Eine von der Basisklasse B abgeleitete Klasse A erbt alle Attribute und Methoden von B. Ein Objekt der Klasse A besitzt ein Slice der Klasse B und ein Slice der Klasse A. Jeder Konstruktor
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrProgrammieren in C++ Überladen von Methoden und Operatoren
Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrC++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
MehrEinführung in die. objektorientierte Programmierung
Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie
Mehr3D Programmierpraktikum: Einführung in C++ - Teil 2
3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
MehrKonstruktoren und Destruktoren Initialisierung von Objekten
Konstruktoren und Destruktoren Initialisierung von Objekten Breymann [15] Abschn. 3.3, S. 161ff Konstruktoren Konstruktoren haben keinen Return-Wert, auch nicht void. Methoden sorgen dafür, dass sich das
Mehr1.4. Funktionen. Objektorientierte Programmierung mit C++
mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrSilke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode
Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode
Mehr12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!
MehrObjektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
MehrDie abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,
Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang
MehrProgrammieren - Vererbung & Polymorphie
Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon
Mehr3 Klassen, Attribute, Methoden
3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrVererbung. Was versteht man unter dem Begriff Vererbung?
Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrEinführung in Java. Arne Hüffmeier. Angelehnt an Java-Vorkurs der Freitagsrunde. Methoden implementieren. Michelle Liebers, Dennis Hoffmann
Einführung in Java Arne Hüffmeier Michelle Liebers, Dennis Hoffmann Tilman Lüttje, Jean Wiele Angelehnt an Java-Vorkurs der Freitagsrunde 1 / 44 1 Methoden implementieren Motivation Aufbau einer Methode
MehrMethoden (fortgeschritten) in C# - 1
Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich
MehrUnterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
MehrKlassen mit Instanzmethoden
Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07
Mehr13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)
13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
MehrÜberladen von Operatoren
- Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Mehreinkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();
MehrDer Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.
Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe
MehrObjektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
MehrTest zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
Mehr1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung
K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
MehrFelder (1) Allgemeines
Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft
Mehr5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
MehrProzeduren und Funktionen
OSZ Handel I - Gymnasiale Oberstufe (Abt. V) In Anlehnung an: Duden Informatik (3.Auflage, Dudenverlag, 2001, S. 477). Prozeduren und Funktionen Fach: Informatik Parameter sind Platzhalter in einer Prozedur
MehrPräsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
MehrObjekt-Orientierte Programmierung
Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrProgrammierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
MehrBeispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
Mehr10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrWiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung
Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben
MehrInformationsverarbeitung im Bauwesen
1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8
MehrLetztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);
Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
MehrInhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte
Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrSystemnahe Programmierung in C/C++
Systemnahe Programmierung in C/C++ Peter Piehler peter.piehler@symetrion.com Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik 2006 12 13 Peter Piehler (DBIS) C/C++
MehrEINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrEinführung in C++ Vererbung und Polymorphismus
Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen
MehrJava - Klassen und Objekte
Java - Klassen und Objekte Der Würfel hat 12 Kanten. Der Würfel ist grün eingefärbt. Die Kanten sind in schwarz gezeichnet. Der Würfel kann gedreht werden. Die Kantenfarbe und die Seitenfarbe kann verändert
MehrJava - Überladen von Methoden und Konstruktoren
Java - Überladen von Methoden und Konstruktoren 2 + 3 Addition 1 + 2 + 3 + 4+ 5 +... 4.2 + 3.3 4.2 + 3 + 5 Leibniz Universität IT Services Anja Aue Überladen von Methoden und Konstruktoren Innerhalb einer
MehrKlausurvorbereitung Lösung
Ausgabe 1 a) unsigned char erzeuge_bitmuster() static int z=0; int rest; unsigned char bm; rest = z % 4; z=z+1; switch (rest) case 0: bm = 0x00; break; case 1: bm = 0x11; break; case 2: bm = 0x33; break;
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Mehrmagnum C++ WALTER SAUMWEBER kompakt komplett kompetent
magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
Mehr