OOP - Objektorientierte Programmierung



Ähnliche Dokumente
Objektorientierte Programmierung OOP

Grundlagen von Python

Javakurs 2013 Objektorientierung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Einführung in die Java- Programmierung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Nathan Burgener. Design by Contract. Modul SWE

Programmieren in Java

Abschlussbericht. Einführung in Python. Gruppe: 1 Autoren: Thomas Merkel (19868) David Höss (19182) Stefan Bisinger (19227)

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Prinzipien Objektorientierter Programmierung

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

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

my.ohm Content Services Autorenansicht Rechte

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

CGI Programmierung mit Ha. Markus Schwarz

WPF Steuerelemente Listbox, ComboBox, ListView,

Vorkurs C++ Programmierung

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

Kompetent objektorientiert programmieren

Objektorientierung: Klassen und Objekte

Einführung in Eclipse und Java

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

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Alerts für Microsoft CRM 4.0

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

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

LISP. Eine Einführung

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

1 FORMULARE. 1.1 Felder im Formular

Java lernen mit BlueJ

Kurzeinführung Excel2App. Version 1.0.0

WARY Notariat Urkundenrolle V2013

Faktura. IT.S FAIR Faktura. Handbuch. Dauner Str.12, D Mönchengladbach, Hotline: 0900/ (1,30 /Min)

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Erste Schritte. Lavid-F.I.S. Faktura. Erste Schritte

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

ELBA für Raiffeisen-Mitarbeiter Version 5. Anleitung zur Einrichtung der Bankdaten am BANK-PC

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

Einführung in PHP. (mit Aufgaben)

GE Capital Direkt. So eröffnen Sie Ihr Festgeld-Konto. Fragen zum Festgeld?

Kompatibilitätsmodus und UAC

Programmierkurs Python I

Java Projekt: Tic Tac Toe + GUI

Objektbasierte Entwicklung

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Java: Vererbung. Teil 3: super()

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

Erstellen eines Formulars

Arbeiten mit dem Outlook Add-In

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Bauteilattribute als Sachdaten anzeigen

10 Objektorientierte Programmierung, Teil 1

Anleitung Abwesenheitsmeldung und -Weiterleitung (Kundencenter)

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

Anleitung zur Einrichtung Ihres SIP-Accounts mit einer AVM FritzBox 7390 Inhalt

Einrichten des -Clients (Outlook-Express)

1. IPSec Verbindung zwischen 2 Gateways mit dynamischen IP Adressen

DCS-3110 EVENT SETUP

Erste Schritte im Online-Banking mit PIN und chiptan bei Ihrer Sparkasse Essen

D a s P r i n z i p V o r s p r u n g. Anleitung. - & SMS-Versand mit SSL (ab CHARLY 8.11 Windows)

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

ODBC-Treiber Programmübersicht

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

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Anleitung zur Online-Schulung

Kurssicherung / Wiederherstellung aus moodle 1.9 in moodle 2.x. 1. Sicherung in moodle 1.9 anlegen. 2. Sicherung in moodle 2.

Programmieren Tutorium

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

JTL-Wawi Workflows. Ein Workshop mit Dirk Lehmeier & Georg Jennessen

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

Drägerware.ZMS/FLORIX Hessen

RL

Lizenz Verwaltung. Adami Vista CRM

Erste Schritte. Lavid-F.I.S. Agentur. Erste Schritte

BlueEvidence Services in Elexis

Die Anmeldung zum Prüfungsvorbereitungsportal von Westermann in fünf einfachen Schritten:

Reservierungs-Assistent

Durch Drücken des Buttons Bestätigen (siehe Punkt 2) wird Ihre an Ihr Outlookpostfach weiterleiten.

Installationsanleitung Einrichtung VoIP Account FRITZ!Box 7390

Handbuch - HotSpot-Sheriff Verwaltung

Formale Sprachen und Grammatiken

Freischaltung eines neuen VR-NetKeys mit SecureGo

Leitfaden Installation des Cisco VPN Clients

Hilfe zur ekim. Inhalt:

Upgrade von Starke Praxis

Einführung in die Programmierung

