Programmieren lernen mit Groovy Objektorientierung Typen

Größe: px
Ab Seite anzeigen:

Download "Programmieren lernen mit Groovy Objektorientierung Typen"

Transkript

1 Programmieren lernen mit Groovy Objektorientierung Typen Seite 1

2 Objektorientierung Objekt-Orientierung vom Funktionalen zum objektorientierten Programmierstil Funktionaler / Prozeduraler Stil Daten und auf ihnen operierende Funktionen sind getrennt. Objektorientierter Stil Daten und auf ihnen operierende Funktionen bilden eine Einheit Seite 2

3 Funktionaler / Prozeduraler Stil Beispiel: Vektorrechnung in der Ebene Vektoren in der Ebene haben eine x- und eine y-koordinate. Man kann sie addieren, subtrahieren und mit einem Skalar multiplizieren Daten Die Daten der Vektoren (x-, y-koordinate) werden jeweils durch eine Liste dargestellt. def a = [3,4] def b = [2,3] a = 3,4 b= 2,3 Operationen Die Vektoren-Operationen werden als Funktionen realisiert. def vektoradd(x,y) { return [x[0]+y[0], x[1]+y[1]] def vektorsub(x,y) { return [x[0]-y[0], x[1]-y[1]] def vektorskalarmult(s, x) { return [s*x[0], s*x[1]] Seite 3

4 Funktionaler / Prozeduraler Stil Beispiel: Vektorrechnung in der Ebene def a = [3,4] def b = [2,3] def vektoradd(x,y) { return [x[0]+y[0], x[1]+[y[1]]] def vektorsub(x,y) { return [x[0]-y[0], x[1]-[y[1]]] def vektorskalarmult(s, x) { return [s*x[0], s*x[1]] println a+b a-b 5*a """ """ = ${vektoradd(a,b), = ${vektorsub(a,b), = a+b= ${vektorskalarmult(5,a) Seite 4

5 Funktionaler / Prozeduraler Stil Nachteile des funktional- / prozeduralen Ansatzes Mangelhafte Kapselung Wissen über die Implementierung (speziell die Art der Speicherung in Listen) ist verstreut auf Vektor-Code (Funktionen: VektorAdd, ) und Anwendungscode (Anlegen von Vektoren) Problem Kopplung: Beides kann nur gemeinsam geändert werden Die Anwendung benötigt zu viel Wissen über die Implementierung Schnittstelle und Implementierung sind nicht klar getrennt Konsequenz aufwändige Wartung Diese Probleme treten natürlich nur bei ernsthaften Programmen aufwändige Verwendung auf. Bei 10-Zeilern sind sie Fehleranfälligkeit irrelevant. Seite 5

6 Klasse: Modularisierungskonstrukt Objektorientierung I : Klassen Klassen kapseln die Organisation der Speicherung von Daten und Funktionen die auf diesen Daten operieren und von der Art der Speicherung abhängig sind. Die Kapselung führt zu einer besseren Organisation des Codes Seite 6

7 OOP I : Klasse Beispiel : Vektor-Klasse class Vektor { Vektorklasse: Alles in Einem def v = [0,0] zusammengefasst (gekapselt): Vektor(x, y) { - Interne Darstellung (Speicherung) v[0] = x - Konstruktion v[1] = y - Funktionen static add(x, y) { return new Vektor(x.v[0]+y.v[0], x.v[1]+y.v[1]) static sub(x,y) { return new Vektor(x.v[0]+y.v[0], x.v[1]+y.v[1]) static skalarmult(s, x) { return new Vektor(s*x.v[0], s*x.v[1]) def a = new Vektor(3,4) def b = new Vektor(2,3) def c = Vektor.add(a,b) Anwendungscode Seite 7

8 OOP I : Klasse Achtung: enthält eine Datei mehr als nur den Code einer Klassendefinition, dann darf sie nicht so heißen wie die Klasse. Beispiel : Vektor-Klasse class Vektor { Darstellung / Speicherung def v = [0,0] Vektor(x, y) { v[0] = x Konstruktor: Wie wird ein Vektor mit Werten belegt v[1] = y Zugriff auf einen Vektor: das v von x static add(x, y) { return new Vektor(x.v[0]+y.v[0], x.v[1]+y.v[1]) static sub(x,y) { return new Vektor(x.v[0]+y.v[0], x.v[1]+y.v[1]) Funktionen (statische static skalarmult(s, x) { Methoden) : operieren auf return new Vektor(s*x.v[0], s*x.v[1]) Vektoren def def def a = b = c = a.v new Vektor(3,4) new Vektor(2,3) Vektor.add(a,b) Anwendungscode Vektoren erzeugen und verarbeiten Direkter Zugriff auf Komponenten hier nicht erwünscht Seite 8

9 OOP I : Klasse Beispiel: Modifikation der internen Speicherung modifiziert Kapselung class Vektor { def x = 0 Modifikation der internen def y = 0 Speicherung Vektor(x, y) { this.x = x this.y = y static add(v1, v2) { return new Vektor(v1.x+v2.x, v1.y+v2.y) static sub(v1,v2) { return new Vektor(v1.x-v2.x, v1.y-v2.y) static skalarmult(s, v) { return new Vektor(s*v.x, s*v.y) def a = new Vektor(3,4) def b = new Vektor(2,3) def c = Vektor.add(a,b) Anwendungscode ist nicht betroffen Seite 9

10 OOP II : Objekte Objektorientierung II - Objekte Klassen kapseln die Organisation der Speicherung von Daten und Funktionen die auf diesen Daten operieren und von der Art der Speicherung abhängig sind. Darüber hinaus können die Funktionen logisch den Daten zugeordnet werden. Mann nennt sie dann Methoden. Daten mit den ihnen zugeordneten Methoden nennt man Objekte. Mit dieser 2-ten Stufe der Objekt-Orientierung kommt zu der Kapselung eine philosophisch andere Sicht der Software. Auch hiermit werden keine wirklich neuen Fähigkeiten erreicht. Die Software-Entwicklung wird natürlicher und damit einfacher. Seite 10

11 OOP II : Objekte Werte: ewig, unveränderlich (mathematisch) Objekte: veränderlich (real) 3 4 vorher Vektoraddition, funktionale Sicht: aus zwei Vektoren konstruiere einen dritten 5 7 Vektoraddition, OO-Sicht: ein Vektor wird durch Addition vergrößert nachher Seite 11

12 Klassen und Objekte 2 b 3 Objektorientierung Stufe II : Beispiel Vektoren class Vektor { def x = 0 def y = 0 Vektor(x, y) { this.x = this.y = def add(v) { this.x = this.y = def a = new Vektor(3,4) def b = new Vektor(2,3) a.add(b) b.skalarmult(5) 3 4 vorher a a.add(b) 5 a 7 nachher this : dieser x y this.x + v.x this.y + v.y Seite 12 Vektor (ich), der den Code gerade ausführt. this.x : das x von diesem Vektor (von mir)

13 Klassen und Objekte Klassen und Objekte Klassen definieren die Art der Speicherung und die Operationen (Funktionen und Methoden) Objekte sind Exemplare (Instanzen) einer Klasse sie enthalten die jeweils unterschiedlichen Daten. Objekte haben i.a. einen sich ändernden Zustand. Methoden eines Objekts operieren auf den Daten des Objekts Static Das Schlüsselwort static in einer Klassendefinition sagt, dass es sich um etwas Allgemeines Klassen-bezogenes handelt. Etwas das sich auf die Klasse insgesamt bezieht. Fehlt das Schlüsselwort static dann handelt es sich um etwas Objekt-bezogenes, etwas das einzelnen Objekten zugeordnet ist. Seite 13

14 Klasse Objektorientierung: Verschiedene Möglichkeiten die VektorAddition zu definieren def a = new Vektor(3,4) def b = new Vektor(2,3) class Vektor { def x = 0 def c = Vektor.add1(a, b) def y = 0 def d = a.add2(b) Vektor(x, y) { a.add3(b) this.x = x this.y = y static add1(v1, v2) { rein funktionale Sicht return new Vektor(v1.x+v2.x, v1.y+v2.y) def add2(v) { Mischung aus funktionaler return new Vektor(this.x+v.x, this.y-v.y) und objektorientierter Sicht def add3(v) { this.x = this.x+v.x this.y = this.y-v.y rein objektorientierte Sicht Seite 14

15 Klasse Auch Daten können statisch (d.h. Klassen-bezogen) sein class Vektor { def x = 0 def y = 0 Vektor(x, y) { this.x = x this.y = y static nullvektor = new Vektor(0,0) Klasse Klassen-Komponente def nv = Vektor.nullVektor; statische Daten-Komponente: es gibt genau einen Null-Vektor Seite 15

16 Typen Typen definieren und verwenden Typ Apfel <<Instanz>> Objekt (Apfel) <<Instanz>> Objekt (Birne) Seite 16

17 Klasse und Typ Jeder Klasse ist ein Typ zugeordnet Der Typ hat den gleichen Namen wie die Klasse Der Typ schränkt Variablen / Parameter auf Exemplare (Objekte) der Klasse ein. Verwendung von Typen verbessert die Lesbarkeit des Codes reduziert die Fehler-Anfälligkeit class Apfel { OK new Apfelkorb Objekt (Apfel) Typ Objekt (Birne) Seite 17

18 Klasse und Typ Beispiel: Verwendung von Typen I Klasse (Definition) class Vektor { def x = 0 def y = 0 Konstruktor (Definition) Vektor(x, y) { this.x = x this.y = y Typ static Vektor add(vektor v1, Vektor v2) { return new Vektor(v1.x+v2.x, v1.y+v2.y) Ergebnistyp : Vektor Typ 1. Parameter : Vektor Typ 2. Parameter : Vektor Konstruktor Vektor a = new Vektor(3,4) Vektor b = new Vektor(2,3) Vektor c = Vektor.add(a, b) Typ Klasse Seite 18

19 Klasse und Typ Verwendung von Typen, Beispiel tostring Standard-Methode zur Erzeugung einer textuellen Darstellung eines Objekts muss mit Ergebnis-Typ definiert werden class Vektor { def x = 0 def y = 0 Vektor(x, y) { this.x = x this.y = y static add(v1, v2) { return new Vektor(v1.x+v2.x, v1.y+v2.y) String tostring() { return "($x, $y)" zwingend notwendig println Vektor.add(new Vektor(3,4), new Vektor(2,3)) Seite 19 (5, 7)

20 Klasse und Typ Noch mehr Typen Beispiel: Literale / Objekt-/Klassen-Variablen mit Typ class Vektor { double x = 0D double y = 0D Double-Literal Objekt-Variablen mit Typ static Vektor nullvektor = new Vektor(0D,0D)! Vektor(double x, double y) { this.x = x this.y = y static Vektor add(vektor v1, Vektor v2) { return new Vektor(v1.x+v2.x, v1.y+v2.y) String tostring() { return "($x, $y)" Klassen-Variable mit Typ Literale: Ausdrücke die direkt einen Wert bezeichnen. Jeder Wert hat eine Klasse. Jedes Literal erzeugt einen Wert (Objekt) einer bestimmten Klasse. 0 : int / ganze Zahl 0D : double / gebrochene Zahl println Vektor.add(new Vektor(3D,4D), new Vektor(2D,3D)) Seite 20

21 Klassen und Typen Verwende Typen : wenn eine Variable immer Werte vom gleichen Typ hat wenn eine Funktion nur mit Parametern eines bestimmten Typs umgehen kann Statische Typisierung Immer wenn der Typ (die Klasse) der Objekte die an irgendeiner Stelle auftreten können bekannt und fest: verwende den Typ Programme werden damit lesbarer Fehler-sicherer static add(v1, v2) { return new Vektor(v1.x+v2.x, v1.y+v2.y) static Vektor add(vektor v1, Vektor v2) { return new Vektor(v1.x+v2.x, v1.y+v2.y) Seite 21

22 Klasse / Beispiel CSV-Verarbeitung Beispiel Verarbeitung von CSV-Daten Tabelle als CSVDatei speichern 'Anlage','Bezeichnung','Baujahr','Garantie','Typbezeichng' ,'Rollstuhl Venezia XTRA',2006, ,'Venezia 923' ,'Rollstuhl Venezia XTRA',2006, ,'Venezia 923' ,'XZR61E00',2006, ,'XZR61E00' ,'Seniorenrollstuhl o. TWR. "Evolution"',2006, ,'BC61E00' ,'Seniorenrollstuhl o. TWR. "Esprit"',2006, ,'XZR71A30' ,'Seniorenrollstuhl o. TWR. "Esprit"',2005, ,'XZR71A30' Seite 22

23 Klasse / Beispiel CSV-Verarbeitung Klasse Anlage repräsentiert den Typ der Einträgs (engl. record) der Tabelle class Anlage { int String int Date String nr bezeichnung baujahr garantie typbezeichnung Objekt vom Typ Anlage repräsentiert eine Anlage Inhalt einer Tabellenzeile Seite 23

24 Klasse / Beispiel CSV-Verarbeitung Klasse Anlage mit Konstruktor und tostring-methode class Anlage { int String int Date String nr bezeichnung baujahr garantie typbezeichnung static SimpleDateFormat df = new SimpleDateFormat('dd.MM.yy') Anlage(String[] s) { nr = s[0].tointeger() bezeichnung = s[1] baujahr = s[2].tointeger() garantie = df.parse(s[3]) typbezeichnung = s[4] String tostring() { return "Anlage Nr $nr"+ "\n\t Bezeichnung:\t $bezeichnung"+ "\n\t Baujahr: \t $baujahr"+ "\n\t Garantie: \t ${df.format(garantie)"+ "\n\t Typ: \t\t $typbezeichnung" Seite 24

25 Klasse / Beispiel CSV-Verarbeitung Anlagenverzeichnis als Liste erstellen anlagen = [] def file = new File('AnlagenVerzeichnis.csv') first = true file.eachline { line -> if (first) { first = false else { anlagen << new Anlage(line.trim().split(',')) anlagen.each{ println it Seite 25 Anlage Nr Bezeichnung: Baujahr: Garantie: Typ: Anlage Nr Bezeichnung: Baujahr: Garantie: Typ: Anlage Nr Bezeichnung: Baujahr:... 'Rollstuhl Venezia XTRA' 'Venezia 923' 'Rollstuhl Venezia XTRA LS' 'Venezia 924' 'XZR61E00' 2006

26 Klasse / Beispiel CSV-Verarbeitung Anlagenverzeichnis als Abbildung erstellen anlagen = [:] def file = new File('AnlagenVerzeichnis.csv') first = true file.eachline { line -> if (first) { first = false else { def daten = line.trim().split(',') anlagen[daten[0].tointeger()] = new Anlage(daten) anlagen.each{ println it =Anlage Nr Bezeichnung:'Rollstuhl Venezia XTRA' Baujahr: 2006 Garantie: Typ: 'Venezia 923' =Anlage Nr Bezeichnung: 'Rollstuhl Venezia XTRA LS' Baujahr: 2006 Garantie: Typ: 'Venezia 924' Seite 26

27 Klasse / Beispiel CSV-Verarbeitung Fehlermeldungen als Objekte einer Klasse Fehlermeldung Klasse Fehlermeldung Jede Zeile ~> ein Objekt der Klasse Seite 27

28 Klasse / Beispiel CSV-Verarbeitung Fehlermeldungen als Klasse class Meldung { int prioritaet int anlage String beschreibung Date auftreten static SimpleDateFormat df = new SimpleDateFormat('dd.MM.yy,HH:mm:ss') Meldung(String[] s) { prioritaet = s[0].tointeger() anlage = s[1].tointeger() auftreten = df.parse(s[3]+','+s[4]) String tostring() { return "Meldung Anlage $anlage"+ "\n\t Prioritaet: \t $prioritaet"+ "\n\t auftreten: \t ${df.format(auftreten)" Seite 28

29 Klasse / Beispiel CSV-Verarbeitung Fehlermeldungen aus CSV-Dateien einlesen def meldungen = [] def dirin = new File('Daten') dirin.eachfilerecurse{ filein -> if (filein ==~ /.*KW.*\.csv/) { first = true filein.eachline{ line -> if (first) { first = false else { def daten = line.trim().split(',') meldungen << new Meldung(daten) Seite 29

30 Klasse / Beispiel CSV-Verarbeitung Fehlermeldungen zum Anlagenverzeichnis hinzufügen Logische Struktur der gewünschten Info Anlagenverzeichnis: ID ~> Anlage Anlage: Attribut-Name ~> Attributwert + neues Attribut: Meldungen ~> Anzahl Störmeldungen [' ' : ['Anlage': ' ', 'Bezeichnung': 'Rollstuhl Venezia XTRA', 'Baujahr': '2006', 'Garantie': ' ', 'Typbezeichng':'Venezia 923', 'Meldungen': '2788' ], erweiterte logische Struktur erweiterte Datenstruktur ' ' : ['Anlage': ' ', 'Bezeichnung': 'XZR61E00', 'Baujahr': '2006', 'Garantie': ' ', 'Typbezeichng':'XZR61E00', 'Meldungen':'12' ], Seite 30

31 Klasse / Beispiel CSV-Verarbeitung Fehlermeldungen zum Anlagenverzeichnis hinzufügen class Anlage{... wie bisher... int stoerungen Klassendefinition erweitern Anlage(String[] s) {... wie bisher... stoerungen = 0 String tostring() { return "Anlage Nr $nr"+ "\n\t Bezeichnung:\t $bezeichnung"+ "\n\t Baujahr: \t $baujahr"+ "\n\t Garantie: \t ${df.format(garantie)"+ "\n\t Typ: \t\t $typbezeichnung" + "\n\t Stoerungen: \t $stoerungen" Seite 31

32 Klasse / Beispiel CSV-Verarbeitung Fehlermeldungen zum Anlagenverzeichnis hinzufügen meldungen.each{ if (it.anlage!= null) { anlagen[it.anlage].stoerungen++ else { println "Fehlermeldung $it :" + "Anlage existiert nicht!" Störungen pro Anlage zählen Seite 32

33 Klasse / Beispiel CSV-Verarbeitung Relevante Fehlermeldungen ausgeben relevant: Priorität > 0 und Garantie nicht abgelaufen meldungen.findall{ m -> (anlagen[m.anlage]!= null) && (m.prioritaet > 0) && (m.auftreten < anlagen[m.anlage].garantie).each{ println it Typisierte Daten statt Text notwendig: - Integer-Vergleich - Vergleich von Datumswerten ( früher ) Seite 33

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Programmieren lernen mit Groovy Informationsstrukturen - Datenstrukturen - Textstrukturen (CSV, HTML, XML)

Programmieren lernen mit Groovy Informationsstrukturen - Datenstrukturen - Textstrukturen (CSV, HTML, XML) Programmieren lernen mit Groovy Informationsstrukturen - Datenstrukturen - Textstrukturen (CSV, HTML, XML) Seite 1 Logische Struktur, Textstruktur, Datenstruktur Daten in unterschiedlichen Repräsentationen

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Einführung in die Java- Programmierung

Einfü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

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel Alina Stürck WS2016/17 11. Oktober 2016 Objektorientierte Programmierung OOP 1 Was ist das? 2 Wie geht das? 3 Warum

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. 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

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

JAVA für Nichtinformatiker - Probeklausur -

JAVA für Nichtinformatiker - Probeklausur - JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 12 Ekkart Kindler III. Objektorientierte Programmierung Überblick Klassen und Methoden Vererbung Zugriffsrechte Definition einer Methode

Mehr

Aufgabe 1 (12 Punkte)

Aufgabe 1 (12 Punkte) Aufgabe 1 (12 Punkte) Schreiben Sie ein Java-Programm, das zeichenweise von der Standardeingabe liest und ermittelt, wieviele Worte die Eingabe umfaßt. Diese Anzahl soll ausgegeben werden. Ein Wort sei

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Vorkurs C++ Programmierung

Vorkurs 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:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Abschnitt 6: Klassen, Objekte und Methoden in Java

Abschnitt 6: Klassen, Objekte und Methoden in Java Abschnitt 6: Klassen, Objekte und Methoden in Java 6. Klassen, Objekte und Methoden in Java 6.1 Klassen 6.2 Objekte 6.3 Methoden 6.4 Zusammenfassung 6 Klassen, Objekte und Methoden in Java Informatik 2

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 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,

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

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

Programmieren 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

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung 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

Mehr

Javakurs 2013 Objektorientierung

Javakurs 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

Mehr

ÜBUNGS-BLOCK 1 LÖSUNGEN

ÜBUNGS-BLOCK 1 LÖSUNGEN ÜBUNGS-BLOCK 1 LÖSUNGEN Aufgabe 1: Wenn dich jemand fragen würde, was er sich im Bezug auf die Programmierung unter einer Klasse vorstellen kann, was würdest du ihm sagen? Aus welchen Bestandteilen besteht

Mehr

13. Funktionale Konzepte in Java

13. Funktionale Konzepte in Java Funktionale vs. Imperative Programmierung 13. Funktionale Konzepte in Java Funktionale Programmierung, Lambda Ausdrücke, Datenströme, Pipelines Imperative Konzepte Ausführen von Anweisungen Zustand (z.b.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Java - Überladen von Methoden und Konstruktoren

Java - Überladen von Methoden und Konstruktoren Java - Überladen von Methoden und Konstruktoren 2 + 3 Addition 1 + 2 + 3 + 4+ 5 +... 4.2 + 3.3 4.2 + 3 + 5 Leibniz Universität IT Services Anja Aue Überladen von Methoden und Konstruktoren Innerhalb einer

Mehr

Scala: Klassen, Methoden und Objekte. von Simon Lerch

Scala: Klassen, Methoden und Objekte. von Simon Lerch Scala: Klassen, Methoden und Objekte von Simon Lerch Überblick Methoden Klassen Objekte Basis Typen Prefixes Java's == vs. Scala's == Assoziativität von Operatoren Rich Wrapper 30.03.10 Klassen, Methoden

Mehr

Klausur Programmieren 2 SS 2016

Klausur Programmieren 2 SS 2016 Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt

Mehr

Objektorientierte 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 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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

3 Objektorientierte Konzepte in Java

3 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

Mehr

Musterlösung Stand: 5. Februar 2009

Musterlösung Stand: 5. Februar 2009 Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014 Python 2! Vorlesung Computerlinguistische Techniken Alexander Koller! 28. Oktober 2014 Listen Sequenz von beliebigen Werten. Literale: [], [1,2,3], [ hallo, True, -5.0] Hinten an Liste anhängen: L.append(27)

Mehr

11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen zu Design Patterns Wozu werden Design Patterns verwendet? Wann

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt Klassen und Objekte Klassen sind Vorlagen für Objekte. Objekte haben Attribute Konstruktoren Methoden Aus einer Klasse kann man beliebig viele Objekte herstellen. Attribute bestimmen die Eigenschaften

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte

Mehr

Überblick. 5. Objekt und Klasse, Elementfunktionen

Überblick. 5. Objekt und Klasse, Elementfunktionen Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung. Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse

Mehr

1 Stückweise konstante Funktionen (ca =10 Punkte)

1 Stückweise konstante Funktionen (ca =10 Punkte) Einführung in die wissenschaftliche Programmierung Klausur Seite 1/5 Name, Vorname, Unterschrift: Matrikelnummer: 1 Stückweise konstante Funktionen (ca. 4+2+4=10 Punkte) In dieser Aufgabe soll eine Klasse

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.2 Attribute und Methoden Aufbau einer Java-Klasse: Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A. »Programmieren«, WS 006/007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

3.3. Objektorientierung

3.3. Objektorientierung 3.3. Objektorientierung JavaScript hat ein einfaches Objektmodell: Ein Objekt ist ein Programmgegenstand, der Eigenschaften hat, die bestimmte Werte besitzen. Ein Objekt hat auch funktionswertige Eigenschaften.

Mehr

Einführung in die Programmierung mit Java. Hörsaalübung

Einführung in die Programmierung mit Java. Hörsaalübung Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung

Mehr

Aufgabenblatt 9 Satelliten, objektorientiert programmiert

Aufgabenblatt 9 Satelliten, objektorientiert programmiert Arbeitsbuch Physikalische Simulation Interdisziplinäre Aufgaben aus dem MINT-Bereich www.physolator.de Aufgabenblatt 9 Satelliten, objektorientiert programmiert 1. Teilaufgabe In Aufgabenblatt 8 wurde

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung/ Sprachfamilie Nicht objektorientierte Erweiterungen von C Grundlagen des Typkonzepts von C++ Ziele der Objektorientierung Objekt

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Institut für Informatik und Angewandte Kognitionswissenschaften

Institut für Informatik und Angewandte Kognitionswissenschaften Grundlegende Programmiertechniken (»Programmierung«), WS 2007/2008 Übungsblatt 5 Präsenzaufgaben: 11, 12, 13 Hausaufgabe: 14 Aufgabe 11 STRING- UND OBJEKT-VERGLEICH String s1 = new String("Test String");

Mehr

12) Generische Datenstrukturen

12) Generische Datenstrukturen 12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

Mehr

Programmieren I. Überblick Objektorientierung Heusch 12 Ratz 7. Institut für Angewandte Informatik

Programmieren I. Überblick Objektorientierung Heusch 12 Ratz 7.  Institut für Angewandte Informatik Programmieren I Überblick Objektorientierung Heusch 12 Ratz 7 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Objektorientierte Softwarenentwicklung Was ist das grundlegende Konzept

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013. Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VIII Einstieg in Java II Michael Roth (h_da) Informatik

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr