Vererbung und Polymorphie

Ähnliche Dokumente
Vererbung & Schnittstellen in C#

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

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

Kapitel 6. Vererbung

Programmieren in Java

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

3 Objektorientierte Konzepte in Java

Java Einführung Methoden in Klassen

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

Java für Computerlinguisten

Algorithmen und Datenstrukturen 07

3 Objektorientierte Konzepte in Java

Probeklausur: Programmierung WS04/05

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Java Schulung (Java 2 Java Development Kit 5 / 6)

4 Vererbung, Polymorphie

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Objektorientierte Programmierung. Kapitel 12: Interfaces

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Objektorientierte Programmierung

Klassenbeziehungen & Vererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Java Einführung Abstrakte Klassen und Interfaces

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

5. Abstrakte Klassen

C#-Workshop, Teil 2: C#-Objekte im Praxiseinsatz

5.4 Klassen und Objekte

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

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

Javakurs 2013 Objektorientierung

Vorkurs C++ Programmierung

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Javakurs für Anfänger

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

3. Konzepte der objektorientierten Programmierung

5.6 Vererbung. Vererbung

C# im Vergleich zu Java

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Objektorientierung: Klassen und Objekte

OO Softwareentwicklung

Programmierkurs Python I

Programmieren - Vererbung & Polymorphie

Angewandte Mathematik und Programmierung

Institut fu r Informatik

Objektorientierte Programmiersprachen

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11

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

Angewandte Mathematik und Programmierung

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)

Abschnitt 9: Schnittstellen: Interfaces

C++-Zusammenfassung. H. Schaudt. August 18, 2005

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Algorithmen und Datenstrukturen

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Software Engineering Klassendiagramme Einführung

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Objektorientierte Programmierung

Das Liskovsche Substitutionsprinzip

> Vererbung, Die Austauschbarkeit

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Folge 18 - Vererbung

Objekt-Orientierte Programmierung

Typumwandlungen bei Referenztypen

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

Einführung in die. objektorientierte Programmierung

Objektorientierte Programmierung

Projekt AGB-10 Fremdprojektanalyse

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Objektorientierte Programmierung OOP

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Objektorientiertes JavaScript

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Allgemeine Informatik 1 (AI1)

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

Kurs OPR. Objektorientierte Programmierung

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Prinzipien Objektorientierter Programmierung

Große Übung Praktische Informatik 1

Einführung in die Informatik II

Whitebox-Vererbung vs. Blackbox-Vererbung. - Begriffsbestimmung - Vererbung öffentliche Vererbung private Vererbung - Zusammenfassung

5.5.8 Öffentliche und private Eigenschaften

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Objektorientierte Programmierung mit Python Objekt und Klassen

Alltagsnotizen eines Softwareentwicklers

Transkript:

Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs

Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 3. Abstrakt 4. Interface 1

Methodenüberladung

Methodenüberladung Mehrere Methoden können den selben Namen haben Diese Unterscheiden sich dann in dem Rückgabewert und/oder den Übergabeparametern (Reihenfolge beachten!) Wird genutzt wenn es mehrere Wege gibt eine Berechnung/Algorithmus auszuführen 1 public int addieren ( int a, int b) 2 { 3 return a + b; 4 } 5 6 public float addieren ( float a, float b) 7 { 8 return a + b; 9 } 2

Vererbung

Vererbung Ermöglicht das definieren von Klassen die auf anderen basieren Diese erben die Funktionalitäten der Basisklasse und können diese benutzen oder erweitern Es wird alles vererbt, doch einige Member sind von dem Erben nicht sichtbar Alle Klassen erben von der Klasse Object Klassen können maximal von einer Klasse erben Die Klasse die Verhalten vererbt heiß Basisklasse und die Klasse, die es erbt, heißt abgeleitete Klasse Syntax: class <Klassenname> : <Basisklasse> 1 public class einebasisklasse 2 { } 3 public class EineKlasse : einebasisklasse 4 { } 3

Polymorphie Zu dt. Vielgestaltigkeit Instanzen abgeleitete Klassen können auch immer als Instanzen einer ihrer Basisklassen betrachtet werden Basisklassen können Methoden und Eigenschaften besitzen, die von den abgeleiteten Klassen überschrieben werden können Während der Nutzung eines Objekts als Basisklasse wird der Laufzeittyp ermittelt und die überschrieben/veränderten Methoden und Eigenschaften genutzt Alle nicht überschriebenen Methoden oder Eigenschaften sind identisch mit denen der Basisklasse 4

