Zugriffsrechte. im gleichen Package. Stilregel: Datenelemente immer private mit zugehörigen get- und set-methoden, wenn nötig.
|
|
- Heini Knopp
- vor 6 Jahren
- Abrufe
Transkript
1 Zugriffsrechte SWE-61 Information Hiding (Geheimnisprinzip): Nur die Klassen und die Elemente von Klassen zugreifbar machen, die zur Benutzung vorgesehen sind (Schnittstelle) - z. B. keine Implementierungsdetails. Zugriffsrechte für Klassen: benutzbar class Circles {... im gleichen Package public class Circles {... in jedem Package Zugriffsrechte für Datenelemente und Methoden: benutzbar class Circles { void move (...) {... im gleichen Package public void move (...) {... überall private void move (...) {... in dieser Klasse protected void move (...) {... in dieser, in Unterklassen und im gleichen Package Stilregel: Datenelemente immer private mit zugehörigen get- und set-methoden, wenn nötig. Zugriffsrechte sinnvoll einschränken Erläuterungen dazu Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.2 Vorlesung Software-Entwicklung / Folie 61
2 Richtlinien zum Entwurf von Klassen SWE Anzahl der Objekte zu einer Klasse: beim Entwurf klären, welcher Fall vorliegt: - beliebig viele: z. B. Circles im Graphikprogramm; Lieferung in der Lagerhaltung - eine feste Anzahl: z. B. 3 Skatspieler mit verschiedenen Rollen - genau eines: z. B. der Motor im Auto, Nelsons Kaffeeladen - keines: z. B. zusammengehörige Klassenmethoden: trigonometrische Funktionen, Java Gently s Text-Klasse. 2. Zusammengehörigkeit: Methoden und Datenelemente einer Klasse gehören eng zusammen; Operationen und Eigenschaften bzw. Zustand einer Sorte von Objekten. 3. Zielorientiert modellieren: Nur die Operationen und Eigenschaften, die in der Anwendung gebraucht werden - nicht alle Operationen und Eigenschaften, die real vorkommen. 4. Information Hiding (Geheimnisprinzip): Nur die Elemente zugreifbar machen, die für die sinnvolle Benutzung nötig sind; enge Schnittstelle (SWE-61). 5. Datenzugriff nur über Methoden: Datenelemente private; get- und set-methoden soweit nötig; festlegen, welche Datenelemente veränderlich sein sollen - explizit durch set-methode oder implizit durch andere Methoden. 6. Objektvariable über den Konstruktor initialisieren; durch Konstruktor-Parameter, wenn sie bei der Objekterzeugung einstellbar sein sollen. Vorlesung Software-Entwicklung / Folie 62 Einige einfache Regeln beachten Erläuterungen dazu Judy Bishop: Java lernen, 3.Aufl., Abschnitt 5.1 Prüfen Sie die bisher entworfenen Klassen an diesen Regeln Begründen Sie, weshalb unnötig zugreifbare Elemente von Nachteil sind.
3 Entwurf eines objektorientierten Programms: Nelsons Kaffeeladen In Nelsons Kaffeeladen soll ein Computer-Programm für die Lagerhaltung eingesetzt werden. Nelson verkauft verschiedene Kaffeesorten, z. B. Java, Columbian, Kenyan. Jede Lieferung zu einer bestimmten Sorte hat ein Verfalldatum. Sie wird deshalb nicht mit früheren Lieferungen gemischt. Nelson verkauft jeweils aus der ältesten Sorte zuerst. SWE-63 Beispiel für einen Zustand des Kaffelagers: Datenelemente der Klasse Coffee: Columbian 65 Kenyan Jul May Jun 1998 Name Preis Menge Wiederbestellmenge Lieferungen Anzahl der Lieferungen Java Aug Aug Jul 1998 Datenelemente der Klasse Batch: Menge Verfalldatum Analyse einer Entwicklungsaufgabe lernen Erläuterungen dazu Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.2 Vorlesung Software-Entwicklung / Folie 63
4 Operationen zu Nelsons Kaffeladen SWE-64 Operationen mit einer Kaffeesorte (Coffee): neue Sorte in das Lager aufnehmen Daten dafür von einer Datei lesen Daten ausgeben Nachbestellen prüfen Preis ändern Lieferung einlagern Kaffee verkaufen überalterte Lieferungen vernichten Operation neue Lieferung von Batch benutzen Operation verkaufen von Batch benutzen Operation prüfe Verfall von Batch benutzen verfügbare Menge anzeigen Operationen mit einer Lieferung (Batch): neue Lieferung Daten dafür von einer Datei lesen Daten ausgeben Menge anzeigen prüfe Verfall verkaufen Vorlesung Software-Entwicklung / Folie 64 Operationen entwerfen Bedeutung der Operationen erarbeiten Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.2
5 Entwurf der Klassen zu Nelsons Kaffeeladen Zunächst nur Datenelemente und Signaturen der Methoden: SWE-65 public class Batch { Batch (double k, Date d); double available (); boolean sell (double k); void display (); private double instock; // Menge private Date sellbydate;// Verfall public class Coffee { Coffee (String s); // bei interaktiver Eingabe der Daten Coffee (); // zum Einlesen der Daten void preparetostock (BufferedReader in) throws IOException; boolean newbatchin (BufferedReader in) throws IOException; void display (); private String name; // Kaffeesorte private double price; // Graz per kg private double stock; // Menge im lager in kg private double reorder; // Menge, ab der nachbestellt wird, in kg private Batch [] B = new Batch [10]; // die Lieferungen private int batches = 0; // Anzahl der Lieferungen Vorlesung Software-Entwicklung / Folie 65 Klassendeklaration verfeinern Typen der Datenelemente festlegen Signaturen der Methoden festlegen Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.2 Lesen Sie die Erläuterungen nach. Implementieren Sie das Programm in den Übungen.
6 Datei-Format zu Nelsons Kaffeladen SWE-66 Die Informationen zu Kaffeesorten und -lieferungen werden auf einer Datei gespeichert, so dass daraus die Datenstruktur erzeugt werden kann. Die Datei enthält eine Folge von Daten zu einer Kaffeesorte. Darin ist jeweils eine Folge von Lieferungsdaten enthalten. Wir verwenden die Sentinel-Technik, um das Ende einer Lieferungsfolge zu kennzeichnen. Format: Beispiel: Name der Kaffeesorte Preis Nachbestellgrenze Liefermenge Verfalldatum... 0 Columbian Apr May-97 0 Java May Jul Aug-97 0 Kenyan May-97 0 Vorlesung Software-Entwicklung / Folie 66 Entwurf eines Datei-Formates Erläuterungen dazu Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.2 Begründen Sie, weshalb nicht der Coffee-Konstruktor die Objektvariablen initialisiert, sondern die Methode preparetostock. Geben Sie dazu an, in welcher Reihenfolge Coffee-Objekte erzeugt werden und wie aus der Eingabe gelesen wird.
7 Formatiert schreiben und lesen SWE-67 Formate sind Objekte zu Klassen aus dem Package java.text. Format-Objekte sind einstellbar. Manche passen sich an landesübliche Schreibweisen an, z. B. Datum, Währung. Beispiel: Datum lesen und schreiben: import java.text.*; import java.util.*; import java.io.*; import javagently.*; // für Formate // für die Klasse Date Locale.setDefault(Locale.GERMANY);// Umstellung auf deutsche Schreibweise DateFormat DF = DateFormat.getDateInstance(); // Format-Objekt erzeugen String s = Text.readString (in); Date d; try { d = DF.parse(s); // DF.parse versucht, s als Datum zu entschlüsseln catch (ParseException e) // das könnte misslingen... { System.out.println ("Eingabefehler bei einem Datum"); d = new Date (); // ersatzweise das Datum von heute System.out.println ("Datum gespeichert: " + DF.format (d)); // d formatiert ausgeben Vorlesung Software-Entwicklung / Folie 67 Format-Objekte anwenden Erläuterungen am Beispiel Judy Bishop: Java lernen, 3.Aufl., Abschnitt 7.4, 7.5 Probieren Sie die Ausgabe von Datumsangaben und Währungen für verschiedene Länder aus.
8 Zwischenbilanz: allgemeine Sprachkonzepte SWE-67a Programmausführung Spracheigenschaften übersetzen, interpretieren imperativ, objektorientiert abstrakte Maschine statisch typisiert Variable und Zuweisungen Lebensdauer von Variablen Klassen und Typen Laufzeitkeller Typen, Werte und Operationen Parameterübergabe Klassen und Objekte Terminierung von Schleifen und Rekursion Konversion, implizit und explizit Zahldarstellung, 2er-Komplement Signatur von Funktionen, Methoden Kurzauswertung logischer Formeln Überladene Operatoren und Methoden Ausnahmebehandlung abstrakter Datentyp rekursiv definierte Datentypen allgemeine Konzepte Rekursion Binäre Bäume Ausdrücke in Infix-, Präfix-, Postfix-Form Wörterbücher Algorithmus Sortieren durch Auswahl Iteratoren Algorithmus Binäre Suche Vorlesung Software-Entwicklung / Folie 67a Bisher gelernte allgemeine Sprachkonzepte bewusst machen Erläuterungen dazu Judy Bishop: Java lernen, 3.Aufl., Abschnitt bis 8.2 Wiederholen Sie die genannten Themen.
9 Deklarationen von Klassen mit - Konstruktoren, - Objekt- und Klassenmethoden - Objekt- und Klassenvariablen Variablen: Objekt-, Klassenvariable, Parametervariable, lokale Variable Methoden (Funktionen) Anweisungen: Zuweisung Block if-anweisung for-, while-, do-schleife Aufruf return-, break-anweisung try-block mit Ausnahmebehandlung Eingabe, Ausgabe, Formate Bibliotheken nutzen Zwischenbilanz: Java-Konstrukte Typen: Grundtypen SWE-67b Klassen als Typen von Objektreferenzen Arrays Strings Enumeration Wrapper-Klassen Konversion - für numerische Typen - nach String - von und nach Object überladene Operatoren und Methoden Ausdrücke: Operatoren, Präzedenzen Literale Variable, Konstante Aufrufe Vorlesung Software-Entwicklung / Folie 67b Bisher gelernte Sprachkonstrukte von Java bewusst machen Erläuterungen dazu Judy Bishop: Java lernen, 3.Aufl., Abschnitt bis 8.2 Wiederholen Sie die genannten Themen
10 Lineare Listen SWE-68 Lineare Listen repräsentieren Folgen gleichartiger* Elemente als dynamisch veränderliche Datenstruktur mit linearem Zugriff: Listen werden aus Paaren aufgebaut: (Elementwert, Referenz auf den Rest der Liste) Einfügen eines Elementes: 7 Löschen eines Elementes: (*) Implementierung in Java: nicht notwendig gleichartige Elemente, Elemente sind Objektreferenzen der Klasse Object Eine grundlegende Datenstruktur kennenlernen Konzept und elementare Operationen erläutern Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.3 Wie entfernt man das erste Element einer Liste? Vorlesung Software-Entwicklung / Folie 68
11 Implementierung linearer Listen SWE-69 Klasse Node für Paare (Element, Rest der Liste): class Node { Node (Object d, Node n) {data = d; link = n; ein Objekt dazu: Object data; Node link; 5 Objektvariable sind von aussen zugänglich (für die ADT-Klasse List, siehe SWE-71) Die vordefinierte Klasse Object umfasst Objektreferenzen beliebiger Klassen Deklaration einer Listenvariable, initialisiert mit einer 1-elementigen Liste: Node list = new Node (new Integer (5), null); Element muß ein Objekt sein, also Wrapper (envelope) für Werte von Grundtypen null: vordefinierter Name für die einzige Referenz, die kein Objekt identifiziert Vorlesung Software-Entwicklung / Folie 69 Java-Implementierung linearer Listen verstehen Hilfsklasse Node: nur Konstruktor und Objektvariable Elementtyp Object: wie bei allen Behälterklasse, z. B. für Wörterbücher Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.3 Ersetzen Sie in der Deklaration der Klasse BinTree ( Folie 41) den Typ char durch die Klasse Object. Schreiben Sie eine mehrelementige Liste als geschlossenen Ausdruck.
12 Elementare Operationen mit linearen Listen Aufbauen einer Liste in umgekehrter Reihenfolge: Node list = null; for (int i = n; i > 0; i--) list = new Node (new Integer (i), list); Einen Elementwert zahl in der Liste suchen: Integer zahlobj = new Integer (zahl); Node l = list; while (l!= null) { if (l.data.equals (zahlobj)) break; // s.u. (*) l = l.link; String s = ((l == null)? s = " not" : ""); // bedingter Ausdruck System.out.println (zahl + s + " found"); Ein Element d nach dem Paar l einfügen (l sei!= null): l.link = new Node (d, l.link); Ein Paar l mit Vorgänger prev löschen (l, prev seien!= null): prev.link = l.link; Bei allen Operationen die Sonderfälle am Anfang und Ende der Liste beachten! (*) equals ist für die Klasse Object definiert und wird von den Wrapper-Klassen als Wertvergleich spezialisiert. SWE-70 Vorlesung Software-Entwicklung / Folie 70 Umgang mit linearen Listen lernen Operationen an Bildern verdeutlichen Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.3 Listen von Strings implementieren, E/A dafür und Suchen darin Wie fügt man ein Element VOR einem anderen ein?
13 Abstrakter Datentyp Liste ADT- Operationen für Listen mit verschieblicher Position zum Lesen, Einfügen und Löschen: start prev now aktuelle Position: SWE-71 class List { List(); // Konstruktor public void insert (Object x) // Element x hinter akt. Pos. einfügen { Node newelem = new Node (x, null); // und neues Element wird aktuelle Position if (start == null) // Liste ist leer { start = newelem; now = newelem; else if (now == null) // Position ist außerhalb der Liste, am Anfang einfügen { newelem.link = start; start = newelem; now = newelem; prev = null; else { newelem.link = now.link; now.link = newelem; prev = now; now = newelem; public void remove () { public Object current () { public void succ() { public void reset () { public boolean iseol () { public boolean isempty () { private Node start, prev, now; // Element löschen // Wert des Elementes // Position weitersetzen // Position an den Anfang // ist die Position außerhalb der Liste? // ist die Liste leer? // die 3 lokalen Variablen Vorlesung Software-Entwicklung / Folie 71 ADT Liste mit Position kennenlernen Abstraktion und Technik erläutern Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.3 Vervollständigen Sie die Implementierung Eine Implementierung ohne die Objektvariable prev wäre auch möglich. Was ist ihr wesentlicher Nachteil?
14 Anwendung des ADT List: Nelsons Kaffeeladen SWE-72 Das Array für die Lieferungen zu jeder Kaffeesorte wird durch ein List-Objekt ersetzt: import List; class Coffee { boolean newbatchin (BufferedReader in) throws IOException {... BatchStock.insert (batch); // gelesene Lieferung einfügen double sell (Double tosell) // eine Menge Kaffee verkaufen {... // die Liste der Lieferungen durchlaufen: for (BatchStock.reset();!BatchStock.isEol(); BatchStock.succ()) { Batch b = (Batch)BatchStock.current(); //... gewünschte Menge aus den Lieferungen entnehmen return tosell;... private List BatchStock = new List (); Ebenso in der Klasse CoffeeShop ein List-Objekt mit den Kaffeesorten einführen. Vorlesung Software-Entwicklung / Folie 72 Den ADT List benutzen lernen Anwendung der Listenoperationen am Beispiel zeigen Judy Bishop: Java lernen, 3.Aufl., Abschnitt 8.4 Vervollständigen Sie das Kaffeeladen-Programm und testen es. Begründen Sie weshalb es einfacher ist, den ADT List anzuwenden als lineare Listen direkt zu programmieren. Zeigen Sie, wo im Programm Objekte an den Typ Object und vom Typ Object an einen anderen angepasst werden.
Ausdrucksbäume in verschiedenen Darstellungen
Ausdrucksbäume in verschiedenen Darstellungen SWE-42 Infix mit notwendigen Klammern: (a + b) / (c - d) Infix vollständig geklammert: (((a) + (b)) / ((c) - (d))) Postfix a b + c d - / Präfix / + a b - c
MehrKlassen und Objekte. Objekte einer Klasse bilden
Klassen und Objekte SWE-18 Eine Klasse definiert gleichartige Objekte mit ihren Datenelementen (Variable, fields) und Operationen (Methoden) in einer geschlossenen Programmstruktur. Beispiel: class Circles
MehrPräzedenz von Operatoren
Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Mehr3 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
MehrRepetitorium 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
MehrJavakurs 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
MehrLetztes 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
MehrDatenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
MehrProbeklausur: 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,
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrKlassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive
MehrEinstieg 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
MehrTheorie 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
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrAllgemeine Informatik II SS :30-13:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrC für Java-Programmierer
Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im
MehrHochschule 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
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
MehrEine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.
Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
Mehrihrer Klasse benötigt die Funktion einfuegenan:
Aufgabe 11 Verkettete Listen Entwickeln Sie einen Algorithmus, der Ihnen das Einfügen eines Elementes an einer beliebigen Position innerhalb der Liste erlaubt. Der Algorithmus soll beispielsweise erlauben,
MehrAuD-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
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
Mehr5.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
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrProbeklausur: 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,
MehrKapitel 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
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrJava 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
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrBeispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme
Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrEinstieg 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
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrII.1.1. Erste Schritte - 1 -
! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1
MehrTEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4
Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...
MehrVerkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
MehrÜ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
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrEinführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrKapitel 11: Wiederholung und Zusammenfassung
Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität
MehrProgrammieren in C++ Überladen von Methoden und Operatoren
Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrJava Schulung (Java 2 Java Development Kit 5 / 6)
2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt
MehrAssoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
MehrJAVA 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
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrJava 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
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
Mehr6 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
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrTutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Mehr3. Grundlegende Sprachkonstruktionen imperativer Programme
3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte
MehrSilke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode
Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:
MehrÜbersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.
Übersicht 4.1 Ausdrücke 4.2 Funktionale Algorithmen 4.3 Anweisungen 4.4 Imperative Algorithmen 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung
MehrEINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib
MehrBei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrSuchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
MehrObjektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
MehrPIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrWiederholung zur Vorlesung Programmieren
Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren
MehrJava für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
MehrAllgemeine Informatik 2 im SS 2007 Programmierprojekt
v05 30.06.2007 Technische Universität Darmstadt Fachbereich Informatik Prof. Dr. Johannes Fürnkranz Allgemeine Informatik 2 im SS 2007 Programmierprojekt Bearbeitungszeit: 04.06. bis 13.07.2007 Die Formalitäten
Mehreinkonto.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();
MehrInformatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrFaustregeln zu Zusicherungen
Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während
MehrKapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
MehrAbschnitt 9: Schnittstellen: Interfaces
Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrEingabe von Texten. Vorlesung Software-Entwicklung / Folie 101
Eingabe von Texten SWE-101 Komponente TextField: einzeiliger, edierbarer Text Ereignisse: ActionEvent (wie bei Button) ausgelöst bei der Eingabe von Return einige Methoden (aus der Oberklasse TextComponent):
MehrSchnittstellen implementieren am Beispiel Suchbaum
Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden
MehrInformatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17
Informatik 1 - Translation Studies in Information Technology INF1 TSIT MUSTERLÖSUNG: PFLICHTÜBUNG 1 Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17 Praktikum zur Vorlesung
MehrAlgorithmen 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
MehrGeordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
MehrPraktische Softwaretechnologie Vorlesung 3
Praktische Softwaretechnologie Vorlesung 3 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 24. Oktober 2006 p.1/26 Klassendefinition
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Mehr