Programmieren lernen mit Groovy Objektorientierung Typen
|
|
|
- Rolf Messner
- vor 8 Jahren
- Abrufe
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) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
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]
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
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
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
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
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
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.
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:
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
Objektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
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
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
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
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,
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
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
PIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, [email protected] PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
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
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
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
! 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
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
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
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
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
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
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
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
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
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
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:
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
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
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,
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,
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
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
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
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
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
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
Ü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
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.
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
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
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
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
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
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
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
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
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
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
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
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)
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)
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
Ü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,
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
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
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
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
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
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
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
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
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
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
Ü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
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
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
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
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){
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
Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.
»Programmieren«, WS 006/007 Nino Simunic ([email protected]) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:
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
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
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
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
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
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
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
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.
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");
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
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)
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
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
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
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
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
Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.
Informatik Studiengang Chemische Technologie Michael Roth [email protected] Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VIII Einstieg in Java II Michael Roth (h_da) Informatik
Ü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