Methoden- & Eigenschaftsüberschreibung virtual Erlaubt das Überschreiben einer Methode Wird an die Methoden einer Basisklasse geschrieben 1 public class EineKlasse 2 { 3 // Die Methode darf ueberschrieben werden. 4 public virtual int EineMethode () 5 { 6 // Code 7 } 8 // Die Methode darf nicht ueberschrieben werden. 9 public float AndereMethode () 10 { 11 // Code 12 } 13 } 5

Methoden- & Eigenschaftsüberschreibung override new Gibt an, dass es sich um eine Überschreibung einer Methode aus der Basisklasse handelt Es darf bloß überschrieben werden, wenn die Methode in der Basisklasse ein virtual hat Wird an die Methoden in der abgeleiteten Klasse geschrieben Gibt an ob eine neue Methode mit selber Signatur wie in einer Basisklasse erzeugt wird Die ursprüngliche Methode wird bei der Nutzung der abgeleiteten Klasse ausgeblendet 6

Methoden- & Eigenschaftsüberschreibung 1 public class AndereKlasse : EineKlasse 2 { 3 // Die beiden Methoden werden ueberschrieben. 4 public override int EineMethode () 5 { 6 // Neuer Code 7 } 8 public new float AndereMethode () 9 { 10 // Neuer Code 11 } 12 } 7

Weitere Schlüsselwörter sealed Modifikator für Klassen und Methoden Verhindert das von einer Klasse geerbt werden kann Bei Methoden wird verhindert, dass diese weiter überschrieben werden können 1 public class EineKlasse 2 { } 3 // Keiner kann mehr von dieser Klasse erben. 4 public sealed class AndereKlasse : EineKlasse 5 { } 8

Weitere Schlüsselwörter as Wird als Casting-Operator zwischen vererbten Klassen genutzt Syntax: (<Variable> as <Datentyp/Klasse>) Nach der Klammer kann auf die Variable als der neue Typ zugegriffen werden Falls die Umwandlung nicht möglich ist, wird die Operation als null ausgewertet 1 // Durch Polymorphie ist der Typ im Code " EineKlasse " 2 // aber zur Laufzeit " AndereKlasse ". 3 EineKlasse variable = new AndereKlasse (); 4 // Umwandlung der Varaible in " AndereKlasse ". 5 AndereKlasse anderevariable = ( variable as AndereKlasse ); 9

Weitere Schlüsselwörter base Ist eine Referenz auf die Member der Basisklasse Ermöglicht es auf die Methoden- und Eigenschaftsimplementationen der Basisklasse zuzugreifen Muss genutzt werden, wenn die Basisklasse einen Konstruktor mit Übergabeparametern hat Dabei wird der Konstruktor der Basisklasse vor dem eigenen aufgerufen Syntax: Klasse([Übergabeparameter-B][Übergabeparameter]) : base([übergabeparameter-b]) { <Code> } 10

Weitere Schlüsselwörter 1 public EineKlasse 2 { 3 public EineKlasse ( int parameter1, int parameter2 ) 4 { /* Code */ } 5 public virtual float EineMethode ( int a) 6 { /* Code */ } 7 } 8 9 public AndereKlasse : EineKlasse 10 { 11 public AndereKlasse ( int par1, int par2, string par3 ) 12 : base (par1, par2 ) 13 { /* Anderer Code */ } 14 public override float EineMethode ( int a) 15 { 16 // Hier wird die Basismethode aufgerufen. 17 base. EineMethode (a - 5); 18 // Neuer Code 19 } 20 } 11

Abstrakt

Abstrakt Schlüsselwort abstract Kann für Klassen, Methoden und Eigenschaften genutzt werden Gibt an ob keine Implementierung existieren darf Von Klassen die abstract sind, können keine Objekte initialisiert werden Dementsprechend muss von diesen geerbt werden um sie zu nutzen Methoden und Eigenschaften besitzen keinen Körper wenn diese abstract sind Dementsprechend wird eine Klasse, die davon erbt, gezwungen diese Methoden und Eigenschaften zu überschreiben und zu implementieren Eigenschaften können dennoch entscheiden ob sie ein get oder set brauchen und die abgeleitete Klasse darf nur die vorgegebenen implementieren 12

Abstrakt 1 public abstract class EineKlasse 2 { 3 // Eine abstrakte Methode ohne Koerper. 4 public abstract int EineMethode (); 5 public virtual float AndereMethode () 6 { 7 // Code 8 } 9 } 10 11 public class AndereKlasse : EineKlasse 12 { 13 // Diese Methode muss implementiert werden, 14 // die " AndereMethode " nicht. 15 public override float EineMethode () 16 { 17 // Code 18 } 19 } 13

Interface

Interface Zu dt. Schnittstelle Enthält nur die Signaturen von Methoden und Eigenschaften Das heißt diese haben alle keinen Körper Interfaces und Klassen können von beliebig vielen Interfaces erben Die Klassen, die von Interfaces erben, müssen alle in den Interfaces definierten Methoden und Eigenschaften implementieren 14

Interface 1 public interface EinInterface 2 { 3 // Nur Signaturen ohne Koerper. 4 public string EinString { get ; set ; } 5 public bool EineMethode (); 6 } 7 8 public class EineKlasse : EinInterface 9 { 10 // Diese Member muessen nun implementiert werden. 11 public string EinString 12 { 13 get { /* Code */ } 14 set { /* Code */ } 15 } 16 public bool EineMethode () 17 { 18 // Code 19 } 20 } 15