BFV Widget Kurzdokumentation

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Objektorientiertes JavaScript

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Die Tabellenvorlage im Katalog für Tabellen speichern... 2 Weiteres zu Schnellbausteinkatalogen EDV + Didaktik - Dr. Viola Vockrodt-Scholz

Transkript:

- Objektorientierte Programmierung Kurze Einführung am von Python 23 Feb. 2011 / Computer-Stammtisch

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Einführung - Objekt Orientierte Programmierung Hauptbegriff ist das Objekt ein Datentyp, bei dem die Daten und die Funktionen, die auf die Daten angewandt werden, zusammengefasst werden Objekte (Instanzen) agieren unabhängig mit ihren Daten und Methoden Objekte, definiert durch ihre Klasse, stellen einen Form der Abstraktion dar Eigenschaften (Attribute) als auch die Fähigkeiten (Methoden) können privat sein und nach außen versteckt werden BlackBox oder Datenkapselung

Schlüsselwort z.b. class wird einer Klasse vorangestellt Instanzen - reale Inkarnationen eines Objektes Attribute (Eigenschaften) Methoden (Fähigkeiten) Klassenattribute (klassenglobale Daten) Vererbung - Übernahme von Eigenschaften und Fähigkeiten (Ableiten)

Schlüsselwort z.b. class wird einer Klasse vorangestellt Instanzen - reale Inkarnationen eines Objektes Attribute (Eigenschaften) Methoden (Fähigkeiten) Klassenattribute (klassenglobale Daten) Vererbung - Übernahme von Eigenschaften und Fähigkeiten (Ableiten)

Schlüsselwort z.b. class wird einer Klasse vorangestellt Instanzen - reale Inkarnationen eines Objektes Attribute (Eigenschaften) Methoden (Fähigkeiten) Klassenattribute (klassenglobale Daten) Vererbung - Übernahme von Eigenschaften und Fähigkeiten (Ableiten)

Schlüsselwort z.b. class wird einer Klasse vorangestellt Instanzen - reale Inkarnationen eines Objektes Attribute (Eigenschaften) Methoden (Fähigkeiten) Klassenattribute (klassenglobale Daten) Vererbung - Übernahme von Eigenschaften und Fähigkeiten (Ableiten)

Schlüsselwort z.b. class wird einer Klasse vorangestellt Instanzen - reale Inkarnationen eines Objektes Attribute (Eigenschaften) Methoden (Fähigkeiten) Klassenattribute (klassenglobale Daten) Vererbung - Übernahme von Eigenschaften und Fähigkeiten (Ableiten)

Schlüsselwort z.b. class wird einer Klasse vorangestellt Instanzen - reale Inkarnationen eines Objektes Attribute (Eigenschaften) Methoden (Fähigkeiten) Klassenattribute (klassenglobale Daten) Vererbung - Übernahme von Eigenschaften und Fähigkeiten (Ableiten)

weiter: Polymorhie - Funktionen überladen verschiedene Objekte reagieren unterschiedlich auf die gleiche Fähigkeit Late binding - Wahl der Funktion zur Laufzeit welche Methode in einer Klassenhierachie gewählt wird, ist erst zur Laufzeit klar Persistenz - Gültigkeit eines Objektes

weiter: Polymorhie - Funktionen überladen verschiedene Objekte reagieren unterschiedlich auf die gleiche Fähigkeit Late binding - Wahl der Funktion zur Laufzeit welche Methode in einer Klassenhierachie gewählt wird, ist erst zur Laufzeit klar Persistenz - Gültigkeit eines Objektes

weiter: Polymorhie - Funktionen überladen verschiedene Objekte reagieren unterschiedlich auf die gleiche Fähigkeit Late binding - Wahl der Funktion zur Laufzeit welche Methode in einer Klassenhierachie gewählt wird, ist erst zur Laufzeit klar Persistenz - Gültigkeit eines Objektes

Besonderheiten von Klassen in Python Definition mit class KLASSE (ist_abgeleitet_von): Constructor: init (self,...): kein Destructor; Entfernung überflüssiger Okjekte durch Garbage Collection self und cls - erster Parameter von Instanz-Methoden bzw. Klassenmethoden zeigen auf die eigene Instanz bzw. Klasse Decoratoren: @classmethod und @staticmethod

Besonderheiten von Klassen in Python Definition mit class KLASSE (ist_abgeleitet_von): Constructor: init (self,...): kein Destructor; Entfernung überflüssiger Okjekte durch Garbage Collection self und cls - erster Parameter von Instanz-Methoden bzw. Klassenmethoden zeigen auf die eigene Instanz bzw. Klasse Decoratoren: @classmethod und @staticmethod

Besonderheiten von Klassen in Python Definition mit class KLASSE (ist_abgeleitet_von): Constructor: init (self,...): kein Destructor; Entfernung überflüssiger Okjekte durch Garbage Collection self und cls - erster Parameter von Instanz-Methoden bzw. Klassenmethoden zeigen auf die eigene Instanz bzw. Klasse Decoratoren: @classmethod und @staticmethod

Besonderheiten von Klassen in Python Definition mit class KLASSE (ist_abgeleitet_von): Constructor: init (self,...): kein Destructor; Entfernung überflüssiger Okjekte durch Garbage Collection self und cls - erster Parameter von Instanz-Methoden bzw. Klassenmethoden zeigen auf die eigene Instanz bzw. Klasse Decoratoren: @classmethod und @staticmethod

Besonderheiten von Klassen in Python Definition mit class KLASSE (ist_abgeleitet_von): Constructor: init (self,...): kein Destructor; Entfernung überflüssiger Okjekte durch Garbage Collection self und cls - erster Parameter von Instanz-Methoden bzw. Klassenmethoden zeigen auf die eigene Instanz bzw. Klasse Decoratoren: @classmethod und @staticmethod

weiter: Besonderheiten von Klassen in Python Operator-Funktionen: add (self,other), radd (self,other) sub (self,other), rsub (self,other) mul (self,other), rmul (self,other) div (self,other), rdiv (self,other) definieren die Funktion +, -, * und / z = x + y andere Funktionen sind z.b. cmp, len, repr, lt,

weiter: Besonderheiten von Klassen in Python Operator-Funktionen: add (self,other), radd (self,other) sub (self,other), rsub (self,other) mul (self,other), rmul (self,other) div (self,other), rdiv (self,other) definieren die Funktion +, -, * und / z = x + y andere Funktionen sind z.b. cmp, len, repr, lt,

1 #! / usr / bin / env python 2 # coding : u t f 8 3 4 import os, sys 5 6 class Test1 : # Basisklasse 7 classname = Test1 # A t t r i b u t 8 classcount = 0 # A t t r i b u t 9 @classmethod # Decorator 10 def addcount ( cls ) : # Klassen Methode 11 c l s. classcount += 1 12 13 def init ( self, name = None ) : # Constructor 14 i f name == None : 15 s e l f. addcount ( ) 16 s e l f. name = %s_%i %( s e l f. classname, s e l f. classcount ) 17 else : 18 s e l f. name = name 19 20 def getname ( s e l f ) : # Methode 21 return s e l f. name 22 23 class Test2 ( Test1 ) : # a b g e l e i t e t e Klasse 24 classname = Test2 25 classcount = 0

1 def main ( ) : 2 # Instanzen b i l d e n 3 t1 = Test1 ( myt1 ) 4 t2 = Test1 ( ) 5 t3 = Test2 ( ) 6 t4 = Test2 ( ) 7 t5 = Test1 ( ) 8 t6 = Test1 ( ) 9 10 # Namen der Instanzen ausgeben 11 p r i n t T1 =, t1. getname ( ) 12 p r i n t T2 =, t2. getname ( ) 13 p r i n t T3 =, t3. getname ( ) 14 p r i n t T4 =, t4. getname ( ) 15 p r i n t T5 =, t5. getname ( ) 16 p r i n t T6 =, t6. getname ( ) 17 18 # die I n h a l t e der Klassen und Instanzen ausgeben 19 p r i n t vars ( Test1 ) 20 p r i n t vars ( Test2 ) 21 p r i n t vars ( t1 ) 22 p r i n t vars ( t3 ) 23 p r i n t vars ( t4 ) 24 p r i n t vars ( t6 ) 25 26 i f name == " main " : 27 main ( )

: pyparsing erzeugt auf einfache Weise Textparser angelehnt an die Backus-Naur-Form geeignet für einfache Textersetzung bis zum Parsen einer vollständigen Programmiersprache macht ausgiebig von den Möglichkeiten der gebrauch kreativer Gebrauch von Operator-Überladung um Objekte zusammen zu fügen + Sequenz erste Alternative ^ längste Alternative * Wiederholung «Zuweisung für Forward-Typ

: pyparsing erzeugt auf einfache Weise Textparser angelehnt an die Backus-Naur-Form geeignet für einfache Textersetzung bis zum Parsen einer vollständigen Programmiersprache macht ausgiebig von den Möglichkeiten der gebrauch kreativer Gebrauch von Operator-Überladung um Objekte zusammen zu fügen + Sequenz erste Alternative ^ längste Alternative * Wiederholung «Zuweisung für Forward-Typ

: pyparsing erzeugt auf einfache Weise Textparser angelehnt an die Backus-Naur-Form geeignet für einfache Textersetzung bis zum Parsen einer vollständigen Programmiersprache macht ausgiebig von den Möglichkeiten der gebrauch kreativer Gebrauch von Operator-Überladung um Objekte zusammen zu fügen + Sequenz erste Alternative ^ längste Alternative * Wiederholung «Zuweisung für Forward-Typ

: pyparsing erzeugt auf einfache Weise Textparser angelehnt an die Backus-Naur-Form geeignet für einfache Textersetzung bis zum Parsen einer vollständigen Programmiersprache macht ausgiebig von den Möglichkeiten der gebrauch kreativer Gebrauch von Operator-Überladung um Objekte zusammen zu fügen + Sequenz erste Alternative ^ längste Alternative * Wiederholung «Zuweisung für Forward-Typ

: pyparsing erzeugt auf einfache Weise Textparser angelehnt an die Backus-Naur-Form geeignet für einfache Textersetzung bis zum Parsen einer vollständigen Programmiersprache macht ausgiebig von den Möglichkeiten der gebrauch kreativer Gebrauch von Operator-Überladung um Objekte zusammen zu fügen + Sequenz erste Alternative ^ längste Alternative * Wiederholung «Zuweisung für Forward-Typ

: Komma ::=, = Komma = Literal(, ) Ziffer ::= 1 2 3 4 5 6 7 8 9 0 Buchstabe ::= a b c... X Y Z Int ::= <Ziffer> <Ziffer> <Int> wird zu: Ziffer = Word(nums, max=1) Buchstabe = Word(alphas,max=1) Int = Ziffer ZeroOrMore(Ziffer)

: Komma ::=, = Komma = Literal(, ) Ziffer ::= 1 2 3 4 5 6 7 8 9 0 Buchstabe ::= a b c... X Y Z Int ::= <Ziffer> <Ziffer> <Int> wird zu: Ziffer = Word(nums, max=1) Buchstabe = Word(alphas,max=1) Int = Ziffer ZeroOrMore(Ziffer)

1 def i n i f i l e _ B N F ( ) : 2 # punctuation 3 l b r a c k = L i t e r a l ( " [ " ). suppress ( ) # e r s c h e i n t n i c h t i n der Ausgabe 4 rbrack = L i t e r a l ( " ] " ). suppress ( ) 5 equals = L i t e r a l ( " = " ). suppress ( ) 6 fence = L i t e r a l ( " # " ) 7 8 comment = fence + Optional ( r e s t O f L i n e ) 9 10 nonrbrack = " ". j o i n ( [ c for c in p r i n t a b l e s i f c!= " ] " ] ) + " \ täöüßäöü " 11 nonequals = " ". j o i n ( [ c for c in p r i n t a b l e s i f c!= " = " ] ) + " \ täöüßäöü " 12 13 sectiondef = l b r a c k + Word ( nonrbrack ) + rbrack 14 keydef = ~lbrack + Word ( nonequals ) + equals + restofline 15 16 # using D i c t w i l l allow r e t r i e v a l of named data f i e l d s as 17 # a t t r i b u t e s of the parsed r e s u l t s 18 i n i b n f = D i c t ( ZeroOrMore ( Group ( sectiondef + D i c t ( ZeroOrMore ( Group ( keydef ) ) ) ) ) ) 19 20 i n i b n f. ignore ( comment ) 21 22 return i n i b n f

1 def t e s t ( strng ) : 2 bnf = inifile_ BNF ( ) 3 tokens = bnf. parsestring ( s t r n g ) 4 5 return tokens 6 7 i n p u t = " " " [ INIT ] # Kommentar 8 var1=test 9 vär2=34 10 var3 =23.45 11 [ Application ] 12 s t a r t =1 13 d i r =/home / vt4 /ma 14 " " " 15 16 i n i = t e s t ( i n p u t ) 17 for item in i n i : 18 p r i n t item 19 20 p r i n t Wert von INIT / var3 =, i n i [ INIT ] [ var3 ]

1 def makelogoparser ( ) : 2 Logo = Forward ( ) 3 words = Word ( alphanums+! $ %/()=?\ _. :, ; #@~ ^ <> äüöäüöß ) 4 w ordsall = Word ( alphanums+! $ %&/()=?\_. :, ; #@~ ^ <> äüöäüöß ) 5 KOMMA = Suppress (, ) 6 Punkt = L i t e r a l (. ) 7 PLUS = L i t e r a l ( + ) 8 MINUS = L i t e r a l ( ) 9 10 LINKS = CaselessKeyword ( links ) 11 RECHTS = CaselessKeyword ( rechts ) 12 VOR = CaselessKeyword ( vor ) 13 ZURUCK = CaselessKeyword ( zuruck ) 14 GEHEZU = CaselessKeyword ( gehezu ) 15 COMMANDS = LINKS RECHTS VOR ZURUCK GEHEZU 16 17 FOR = CaselessKeyword ( for ) 18 ENDFOR = CaselessKeyword ( endfor ) 19 20 INT = Word ( nums) 21 INTEGER = Combine ( Optional (MINUS PLUS) + INT ). setparseaction ( convint ) 22 23 ARNAME = Word ( alphas+ _, alphanums+ _ ) 24 GLEICH = L i t e r a l ( = ) 25 26 VALUE = INTEGER VARNAME 27 EXPR = Forward ( ) 28 EXPR << ( operatorprecedence (VALUE, [

29 ( oneof (! ), 2, opassoc. RIGHT ), 30 ( oneof ( / % ), 2, opassoc. LEFT ), 31 ( oneof ( + ), 2, opassoc. LEFT ), 32 ] ) ) 33 34 FUNCTION = Group (COMMANDS + Optional ( Group ( delimitedlist (EXPR ) ) ) ) 35 DECL = Group (VARNAME + GLEICH + FUNCTION) 36 37 FORSTMNT = Forward ( ) 38 FORSTMNT = Group (FOR + VARNAME + GLEICH + delimitedlist (EXPR) + Group ( ZeroOrMore (FUNCTION 39 40 Logo = OneOrMore (FUNCTION DECL FORSTMNT) 41 42 return Logo

Main Einführung 1 def main ( ) : 2 t = " " " gehezu 100,100 3 rechts 90 4 vor 100 5 rechts 90 6 vor 100 7 rechts 90 8 VOR 100 9 rechts 90 10 vor 100 11 f o r i =0,360,30 12 vor i /10+(3 i / 10) 13 rechts i 14 endfor 15 " " " 16 17 l i n e s = t. s p l i t ( \ n ) 18 i n i D a t a = chr ( 1 0 ). j o i n ( l i n e s ) 19 20 logo = makelogoparser ( ) 21 22 res = logo. parsestring ( t )

Ergebnis Einführung 1 gehezu 100,100 2 rechts 90 3 vor 100 4 rechts 90 5 vor 100 6 rechts 90 7 VOR 100 8 rechts 90 9 vor 100 10 for i =0,360,30 11 vor i /10+(3 i / 10) 12 rechts i 13 endfor 14 15 [ gehezu, [100, 1 0 0 ] ] 16 [ rechts, [ 9 0 ] ] 17 [ vor, [ 1 0 0 ] ] 18 [ rechts, [ 9 0 ] ] 19 [ vor, [ 1 0 0 ] ] 20 [ rechts, [ 9 0 ] ] 21 [ vor, [ 1 0 0 ] ] 22 [ rechts, [ 9 0 ] ] 23 [ vor, [ 1 0 0 ] ] 24 [ f o r, i, =, 0, 360, 30, 25 [ [ vor, [ [ [ i, /, 10], +, [ 3,, i, /, 1 0 ] ] ] ], [ r e c h t s, [ i ] ] ], endfor ]

Ergebnis Einführung 1 COMMAND <gehezu> Parameter : 100, 100 2 COMMAND <rechts > Parameter : 90 3 COMMAND <vor > Parameter : 100 4 COMMAND <rechts > Parameter : 90 5 COMMAND <vor > Parameter : 100 6 COMMAND <rechts > Parameter : 90 7 COMMAND <vor > Parameter : 100 8 COMMAND <rechts > Parameter : 90 9 COMMAND <vor > Parameter : 100 10 COMMAND <vor > Parameter : 0 11 COMMAND <rechts > Parameter : 0 12 COMMAND <vor > Parameter : 12 13 COMMAND <rechts > Parameter : 30 14. 15. 16. 17 COMMAND <vor > Parameter : 120 18 COMMAND <rechts > Parameter : 300 19 COMMAND <vor > Parameter : 132 20 COMMAND <rechts > Parameter : 330

: eine vollständige Klassenhierachie zur einfachen Nutzung des NCurses-Modules Eigenentwicklung, um einen einfacheren Zugang zu NCurses zu haben Durch Kapselung der NCurses-Funktionen lässt sich die fehlerträchtige Programmierung umgehen Viele Elemente auf Grafik-Gui s implementiert

: eine vollständige Klassenhierachie zur einfachen Nutzung des NCurses-Modules Eigenentwicklung, um einen einfacheren Zugang zu NCurses zu haben Durch Kapselung der NCurses-Funktionen lässt sich die fehlerträchtige Programmierung umgehen Viele Elemente auf Grafik-Gui s implementiert

: eine vollständige Klassenhierachie zur einfachen Nutzung des NCurses-Modules Eigenentwicklung, um einen einfacheren Zugang zu NCurses zu haben Durch Kapselung der NCurses-Funktionen lässt sich die fehlerträchtige Programmierung umgehen Viele Elemente auf Grafik-Gui s implementiert

: eine vollständige Klassenhierachie zur einfachen Nutzung des NCurses-Modules Eigenentwicklung, um einen einfacheren Zugang zu NCurses zu haben Durch Kapselung der NCurses-Funktionen lässt sich die fehlerträchtige Programmierung umgehen Viele Elemente auf Grafik-Gui s implementiert

1 #! / usr / bin / env python 2 # coding : u t f 8 3 4 from kmcurses import 5 6 def main ( ) : 7 menu = [ &Erster Eintrag : Weiter zum 1. Dialog, \ 8 &Zweiter Eintrag : Weiter zu 2. Dialog, \ 9 & D r i t t e r E i n t r a g : Weiter zu 3. Dialog, 10, "E &X I T : Ende des Menu s " ] 11 12 app = Window ( None, 0, 0) 13 menu = Menu( app, menu) 14 15 menuitem = menu. run ( ) 16 17 p r i n t MenuItem :, menuitem 18 19 app. exitcurses ( app. scr ) 20 21 p r i n t MenuItem =, menuitem 22 23 i f name == " main " : 24 SecureRun ( main )

1 #! / usr / bin / env python 2 # coding : u t f 8 3 4 from kmcurses import 5 6 def main ( ) : 7 app = Window ( None, 0, 0) 8 9 l i = [ kein, D i p l. Ing., Ms. Sc., Dr. r e r. nat., Dr. Ing., Prof. Dr., Blödmann ] 10 user = Dialog ( app, 65, 22) 11 user. i n s e r t I t e m (ComboBox( user, t i t e l, 13, 1, 15, 15, T i t e l :, l i, kein, B i t t e den T i 12 user. i n s e r t I t e m ( dateeditbox ( user, datum, 43, 1, 10, 10, Datum :, ) ) 13 user. i n s e r t I t e m ( editbox ( user, vorname, 13, 3, 15, 40, Vorname :,, Vorname des Users 14 user. insertitem ( editbox ( user, nachname, 43, 3, 20, 40, Nachname :,, Nachname des Us 15 l i = [ M i t a r b e i t e r, WiMi, HiWi, Diplomant, S t u d i e n a r b e i t e r, Professor, Gast ] 16 user. insertitem (ComboBox( user, status, 13, 5, 15, 40, Status :, l i, Mitarbeiter, Bitt 17 l i = [ R207, R209, R210, R211, R212, R213, R214, R215, R216, R221 ] 18 user. i n s e r t I t e m (ComboBox( user, raum, 43, 5, 20, 45, Raum:, l i, R210, Wo s i t z t die P 19 user. i n s e r t I t e m ( editbox ( user, d i e n s t T e l, 13, 7, 15, 40, Tel. d i e n s t. :,, Telefon Nr. 20 user. i n s e r t I t e m ( editbox ( user, p r i v a t T e l, 43, 7, 20, 40, Tel. p r i v. :,, p r i v a t e Telefo 21 user. i n s e r t I t e m ( editbox ( user, email, 13, 9, 30, 40, EMail :, @tu harburg. de, EMail 22 user. insertitem ( editbox ( user, betreuer, 13, 11, 30, 40, Betreuer :,, Ansprechpartne 23 user. i n s e r t I t e m ( editbox ( user, a r b e i t, 13, 13, 47, 100, A r b e i t :,, Welche A r b e i t s o l 24 user. insertitem ( editbox ( user, thema, 13, 15, 47, 100, Thema :,, Thema der Arbeit ) ) 25 user. insertitem ( SecretEditBox ( user, passwd1, 13, 17, 15, 30, Password :,, Password e 26 user. insertitem ( SecretEditBox ( user, passwd2, 43, 17, 15, 30, wiederholen :,, Bitte 27 28 OK = Button ( user, ok1, 19, 20, &OK )

29 Cancel = Button ( user, cancel1, 42, 20, &Cancel ) 30 31 user. i n s e r t I t e m (OK, o ) 32 user. setretitem (OK) 33 user. i n s e r t I t e m ( Cancel, c ) 34 user. setretitem ( Cancel ) 35 36 user. drawwindow ( ) 37 res = user. run ( ) 38 39 return res 40 41 i f name == " main " : 42 res = SecureRun ( main ) # i s t notwendig für ein geortetes Beenden von NCurses 43 44 p r i n t Result =, res 45 p r i n t 46 p r i n t Password =, res [ passwd1 ]

Die ist eine einfache Möglichkeit der Strukturierung Die bietet Möglichkeiten den Programm-Code erheblich zu vereinfachen Objekte als Abstraktions-Schicht zur Kapselung fehlerträchtiger Programmteile Erzeugung von vielfach nutzbaren Klassen und Modulen

Die ist eine einfache Möglichkeit der Strukturierung Die bietet Möglichkeiten den Programm-Code erheblich zu vereinfachen Objekte als Abstraktions-Schicht zur Kapselung fehlerträchtiger Programmteile Erzeugung von vielfach nutzbaren Klassen und Modulen

Die ist eine einfache Möglichkeit der Strukturierung Die bietet Möglichkeiten den Programm-Code erheblich zu vereinfachen Objekte als Abstraktions-Schicht zur Kapselung fehlerträchtiger Programmteile Erzeugung von vielfach nutzbaren Klassen und Modulen

Die ist eine einfache Möglichkeit der Strukturierung Die bietet Möglichkeiten den Programm-Code erheblich zu vereinfachen Objekte als Abstraktions-Schicht zur Kapselung fehlerträchtiger Programmteile Erzeugung von vielfach nutzbaren Klassen und Modulen

Danke