Einführung in die Objekt-Orientierte Programmierung
|
|
- Werner Holtzer
- vor 8 Jahren
- Abrufe
Transkript
1 Kapitel 14: Einführung in die Objekt-Orientierte Programmierung Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Grundzüge der Objektorientierten Programmierung (OOP) am Beispiel von Python Einleitung Verwendung vordefinierter Objekte in Python Definition eigener Klassen in Python Attribute und Methoden Klassenattribute Vererbung Polymorphismus Hauptlernziele Verständnis allgemeiner Prinzipen der OOP Fähigkeit, einfache objektorientierte Programme in Python schreiben können Literatur Michael Weigend. Objektorientierte Programmierung mit Python. 2. Aufl. Bonn (MITP) Bernd Oestereich. Objektorientierte Softwareentwicklung. Oldenbourg
2 Was sind Objekte? Reale Objekte z.b. Auto, Telefon, Mensch, Konto, Versicherungspolice, Software-Objekte Modellieren Ausschnitte der Realität Sachgerechte Abstraktion bzgl. Eigenschaften / Attributen Methoden / Verhalten / Operationen / Algorithmen Objektorientierte Sichtweise: Welt als System von Objekten, die untereinander Botschaften austauschen 2
3 Objekte besitzen Attribute und beherrschen Methoden Name: Sascha Stadt: Berlin Öffnungszeiten: Mo bis Fr 10:00-18:30 Attribute (Daten) Blumensträuße binden Lieferauftrag entgegen nehmen Boten schicken Methoden (Algorithmen) Konzepte der OOP: Klassen und Objekte Klasse = Bauplan / Schema für Objekte beschreibt prinzipiellen Aufbau (Eigenschaften/Attribute) und Verhalten bei Erhalt von Nachrichten (verfügbare Methoden) einer Menge von gleichartigen Objekten Klassen verschmelzen logisch zusammengehörige Daten und Operationen zu einer Einheit Instanz (Objekt) = Konkretisierung / Inkarnation einer Klasse z.b. Mark und Sascha sind Instanzen von Blumenhändler Alle Instanzen einer Klasse beherrschen dieselben Methoden haben dieselben Attribute (wenn auch mit verschiedenen Werten) 3
4 OOP in Python: Arbeiten mit vordefinierten Klassen Aufruf von Methoden eines Objekts mit Syntax: objekt.methode() Methoden für Listen-Objekte list.reverse() Reihenfolge der Listenelemente wird umgekehrt list.sort() Sortierung der Listenelemente in aufsteigender Reihenfolge list.extend(list2) Liste wird um Elemente von list2 erweitert >>> l = [1,3,5,2] >>> l.extend([7,6]) >>> print l [1, 3, 5, 2, 7, 6] >>> l.reverse() >>> print l [6, 7, 2, 5, 3, 1] >>> l.sort() >>> print l [1, 2, 3, 5, 6, 7] >>> help(list) Help on class list in module builtin : class list(object) list() -> new list list(sequence) -> new list initialized from sequence's items Methods defined here: append(...) L.append(object) -- append object to end count(...) L.count(value) -> integer -- return number of occurrences of value extend(...) L.extend(iterable) -- extend list by appending elements from the iterable index(...) L.index(value, [start, [stop]]) -> integer -- return first index of value insert(...) L.insert(index, object) -- insert object before index pop(...) L.pop([index]) -> item -- remove and return item at index (default last) remove(...) L.remove(value) -- remove first occurrence of value reverse(...) L.reverse() -- reverse *IN PLACE* sort(...) L.sort(cmp=None, key=none, reverse=false) -- stable sort *IN PLACE*; cmp(x, y) -> -1, 0, 1 4
5 OOP in Python: Arbeiten mit vordefinierten Klassen Beispiel: Erzeugen grafischer Benutzeroberflächen mit dem Modul "Tkinter" Klasse Tk repräsentiert ein Fenster Attribute, u.a. label Methoden, u.a. title(string) mainloop() Erzeugen von Tk-Objekten per Konstruktor: Tk() Klasse Label repräsentiert einfaches Text-Element Methoden, u.a. pack() Erzeugen von Label-Objekten per Konstruktor: Label( Tk, ) OOP in Python: Arbeiten mit vordefinierten Klassen from Tkinter import * fenster = Tk() fenster.title("hello World") fenster.label = Label(fenster, text="hello Tkinter World") fenster.label.pack() fenster.mainloop() 5
6 OOP in Python: Definition eigener Klassen (1) Definition von Klassen mit Schlüsselwort class in besonderer Methode init werden Attribute der Klasse initialisiert Konstruktor der Klasse, die bei Erzeugung von Instanzen aufgerufen wird besondere Variable self referenziert das neue Objekt Methode init sollte immer als erstes Argument self haben Instanzen werden durch Aufruf der Klasse erzeugt Argumente entsprechend Konstruktor, jedoch ohne erstes Argument Beispiel: Objekte vom Typ "Kreis" beschrieben über Position (x,y) und Radius class Circle1: >>> c = Circle1() Erzeugen einer Instanz >>> print c def init (self): < main.circle1 instance at 0x00B45850> self.x = 0.0 >>> print c.x self.y = self.r = 1.0 >>> c.x = 2.0 >>> print c.x 2.0 >>> c.x, c.y = 1.5, 2.5 >>> print c.x, c.y >>> OOP in Python: Definition eigener Klassen (2) Konstruktor mit mehreren Argumenten Bem: das Überladen von Methoden (z.b.: init ) in derselben Klassendefinition - d.h. gleicher Methodenname, aber unterschiedliche Argumente ist in Python i.ggs. zu anderen OOP-Sprachen nicht möglich stattdessen: Methoden mit Default-Argumenten Definitionen der Methoden getpos(), setpos() in Definition mit Argument self bei Aufruf der Methode ohne Argument self class Circle2: def init (self,x=0.0,y=0.0,r=1.0): self.x = x self.y = y self.r = r def setpos(self, x, y): self.x, self.y = x, y >>> c = Circle2(2.0, 1.0, 1) >>> c.getpos() (2.0, 1.0) >>> c.setpos(-1.0, 3) >>> c.getpos() (-1.0, 3) >>> c.r 1 def getpos(self): Prof. return B. Jung (self.x, self.y) Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg 6
7 Konzepte der OOP: Geheimnisprinzip (Information Hiding) Geheimnisprinzip (Information Hiding) Auf die Attribute eines Objekts kann nicht direkt zugegriffen werden, stattdessen erfolgt der Zugriff ausschließlich über Zugriffsoperatoren. Es werden also die Implementierungen der Operationen und die Datenstrukturen selbst versteckt. Vorteil: Implementierungsdetails können beliebig geändert werden, ohne Auswirkung auf den Rest des Programms zu haben Bem: das Geheimnisprinzip wird in Python (wie auch in anderen OOP- Sprachen) nicht erzwungen. Es werden aber Möglichkeiten bereit gestellt, Attribute nach außen zu verstecken Sichtbarkeit von Attributen (und Methoden) OOP in Python: Sichtbarkeit von Attributen Zugriff auf Attribute kann eingeschränkt werden Öffentliche Attribute: lesender und schreibender Zugriff auch außerhalb der Klassendefinition z.b. Klasse Circle2 >>> c = Circle2(2.0, 10.0, 3.5) >>> print c.x, c.y, c.r Private Attribute in Python Unterscheidung zwischen stark und schwach privaten Attributen stark private Attribute Zugriff von außen überhaupt nicht möglich syntaktisch: Attributname beginnt mit zwei Unterstrichen, z.b. x schwach private Attribute Zugriff von außerhalb des Moduls (Phython-Skripts) eingeschränkt syntaktisch: Attributname beginnt mit einem Unterstrich, z.b. _x 7
8 OOP in Python: Sichtbarkeit von Attributen Beispiel Klasse Circle3 mit (stark) privaten Attributen Zugriff auf Objekt-Attribute nur über getter- und setter-methoden class Circle3: def init (self, x, y, r): self. x = x self. y = y self. r = r def setx(self, x ): self. x = x def getx(self): return self. x def setradius(self, r): self. r = r >>> c = Circle3(2.0, 10.0, 3.5) >>> print c. x Traceback (most recent call last): File "<pyshell#40>", line 1, in - toplevelprint c. x AttributeError: Circle3 instance has no attribute ' x' >>> print c.getx() 2.0 >>> def getradius(self): return self. r OOP in Python: Klassenattribute Beispiel: Es soll ein Zähler numcircles für die Anzahl der Instanzen einer Klasse Circle4 erstellt werden keine Eigenschaft einzelner Instanzen gehört logisch zur Klasse Circle4 Klassenattribut Initialisierung außerhalb von init class Circle4: numcircles = 0 # Klassenattribut def init (self, x, y, r): self. x = x Zugriff mit Klassenname.Attributname self. y = y self. r = r Circle4. numcircles = Circle4. numcircles + 1 print "total number of circles = ", Circle4. numcircles >>> c1 = Circle4(1.0, 1.0, 1) total number of circles = 1 >>> c2 = Circle4(0.0, 0.0, 2) total number of circles = 2 >>> c3 = Circle4(3.0, 3.0, 3) total number of circles = 3 >>> 8
9 Konzepte der OOP - Vererbung Oberklassen und Unterklassen in der Biologie Quelle: de.wikipedia.org Konzepte der OOP - Vererbung Vererbung der Attribute (und Methoden) der Oberklasse an Unterklasse d.h. alle geometrischen Figuren haben Position x, y Kreis hat neben Position zusätzlich Radius Rechteck hat neben Position zusätzlich Seitenlängen a, b Geometrische Figur Attribute: x, y Kreis Attribute: radius Rechteck Attribute: a, b Dreieck Attribute: a, b, c 9
10 OOP in Python - Vererbung Definition von Oberklassen class Klassenname(Oberklasse1, Oberklasse2, ): class GeomFig: def init (self, x, y): self.x = x self.y = y >>> c = Circle(1, 2, 4) >>> print c.x, c.y, c.r >>> class Circle(GeomFig): def init (self, x, y, r): GeomFig. init (self, x, y) self.r = r Circle hat Oberklasse GeomFig Aufruf des Konstruktors der Oberklasse OOP in Python Vererbung Feinheiten I.a. Vererbung von Attributen und Methoden an Unterklasse stark private Attribute werden nicht vererbt Unterklassen können Methoden der Oberklasse überschreiben Unterklasse definiert namensgleiche Methode wie Oberklasse ("method overriding") oft sinnvoll Polymorphismus Unterklassen können Attribute der Oberklasse überschreiben Unterklasse definiert namensgleiches Attribut wie Oberklasse ("shadowing") meistens nicht sinnvoll In Python ist auch Mehrfachvererbung möglich (d.h. mehr als eine Oberklasse) Mehrfachvererbung ist z.t. problematisch (z.b. in Java daher nicht möglich) 10
11 Konzepte der OOP Mehrfachvererbung Nixon-Raute (Nixon diamond) Quäker def istpazifist(): return True Spezialisierung-von Republikaner def istpazifist(): return False Spezialisierung-von Nixon Problem: welche Methoden-Definition soll bei Objekten vom Typ Nixon gelten? in Python würde Methode der in der Klassendefinition zuerst genannten Oberklasse angewendet Konzepte der OOP - Polymorphismus Polymorphismus ("Vielgestaltigkeit") : in verschiedenen Klassen können Methoden gleichen Namens definiert werden in Python ist dies nicht möglich, aber vielen anderen OOP-Sprachen auch: gleichnamige Methoden in Ober- und Unterklasse (method overriding) auch in Python wichtiges Programmiermittel damit verhalten sich die Instanzen der verschiedenen Klassen sehr unterschiedlich bei Erhalt derselben Botschaft (d.h. Aufruf jeweils unterschiedlicher Funktionen) Beispiel Definition einer Methode drucke() in Oberklasse und in Unterklasse 11
12 OOP in Python Polymorphismus / Method Overriding class GeomFig: # Oberklasse def init (self, x, y): self._x = x self._y = y def drucke(self): return "x=" + str(self._x) + " y=" + str(self._y) class Circle(GeomFig): # Unterklasse def init (self, x, y, r): GeomFig. init (self, x, y) überschreibende Methode self._r = r def drucke(self): return "x="+str(self._x) +" y="+ str(self._y) + " r="+str(self._r) >>> g = GeomFig(0,0) >>> g.drucke() 'x=0 y=0' >>> c = Circle(1.0, 1.0, 2) >>> c.drucke() Prof. B. Jung 'x=1.0 y=1.0 r=2' Einführung in die Informatik, WS 2007/08 TU Bergakademie Freiberg OOP in Python Polymorphismus die Methode str besondere Methode str liefert eine String-Repräsentation eines Objekts zurück wird von print und str() verwendet (vordefiniert in impliziter Oberklasse object aller Python-Objekte) class Circle(GeomFig): def init (self, x=0.0, y=0.0, r=0.0): GeomFig. init (self, x, y) self._r = r besondere Methode str def str (self): return "x="+str(self._x) + " y="+str(self._y) + " r="+str(self._r) >>> o = object() >>> c = Circle(5.0, 8.0, 1.0) >>> o. str () >>> c. str () '<object object at 0x0099C438>' 'x=5.0 y=8.0 r=1.0' >>> print o # benutzt str >>> print c # benutzt str <object object at 0x0099C438> x=5.0 y=8.0 r=1.0 >>> str(c) Prof. B. Jung Einführung in die Informatik, 'x=5.0 WS 2007/08 y=8.0 r=1.0' TU Bergakademie Freiberg 12
13 Sonstiges Python-Klassen können auch ohne Methoden und ohne Sichtbarkeitsmodifikatoren der Attribute (d.h. alle Attribute öffentlich) definiert werden d.h. Definition von Klassen ohne OOP-Prinzipien wie Geheimnisprinzip Entsprechung in etwa zu 'Strukturen' in C oder 'Records' in Pascal class Mitarbeiter: def init (self, persnr, name, alter): self.personalnr = persnr self.name = name self.alter = alter >>> james = Mitarbeiter("007", "Bond", 35) >>> print james.personalnr 007 >>> print james.name Bond >>> print james.alter 35 Sonstiges Python-Klassen können auch ganz ohne Methoden und Attribute definiert werden "leere Klasse" Hinzufügen von Attributen für Instanzen ist möglich dies gilt für auch für Instanzen beliebiger Klassen Dadurch auch Fehleranfälligkeit, z.b. Schreibfehler in Attributnamen Verringerte Fehleranfälligkeit durch strikte Einhaltung des Geheimnisprinzips, d.h. kein direkter Zugriff von außen auf Attribute, sondern nur auf Klassen class Employee: pass leere Anweisung ("tue nichts!") >>> john = Employee() # Erzeuge einen leeren Mitarbeiter-Satz. # Fuelle die Felder des Satzes. john.name = 'John Doe' john.dept = 'computer lab' john.salary =
14 Zusammenfassung: Definition eigener Klassen in Python Klassendefinition: Klassenkopf + Klassenrumpf Klassenkopf Schlüsselwort class Name der Klasse evtl. Oberklassen in runden Klammern Doppelpunkt Klassenrumpf (eingerückt) Definition der Klassenattribute Definition der init -Methode (Konstruktor) darin Initialisierung der Objektattribute Definition weiterer Methoden Zusammenfassung: Konzepte der OOP Objektorientierung = Klassen und Objekte + Kommunikation mit Nachrichten + Vererbung (Coad & Yourdon) Objektorientierte Programmiersprachen Java, C++, C#, Object Pascal (Delphi), Smalltalk, Python: strikt objektorientiert alle Daten sind Objekte 14
Objektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrOO Softwareentwicklung
OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrInformatik für Schüler, Foliensatz 21 Objektorientierte Programmierung
rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 23. April 2009 1/14 Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung Prof. G. Kemnitz Institut für Informatik,
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrPHP Aufbaukurs. Tag 3. PHP5 & Klassen
PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: olkhovskiy@rrzn.uni-hannover.de PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1
Mehr10 Objektorientierte Programmierung, Teil 1
10 Objektorientierte Programmierung, Teil 1 Wir lernen nun eine andere Technik (vor allem: eine andere Sichtweise) kennen, um unsere Programm zu organisieren, nämlich mittels Klassen und Objekten 184 Objekte,
MehrEinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Mehr13 OOP MIT DELPHI. Records und Klassen Ein Vergleich
13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,
MehrObjektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern
Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben
MehrScala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
MehrEine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.
Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrProgrammiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrPrüfungszeuch im Fach Objektorientierte Programmierung WS 2000
Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,
MehrGrundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN
Grundzüge der Programmierung Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN Inhalt dieser Einheit JAVA ist objektorientiert! Grundbegriffe der objektorientierten Programmierung:
MehrObjektorientierung: Klassen und Objekte
Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrProgrammieren Tutorium
Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrInformatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse
rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 25. Mai 2009 1/10 Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse Prof. G. Kemnitz Institut
MehrWorkshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ
IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrSoftwaretechnik (Allgemeine Informatik) Überblick
Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrJava lernen mit BlueJ
Java lernen mit BlueJ Eine Einführung in die objektorientierte Programmierung David J. Barnes Michael Kölling 4.0 Lernen in Eigenregiegi Vorlesungen Seminare Übungen Bücher Webseiten Diskussionslisten
MehrBEISPIELKLAUSUR Softwareentwicklung:
Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrObjektorientierte Programmierung mit Python Objekt und Klassen
Objektorientierte Programmierung mit Python Objekt und Klassen hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Eine Aufgabe wird
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrArchiv - Berechtigungen
Archiv - Berechtigungen - 1 Inhaltsverzeichnis 1. Grunddefinitionen...3 1.1. Mögliche Definitionen...3 1.1.1. Programme...3 1.1.2. Prinzipale...3 1.1.3 Archivzugriff...3 1.2. Leserichtung...3 1.2.1. Ordnerbezogen...3
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrKlassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla
BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrInformatik Klasse 13, Foliensatz 3 Hallo Tkinter
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 24. August 2009 1/8 Informatik Klasse 13, Foliensatz 3 Hallo Tkinter Prof. G. Kemnitz Institut für Informatik, Technische Universität
MehrInformatik I. 15. Objekt-orientierte Programmierung: Einstieg. 03. Dezember Albert-Ludwigs-Universität Freiburg. Informatik I.
15. Objekt-orientierte Programmierung: Einstieg Albert-Ludwigs-Universität Freiburg 03. Dezember 2013 1 / 37 Was ist OOP? Welche Konzepte sind wichtig? Vor- und Nachteile 2 / 37 Was ist das? OOP ist ein
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrEine Anwendung mit InstantRails 1.7
Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrKompetent objektorientiert programmieren
Kompetent objektorientiert programmieren Aegidius Plüss, Bern, www.aplu.ch Eine objektorientierte Programmiersprache steht auf drei fundamentalen Säulen: Klassenkapselung (encapsulation) Vererbung (inheritance)
MehrAbstrakte Datentypen und deren Implementierung in Python
Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrObjektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrEinführung in Eclipse und Java
Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik
MehrGliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme
Gliederung Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Einführung Sprachmittel Sommer 2011, 20. Juni 2011,
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrKlausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.
Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert
MehrProgrammierparadigmen
Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011...
MehrObjektorientierte Programmierung
Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with
MehrBeispiel 19. December 4, 2009
Beispiel 9 December 4, 2009 Computermathematik (für Informatik) 4. Übungsblatt (Musterlösung) 2. 2. 2009 Die heutigen Übungen sollen mit dem Computeralgebrasystem Sage gelöst werden. Die Lösung der Beispiele
Mehr4 Aufzählungen und Listen erstellen
4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer
MehrKlassendiagramm. (class diagram)
: Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau
MehrRobot Karol für Delphi
Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško
MehrKlausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrInformatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
MehrVgl. Oestereich Kap 2.7 Seiten 134-147
Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrKurzeinführung LABTALK
Kurzeinführung LABTALK Mit der Interpreter-Sprache LabTalk, die von ORIGIN zur Verfügung gestellt wird, können bequem Datenmanipulationen sowie Zugriffe direkt auf das Programm (Veränderungen der Oberfläche,
MehrXML-Austauschformat für Sicherheitsdatenblätter
XML-Austauschformat für Sicherheitsdatenblätter Version 2.0 / 15. Dezember 2008 www.edas.org 1 XML-Austauschformat für Sicherheitsdatenblätter Der Austausch der Sicherheitsdatenblätter erfolgt als XML-Datei.
MehrSoftware Engineering Klassendiagramme weiterführende Konzepte
Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public
Mehr