Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Ähnliche Dokumente
Repetitorium Informatik (Java)

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Grundlagen der OO- Programmierung in C#

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

Javakurs für Anfänger

Sprachkonstrukte Verzweigungen und Array-Strukturen

Algorithmen und Datenstrukturen

Algorithmen implementieren. Implementieren von Algorithmen

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Programmieren in C/C++ und MATLAB

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

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Objektorientierte Programmierung und Klassen

Programmiertechnik Objektorientierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Objektorientierte Programmierung

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

Informatik I (D-MAVT)

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

Prinzipien der objektorientierten Programmierung (OOP)

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Einstieg in die Informatik mit Java

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einführung in die Informatik

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

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

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

Delegatesund Ereignisse

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

Einstieg in die Informatik mit Java

Vererbung, Polymorphie

3 Objektorientierte Konzepte in Java

Kapitel 6. Vererbung

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Objektorientierte Programmierung

Probeklausur: Programmierung WS04/05

Umsetzung einer Klassenkarte in einer Programmiersprache

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert

Java Einführung Methoden in Klassen

Objektorientierte Programmierung OOP

Vorkurs C++ Programmierung

Einstieg in die Informatik mit Java

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

Java Einführung Klassendefinitionen

Einstieg in die Informatik mit Java

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

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

3 Objektorientierte Konzepte in Java

Kapitel 6. Vererbung

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

Objektorientierte Programmierung Teil 1: Einführung

Software Engineering Klassendiagramme Einführung

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Objektorientierte Programmierung

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

Fragen zur OOP in Java

12 Abstrakte Klassen, finale Klassen und Interfaces

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Begriffe 1 (Wiederholung)

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

Objektorientierte Programmierung Studiengang Medieninformatik

1 Klassen und Objekte

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

7. Übung Informatik II - Objektorientierte Programmierung

Neue Features in C# 2.0

Einführung in die Programmierung

Objektorientierte Programmierung (OOP)

Programmieren für Wirtschaftswissenschaftler SS 2015

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierung (OO)

Vererbung und Polymorphie

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Kapitel 6. Vererbung

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

Dr. Tobias Günther Programmierung Einführung Probeklausur 120 min

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Javakurs für Anfänger

Geschachtelte Klassen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

C++ - Objektorientierte Programmierung Vererbung

1 Abstrakte Klassen, finale Klassen und Interfaces

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Programmieren I. Überblick Objektorientierung Heusch 12 Ratz 7. Institut für Angewandte Informatik

5.5.8 Öffentliche und private Eigenschaften

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Algorithmen und Datenstrukturen 06

Transkript:

Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein

Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2

Konzepte der OO Programmierung 3

Modularisierung Modularisierung ist das Prinzip, nach dem grosse Systeme entwickelt werden. Ein komplexes System wird nach dem Baukastenprinzip aus Einzelbausteinen zusammengesetzt. Namensräume, Klassen oder Funktionen sind einfache Umsetzungen des Modularisierungsprinzips. Klassen bilden eigenständige Verarbeitungseinheiten und lassen sie sich einfach als Bausteine bei der Entwicklung von komplexen Programmen/Systemen verwenden. 4

Objektorientierung Die objektorientierte Programmierung (OOP) ist eine Methode zur Modularisierung von Programmen. Objektorientierte Software ist einfacher zu entwickeln, zu warten und zu erweitern als prozedurale. Sie vereinfacht durch die strenge Modularisierung das Testen und Wiederverwendung von Softwareteilen. 5

Objektorientierung Bei der objektorientierten Programmierung werden die Programme in Objekte (Komponenten, Einheiten) unterteilt. Jedes Objekt besitzt einen Zustand, welcher durch dessen Eigenschaften (Objektattribute) beschrieben wird. Objekte können anderen Objekten Botschaften senden (indem sie deren Methoden aufrufen) und so mit anderen Objekten zusammenarbeiten. Teile eines Billet-Automaten 6

