Kap. 11 Objektorientierung: ein Beispiel
|
|
- Sigrid Schmitz
- vor 6 Jahren
- Abrufe
Transkript
1 Kap. 11 Objektorientierung: ein Beispiel Dr. Norbert Spangler / Programmieren
2 Grundprinzip der Datentypen und Klassen Name des Typs Elementare Typen int bool Klasse Name (frei wählbar) Daten Variable(Array) ein Typ Eigenschaften unterschiedliche Typen Interne Abspeicherung System System durch Programmierer Verwendung Deklaration direkt int i; bool b; mit Initialisierung int i=1; bool b=true; int i(1); bool b(false); Methoden(Funktionen) Name x; Name x(werte der Eigensch.); -> Konstruktoren Wert ändern i=2; b=false; x.seteigenschaft(neuer Wert); Wert verwenden j=i; c=b; j = x.geteigenschaft(); Wertw anzeigen cout<<i; cout<<b; x.display(); Rechnen i % j b && ( i<1 ) x.calculate(y) Dr. Norbert Spangler / Programmieren
3 Grundprinzip der Datentypen und Klassen Name des Typs Elementare Typen int bool Klasse Name (frei wählbar) Daten eine Variable/Array (ein Typ) unterschiedliche Eigenschaften (unterschiedliche Typen) Interne Abspeicherung System System durch Programmierer Verwendung Deklaration direkt int i; bool b; mit Initialisierung int i=1; bool b=true; int i(1); bool b(false); Methoden(Funktionen) Name x; Name x(werte der Eigensch.); -> Konstruktoren Wert ändern i=2; b=false; x.seteigenschaft(neuer Wert); Wert verwenden j=i; c=b; j = x.geteigenschaft(); Wert anzeigen cout<<i; cout<<b; x.display(); Rechnen i % j b && ( i<1 ) x.calculate(y) Dr. Norbert Spangler / Programmieren
4 Eine Klasse ist ein verallgemeinerter benutzerdefinierter Datentyp. Er wird beschrieben durch 11.1 Konzept einer Klasse die Menge seiner Daten (Eigenschaften, Attribute), deren interne Abspeicherung dem Nutzer i.a. verborgen (private, nicht sichtbar) bleibt und die Menge seiner i.a. öffentlichen (public, sichtbar) Funktionen (Methoden), welche den Umgang mit den Daten ermöglichen. Mittels besonderer Methoden (Konstruktoren) werden Variable oder Konstante (Objekte) vom Typ der Klasse deklariert und ggf. mit Anfangswerteninitialisiert. Methodenaufrufe ersetzen/ergänzen den Befehlsvorrat/die Rechenoperationen. Funktionen können wie bisher eingesetzt werden. Parameter oder der Wert der Funktion können jetzt auch vom Typ einer Klasse sein. Dr. Norbert Spangler / Programmieren
5 Erstes Beispiel einer Klasse: Punkt Ein Punkt in der Ebene wird beschrieben durch 2 Koordinaten x undy, üblicherweise vom Typ double. Erforderliche Eigenschaften (Daten) x und y vom Typ double (z.b. noch Bezeichnung vom Typ char) Erforderliche Methoden (Funktionen) Deklaration mit/ohne Initialisierung Problem: was wird x und was wird y Koordinaten auf andere Werte setzen mit den Koordinaten arbeiten am Bildschirm anzeigen Punkt am Ursprung spiegeln-> ändert Eigenschaften zwei Punkte addieren -> neuer Punkt Dr. Norbert Spangler / Programmieren
6 class Punkt private: ; public: 11.2 Definition der Klasse double x; //x-koordinate double y; //y- Koordinate //char name; //eventuell- hier ohne //Deklaration ohneanfangswerte //Deklaration mitanfangswerten //am Bildschirm anzeigen //Koordinate x setzen //Koordinate y setzen //Wert der Koordinate x verwenden //Wert der Koordinate y verwenden //Punkt spiegeln (aendern) //2 Punkte addieren (neuer Punkt) Name verborgen Eigenschaften öffentlich Methoden Dr. Norbert Spangler / Programmieren Semikolon- wichtig!!!
7 Headerdatei Die Klassendefinition wird üblicherweise in einer Headerdatei gespeichert. Projekt/neues Element hinzufuegen/headerdatei(.h) punkt.h / Allgemein: Klassenname.h In der Headerdatei ist also die Klassendefinition. Damit sind alle wesentlichen Informationen über die Klasse verfügbar. Sie kann damit verwendet werden: Name der Klasse Angabe der Eigenschaften (Name und Typ) Angabe der Methoden (Funktionsprototypen). Dr. Norbert Spangler / Programmieren
8 Methodendatei Die Methoden sind Funktionen, die zur Klasse gehören. Sie werden üblicherweise in einer separaten cpp-datei gespeichert. Projekt/neues Element hinzufuegen/c++datei(.cpp) punkt.cpp / Allgemein üblich: Klassenname.cpp Dr. Norbert Spangler / Programmieren
9 Probleme Wie wird in der Methodendatei die Information über die Klasse bereitgestellt? In der Methodendatei wird die Klassendefinition benötigt. Dies geschieht mittels der Direktive #include "punkt.h". Wie wird in der Methodendatei eine Funktion(Methode) einer Klasse zugeordnet? (z.b. eine Funktion display() ) Bei der Definition wird zum Funktionsnamen der Klassenname mittels des Bereichsoperators (::) hinzugefügt Klassenname void Punkt::display() Bereichsoperator Methodenname Allgemein: typderfunktion Klassenname::namederfunktion(Parameter) Dr. Norbert Spangler / Programmieren
10 Anwendungsprogramm Das Anwendungsprogramm wird üblicherweise in einer separaten cpp-datei gespeichert mit den Namen main.cpp Projekt/neues Element hinzufuegen/c++datei(.cpp) Die Klassendefinition wird wie in der Methodendatei bereitgestellt #include punkt.h Dr. Norbert Spangler / Programmieren
11 Vorgehensweise zur Klassenerzeugung Bei der Entwicklung einer Klasse kann man beispielsweise wie folgt vorgehen: Man plant und definiert die Eigenschaften und Methoden. Man codiert die Eigenschaften. Man codiert eine/einige/wenige Methoden und testet diese. Man nimmt eine/einige/wenige Methoden dazu und testet diese. usw. Mögliche Reihenfolgen: 1.Konstruktoren + Anzeigemethoden 2.Werte ändern/bereitstellen 3. Dr. Norbert Spangler / Programmieren
12 Problem 11.3 Verwendung von Eigenschaften und Methoden Wenn man mehrere Objekte hat Punkt a,b,c; Dann hat jeder Punkt Eigenschaften x und y. Darüberhinaus gibt es Methoden m1, m2, m3 etc. der Klasse. Wie wird festgelegt Zu welchem Objekt gehört ein x bzw. y Mit welchen Daten (x,y) werden die Methoden m1,m2,m3 etc. aufgerufen Lösung: Verwendung des Punktoperators a.x bzw. a.y a.m1() Allgemein (*) Hinweis bezeichnen die Eigenschaften x und y des Objekts a etc. (*) ruft die Methode m1 mit den Daten des Objekts a auf etc. Objektname.eigenschaftsname Objektname.methodenname(Parameterliste) Diese Art des Zugriffs mit dem Punktoperator ist nur erlaubt: - innerhalb der Methoden einer Klasse - für public-elemente der Klasse (üblicherweise nur Methoden). Da aber Eigenschaften in der Regel private sind, ist die Schreibweise a.x bzw. a.y dann nicht erlaubt. In diesem Fall müssen entsprechende get/set Methoden verwendet werden. Dr. Norbert Spangler / Programmieren
13 11.4 Konstruktoren Konstruktoren sind spezielle Methoden, welche zur Deklaration inkl. Ininitalisierung verwendet werden. Der Name dieser Methoden ist der Klassenname. Sie unterscheiden sich in den Parametern für dieanfangswerte. Es gibt einen Konstruktor ohne Parameter: Default- oder Standardkonstruktor. Es kann mehrere Konstruktoren geben mit unterschiedlicher Signatur. Ein Konstruktor hat keinen Funktionstyp Dr. Norbert Spangler / Programmieren
14 Klassenname Defaultkonstruktor Punkt Methodenname Aufruf: Punkt::Punkt() x=0.0; y=0.0; Diese Funktion hat keinen Typ!!! Keine Parameter Punkt p; Es wird ein Objekt vom Typ Punkt mit dem Namen p deklariert ohne Anfangswerte vorzugeben. Programmcode, um die Eigenschaften mit Anfangswerten zu belegen. Mit x bzw. y sind dann die Eigenschaften des in der Deklaration genannten Objekts (hier p) gemeint. Objekte sind Instanzen ("Variable") vom Typ der Klasse Dr. Norbert Spangler / Programmieren
15 Konstruktor Punkt Punkt::Punkt(double px,double py) x=px; y=py; 1. Parameter->x 2. Parameter->y Aufruf: Punkt q(2.0,3.0); Es wird ein Objekt vom Typ Punkt mit dem Namen q deklariert. x wird mit 2.0 y mit 3.0 vorbelegt. Dr. Norbert Spangler / Programmieren
16 Headerdatei In der Headerdatei sind die Methoden als Funktionsprototypen aufzuführen. Die Namen der Parameter sind nicht erforderlich. class Punkt private: double x; double y; public: Punkt(); Punkt(double,double); //weitere Methoden ; Dr. Norbert Spangler / Programmieren
17 Methodendatei In der Methodendatei steht der Programmcode der Methoden. #include "punkt.h" #include <iostream> using namespace std; Punkt::Punkt() x=0.0; y=0.0; Punkt::Punkt(double px,double py) x=px; y=py; Verbindung zur Klasse Alles was sonst benötigt wird ist zu inkludieren. Dr. Norbert Spangler / Programmieren
18 Anwendungsprogramm #include "punkt.h" #include <iostream> using namespace std; void main() Punkt p; Punkt q(2.0,3.0); Verbindung zur Klasse Deklaration eines Objekts p mit Defaultkonstruktor Deklaration eines Objekts q mit Konstruktor #include <iostream> using namespace std; void main() int i; int j=1; Vergleichbares bisheriges Programm. In beiden Programmen sieht man nichts. ->Notwendigkeit für Ein- undausgaben. Dr. Norbert Spangler / Programmieren
19 11.5 Methode display Headerdatei class Punkt private: double x; double y; public: Punkt(); Punkt(double,double); void display(); //weitere Methoden ; Methodendatei #include "punkt.h" #include <iostream> using namespace std; void Punkt::display() cout<<"punkt"<<endl; cout<<" x "<<x<<endl; cout<<" y "<<y<<endl; Dr. Norbert Spangler / Programmieren
20 Anwendungsprogramm #include "punkt.h" #include <iostream> using namespace std; void main() Punkt p; Punkt q(2.0,3.0); p.display(); q.display(); Aufruf der Methode display mit den Objekten p und q. Dr. Norbert Spangler / Programmieren
21 Anwendungsprogramm/Debug Lässt man das Programm unter Debug laufen, können Objekte mit den aktuellen Werten der Eigenschaften angesehen werden. Dr. Norbert Spangler / Programmieren
22 Headerdatei class Punkt private: double x; double y; public: Punkt(); Punkt(double,double); void display(); void setx(double); void sety(double); //weitere Methoden ; 11.6 Methode Werte ändern Methodendatei void Punkt::setX(double px) x=px; void Punkt::setY(double py) y=py; Typ der Eigenschaft Übliche set-methode: Die Methode ist vom Typ void und hat einen Parameter vom Typ der Eigenschaft. Dr. Norbert Spangler / Programmieren
23 Methode Werte ändern Für welche Eigenschaften benötigt man set-methoden? Wenn sich einzelne Eigenschaften innerhalb einer Anwendung ändernkönnen. Beispiel: Klasse Student Eigenschaften: Matrikelnummer Name Wohnort etc. Name Wohnort kann sich ändern -> set hilfreich Matrikelnummer nicht -> kein set benötigt aber entsprechende Konstruktoren Ein Defaultkonstruktor für Student macht damit i.a. keinen Sinn. Dr. Norbert Spangler / Programmieren
24 #include "punkt.h" #include <iostream> using namespace std; void main() Punkt p; Punkt q(2.0,3.0); p.display(); q.display(); p.setx(2.3); p.sety(-1.5); p.display(); Anwendungsprogramm Die Eigenschaften des Objekts p wurden geändert. Dr. Norbert Spangler / Programmieren
25 #include "punkt.h" #include <iostream> using namespace std; void main() Punkt p; Punkt q(2.0,3.0); p.display(); q.display(); p.setx(2.3); p.sety(-1.5); p.display(); p.x=1.1; Anwendungsprogramm/Fehlerhafter Zugriff Erstellen gestartet: Projekt: test, Konfiguration: Debug Win Kompilieren... main.cpp c:\test\main.cpp(77) : error C2248: "Punkt::x": Kein Zugriff auf private Member, dessen Deklaration in der Punkt-Klasse erfolgte. c:\test\main.cpp(8): Siehe Deklaration von 'Punkt::x' c:\test\main.cpp(6): Siehe Deklaration von 'Punkt' Das Buildprotokoll wurde unter "file://c:\test\debug\buildlog.htm" gespeichert. test - 1 Fehler, 0 Warnung(en) Versuchter Direktzugriff auf eine Eigenschaft von ausserhalb der Klasse Dr. Norbert Spangler / Programmieren
26 11.7 Methode Wert verwenden Headerdatei Methodendatei class Punkt private: double x; double y; public: Punkt(); Punkt(double,double); void display(); void setx(double); void sety(double); double getx(); double gety(); //weitere Methoden ; double Punkt::getX() return x; double Punkt::getY() return y; Übliche get-methode: Die Methode ist vom Typ der Eigenschaft und hat keine Parameter. Dr. Norbert Spangler / Programmieren
27 Methode Werte verwenden Für welche Eigenschaften benötigt man get-methoden? Wenn einzelne Eigenschaften innerhalb einer Anwendung zur weiteren Verwendung bereitgestellt werden müssen. Beispiel: Klasse Student Eigenschaften: Matrikelnummer Name Wohnort etc. Ein spezieller Student soll in einer Liste von Studenten gesucht werden: getmatrikelnummer bzw. getname je nach Suchkriterium sind erforderlich. Dr. Norbert Spangler / Programmieren
28 Anwendungsprogramm #include "punkt.h" #include <iostream> using namespace std; void main() Punkt p; Punkt q(2.0,3.0); p.display(); q.display(); p.setx(2.3); p.sety(-1.5); p.display(); double h=q.getx(); cout<<" Punkt q "<<h<< " " <<q.gety()<<endl; Analog zu set ist hier auch cout<<q.y; nicht erlaubt. Die Eigenschaften von q werden verwendet. Dr. Norbert Spangler / Programmieren
29 11.8 Methoden zur Manipulation von Punkten Aufgabe 1: Ein Punkt soll am Ursprung gespiegelt werden -> Eigenschaften des Punktes werden geändert Aufgabe 2: Zwei Punkte sollen addiert werden; das Ergebnis ist ein neuer Punkt -> Eigenschaften der beiden Punkte ändern sich nicht void Punkt::spiegeln() // am Ursprung spiegeln x=-x; y=-y; Funktionswert Punkt Punkt::addieren(Punkt q) //Addition von q zum aktuellen Punkt Punkt h; Lokale h.x=x+q.x; Variable h.y=y+q.y; return h; Innerhalb der Methoden einer Klasse erlaubt. Alternative: h.setx(x+q.getx()) h.sety(y+q.gety()) Dr. Norbert Spangler / Programmieren
30 Anwendungsprogramm void main() Punkt p; Punkt q(2.0,3.0); p.display(); q.display(); Wieso funktioniert der p.setx(2.3); Zuweisungsoperator? p.sety(-1.5); p.display(); double h=q.getx(); cout<<h<< " " <<q.gety()<<endl; q.spiegeln(); q.display(); Punkt neu=p.addieren(q); // Punkt neu=p+q; waere schoener neu.display(); p q p nach set get mit q Spiegeln von q Addieren von p und q Dr. Norbert Spangler / Programmieren
31 Headerdatei class Punkt private: double x; double y; public: Punkt(); Punkt(double,double); void display(); void setx(double); void sety(double); double getx(); double gety(); Punkt addieren(punkt); void spiegeln(); ; Dr. Norbert Spangler / Programmieren
32 #include "punkt.h" #include <iostream> using namespace std; Punkt::Punkt() x=0.0; y=0.0; Punkt::Punkt(double px,double py) x=px; y=py; void Punkt::display() cout<<"punkt"<<endl; cout<<" x "<<x<<endl; cout<<" y "<<y<<endl; void Punkt::setX(doublepx) x=px; Methodendatei mit 9 Methoden void Punkt::setY(doublepy) y=py; double Punkt::getX() return x; double Punkt::getY() return y; Punkt Punkt::addieren(Punkt q) //Addition von q zum aktuellen Punkt Punkt h; h.x=x+q.x; h.y=y+q.y; return h; void Punkt::spiegeln() // am Ursprung spiegeln x=-x; y=-y; Dr. Norbert Spangler / Programmieren
33 11.9 Zusammenfassung Zur Definition einer Klasse benötigt man Die Angabe aller Eigenschaften Die Programmierung der erforderlichen Methoden - Konstruktoren zur Deklaration und Initialisierung - set-methoden um Eigenschaften zu ändern - get-methoden um Eigenschaften bereitzustellen - Methoden zur Anzeige voneigenschaften/werten - weitere aufgabenspezifische Methoden wie hier addieren, spiegeln, Dr. Norbert Spangler / Programmieren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
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
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
MehrProgrammieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.
Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter
Mehr9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
MehrEinführung in die Programmierung
: Klassen Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einführung Konstruktoren / Destruktoren
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:
MehrC++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11
C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen
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
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar
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
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
MehrFB Informatik. Fehler. Testplan
Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout
MehrKlausur Programmieren 2 SS 2016
Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt
Mehr01. Grundprinzipien der Vererbung
01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen
MehrKlausur Informatik I WS 2006/2007
Klausur Informatik I WS 2006/2007 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Hinweis: sofern Sie die Rückseite eines Blattes verwenden vermerken sie dies auf der Vorderseite Nr.
MehrHydroinformatik I: Klassen
Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 11. November 2016 1/20 Prof.
MehrProgrammieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden
Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige
MehrProf. 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
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
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
Mehr15. Die Klasse string
15. Die Klasse string Notwendige Funktionen Erzeugen Zuweisen, Anhängen,Einfügen Löschen, Entfernen, Ersetzen Ermitteln der Größe indizierter Zugriff auf Zeichen Vergleich Suchen von Zeichen und Teil-Strings
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
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
MehrHydroinformatik I: Klassen
Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 27. November 2015 1/13 Prof.
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
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C
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
MehrUniversität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08
Betreutes Arbeiten Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) 375 Wiederholung Klasse: class Klassenname { konzeptuelle Einheit der Modellierungsdomäne kapselt Daten und Operationen
MehrProgrammierkurs C++ Kapitel 6 Module Seite 1
Programmierkurs C++ Kapitel 6 Module Seite 1 (Quell-)Module Unter einem Modul versteht man einen Teil des Programms, der eigenständig übersetzt werden kann. In der Syntax der Programmiersprachen werden
MehrOOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
(Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Klassen in C++ Beispiele, mit Aufzeigen der Trennung von Spezifikation und Implementierung
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrKlausur Programmieren 1 SS 2017
Klausur Programmieren 1 SS 2017 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweies: Voraussetzung für die Teilnahme ist das Bestehen
Mehr3. Exkurs in weitere Arten der Programmierung
3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrSimpleStat mit Methoden
SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.
MehrKap 9. Bitoperationen und -strukturen
Kap 9. Bitoperationen und -strukturen 9.1 Anwendung von Bits Im Gegensatz zu den üblicherweise Byte-orientierten Daten gibt es auch Bit-Anwendungsbeispiele Statusanzeigen bei Ein-/Ausgabe (Stream-Klassen)
MehrKlassen. Kapitel Klassendeklaration
Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)
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
MehrVererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz
Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.
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
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 12
Kapitel 18 Konstruktor / Destruktor einer Klasse Seite 1 von 12 Konstruktoren - Zur Initialisierung der Eigenschaften einer Klasse werden Konstruktoren verwendet. - Der Konstruktor wird bei der Definition
MehrC++ - Objektorientierte Programmierung Vererbung
C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
MehrKlassen. C++ Übung am 02. Juni 2016
Klassen C++ Übung am 02. Juni 2016 Klassen - der Kern objektorientierter Programmierung - Festlegung der Daten und Funktionen einer Klasse - Deklaration als public oder private - Konstruktoren erzeugen
MehrC++ Klassen weitere Funktionen
C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten
MehrKap 09. Funktionen/Ergänzungen
Kap 09. Funktionen/Ergänzungen 9.1 Inline-Funktionen Der Mechanismus der Parameterübergabe hat einen "hohen" organisatorischen Aufwand z.b. durch kopieren der Parameteretc. Ist die Funktion vergleichsweise
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
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
MehrKlausur Informatik WS 2012/13
Klausur Informatik WS 2012/13 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweies: Voraussetzung für die Teilnahme ist das Bestehen
MehrRückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren
Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen
MehrVokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4
4.1 Benutzer definierte Datentypen C++ unterstützt die Einführung benutzer definierter Datentypen (auch Abstrakte Datentypen (ADT) genannt). ADTs bieten einen guten Einstieg in das Paradigma der objekt
MehrTag 7 Repetitorium Informatik (Java)
Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter
MehrC++ - Objektorientierte Programmierung Klassen und Objekte
C++ - Objektorientierte Programmierung Klassen und Objekte hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue Klasse Warteschlange
MehrKlausur Programmieren 2 WS2016/17
Klausur Programmieren 2 WS2016/17 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt
MehrUmsetzung einer Klassenkarte in einer Programmiersprache
Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrProgrammierung III. Pointer für Fortgeschrittene Marc Ruberg. Arrays von Pointern ( Zeigervektoren ): Pointer auf Pointer:
Programmierung III Marc Ruberg 1 Pointer für Fortgeschrittene Arrays von Pointern ( Zeigervektoren ): long *zahlenptr[25]; char *strptr[1000]; Pointer auf Pointer: char **sp Zeiger auf Funktionen: Typ
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrInfo-2, Klausurvorbereitung, SS 2016
Info-2, Klausurvorbereitung, SS 2016 Die folgenden Fragen dienen der Vorbereitung auf die Klausur. Die hier gestellten Aufgaben sind umfangreicher als in der Klausur. In der Klausur sind die Fragen schriftlich,
MehrEinstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:
MehrObjektorientierung Grundlagen
Prof. Dr.-Ing. Andreas Simon Telefon +49 (0)5331 939 42630 Telefax +49 (0)5331 939 43634 E-Mail a.simon@ostfalia.de Objektorientierung Grundlagen Probeklausur 18. Mai 2015 Name: Mat.-Nr.: Vorname: Login:
Mehrc) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an.
Klausur OOP SS2001 (Gampp) ufgabe 1 (22 Punkte) a) Während einer bargeldlosen Giro-ank Transaktion können eträge zwischen Währungen konvertiert werden. Eine Klasse Transaktion soll solche uchungen beschreiben
Mehr6 ZEIGER UND REFERENZEN - ALLGEMEINES
6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrProgrammierkurs C++ Konstruktor, Statische Methoden Namespaces
Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
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
MehrProgrammieren - C++ Templates
Programmieren - C++ Templates Reiner Nitsch 8471 reiner.nitsch@h-da.de Was sind Funktionstemplates? C++ unterscheidet zwischen Funktionstemplates (dieses Kapitel) und Klassentemplates (später). Funktionstemplates
MehrObjektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
MehrGrundlagen der Objektorientierung :
Grundlagen der Objektorientierung : Objektorientierung ermöglicht (unter anderem), daß man Software, die von einem selbst, meist aber von Anderen geschrieben ist, komfortabel nochmal verwenden kann. Diese
MehrGrundlagen der Informatik 6. Arrays I
6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt
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
MehrC++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17
C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen
MehrAuswahlen (Selektionen)
1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin
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,
MehrC++ - Variablen: Gültigkeit - Sichtbarkeit
C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von
MehrThemen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente
Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden
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
MehrStatische und Nichtstatische Methoden Properties/ Eigenschaften
Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische
MehrKap 1. Programmentwicklung
Kap 1. Programmentwicklung Dr. Norbert Spangler / Programmieren I 30.09.2013 1 1.1 Programme Ein Programm ist ein in einer Programmiersprache formulierter Algorithmus. -> Was ist eine Programmiersprache?
MehrProgrammieren in C++ Klassen
Programmieren in C++ Klassen Inhalt Klassen (vertieft) Destruktor Konstruktoren Move-Semantik und Rechtswert-Referenzen (C++11) C++11 Features Prof. Dr. C. Stamm Programmieren in C++, FS 13 4-2 Implementierung
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
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
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
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
MehrMikrorechentechnik II. Klassen in C++
Mikrorechentechnik II Klassen in C++ class class cfilter { float K; float T; float Ta; public: // Filterverstärkung // Filterzeitkonstante // Tastzeit Zugriffskontrolle: public, protected, private void
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang
MehrPseudo-Programmiersprache
1 Erste Schritte in C++ 4 Beschreibungsmöglichkeiten für Algorithmen Struktogramm Das gezeigte Struktogramm enthält die elementaren Grundstrukturen Folge, Auswahl und Schleife. Diese werden in einem der
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
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,
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden
Mehr