Grundkurs C++ Einführung

Ähnliche Dokumente
Java Einführung Objektorientierte Grundkonzepte

Informationsverarbeitung im Bauwesen

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Objektorientierte Programmierung OOP

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

Aufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt.

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte Modellierung (1)

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Objektorientierte Programmiersprachen

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Einführung in die objektorientierte Programmierung. mit Squeak

Themen. Unified Modelling Language (UML) Assoziation. Aggregation. Komposition

Software- und Systementwicklung

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Kapitel 6. Vererbung

1. Java ist Stammbaum der Programmiersprachen 3. Die "Softwarekrise"

3 Objektorientierte Konzepte in Java

Vererbung. Was versteht man unter dem Begriff Vererbung?

Überschreiben von Methoden

Klassenbeziehungen & Vererbung

01. Grundprinzipien der Vererbung

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Software Engineering Klassendiagramme weiterführende Konzepte

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

4 Vererbung, Polymorphie

Java I Vorlesung Vererbung und Sichtbarkeit

Teil 2: OOP und JAVA (Vorlesung 11)

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Java, OO und UML Fortsetzung

Java: Vererbung. Teil 3: super()

Einführung in die Informatik

Einführung in die Programmierung mit Java. Hörsaalübung

Objektorientiertes Software-Engineering

Vorlesung "Software-Engineering"

11/2009 Bernhard Gangl. Steuerungen mit OOP entwickeln 11 / Themenübersicht. Übersicht und Begriffsklärung: Objektorientierte Programmierung

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Vorlesung Informatik II

Algorithmen und Datenstrukturen 07

Unified Modeling Language (UML)

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Abschnitt 15: Unified Modeling Language (UML)

Objektorientierte Programmierung. 1. Einführung. Dresden, 10. April 2008

Folge 18 - Vererbung

Vererbung & Schnittstellen in C#

Abschnitt 9: Schnittstellen: Interfaces

Javakurs für Anfänger

Programmieren in Java

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Programmieren - Vererbung & Polymorphie

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

3 Objektorientierte Konzepte in Java

Softwaretechnik (Allgemeine Informatik) Überblick

Angewandte Mathematik und Programmierung

Client/Server-Systeme

Das Softwaresystem BASEMENT

Testen mit JUnit. Motivation

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

Teil 6: Klassenkonzept. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Objektorientierte Programmierung Teil 1: Einführung

Überblick. 7. Überladen von Operatoren

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

SWE5 Übungen zu Software-Engineering

Wiederholung zur Vorlesung Programmieren

Interaktionsdiagramme in UML

3. Konzepte der objektorientierten Programmierung

Java für Computerlinguisten

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 4 -

Übungen zur Softwaretechnik

6. Modellierung von Informationssystemen. 6.1 Einleitung 6.2 Konzeptuelles Modell 6.3 OASIS Spezifikation 6.4 Execution Model 6.

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

8 Baum in perfekter Komposition

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Programmieren Tutorium Wintersemester 2008/2009

Objektorientierte Programmierung

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Inhaltsverzeichnis. Teil I Einführung 13. Teil II Struktur 41. Vorwort 11

Java. Prof. Dr. Stefan Enderle NTA Isny

Java - Vererbung. Personen. Leibniz Universität IT Services Anja Aue

Probeklausur: Programmierung WS04/05

Szenario 3: Service mit erweiterter Schnittstelle

11.3 Virtuelle Methoden

Übung bezeichnung titel thema Übungsgruppe gruppennr wochentag uhrzeit namementor vornamementor Student name vorname matrikelnr

1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: Organisation des Quellcodes 4. Werte- und Referenzsemantik

Softwarepraktikum: Enigma

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Java: Vererbung. Teil 1: Grundlagen, UML.

Transkript:

