Informationsverarbeitung im Bauwesen



Ähnliche Dokumente
Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Informationsverarbeitung

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung

Objektorientierte Programmierung OOP

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Informationsverarbeitung im Bauwesen

7. Übung Informatik II - Objektorientierte Programmierung

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

Programmieren in C/C++ und MATLAB

Prinzipien der objektorientierten Programmierung (OOP)

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Objektorientierte Programmierung und Klassen

Informationsverarbeitung

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

Repetitorium Informatik (Java)

Überblick. R.Grossmann / P. Sobe 1

3. Exkurs in weitere Arten der Programmierung

Einführung in die Programmierung mit C++

Überblick. 5. Objekt und Klasse, Elementfunktionen

Klassen. Kapitel Klassendeklaration

Java, OO und UML Fortsetzung

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Informatik I (D-MAVT)

Informationsverarbeitung im Bauwesen

Praxis der Programmierung

Einstieg in die Informatik mit Java

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Vererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15.

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Vererbung und Polymorphie

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Vorlesung Datenstrukturen

Objektorientierte Programmierung OOP

Skriptum Bauinformatik SS 2013 (Vorlesung III)

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Implementieren von Klassen

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Programmieren in Java

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Das Einsteigerseminar Objektorientierte Programmierung in Java

Programmieren in Java

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Objektorientierte Programmierung Studiengang Medieninformatik

Einstieg in die Informatik mit Java

Objektorientierte Programmierung Teil 1: Einführung

PYTHON. 06 Objektorientierung II

HSR Rapperswil 2001 Markus Rigling. Programmieren: Smart Pointer Auflage

Informationsverarbeitung im Bauwesen

Vererbung, Polymorphie

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Überblick. Überblick zum weiteren Inhalt

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

11.3 Virtuelle Methoden

Einstieg in die Informatik mit Java

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Vorkurs Informatik WiSe 15/16

11 Vererbung und Klassenhierarchie

Mikrorechentechnik II. Klassen in C++

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Javakurs für Anfänger

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);

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Vererbung und Polymorphie

C++ - Objektorientierte Programmierung Polymorphie

Grundlagen der Informatik Vererbung von Klassen

Verwendung von Klassen in C++