Objektorientierung In der OOP-Programmierung werden Daten und Funktionen zu Objekten zusammengefasst. Diese Objekte können miteinander in Verbindung stehen, indem sie gegenseitig ihre Methoden aufrufen oder ein Objekt andere Objekte enthält. Die Objekte einer Software bilden zusammen ein Gesamtsystem. Verschiedene Komponenten einer Waschmaschinen-Steuerung 7

Klassen Objekte/Instanz Klassen sind «Schablonen» für die Objekte. Sie definieren, wie die Objekte aussehen, welche Eigenschaften sie haben und wie sie funktionieren. Objekte sind dann konkrete (erzeugte) Instanzen von Klassen. Sie haben einen konkreten Zustand (Speicherplatz, Wert, ) Klasse: Waschmaschine Objekt/Instanz: konkreter Motor mit Belegung der Attribute/Eigenschaften 8

Abstraktion Jedes Objekt im System (dem Programm, der Applikation) ist ein Modell eines Akteurs, der Aufträge erledigen kann, einen Zustand hat und mit den anderen Objekten im System kommunizieren kann, Klassen-Objekte geben nach aussen nicht bekannt, wie diese Aufträge erledigt werden (implementiert sind). Sie geben nur bekannt, welche Fähigkeiten sie haben (was Sie für Aufträge erledigen können) ohne zu zeigen wie. 9

Persistenz Objekte bleiben auf dem Heap bestehen, solange eine Referenz auf ihre Adresse (ihren Speicherplatz) auf dem Stack vorhanden ist Objekte bleiben (falls nötig) bis zum Ende des Programm- Ablaufs bestehen. Lokale Variablen oder Parameter (zum Beispiel Methoden Parameter oder die Lauf-Variable in der for-schleife) verfallen, sobald der Kontext der Variable verlassen wird (Schleife, Funktion/Methode, Block ) 10

Vorgegebene Klassen Beispiele von bereits in C# vorgegebenen Objekten/Klassen Das Haupt-Programm mit der Methode Main() Die Console mit den Methoden ReadLine(), WriteLine(), String Objekte mit den Methoden Substring(), StartsWith(), Replace(), DateTime Objekte mit den Methoden AddMinutes(), AddHours(), AddDays(), 11

Datenkapselung Der Zustand dieser Objekte wird über klar definierte Schnittstellen gelesen und verändert. Interne Informationen, die über keine Schnittstelle verfügen, sind von Aussen nicht einsehbar. Der Zustand von Console Objekten besteht aus den Eigenschaften (Informationen) Title, WindowWidth, WindowHeight, Der Zustand von DateTime Objekten besteht aus den Eigenschaften Second, Minute, Hour, Day, Month, Year, Diese Eigenschaften haben Zugriffs-Methoden (Schnittstellen) und können darum beim Objekt angefragt werden. 12

Selber definierte Klassen In C# können wir selber Klassen definieren, zum Beispiel: Ein Motor mit seinen Eigenschaften (Grösse, Leistung, Drehzahl, ) Eine Person mit ihren Merkmalen (Vor- und Nachname, Geburtsdatum, ) Eine Maschine mit ihren Bestandteilen (Staubsauger, Fräse, Lokomotive, ) Eine Firma mit ihren Abteilungen (Konstruktion, Administration, Buchhaltung, ) und ihren Angestellten Eine Steuerung mit den Steuerbefehlen (start, stop, weiterfahren, ) 13

Das Klassendiagramm Das Klassendiagramm gehört nicht zu SysML. Es ist aber ein zentrales Diagramm in der Informatik (UML). Es ist verwandt mit dem Blockdiagramm und hilft, die Struktur (die Inhalte) einer Klasse zu beschreiben. 14

Klassen implementieren und Objekte erzeugen 15

Implementieren von eigenen Typen/Klassen Eigene Klassen werden implementiert durch: public class MyClass { } // Felder / Variablen Benötigter Speicherplatz auf dem Heap. // Konstruktoren Erzeugungs-Methoden der Klasse. // Weitere Methoden der Klasse. 16

Implementation der Klasse Waschmaschine public class Waschmaschine { // Felder String typ; bool läuft; // Konstruktor public Waschmaschine(String t, bool l) { typ= t; läuft = l; }... Der Konstruktor heisst immer gleich wie die Klasse. Hier belegt der Konstruktor die Felder der Klasse (typ, läuft). Auf dem Stack entsteht eine (Referenz-)Adresse, auf dem Heap wird Speicherplatz mit den Daten des Motor-Objekts belegt. 17

Implementation der Klasse Waschmaschine }... // Weitere Methoden public void Start( ) { läuft = true; //.. Weitere Anweisungen Console.WriteLine("Waschmaschine {0} gestartet", typ); } Die Methode Start() gehört zur Klasse und hat darum Zugriff auf den Speicher des Waschmaschinen Objekts und benutzt die dort abgelegten Daten/Informationen läuft und typ. 18

Verwendung von Klassen Neue Objekte (Instanzen von Klassen) werden erzeugt durch Type objectname = new Type ( args ) Für die Klasse Waschmaschine wäre das Waschmaschine w = new Waschmaschine("adina-200c", false); Damit erhält das Waschmaschinen Objekt w das Daten-Feld adina-200c und den Wert false (für läuft). 19

Verwendung der Klasse Waschmaschine static void Main(string[] args) { Console.WriteLine("Waschmaschine starten"); // create an object Waschmaschine w = new Waschmaschine("adina-300c", false); } w.start(); Die Methode Main kann mit dem Konstruktor der Waschmaschinen-Klasse ein Objekt w vom Typ Waschmaschine erzeugen und mit der Start() Methode den Ablauf starten(). 20

Implementation der Klasse Person public class Person { //Fields String firstname; String lastname; DateTime dateofbirth; //Constructor public Person(String f, String l, int year, int month, int day) { } firstname = f; lastname = l; dateofbirth = new DateTime(year, month, day);... Der Konstruktor belegt hier die Felder der Klasse (firstname, lastname date-ofbirth). 21

Implementation der Klasse Person public class Person { //Fields String firstname; String lastname; DateTime dateofbirth; //Constructor public Person(String f, String l, int year, int month, int day) { } firstname = f; lastname = l; dateofbirth = new DateTime(year, month, day);... Auf dem Stack entsteht beim Aufruf des Konstruktors eine (Referenz-) Adresse, auf dem Heap wird ein Speicherplatz für die Daten des Person Objekts reserviert. 22

Implementation der Klasse Person... } // Method to get the personal data of the person public void getpersonaldata() { Console.Writeline("{0} {1}", firstname, lastname); Console.Writeline("Geburtsdatum: {0}", dateofbirth.tolongdatestring()); } Die Methode getpersonaldata( ) gehört zur Klasse Person und kann darum auf die privaten Felder firstname, lastname, der Klasse zugreifen. Sie schreibt die persönlichen Daten eines konkreten Person- Objekts auf die Konsole. 23

Verwendung von Klassen Der Konstruktor der Klasse Person wird wie folgt aufgerufen: Person p = new Person("Peter", "Muster", 1980, 10, 25); Damit erhält das Person Objekt p den Vornamen Peter, den Nachnamen Muster und das Geburtsdatum 25. Oktober 1980. 24

Verwendung der Klasse Person static void Main(string[] args) { //Create a new person object. Person p = new Person("Peter", "Muster", 1980, 10, 25); //Print the personal data to the console. p.getpersonaldata(); } Console.ReadLine(); Die Methode Main erzeugt ein Person-Objekt, gibt mit der Methode getpersonaldata( ) dessen Daten auf die Console aus. 25