Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Einführung in die Programmierung Klassendefinition und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einführung in die Programmierung
Ham EST Das Schwein Schmatz.. Fressen Beginnen wir.... mit einer Geschichte:
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
A Workshop About this chapter General description Units Time Schedule
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
, 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.
Anforderungen an die neue Datenstruktur
Anforderungen an die neue Datenstruktur
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
OOP II.
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Einführung in die Programmierung mit Java
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
November 18 Informatik Kurse
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Von Cem, Maurice und lars
4. Modellieren und Diagrammarten
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Polymorphie Überladen
Objects first mit BlueJ und Greenfoot
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Interfaces Definition von Interfaces Verwendung von Interfaces
2. Vererbung und Kapselung
«Delegierter» Methoden Schablone Funktionszeiger
Definition Felder Konstruktor Methoden Beispiel
1. Die rekursive Datenstruktur Liste 1
Datenstrukturen und Softwareentwicklung
Implementieren von Klassen
Grundlagen der OO-Programmierung in C#
Statische und Nichtstatische Methoden Properties / Eigenschaften
Juli 19 Informatik Kurse
 Präsentation transkript:

Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein

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

Konzepte der OO Programmierung

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.

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.

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

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

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

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.

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

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(), …

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.

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, …)

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.

Klassen implementieren und Objekte erzeugen

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 }

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.

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.

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

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().

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

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.

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.

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.

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.