Javakurs für Anfänger

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Aufbau von Klassen. class punkt {...

Propädeutikum Programmierung in der Bioinformatik

Programmierkurs C/C++

WESTFÄLISCHE WILHELMS-UNIVERSITÄT MÜNSTER. Advanced Matlab. living knowledge WWU Münster. Mario Ohlberger, Martin Drohmann, Stefan Girke 10/05/2012

Programmierung und Angewandte Mathematik

Prof. W. Henrich Seite 1

BAUINFORMATIK. SS 2013 Vorlesung III Johannes Lange

Einführung in die Programmierung Wintersemester 2018/19

Einstieg in die Informatik mit Java

Objektorientierte Programmierung in Java

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Exceptions und Vererbung

4. Objektorientierte Programmierung mit C++

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Einführung in die Programmierung für NF MI. Übung 07

Einführung in die Programmiersprache Java II

Crashkurs C++ - Teil 1

Vererbung & Schnittstellen in C#

Java-Programmierung mit NetBeans

Einführung in C# Teil 3. Matthias Nübling

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Transkript:

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

2/21 8. VORLESUNG Objektorientiertes Programmieren, Einführung Advice: Represent concepts as classes. B. Stroustrup

3/21 Fragen, die in dieser Vorlesung diskutiert werden Objektorientiertes Programmieren (OOP) Was unterscheidet eigentlich OOP vom prozeduralen Programmieren? Wozu brauche ich diese Funktionalität? Erste Schritte Definition eigener Klassen Erzeugung von Objekten des neuen Typs

4/21 OOP Einführung Was ist ein Objekt? (im Sinne von OOP) Weiterentwicklung einer benutzerdefinierten Datenstruktur: Zusammenfassung von Daten und Funktionen Daten eines Objektes können vor fehlerhaftem Zugriff geschützt werden nach außen bieten Objekte eine streng definierte Schnittstelle Objekte sind Exemplare ( Instanzen ) von sog. Klassen Klassen dienen als Baupläne für Objekte

5/21 OOP Einführung Objekte als Weiterentwicklung von Strukturtypen Variable (fundamentaler Typ) Funktion Feld (z.b. Typ1) struct: Element1 (Typ1) Element2 (Typ2)... Objekt: Element1 (Typ1)... Funktion1...

Elemente von Objekten OOP Einführung Objekte beinhalten Eigenschaften (Daten) Methoden (Funktionen) Objekt Eigenschaften Methoden : Auto Eigenschaften: Geschwindigkeit, Fahrtrichtung, Gang,... Methoden: Bremsen, Schalten, Gasgeben, Lenken,... : string Objekt aus Standardbibliothek Eigenschaften: length,... Methoden: clear, insert, find,... 6/21

7/21 OOP Einführung Drei Säulen der objektorientierten Programmierung Datenkapselung Verbergen der inneren Struktur eines Objektes Polymorphie eine gleichnamige Methode kann auf unterschiedliche Objekte angewendet werden Vererbung Objektklassen können als Basis für andere Klassen dienen, welche die Elemente der Ursprungsklasse erben

8/21 OOP Kapselung von Objektdaten Einführung Schnittstelle Zugriff über Schnittstellen Zugriff auf Interna kann verhindert werden öffentliche Eigenschaften Methoden Objekt verborgene Eigenschaften Methoden

9/21 OOP Polymorphie von Objekten Einführung Polymorphie Verwendung gleicher Methodennamen für unterschiedliche Objekte Interna evtl. völlig unterschiedlich, bei Benutzung jedoch unerheblich Vorteil für Anwender (Benutzer) der Klasse Beschleunigen();... Objekt vom Typ Fahrrad Beschleunigen();... Objekt vom Typ Auto

10/21 Objekte und Vererbung OOP Einführung Eigenschaft A Methode A Vererbung Methoden/Eigenschaften werden an abgeleitete Klassen weitergegeben spart Aufwand, hilft Fehler vermeiden Bsp: Kindklasse besitzt Eigenschaften/Methoden A und B Objekt der Elternklasse Eigenschaft B Methode B Objekt der Kindklasse

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 11/21 Deklaration von Klassen Syntax (Deklaration): class <classname>{ <Deklarationen> }; Bsp: class kreis{ float radius; //Variablen float x; float y; void anzeigen(); //Funktion }; Deklaration der Elemente einer Klasse analog zu Strukturtypen (Elementvariablen) zusätzlich: Elementfunktionen Deklaration erzeugt kein Objekt, sodern definiert neuen Typ!

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 12/21 Definition von Objekten Objekt Klasse: Objekt ist Instanz einer Klasse Klasse ist Bauplan für Objekte ein Objekt muss vor der Benutzung erzeugt werden erst bei Definition von Objekten wird Speicher reserviert Syntax (Definition): class <classname> <objname>; oder <classname> <objname>; //OK Bsp: class kreis k1;//definiert Variable k1 kreis k2; //auch OK

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 13/21 Nutzen von Objekten: Zuweisungen, Methoden Ansprechen von Elementdaten und -funktionen durch Punktoperator. angehängt an Objektnamen Bsp: kreis k1; //definiert Variable k1 vom Typ kreis k1.radius=0.45;//setzt Wert der Elementvariablen radius k1.anzeige(); //ruft Elementfunktion fuer Objekt k1 auf Nutzung von Elementfunktionen nur in Verbindung mit entsprechenden Objekten

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 14/21 Implementierung von Klassenfunktionen Elementfunktionen werden i.d.r. ausserhalb der Deklaration der Klasse definiert ( implementiert ) Zuordnung: durch Angabe des Klassennamens und :: Bsp: ( inline ) class test{ //vollstaendige Def. von show void show(){cout << "Hello";} }; Bsp: (separat) class test{ void show(); //Prototyp };... void test::show(){ //Implementierung cout << "Hello"; }

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 15/21 Verborgene und öffentliche Klassenelemente Bsp: class kreis{ public: //oeffentliche Elemente folgen float radius; void anzeigen(); private: //verborgenes Element folgt int unsichtbar; }; Zugriff wird über Schlüsselwörter private, public geregelt private: Zugriff nur über eigene Elementfunktionen public: direkter Zugriff Schalterfunktion: jeweils Wirkung bis zu nächster Änderung standardmässig: private (Quelltext)

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 16/21 Datenelemente sollten möglichst verborgen sein um Datenkapselung zu realisieren, sollten die Datenelemente einer Klasse möglichst verborgen sein verhindert ungewollte Manipulation der Daten Realisierung des Zugriffs durch accessor Funktionen

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 17/21 Zugriff durch Zugriffsfunktionen (accessors) Bsp: class kreis{ public: //oeffentliche Elemente folgen void setradius(float r);//accessor float getradius(); //accessor void anzeigen(); private: //verborgenes Element folgt float radius; }; Konvention für Zugriffsfunktionsnamen (nicht zwingend): get<varname>, set<varname> schreibgeschützte Elementvariable ( read only ): Zugriffsfunktion set<varname> auslassen ( 1), ( 2)

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren Zugriff durch befreundete Klassen (friend) Schlüsselwort friend gewährt Zugriff auf verborgene Elementdaten & -funktionen gestattet: komplette Klasse oder einzelne Funktionen Befreundung ist nicht kommutativ, nicht übertragbar Bsp: class bob{ private: void show(){cout << alter;} int alter; //Befreundung durch Objekte vom Typ alice friend class alice; //Elementfunktion check von Objekten mit Typ boss friend void boss::check(); }; (programm) 18/21

Deklaration, Definition & Implementierung Zugriff auf Objektelemente Konstruktoren & Destruktoren 19/21 Initialisierung von Objekten: Konstruktoren Konstruktoren sind spezielle Elementfunktionen ohne Rückgabewert Name entspricht Klassenbezeichner automatischer Aufruf bei Erzeugung eines Objektes Möglichkeit der Initialisierung von Objektdaten Ausführen weiterer Befehle bei Erzeugung des Objektes analog: Destruktor Aufruf bei Zerstörung eines Objektes Bsp: class kreis{ public: kreis(){cout << "Konstruktor!";} ~kreis(){cout << "Destruktor!";} }; (Quelltext)

20/21 Erweiterung der Partikelsimulation (1) Entwurf einer Partikelklasse Eigenschaften: Position, Geschwindigkeit, Radius Methoden: Konstruktor (Initialisierung) linearer Bewegungsschritt Wandkollision grafische Anzeige Programmtext: Linux, Windows

21/21 Erweiterung der Partikelsimulation (2) Behälterklasse Eigenschaften: Partikelvektor Methoden: Partikelkollisionen Bewegungsschritt Wandkollision grafische Anzeige Programmtext: Linux, Windows Partikelklasse Eigenschaften: Position, Geschwindigkeit, Radius Methoden: Bewegungsschritt Wandkollision grafische Anzeige Konstruktor

1/3 Anhang Zusammenfassung Literatur Zusammenfassung Objektorientiertes Programmieren (OOP) Datenkapselung, Polymorphie & Vererbung Erste Schritte in OOP Definition eigener Klassen Erzeugung von Objekten des neuen Typs Zugriffsbestimmung: private, public, friend Konstruktoren

2/3 Anhang Zusammenfassung Literatur Anhang

3/3 Anhang Zusammenfassung Literatur Weiterführende Literatur S. Prata, C++ Primer Plus, Sams, 2005 S. Oalline, Practical C++ Programming, O Reilly, 2003 J. Liberty and B. Jones, Teach yourself C++ in 21 days, Sams, 2005 R. Lischner, C++ in a Nutshell, O Reilly, 2003 Handbücher erhältlich am Rechenzentrum: (Weblink) RRZN, Die Programmiersprache C, 17. Auflage, 2008 RRZN, C++ für C Programmierer, 13. Auflage, 2005 Online Dokumentation zum C++ Standard (Weblink) (freie) Microsoft Software für Studenten am KIT: (Weblink)