2.11 Objektorientierung

Größe: px
Ab Seite anzeigen:

Download "2.11 Objektorientierung"

Transkript

1 2.11 Objektorientierung Bisher: Nichtgleichartige Elemente (=Daten) können in Klassen zu einem neuen Typ zusammengefasst werden. Daten existieren oft zusammen mit Methoden, die auf die Daten zugreifen und sie manipulieren. Daher: Daten und die auf sie zugreifenden Methoden können in Klassen zusammengefasst werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 222

2 Methoden in Klassen Beispiel: (Kontorechnung einer Bank) Daten: Kontoinhaber Adresse des Kontoinhabers Kontonummer Kontostand Liste von Kontenbewegungen Methoden: Kontostand abfragen Einzahlung vornehmen Überweisung tätigen Kontoauszug drucken Java erlaubt die Zusammenfassung der Daten und der Methoden in einer Klasse. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 223

3 Beispiel: (rationale Zahlen) Wir stellen rationale Zahlen durch einen ganzzahligen Zähler und einen ganzzahligen Nenner dar: class Fraction { int z; // Zähler int n; // Nenner } /* end of Fraction */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 224

4 Beispiel: (rationale Zahlen) Wir stellen rationale Zahlen durch einen ganzzahligen Zähler und einen ganzzahligen Nenner dar: class Fraction { int z; // Zähler int n; // Nenner void add(fraction f) { z = z*f.n + f.z*n; n = n*f.n; } /* end of add */... } /* end of Fraction */ Zusätzlich zu den Daten enthält die Klasse auch noch Methoden, die die Daten manipulieren. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 224

5 Beispiel: (rationale Zahlen) Wir stellen rationale Zahlen durch einen ganzzahligen Zähler und einen ganzzahligen Nenner dar: class Fraction { int z; // Zähler int n; // Nenner void add(fraction f) { z = z*f.n + f.z*n; n = n*f.n; } /* end of add */ void subtract(fraction f) { z = z*f.n - f.z*n; n = n*f.n; } /* end of subtract */ void multiply(fraction f) { z = z*f.z; n = n*f.n; } /* end of multiply */ void divide(fraction f) { int h = z*f.n; n = n*f.z; z = h; } /* end of divide */ } /* end of Fraction */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 224

6 Das Objekt this Die Methoden add, subtract,multiply und divide sind ohne das Schlüsselwort static deklariert worden. Daher beziehen sie sich auf ein Objekt der Klasse und nicht auf die Klasse selbst (wie wir es bisher nur kennengelernt haben). Das Objekt, auf das eine Methode angewendet wird, wird in Java mit this bezeichnet. Wir könnten also auch schreiben: class Fraction { int z; // Zähler int n; // Nenner... void add(fraction f) { this.z = this.z*f.n + f.z*this.n; this.n = this.n*f.n; } /* end of add */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 225

7 Aufruf der Methoden class Fraction { int z; // Zähler int n; // Nenner void add(fraction f) {... } void subtract(fraction f) {... } void multiply(fraction f) {... } void divide(fraction f) {... } } /* end of Fraction */ public static void main (String[] args) { Fraction a = new Fraction(); Fraction b = new Fraction(); a.z = 1; a.n = 2; b.z = 3; b.n = 5;... a.multiply(b); // a = 3/10 b.divide(b); // b = 15/15 = 1 } /* end of main */ Objekte der Klasse Fraction repräsentieren rationale Zahlen. Die Methoden add, subtract,multiply und divide sind lokal zur Klasse Fraction. add, subtract,multiply und divide können von außen für den Zugriff auf Objekte der Klasse Fraction benutzt werden. add, subtract,multiply und divide greifen auf die Daten desjenigen Objektes zu, auf das sie angewendet werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 226

8 Aufruf der Methoden add, subtract,multiply und divide greifen auf die Daten desjenigen Objektes zu, auf das sie angewendet werden:... a.z = 1; a.n = 2; b.z = 3; b.n = 5; a.multiply(b); // a = 3/10... Beachte: Man wählt zuerst ein Objekt aus (hier a) und dann eine Methode, die auf a angewendet wird (hier: multiply). Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 227

9 Aufruf der Methoden... a.z = 1; a.n = 2; b.z = 3; b.n = 5; a.multiply(b); // a = 3/10... Wir sagen: Das Objekt a bekommt die Nachricht multiply, wodurch die multiply-methode aufgerufen wird. Das Objekt a ist der Empfänger der Nachricht multiply. Der Empfänger einer Nachricht kann in der aufgerufenen Methode mit this referenziert werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 228

10 Aufruf der Methoden Was geschieht bem Senden einer Nachricht a.multiply(b)? 1. Der Empfänger der Nachricht ist Objekt der Klasse Fraction. Daher wird die Methode multiply der Klasse Fraction ausgewählt. 2. Die Methode multiply hat neben ihrem formalen Parameter f noch einen versteckten Parameter this, den formalen Empfänger. 3. Der aktuelle Empfänger a wird dem formalen Empfänger this zugewiesen. 4. Dann wird die Methode multiply aufgerufen und ausgeführt. void multiply(/* Fraction this, */ Fraction f) { this.z = this.z*f.z; this.n = this.n*f.n; } /* end of multiply */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 229

11 Klassendiagramme Klassen können graphisch mit Klassendiagrammen dargestellt werden. Fraction z : int n : int add(f: Fraction) subtract(f: Fraction) multiply(f: Fraction) divide(f: Fraction) Das Klassendiagramm enthält drei Teile. Der oberste Teil enthält den Klassennamen fettgedruckt. Der mittlere Teil enthält die Felder der Klasse, d.h. die Daten. Der untere Teil enthält die Methodenköpfe. Ergebnistypen einer Methode void werden, durch einen : getrennt, hinter den Methoden angegeben (Bsp. folgt später). Klassendiagramme dienen der Dokumentation von Programmen. Daher können die einzelnen Teile mehr oder weniger ausführlich gehalten werden. Klassendiagramme sind Teil der Unified Modeling Language (UML), einer Menge graphischer Notationen zur Beschreibung objektorientierter Systeme. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 230

12 Konstruktoren Konstruktoren sind spezielle Methoden, die es erlauben, ein Objekt einer Klasse zu initialisieren. Ein Konstruktor ist eine Methode, die den gleichen Namen hat wie die Klasse, zu der sie gehört. class Fraction { int z; // Zähler int n; // Nenner } Fraction(int z, int n) { this.z = z; this.n = n; } /* end of constructor 1 */ Fraction(int k) { this.z = k; this.n = 1; } /* end of constructor 2 */ Fraction() { this.z = 0; this.n = 1; } /* end of constructor 3 */ Ein Konstruktor wird ohne Funktionstyp und ohne Schlüsselwort void deklariert. Ein Konstruktor kann Parameter haben. Eine Klasse kann mehrere Konstruktoren besitzen. Diese haben alle den gleichen Namen (den Klassennamen) und unterscheiden sich in ihren Parameterlisten. Ist der parameterlose Konstruktor nicht explizit deklariert, so werden bei Erzeugung eines neuen Objektes alle Felder des Objektes auf 0 (bzw. null, false) gesetzt. Dies ist bei Brüchen nicht sinnvoll (Nenner=0). Daher wird hier der parameterlose Konstruktor explizit angegeben. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 231

13 Konstruktoren Konstruktoren sind spezielle Methoden, die es erlauben, ein Objekt einer Klasse zu initialisieren. Ein Konstruktor ist eine Methode, die den gleichen Namen hat wie die Klasse, zu der sie gehört. Die Anweisung class Fraction { Fraction(int z, int n) {... } Fraction(int k) {... } }... main(...) { Fraction a = new Fraction(1,2); /* 1/2 */ Fraction b = new Fraction(5); /* 5/1 */ } /* end of main */ Fraction a = new Fraction(1,2); erzeugt ein neues Objekt der Klasse Fraction und initialisiert es als 1/2. Die Anweisung Fraction b = new Fraction(5); erzeugt ein neues Objekt der Klasse Fraction und initialisiert es als 5/1. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 232

14 Statische und objektbezogene Methoden und Felder Die Methoden add, subtract,multiply und divide wurden ohne das Schlüsselwort static deklariert. Betrachtet man eine Klasse als Objekt (das Klassenobjekt, ein Schablonenobjekt, das das Aussehen aller Objekte in der Klasse festlegt) so erhält man: statische Komponenten: Felder und Methoden des Klassenobjekts. Die statischen Komponenten werden mit dem Zusatz static deklariert. objektbezogene Komponenten: Felder und Methoden der Objekte, die von der Klasse erzeugt werden. Die objektbezogenen Komponenten werden ohne den Zusatz static deklariert. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 233

15 Beispiel: (Statische und objektbezogene Methoden und Felder) Wir wollen mitzählen, wie viele Objekte der Klasse Fraction wir erzeugt haben. Dazu erweitern wir die Klasse Fraction um eine statische Komponente fraccnt. class Fraction { int z; int n; /* objektbezogene Felder */ static int fraccnt; /* statisches Feld */ Fraction(int z, int n) { /* Objektkonstruktor */ this.z = z; this.n = n; fraccnt++; } /* end of Objektkonstruktor */ static { /* Klassenkonstruktor */ fraccnt = 0; } /* end of Klassenkonstruktor */ static void resetfraccnt() { fraccnt = 0; }... Die Methode resetfraccnt ist eine Klassenmethode. Sie muss statisch deklariert werden. Der Konstruktor Fraction(...){...} ist Objektkonstruktor und wird aufgerufen, wenn ein neues Objekt erzeugt wird. Der Konstruktor static {...} ist Klassenkonstruktor und wird aufgerufen, wenn die Klasse geladen wird (zu Programmstart). Eine Klasse kann höchstens einen Klassenkonstruktor haben. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 234

16 Zugriff auf Klassenfelder und Klassenmethoden Klassenfelder und Klassenmethoden gehören zu einer Klasse. daher werden sie mit dem Klassennamen qualifiziert. Fraction.fracCnt = 0; Fraction.resetFracCnt(); Innerhalb ihrer Klasse kann die Qualifizierung mit dem Klassennamen weggelassen werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 235

17 Hauptprogramme und Klassen public class MyProgram { static void print(string s) { Out.println(s); } } public static void main(string[] args) { for (int i = 0; i < args.length; i++) print(args[i]); } Die Klasse MyProgram enthält zwei Klassenmethoden, eine davon mit Namen main. Jede Klasse, die eine public Methode main(string[] args) enthält, kann als Programm gestartet werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 236

18 Hauptprogramme und Parameterübergabe Strings können als Parameter an die Main Methode übergeben werden. In Eclipse: Run Menue aufrufen und dann wie links dargestellt die Argumente eintragen. Über eine Kommandozeile: java MyProgram Bla Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 237

19 Zusammenfassung: Objektbezogene und statische Komponenten objektbezogen statisch Deklaration ohne static mit static existieren in jedem Objekt nur einmal pro Klasse Felder werden angelegt wenn das Objekt erzeugt wird wenn die Klasse geladen wird (bei Programmstart) Felder werden freigegeben vom garbage Collector, wenn kein wenn die Klasse entladen wird Zeiger mehr auf das Objekt zeigt (bei Programmende) Konstruktor wird aufgerufen wenn das Objekt erzeugt wird wenn die Klasse geladen wird Felder werden angesprochen obj.field Class.field this.field Methoden werden aufgerufen obj.method() Class.method() this.method() Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 238

20 Beispiel: Keller Ein Keller (stack) ist ein Stapel von Objekten, auf den man Objekte legen kann und von dem man Objekte entfernen kann. Das zuletzt auf den Keller gelegte Objekt wird als erstes wieder entfernt (Last-In-First-Out: LIFO-Strategie). Für die Implementierung eines Kellers benötigen wir 5 Methoden: Keller(n) erzeugt einen neuen, leeren Keller für höchstens n Elemente. empty() prüft, ob ein Keller leer ist. push(x) legt ein Element auf den Keller. pop() entfernt das zuletzt eingefügte Element vom Keller. top() liefert das zuletzt eingefügte Element im Keller. x y x x z x x new Keller push(x) push(y) pop() push(z) pop() Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 239

21 Beispiel: Keller Ein Keller (stack) ist ein Stapel von Objekten, auf den man Objekte legen kann und von dem man Objekte entfernen kann. Das zuletzt auf den Keller gelegte Objekt wird als erstes wieder entfernt (Last-In-First-Out: LIFO-Strategie). Wir implementieren einen Keller für int- Werte als ein int-array mit einem int- Wert für die aktuelle Länge. Klassendiagramm: Keller s : int[ ] length : int empty() : boolean push(int x) pop() top() : int Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 240

22 public class Keller { int[] s; /* Array für Kellerelemente (hier int) */ int length; /* Anzahl der Elemente im Keller */ Keller(int size) { /* Konstruktor, Keller für size Elemente */ s = new int[size]; length = 0; } /* end of Konstruktor */ Keller() { /* Konstruktor, Keller für 1024 Elemente */ s = new int[1024]; length = 0; } /* end of Konstruktor */ boolean empty() { /* Abfrage auf leeren Keller */ return(length == 0); } /* end of empty */ }... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 241

23 public class Keller { int[] s; /* Array für Kellerelemente (hier int) */ int length; /* Anzahl der Elemente im Keller */... void push(int x) { /* legt Element x auf Keller */ if (length < s.length) s[length++] = x; else System.exit(99); /* Programmabbruch */ } /* end of push */ void pop() { /* lösche oberstes Element */ if (!empty()) length--; } /* end of pop */ } int top() { /* liefert oberstes Element */ return(s[length-1]); } /* end of top */... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 242

24 public class Keller {... public static void main(string[ ] args) { /* Beispiel für Kellernutzung */ int n, x; Out.print("Geben Sie die Kellergröße an: "); /* erzeuge leeren Keller */ n = In.readInt(); Keller stack = new Keller(n); Out.print("Geben Sie Zahlen >= 0 ein (Ende mit -1): "); /* schreibe in Keller */ do { x = In.readInt(); if (x!= -1) stack.push(x); } while (x!= -1); Out.println("Ausgabe in umgekehrter Reihenfolge: "); /* lese aus Keller */ while (!stack.empty()) { Out.print(" "+stack.top()); stack.pop(); } Out.println(); } /* end of main */ } /* end of class Keller */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 243

25 Beispiel: Schlange Eine Schlange (queue) ist eine Liste von Objekten, in die man Objekte einfügen kann und aus der man Objekte entfernen kann. Das zuerst in die Schlange eingefügte Objekt wird als erstes wieder entfernt (First-In-First-Out: FIFO- Strategie). Für die Implementierung einer Schlange benötigen wir 5 Methoden: Schlange(n) erzeugt eine neue, leere Schlange für höchstens n Elemente. empty() prüft, ob eine Schlange leer ist. enq(x) fügt ein Element in die Schlange ein. deq() entfernt das zuerst eingefügt Element aus der Schlange. head() liefert das zuerst eingefügte Element aus der Schlange. x x y y y z z new Schlange enq(x) enq(y) deq() enq(z) deq() Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 244

26 Beispiel: Schlange Schlangen werden oft waagerecht gezeichnet: auslesen einfügen Wir implementieren eine Schlange mit einem Array. Im Index first speichern wir das erste Element der Schlange (zuerst eingefügt). Der Index last zeigt auf das erste freie Arrayelement. Ist first == last, so ist die Schlange leer. auslesen einfügen first last Damit sind die Methoden empty, enq, deq, head sehr einfach zu implementieren. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 245

27 Beispiel: Schlange Ein Problem haben wir, wenn die Schlange nach einigen deq- und enq- Operationen so aussieht, dass der last-index am Ende des Arrays angekommen ist. aus ein first last Eine weitere enq-operation würde bewirken, dass der last-zeiger die gültigen Indizes verläßt: aus ein first last Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 246

28 Eine weitere enq-operation würde bewirken, dass der last-zeiger die gültigen Indizes verläßt: aus ein first last Daher interpretieren wir das Array als zirkuläre Liste und springen mit dem last-zeiger zum Index 0. ein aus last first Nach einer weiteren enq-operation bewegt sich der last-zeiger weiter auf den first-zeiger zu. ein aus last first Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 247

29 Ist nur noch ein Arrayelement frei, so sieht die Schlange wie folgt aus: last first Würde das letzte Arrayelement der Schlange belegt, so würde der last-zeiger auf das gleiche Arrayelement wir der first-zeiger zeigen: first last Das soll aber unsere Bedingung für eine leere Schlange sein. Daher sorgen wir dafür, dass immer mindestens ein Arrayelement frei ist, d.h. wir erzeugen immer ein Arrayelement mehr als vom Benutzer gewünscht und lassen die oben dargestellte Situation nicht zu. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 248

30 Eine Schlange (queue) ist eine Liste von Objekten, in die man Objekte einfügen kann und aus der man Objekte entfernen kann. Das zuerst in die Schlange eingefügte Objekt wird als erstes wieder entfernt (First-In-First-Out: FIFO- Strategie). Wir implementieren eine Schlange für int- Werte als ein int-array mit je einem int- Wert für den Index des ersten bzw. letzten Eintrags in dem Array. Wir implementieren eine Funktion nextindex(int ix), die uns den zyklisch gesehen nächsten Index nach ix berechnet. Auf diese Methode soll nur in der Klasse Schlange selbst zugegriffen werden können. (Ausgedrückt durch - - Zeichen im Klassendiagramm bzw. dem Schlüsselwort private in Java. Klassendiagramm: Schlange q : int[ ] first : int last : int -nextindex(int ix) : int empty() : boolean enq(int x) deq() head() : int Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 249

31 public class Schlange { int[] q; /* Array für Schlangenelemente (hier int) */ int first; /* Erstes Element in der Schlange */ int last; /* Erstes freies Arrayelement in der Schlange */ Schlange(int size) { /* Konstruktor, Schlange für size Elemente */ // ein freies Element wird immer benötigt, daher...[size+1] q = new int[size+1]; first = 0; last = 0; } /* end of Konstruktor */ } private int nextindex(int ix) { /* zyklisch nächster Index nach ix */ if (ix < q.length-1) return(ix+1); else return(0); } /* end of nextindex */ boolean empty() { return(first == last); } /* end of empty */... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 250

32 public class Schlange { int[] q; /* Array für Schlangenelemente (hier int) */ int first; /* Erstes Element in der Schlange */ int last; /* Erstes freies Arrayelement in der Schlange */ void enq(int x) { /* fügt Element x in Schlange ein */ int next = nextindex(last); if (next!= first) { q[last] = x; last = next; } else System.exit(99); /* Programmabbruch */ } /* end of enq */ void deq() { /* lösche erstes Element */ if (!empty()) first = nextindex(first); } /* end of deq */ int head() { /* liefert erstes Element */ return(q[first]); } /* end of head */ }... Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 251

33 public class Schlange {... public static void main(string[] args) { /* Beispiel für Schlangennutzung */ int n, x; Out.print("Geben Sie die Schlangengröße an: "); /* erzeuge leere Schlange */ n = In.readInt(); Schlange queue = new Schlange(n); Out.print("Geben Sie Zahlen >= 0 ein (Ende mit -1): "); /* schreibe in Schlange */ do { x = In.readInt(); if (x!= -1) queue.enq(x); } while (x!= -1); Out.println("Ausgabe in gleicher Reihenfolge: "); /* lese aus Schlange */ while (!queue.empty()) { Out.print(" "+queue.head()); queue.deq(); } Out.println(); } /* end of main */ } /* end of class Schlange */ Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 252

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung Grundlagen der Programmierung Prof. H. Mössenböck 11. Objektorientierung Klasse = Daten + Methoden Beispiel: Positionsklasse class Position { private int x; private int y; void goleft() { x = x - 1; void

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

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

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

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

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

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

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

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

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

Konkatenation zweier Listen mit concat

Konkatenation zweier Listen mit concat Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

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

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden 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

Mehr

Kapitel 4: Datentyp Keller und Schlange

Kapitel 4: Datentyp Keller und Schlange Kapitel 4: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) 4-1 Definition Keller und seine Operationen Ein Keller (engl. Stack; Stapel) ist eine endliche Menge von Elementen mit einer LIFO-Organisation

Mehr

Objektorientierte Programmierung und Klassen

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

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

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article 2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

1 of :17:14

1 of :17:14 7 public class Main 10 /** 11 * @param args the command line arguments 1 */ 13 public static void main(string[] args) 14 { 15 // Aufgabe 1 16 System.out.println("##### AUFGABE 1 #####"); 17 // Stack initialisieren

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

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

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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

Mehr

1 Abstrakte Datentypen

1 Abstrakte Datentypen 1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;

Mehr

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm 394 55 Ring-Queue In dieser Aufgabe wird eine generische Containerklasse definiert. Ihre Kapazität wird beim Erzeugen festgelegt, im Gegensatz zu den Klassen des Collection- Frameworks.

Mehr

3. Exkurs in weitere Arten der Programmierung

3. Exkurs in weitere Arten der Programmierung 3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Programmiertechnik Objektorientierung

Programmiertechnik Objektorientierung Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 013/14 Übungsblatt 4 18.11.013 Übung zur Vorlesung Programmierung Aufgabe T8 Ein Stack ist eine Datenstruktur, die

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 6 Prof. R. Westermann, A. Lehmann, R.

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

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 17 Einstieg in die Informatik mit Java Methoden und Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld

Mehr

Aufgaben NF 11; Seite 1

Aufgaben NF 11; Seite 1 Aufgabe Ref 1: Gegeben ist die Klasse Schueler public class Schueler { private String name, vorname, kurs; // Konstruktor public Schueler(String n, String vn, String k) { name=n; vorname=vn; kurs=k; public

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Ausgabe:

Ausgabe: Aufgabe 2.10: Schreiben Sie ein Programm, das zunächst die Quadratzahlen zu den Zahlen 1-10 mit Hilfe einer While- Schleife und danach die Quadratzahlen zu den Zahlen 3, 6, 9,.., 30 mit Hilfe einer For-Schleife

Mehr

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Einführung in die Programmierung für NF. Arrays

Einführung in die Programmierung für NF. Arrays Einführung in die Programmierung für NF Arrays ARRAY (REIHUNG) 4 Arrays 2 Array In der Programmierung werden o: Tupel verschiedener Länge benutzt. Beispiel: Vektoren (1.0, 1.0) (0.2, 1.2, 7.0) Beispiel:

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

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

6. Objekte, Klassen, ADTs

6. Objekte, Klassen, ADTs 6. Objekte, Klassen, ADTs Entwicklungsgeschichte 1. Vordefinierte Datentypen (In Java: int, float etc.) Datenbereich und Operationen durch die Sprache vordefiniert 2. Benutzerdefinierte Datentypen (In

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

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung I (IB) Objekte Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:09 Inhaltsverzeichnis Neue Typen durch Klassen............................. 2

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

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe Ludwig-Maximilians-Universität München München, 04.12.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Übung Grundlagen der Programmierung WS 2008/09. Übung 04: Methoden. Abgabetermin: Prosabeschreibung Java-Programm.

Übung Grundlagen der Programmierung WS 2008/09. Übung 04: Methoden. Abgabetermin: Prosabeschreibung Java-Programm. Übung 04: Methoden Abgabetermin: 11. 11. 2008 Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 4.1 12

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

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Iman Kamehkhosh, Marcel Preuß, Henning Timm Übungsblatt 11

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

Stapel (Stack, Keller)

Stapel (Stack, Keller) Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

Einführung in die Programmierung

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

Mehr

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung Programmieren 1, IN1bac, WS 10/11 Seite 1 von 6 Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6 Datum, Uhrzeit: 24. 01. 2011, 10.30 Uhr Semester: IN1 Note:... Prüfer: Prof. Meixner Dauer: 60 Min. Hilfsmittel: keine Punkte:... Diese Prüfung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

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

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr