Informatik Klasse 13, Foliensatz 2 Vererbung und Operatorfunktionen

Ähnliche Dokumente
Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Informatik für Schüler, Foliensatz 12 Pseudo-Zufallszahlen

Programmierkurs Python I

Object-Oriented Analysis / Design (OOAD)

Objektorientierte Programmierung OOP

Objektorientierte Programmierung mit Python Objekt und Klassen

10 Objektorientierte Programmierung, Teil 1

Objektorientierte Programmierung

Kompetent objektorientiert programmieren

Informatik Klasse 13, Foliensatz 3 Hallo Tkinter

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

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

Programmierkurs Python I

Javakurs für Anfänger

5.4 Klassen und Objekte

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Repetitorium Informatik (Java)

Java: Vererbung. Teil 3: super()

Grundlagen von Python

JAVA - Methoden - Rekursion

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

Informatik für Schüler, Foliensatz 3 Vorhandene Funktionen und Wiederholschleifen

11.3 Virtuelle Methoden

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Java Vererbung. Inhalt

Probeklausur: Programmierung WS04/05

Java - Überladen von Methoden und Konstruktoren

Funktionen in PHP 1/7

Einstieg in die Informatik mit Java

Prof. W. Henrich Seite 1

Vorkurs C++ Programmierung

Präsentation Interfaces

AuD-Tafelübung T-B5b

3D Programmierpraktikum: Einführung in C++ - Teil 2

JAVA - Methoden

Interfaces und Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung

Einstieg in die Informatik mit Java

Übung Datenstrukturen. Objektorientierung in C++

Programmieren in Java

Klassendefinitionen verstehen

01. Grundprinzipien der Vererbung

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

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Einstieg in die Programmierung mit Visual Basic.NET

3 Objektorientierte Konzepte in Java

Javakurs 2013 Objektorientierung

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

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A

Datum, Uhrzeit: , Uhr Semester: INBac2 Note:...

Programmierkurs Python I

OOP - Objektorientierte Programmierung

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

Vererbung & Schnittstellen in C#

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

Klassenbeziehungen & Vererbung

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

Javakurs für Anfänger

Vorlesung Datenstrukturen

Objektorientierte Programmierung (OOP) in Python

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Eclipse mit PyDev. Objektorientierung. Beispielaufgaben

1. Konzepte Objektorientierter Programmiersprachen

Methoden (fortgeschritten) in C# - 1

Einführung in die Programmierung

Einführung in C++ Operatoren überladen (Klassen)

Einführung in die Informatik


Python-Workshop. Python für C/C++ Programmierer. Carl Friedrich Bolz. Carl Friedrich Bolz

SDK zur CRM-Word-Schnittstelle

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

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Systemnahe Programmierung in C/C++

Überblick. 7. Überladen von Operatoren

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Objektorientierung: Klassen und Objekte

Java Einführung Methoden in Klassen

Aufgabe 1 (12 Punkte)

Inhalt. 1. Sprachspezifische Fehlerrisiken C++ Java. Smalltalk. 2. Coverage - Modelle. Statement Coverage. Branch Coverage

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Lösung Übungszettel 6 Aufgabe 1-4

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

Java, OO und UML Fortsetzung

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

Programmieren Tutorium

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Informationsverarbeitung im Bauwesen

Programmierkurs C++ Abstrakte Klassen und Methoden

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln

Kapitel 6. Vererbung

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

Objektorientierte Programmierung (OOP) in Python

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

Transkript:

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 1/12 Informatik Klasse 13, Foliensatz 2 Vererbung und Operatorfunktionen Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009

rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 2/12 Vererbung Vererbung bedeutet, dass aus einer oder mehreren Elternklassen eine neue Klasse erzeugt wird, die alle Attribute und Methoden der Elternklassen übernimmt. Beispiel class abgeleitete_klasse(elternklasse): {Vereinbarung_von_Argumenten } {Vereinbarung_von_Methoden } class Schwein(): Name = Gewicht = 0 Hunger = 0 Frage: Was bedeuten die geschweiften Klammern?

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 3/12 def init (self, n, g, h): self.name = n self.gewicht = g self.hunger = h def str (self): s = Schwein: Name = + self.name s +=, Gewicht = + str(self.gewicht) s +=, Hunger = + str(self.hunger) return s class Superschwein(Schwein): def add (self, x): return Superschwein(self.Name + x.name, self.gewicht + x.gewicht, self.hunger + x.hunger) a = Superschwein( Felix, 10, 20) b = Superschwein( Sepp, 20, 14) print a+b

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 4/12 Mehrfachvererbung Eine Klasse kann auch die Attribute und Methoden von mehreren Klassen erben. class abgeleitete_klasse(ek1, EK2,...): {Vereinbarung_von_Argumenten } {Vereinbarung_von_Methoden } (EK Elternklasse) Auswahl bei namensgleichen Attributen und Methoden:»Tiefensuche von links nach rechts«suchreihenfolge für das Beispiel: EK1, deren Elternklassen von links nach rechts etc. bis zu den Baumblättern, EK2, deren Elternklassen von links nach rechts...

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 5/12 Operatorfunktionen die vordefinierten Operatoren (+, -, *, /, ** etc., Konvertierfunktionen str(), hex() etc. ) können für jede Klasse mit einer Spezialmethode implementiert werden Operator Spezialmethode self + other add (self, other) self - other sub (self, other)......

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 6/12 Kontrollfragen Wie lauten die Spezialmethoden für»self * other«,»str(self)«und»self > other«? Nachschlagen unter: Python Reference Operator Redefinition Welche der folgenden (Operator-) Funktionen sollte einen Rückgabewert liefern? Welchen Typ sollte der Rückgabewert haben? self < other str(self) -self self += other len(self) del self (self löschen)

rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 7/12 Aufgabe 2.1: Vererbung Schreiben Sie eine Klasse»Notiz«mit einer Notiz als Zeichenkette und einer Liste von Stichworten. Methoden: Konstruktor zur Erzeugung einer Notiz; Übergabeparameter: Notiz als Text und Stichworte als Liste Anhängen eines zusätzlichen Stichworts an die Liste Addition von zwei Notizen: Spezialmethode für den»+«- Operator, Rückgabewert sei eine Notiz mit den aneinandergehängten Texten und Stichwortlisten der Summanden Vergleichsoperatoren für >, < und =; zu vergleichen sind die Längen der Texte Spezielalmethode für die str()-funktion zur Erzeugung einer Textdarstellung. Testen Sie die Klasse durch Erzeugung von Instanzen und Methodenaufrufe.

rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 8/12 Schreiben Sie eine Klasse»Sortierschema«mit den Attributen Unterichtsfach (Zeichenkette) und Wichtigkeit (Zahl im Bereich von 0 bis 10) mit den Methoden: Konstruktor: Übergabe des Unterrichtsfachs als Parameter; Setzen der Wichtigkeit auf»0«spezielmethode für den Operator»self += Zahl«zur Erhöhung der Wichtigkeit um den Wert von Zahl, aber maximal auf 10 Spezialmethode für den Operator»self -= Zahl«zur Verringerung der Wichtigkeit um den Wert von Zahl, aber nicht unter»0«spezielalmethode für die str()-funktion zur Erzeugung einer Textdarstellung. Testen Sie die Klasse durch Erzeugung von Instanzen und Methodenaufrufe.

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 9/12 Schreiben Sie eine Klasse»WNotiz«mit den Elternklassen»Notiz«und»Wichtigkeit«. Schreiben Sie ein Konstruktor, dem der Name des Unterrichtsfach und der Notiztext übergeben wird, die Stichwortliste sei leer und die Wichtigkeit»0«Testen Sie mit a = WNotiz( Engisch, This is stupid ) print a von welcher der beiden Elternklassen die str (sef)-methode aufgerufen wird? Definieren sie anschließend die str (self)-methode der abgeleiteten Klasse neu, so dass alle Attribute der Klasse in der Textdarstellung enthalten sind. Testen Sie alle Methoden der abgeleiteten Klasse

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 10/12 Aufgabe 2.2: Roulette-Eltenklasse In Aufgabe 12.5, Klassse 12 stand: Wenn man beim Roulette-Spiel auf»rot«setzt, bekommt man mit einer Wahrscheinlichkeit von p r = 18 37 den doppelten Einsatz zurück und verliert mit einer Wahrscheinlichkeit von 1 p r = 19 37 seinen Einsatz. Ein Spieler X geht jeden Abend mit einem Startguthaben von 100 EUR ins Casino und setzt in jedem Spiel 10 EUR auf rot. An wie vielen Spielen kann er im Mittel pro Abend teilnehmen, bis er sein Geld verloren hat.

rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 11/12 Schreiben Sie eine Klasse Roulett mit dem Attributen Guthaben für das aktuelle Guthaben des Spielers einem Konstruktor zur Erzeugung einer Instanz mit einem Startguthaben einer Methode»Setz_auf_Farbe(self, Betrag), die das Guthaben um den Betrag, der nicht größer als das Guthaben sein darf, mit der entsprechenden Wahrscheinlichkeit verringert oder vergrößert der str (self)-methode zur Darstellung des Betrags Benutzen Sie die Klasse zur Simulation des Spieverlaufs für einen einzelnen Abend.

Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 19. August 2009 12/12 Aufgabe 2.3: Abgeleitete Roulette-Klasse Ergänzen Sie in einer von der Basisklasse abgeleiteten Roulettklasse Methoden für andere Arten von Einsätzen, z.b. setze auf eine Reihe und setze auf Zahl, und simulieren Sie zum Test unterschieliche Spielverläufe. Hinweis: Wenn der Spieler im Mittel gewinnt, haben Sie die Spielmethoden falsch programmiert.