Eclipse mit PyDev. Objektorientierung. Beispielaufgaben



Ähnliche Dokumente
Grundlagen von Python

Objektorientierte Programmierung OOP

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Vorkurs C++ Programmierung

Javakurs 2013 Objektorientierung

Objektorientierte Programmierung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

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

Einführung in die Programmierung

Programmieren in Java

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

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Vererbung & Schnittstellen in C#

Prinzipien Objektorientierter Programmierung

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung in die Java- Programmierung

Assoziation und Aggregation

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

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

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung

Software Engineering Klassendiagramme Assoziationen

Objektorientierung: Klassen und Objekte

Was meinen die Leute eigentlich mit: Grexit?

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Einführung in Javadoc

Zählen von Objekten einer bestimmten Klasse

Objektbasierte Entwicklung

OO Softwareentwicklung

5.2 Neue Projekte erstellen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Übungen zur Softwaretechnik

Software Engineering Interaktionsdiagramme

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

WPF Steuerelemente Listbox, ComboBox, ListView,

Task: Nmap Skripte ausführen

Algorithmen mit Python

Algorithmen und Datenstrukturen

Erstellen einer digitalen Signatur für Adobe-Formulare

Java Kurs für Anfänger Einheit 5 Methoden

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

SEP 114. Design by Contract

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Factory Method (Virtual Constructor)

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Programmierung für Mathematik (HS13)

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

10 Objektorientierte Programmierung, Teil 1

Lokale Installation von DotNetNuke 4 ohne IIS

Anforderungen an die HIS

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Windows 8 Lizenzierung in Szenarien

Python SVN-Revision 12

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

SDD System Design Document

Java Einführung Collections

! " # $ " % & Nicki Wruck worldwidewruck

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Folge 18 - Vererbung

WhiteStarUML Tutorial

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Klassenbeziehungen & Vererbung

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Whitepaper. Produkt: combit Relationship Manager. SQL Server 2008 R2 Express um Volltextsuche erweitern. combit GmbH Untere Laube Konstanz

Besonderheiten von C#

Objektorientiertes JavaScript

Client-Server-Beziehungen

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

HSR git und subversion HowTo

Support-Tipp Mai Release Management in Altium Designer

Ein Ausflug zu ACCESS

Design Patterns 2. Model-View-Controller in der Praxis

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

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

Software Engineering Klassendiagramme Einführung

Design Patterns SS 2014 Hausaufgabe 5

SCHULUNG MIT SYSTEM: E-LEARNING VON RAUM21

FIS: Projektdaten auf den Internetseiten ausgeben

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

OP-LOG

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

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Visualisierung auf Büro PC s mit dem ibricks Widget

Architektur des agimatec-validation Frameworks

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Klassendefinitionen verstehen

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Transkript:

Übersicht Eclipse mit PyDev Objektorientierung Beispielaufgaben TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 1 von 30

ECLIPSE MIT PYDEV TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 2 von 30

Eclipse Open Source Community Open Development Plattform bestehend aus erweiterbaren Frameworks, Werkzeugen und Umgebungen für Erstellung, Deployment und Management von Software über den gesamten Lebenszyklus hinweg Eclipse Foundation not-for-profit mitgliedsgestützte Korporation Hostet und koordiniert die Eclipse Projekte Hilft bei der Entwicklung der open source community Hilft bei der Erstellung eines Ecosystems verschiedenster Produkte und Services TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 3 von 30

PyDev PyDev is a Python IDE for Eclipse, which may be used in Python, Jython and IronPython development Features Django integration Code completion with auto import Syntax highlighting Code analysis Go to definition Refactoring Mark occurrences (Remote) Debugger Tokens browser Interactive console Unittest integration TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 4 von 30

Oberfläche - Navigation TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 5 von 30

Oberfläche - Outline TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 6 von 30

Oberfläche - Konsole TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 7 von 30

Coding Conventions Use 4-space indentation, and no tabs Wrap lines so that they don t exceed 79 characters Use blank lines to separate functions and classes, and larger blocks of code inside functions Put comments on a line of their own Use docstrings Use spaces around operators and after commas, but not directly inside bracketing constructs a = f(1, 2) + g(3, 4) Name your classes and functions consistently Klasse Test Methode test_something Always use self as the name for the first method argument TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 8 von 30

OBJEKTORIENTIERUNG TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 9 von 30

Begriffsklärung Kapselung von Daten und Funktionen auf diesen Daten in einem Objekt Klasse als Schablone für Objekte Objekte kommunizieren miteinander (über Methoden) Objekte (und damit Klassen) haben: Attribute (mit eigenem Datentyp) Methoden (Parameter und Rückgabewert) Vererbung zur Übernahme von Methoden und Attributen aus bereits bestehenden Klassen Erster Schritt: Objektorientierte Analyse Spezialfall Python: keine strikte Kapselung TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 10 von 30

Klassen Keyword class Einrückung wie gewohnt Zugriff auf klasseneigene Variablen und Methoden innerhalb von Methoden mit self (Konvention) Beispiel mit Code Konventionen class Testclass: This is an example a = 1 b = 2 def sum(self): Example sum method adding a and b # add a and b and return it return self.a + self.b TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 11 von 30

Objekte Instanzen von Klassen Erzeugung zur Programmlaufzeit Mehrfache Erzeugung möglich Objektidentität >>> ob1 = Testclass() >>> ob2 = Testclass() >>> ob1 == ob2 False >>> ob1.sum() 3 TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 12 von 30

Methoden Parameter zur Übergabe von Daten Erster Parameter ist das Objekt Default-Werte (hintere Parameter) Funktionsparameter sind Referenzen, das nützt aber nur bei mutablen Datentypen (List, Dict, eigene Klassen, etc.) def something(self, a, b): pass def something(self, a, b = 2): pass >>> ob.something(1) >>> ob.something(1,3) >>> ob.something(a = 7, b = 8) >>> ob.something(7, b = 8) TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 13 von 30

Alles ist ein Objekt Klassen sind Type-Objekte (von der Klasse Type) die wiederum die Klasse Type haben ''. class. class 1 ist ein Objekt vom Typ int ''.upper ist ein Objekt vom Typ function dir ist ein Objekt vom Typ built-in function TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 14 von 30

Alles ist ein Objekt Function-Typ-Objekte haben eine Funktion call (vom Typ Method-Wrapper), die den Aufruf der Funktion repräsentiert ''.upper() löst also eigentlich ''.upper(). call () aus auch ''.upper. call hat wieder eine Funktion call hat wieder eine Funktion call... built-in Funktionen sind immer verfügbar z.b. callable(''.upper) -> True, weil upper eine Funktion ist Funktionen sind Objekte und können daher gepickled werden Laden des pickle und ausführen der Funktion möglich TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 15 von 30

Klassen untersuchen Inspection in der Kommandozeile mittels dir, help und type >>> help([]) Help on list object: class list(object) list() -> new list list(sequence) -> new list initialized from sequence's items Methods defined here: add (...) x. add (y) <==> x+y contains (...) x. contains (y) <==> y in x... dir([]) Liste aller Attribute und Methoden type([]) Klassenobjekt des Objekts ( class ) help([]) Listing aller doc-strings aller Attribute/Methoden >>> []. doc TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 16 von 30

Konstruktor Funktion die nach der Erstellung des Objekts aufgerufen wird Wertübergabe zum Zeitpunkt der Erzeugung möglich Class Testclass: This is an example class with constructor def init (self, value1, value2): set a and b values self.a = value1 self.b = value2 def sum(self): example sum method adding a and b return self.a + self.b >>> ob = Testclass(4,5) >>> ob.sum() TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 17 von 30

Private Methoden Können nicht direkt aufgerufen werden Gekennzeichnet durch xyz Werden durch Python-Operatoren ausgeführt >>> a = 1 >>> b = 2 >>> dir(a) >>> a + b 3 int Type add a + b cmp a == b List Type add l + r getitem l[2] TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 18 von 30

Hinweise zur Kapselung Attribute und Methoden sind immer von aussen erreichbar Konvention: _xyz kennzeichnet nicht-öffentliche Attribute Zugriff möglich, aber nicht sicher (Invarianz) Klassen sollten setter/getter zur Verfügung stellen Implementierung: xyz erzeugt private Attribute (Name Mangling) Zugriff trotzdem möglich Dient der Eindeutigkeit bei Vererbung TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 19 von 30

Referenzen und Garbage Collection Objekte sind solange vorhanden, wie eine Referenz auf sie existiert Ohne Referenz existieren sie noch, sind aber nicht zugreifbar Garbage Collector entfernt sie zu beliebigem Zeitpunkt >>> l = [] >>> m = l >>> l.append(1) >>> l [1] >>> m [1] >>> func = l.append >>> func <built-in method append of list object at 0x1004d1758> >>> func(3) >>> m [1, 3] TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 20 von 30

Vererbung Übernahme aller Methoden / Attribute der Basisklasse Überlagerung (Overriding) möglich Mehrfachvererbung in Python erlaubt Builtin Methoden isinstance und issubclass zur Prüfung Baseclass - attr1 - attr2 -method1 -method2 Baseclass1 - attr1 - attr2 -method1 Baseclass2 - attr1 - attr3 -method1 -method2 Subclass1 - attr3 Subclass2 - attr2 Subclass - attr2 -method3 -method1 -method3 TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 21 von 30

Beispiel Vererbung I class Baseclass: attr1 = 'Base_attr1' attr2 = 'Base_attr2' def method1(self): return 'call base_method1' def method2(self): return 'call base_method2' + self.attr2 Class Subclass2(Baseclass): attr2 = 'Sub_attr2' def method1(self): return 'call sub_method1' TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 22 von 30

Beispiel Vererbung II from Baseclass import Baseclass from Subclass2 import Subclass2 ob1 = Baseclass() ob2 = Subclass2() ob1.method1() ob1.method2() ob2.method1() ob2.method2() isinstance(ob2, Baseclass) issubclass(type(ob2), Baseclass) TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 23 von 30

Beispiel Mehrfachvererbung I class Baseclass1: attr1 = 'Base1_attr1' attr2 = 'Base1_attr2' def method1(self): return 'call base1_method1 class Baseclass2: attr1 = 'Base2_attr1' attr3 = 'Base2_attr3' def method1(self): return 'call base2_method1' def method2(self): return 'call base_method2' + self.attr2 Class Subclass(Baseclass1, Baseclass2): attr2 = 'Sub_attr2' def method3(self): return 'call sub_method3 + self.method1() + self.method2() TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 24 von 30

Beispiel Mehrfachvererbung II from Subclass import Subclass from Baseclass1 import Baseclass1 ob = Subclass() ob.method1() ob.method2() ob.method3() Baseclass2.method1(ob) ob2.method2() isinstance(ob2, Baseclass) issubclass(type(ob2), Baseclass) TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 25 von 30

Überladen Privater Methoden Beispiel: Eigener Integer-Typ mit neuer Addition a + b -> a. add (b) >>> class MyInt(int):... def add (self, b):... return b + self + 2... >>> a = 1 >>> b = MyInt(1) >>> a + b 2 >>> b + a 4 TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 26 von 30

Herangehensweise Objektorientierte Analyse Identifikation von Klassen Identifikation von Attributen Identifikation von Beziehungen zwischen Klassen Identifikation von Methoden Objektorientiertes Design Erstellung von Vererbungshierarchien Anwendung von Mustern (Pattern) Anpassung an technische Erfordernisse Objektorientierte Programmierung Umsetzung in einer OO-Sprache TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 27 von 30

Einfaches Muster: Factory method Software Design Patterns zur Strukturierung und Standardisierung der Herangehensweise an Problemklassen Erzeugung von komplexen Objekten mit standardisierter Erzeugerfunktion Literatur: GoF-Book (Design Patterns: Elements of Reusable Object-Oriented Software) TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 28 von 30

Beispiel Weide Auf einer Weide stehen Kühe mit schwarzen Flecken herum. Die Weide zählt die Kühe selbständig. Die Kühe wissen, auf welcher Weide sie stehen. Kühe können grasen. Wenn eine Kuh zum 4. Mal grast, macht sie Muh!. Es gibt einzelne Kühe mit braunen Flecken, diese machen schon nach 3 Mal grasen Muh!. Wird eine braune Kuh gepiekt, macht sie Muh!. TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 29 von 30

Beispiel Weide OOA Weide Anzahl Kühe (Kuh hinzufügen) Kuh Farbe (schwarz) macht Muh grast kennt Weide Braune Kuh Farbe (braun) macht Muh grast anders wird gepiekt TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 30 von 30