Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein."—  Präsentation transkript:

1 Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein

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

3 Konzepte der OO Programmierung

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

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

6 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

7 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

8 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

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

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

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

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

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

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

15 Klassen implementieren und Objekte erzeugen

16 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 }

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

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

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

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

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); } . . . Der Konstruktor belegt hier die Felder der Klasse (firstName, lastName date-OfBirth).

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

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

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

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


Herunterladen ppt "Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein."

Ähnliche Präsentationen


Google-Anzeigen