Grundkurs C++ Einführung Martin Knopp & Johannes Feldmaier 13.04.2016 Folie 1/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Martin Knopp Martin.Knopp@tum.de Büro Z934 Johannes Feldmaier Johannes.Feldmaier@tum.de Büro Z947 Folie 2/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Warum C++? Sprache Rechenzeit Memory (KB) C++ GNU g++ 5,74 182.244 Java 6 26,34 686.076 Python 3 27,04 483.368 C# Mono 96,28 616.828 Software: regex-dna, Debian Computer Language Shootout Folie 3/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Warum C++? Folie 4/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Warum immer noch C++? Folie 5/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Warum C++? Strenge Standardisierung von Beginn an (ca. 1985) Extrem schnelle und effiziente Compiler Wird immer noch weiterentwickelt C++11 seit August 2011 standardisiert C++14 seit Januar 2015 standardisiert Große Vielfalt an Compilern für die allermeisten Plattformen Viele Entwicklungstools verfügbar Folie 6/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Lehrstuhl für Datenverarbeitung Das Ziel Entwicklung eines Spiels Teamarbeit in Teams aus 5 Personen Folie 7/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Zeitplan 13.04. Einführung und Objektorientierung 20.04. IDE, Klassenhierarchie 27.04. Buildsysteme und Qt, Git 04.05. Präsentation Kurzprojekt Typwandlung, Exceptions 11.05. Objektmodellierung und Debugging 18.05. und 25.05. Präsentation Analyse- & Designmodell 01.06, 08.06., 15.06. Working Sessions 22.06. und 29.06. Abschlusspräsentation 06.07. Show & Tell Folie 8/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Bewertung Drei Hausaufgaben (ca. 15%) Vorprojekt (ca. 10%) Designmodell und Pflichtenheft (ca. 10%) Abschlusspräsentation (ca. 10%) Haupprojekt (ca. 50%) Dokumentation (ca. 5%) Folie 9/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Nützliches LDV-Webseite zum Kurs http://www.ldv.ei.tum.de/lehre/grundkurs-c/ Hausaufgaben Vorlesungsfolien Skript C++ Buch Thinking in C++ Besucht die Bibliothek! 4 Tutoren, die euch bei sämtlichen Fragen und Problemen weiterhelfen werden cpp-tutor@ldv.ei.tum.de Praktikumsraum -1981 (Zeitplan auf der LDV Seite) Folie 10/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Teil II Grundlagen der Objektorientierung Folie 11/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Motivation Realität ist objektorientiert Vereinfachung und Kapselung Wiederverwendbarkeit Leichte Erweiterbarkeit Parallelisierbarer Entwicklungsprozess Folie 12/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Aufbau und Eigenschaften eines Objekts von Außen Objekt hat öffentliche Eigenschaften (Attribute) Objekt besitzt öffentlich definierte Funktionen (Methoden), welche sich auf seine Eigenschaften auswirken von Innen Verarbeiten der über Funktionsaufrufe eingehenden Befehle (Botschaft) zur Änderungen der Eigenschaften Interne Funktionen und Eigenschaften, zur Wahrnehmung der äußeren Funktion Folie 13/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Aufbau und Eigenschaften des Objekts Auto von Außen zugänglich Attribut Geschwindigkeit (nur lesend) Methoden beschleunigen und bremsen definierte Funktionsweise Aufruf der Methoden verändert die Geschwindigkeit von Innen Wird beschleunigen aufgerufen, mehr Kraftstoff an den Motor liefern Wird bremsen aufgerufen, Bremsanlage betätigen Folie 14/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Folgen dieses Aufbaus für das Objekt Auto Für den externen Benutzer von Auto ist es vollkommen egal was passiert wenn er beschleunigen möchte Jedes Auto -Objekt MUSS die Methoden beschleunigen und bremsen verstehen Der Aufruf der Methode beschleunigen ist von der konkreten Implementierung von Auto vollkommen unabhängig Auto -Objekte können innerhalb des Programms beliebig ausgetauscht werden Folie 15/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Begriffe: Objekt Klasse Instanz Bei der Arbeit mit Objekten unterscheidet man: Klasse Zusammenfassung von ähnlichen Objekten, welche sich nur in Ihren Attributen unterscheiden Charakterisiert die Objekte Schablone / Prototyp Instanz Konkretes Objekt das bestimmte Attributwerte aufweist Folie 16/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Beispiel: Objekt Klasse Instanz Klasse Auto Attribute: Geschwindigkeit Methoden: beschleunigen bremsen Johannes Auto Attribute: Geschwindigkeit=50,4 Methoden: beschleunigen bremsen Martins Auto Attribute: Geschwindigkeit=62,7 Methoden: beschleunigen bremsen Instanzen Folie 17/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Generalisierung / Vererbung Vererbung ermöglicht Gruppen von Klassen, die sich ähnlich sind, aber Unterschiede haben Gemeinsame Attribute und Methoden werden in der Elternklasse definiert Verschiedene Kinder erben diese und implementieren weitere Methoden und Attribute Jedes Kind kann auch die Methoden und Attribute der Eltern überschreiben, also neu implementieren Folie 18/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Beispiel: Vererbung Auto Geschwindigkeit beschleunigen() bremsen() Rot: geerbte Attribute/Methoden Blau: überschriebene Methoden Cabrio Geschwindigkeit VerdeckOffen beschleunigen() bremsen() verdecköffnen() LKW Geschwindigkeit Anhänger beschleunigen() bremsen() Folie 19/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Objektbeziehungen Wesentliches Merkmal der objektorientierten Programmierung ist die Interaktion der Objekte Objekte stehen in Beziehungen zueinander Es gibt verschiedene Arten von Beziehungen Komposition Aggregation Assoziation Folie 20/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Objektbeziehungen Komposition Teile existieren nur gemeinsam Aggregation Teile bilden eine Einheit Können auch alleine existieren Assoziation Teile agieren gemeinsam flüchtige Bindung Folie 21/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Erwartungen an das objektorientierte Paradigma Wiederverwendbarkeit Erweiterbarkeit Leichte Wartbarkeit Wodurch? Klasse hat definiertes Verhalten durch Kapselung Die Attribute, und damit die Daten der Klasse sind nicht beliebig änderbar. Folie 22/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Realisierung der Kapselung Der Zugriff auf Attribute des Objekts muss geregelt werden Methoden dienen zur Abarbeitung von Botschaften Methoden sind also die Schnittstelle zu den Daten des Objekts Es sind folgende Fragen zu klären: Welche Methode darf welche Daten ändern? Wer darf die Methoden aufrufen? Folie 23/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Realisierung der Kapselung Klasse besteht aus: Attributen und Methoden der Basisklasse Eigenen Attributen und Methoden Zugriffsregelung sollte auf Vererbung aufsetzen! Folie 24/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Public Manche Daten sind jedem zugänglich: Also allen Methoden jeglicher Klassen Beispiel: Luftdruck (durch Methoden luftdruckerhoehen(), luftdrucksenken(), Attribut Luftdruck) Auto +Luftdruck +luftdruckerhöhen() +luftdrucksenken() +public-attribut/ Methode Folie 25/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Private Auf manche Daten können nur die Methoden der Klasse zugreifen Beispiel: Geschwindigkeit (durch Methoden bremsen(), beschleunigen()) Auto -Geschwindigkeit +bremsen() +beschleunigen() +public-attribut/ Methode -private-attribut/ Methode Folie 26/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Protected Auf manche Daten können nur die Methoden der Klasse zugreifen, sowie die Methoden der Klassen, die von dieser erben Beispiel: InnenraumTemperatur (durch Methoden der abgeleiteten Klasse heizen(), kühlen()) +public #protected -private Folie 27/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Überblick Auto +Luftdruck #InnenraumTemperatur -Geschwindigkeit +bremsen() +beschleunigen() +luftdruckerhöhen() +luftdrucksenken() +public-attribut/ Methode #protected-attribut/ Methode -private-attribut/ Methode Folie 28/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Private- und Protected-Methoden +public-attribut/ Methode #protected-attribut/ Methode -private-attribut/ Methode Folie 29/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Public-Attribute Kapselung Attribute, die durch jeden, also alle Methoden, änderbar sind! Auto +Anzahl der Kratzer +Tankinhalt Keine Kapselung! Art der Zugriffe völlig unbestimmt! Folie 30/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Public-Attribute Kapselung II Immer besser: Methoden zum Setzen und Auslesen der Attribute Aber: nur wo nötig und sinnvoll, da die Kapselung sonst aufgeweicht wird Auto -Anzahl der Kratzer -Tankinhalt +gettankinhalt() +settankinhalt() Das Verhalten kann definiert werden, d.h. Bereichsüberwachung ist beispielsweise möglich Fehlersuche und Wartung wird enorm vereinfacht Folie 31/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Gruppenarbeit Erstellt ein Klassendiagramm für ein Auto Komponenten: Motor, Fahrgestell, Karosserie, Räder, Türen, Fahrer(in), Anhänger, Überlegt euch sinnvolle Methoden und Attribute Überlegt, welche Methoden und Attribute -private, +public oder #protected sein müssen Folie 32/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Lösungsvorschlag Folie 33/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016

Hausaufgabe Skript lesen bis einschließlich Kapitel 4.4 Ihr dürft die Inhalte aus diesen Kapiteln gerne auch aus anderen Quellen als dem Skript nachlesen! Folie 34/34 GK C++: Einführung Martin Knopp & Johannes Feldmaier 13.04.2016