6. Objekte, Klassen, ADTs
|
|
- Insa Kaufman
- vor 6 Jahren
- Abrufe
Transkript
1 6. Objekte, Klassen, ADTs Entwicklungsgeschichte 1. Vordefinierte Datentypen (In Java: int, float etc.) Datenbereich und Operationen durch die Sprache vordefiniert 2. Benutzerdefinierte Datentypen (In Java: array) Datenbereich durch den Programmierer mit Typkonstruktoren Operationen durch die Sprache vordefiniert 3. Abstrakte Datentypen (In Java: als Klassen realisiert) Sowohl Datenbereich als auch Operationen werden durch den Programmierer statisch definiert 4. Objekte und Klassen Datenbereich + Operationen durch Programmierer definiert Dynamische Erweiterung von Struktur und Verhalten László Böszörményi ESOP Objekte, Klassen, ADTs - 1
2 Objekte Grundidee Die modellierte Welt besteht aus selbständigen Objekten Jedes Objekt hat einen Zustandsraum (eine Menge von Variablen), der seine Vergangenheit speichert Der Zustandsraum ist von außen her direkt nicht erreichbar Objekte haben eine Menge von Operationen (Methoden), die an diesem Zustandsraum arbeiten Methoden sind meistens parametrisiert und können einen Rückgabewert liefern Objekte kommunizieren miteinander über Nachrichten, wodurch sie Methoden aktivieren können László Böszörményi ESOP Objekte, Klassen, ADTs - 2
3 Klassen Grundidee Objekte werden klassifiziert Objekte mit ähnlichem Verhalten gehören zur gleichen Klasse Die Beziehung zwischen Klasse und Objekt ist wie zwischen Typ und Wert (in Programmiersprachen) Die Klassendeklaration spezifiziert Struktur und Verhalten Ein Objekt ist eine konkrete Ausprägung (Instanz) einer Klasse Zwischen Klassen gibt es verschiedene Beziehungen Benützung (uses) Eine Klasse benutzt die Dienste einer anderen Klasse Z.B. Kundenobjekte benützen ein Bankobjekt Erweiterung (is-a) Eine Klasse erweitert die Dienste einer anderen Klasse Klasse PKW erweitert die Klasse Fahrzeug (PKW ist Fahrzeug) László Böszörményi ESOP Objekte, Klassen, ADTs - 3
4 Beispiel: Klassen und Objekte für Bankkonten Eine Bankanwendung bietet eine Klasse für Konten (Account) mit folgenden Methoden an deposit (Einzahlen), withdraw (Abheben), check (Kontostand abfragen) Objekte der Klasse der Klienten können ihre eigenen Konten-Objekte anlegen und benutzen Account 1 Account 2 deposit deposit withdraw withdraw Client 1 check Client 2 check capital == 100 capital == 300 László Böszörményi ESOP Objekte, Klassen, ADTs - 4
5 Klassen und Objekte in Java Eine Klasse ist ein benannter Typ und definiert Eine Menge von Variablen beliebigen Typs (inkl. Klasse) Eine Menge von (parametrisierten) Methoden (Operationen) Die Regeln der Sichtbarkeit ihrer Komponenten Ein Objekt ist eine Instanz einer Klasse Die Variablen erhalten eigenen Speicherplatz für jede Instanz Die vordefinierte Variable this referenziert das Objekt selbst Die Methoden können aufgerufen werden, und sie können auf den eigenen Variablen-Satz (die Instanzvariablen) zugreifen Beliebig viele Objekte einer Klasse können erzeugt werden Ein Objekt schickt einem anderen Objekt (Empfänger) eine Nachricht durch den Aufruf einer seiner Methode László Böszörményi ESOP Objekte, Klassen, ADTs - 5
6 Erzeugen und Löschen von Objekten Objekte werden dynamisch (zur Laufzeit) angelegt Account account1 = new Account(); Ein neues Account-Objekt wird angelegt Die Instanzvariablen werden initialisiert Der Konstruktor (siehe später) wird ausgeführt (wenn keiner definiert ist, dann der default- Konstruktor ) Objekte müssen nicht explizit gelöscht werden. Objekte, auf die keine Referenz mehr zeigt, verschwinden account1 = null; War account1 die einizige Referenz auf das Objekt, dann wird es vom garbage collector eingesammelt Arrays sind in Java auch Objekte darum so ähnlich László Böszörményi ESOP Objekte, Klassen, ADTs - 6
7 Objektvariablen sind in Java Referenzen Objektvariablen (Variablen die auf ein Objekt zeigen) enthalten immer Referenzen Instanzvariablen und Methoden eines Objektes können durch Dereferenzierung (. -Operator ) erreicht werden account1.deposit(x); Ruft Methode deposit vom Objekt account1 Anders gesagt: Objekt account1 empfängt die Nachricht deposit Die Zuweisung von Objekten hat Referenzsemantik Der Nullwert von Referenzvariablen (null) kann einer beliebigen Objektvariable zugewiesen werden Einer Variable vom Typ Object kann ein beliebiges Objekt zugewiesen werden (siehe auch später) László Böszörményi ESOP Objekte, Klassen, ADTs - 7
8 Statische Klassenkomponenten Klassen können statische (static) Variablen und Methoden deklarieren Diese gehören der Klasse selbst (dem Klassenobjekt) Sie werden statisch angelegt sie leben während der ganzen Ausführungszeit des Programms Sie können über den Klassennamen oder über beliebige Objektvariable der Klasse angesprochen werden Jedes Java Programm muss zumindest eine statische Komponente haben sonst kein fester Ankerpunkt Methode main muss in jedem Programm statisch sein Erhält von der Umgebung Aufruf und Parameter (String [] args) László Böszörményi ESOP Objekte, Klassen, ADTs - 8
9 Konstruktoren Konstruktoren sind spezielle Methoden, mit dem gleichen Namen wie die Klasse, und ohne Rückgabetyp Sie dienen für die Initialisierung des Objektzustands Sie werden durch new automatisch aufgerufen (nur so) Wenn kein Konstruktor definiert ist Ein parameterloser default-konstruktor wird erzeugt und Bei new aufgerufen um die Instanzvariablen zu initialisieren Eine Klasse kann mehrere Konstruktoren mit unterschiedlichen Signaturen haben Ein Konstruktor kann andere Konstruktoren der gleichen Klasse mit this(...) aufrufen (nur als 1. Anweisung) László Böszörményi ESOP Objekte, Klassen, ADTs - 9
10 Variablen und Konstruktoren der Klasse Account public class Account { // Klasse Account, , LB // Konstanten, Instanzvariablen und Konstruktoren der Klasse Account static final double INITIAL = 0, // Konstanter Anfangswert für capital static final double MAX_CREDIT = 0; // Konstanter Anfangswert für max. credit double capital; double max_deficit; // Instanzvariable // Instanzvariable Account() {this (INITIAL, -MAX_CREDIT); } // Der 1. Konstruktor ruft den 2. Konstruktor mit default-werten auf Account(double initial, double max_credit) { // 2. Konstruktor, mit Parametern capital = initial; // capital this.capital... max_deficit = -max_credit; // max_deficit this. max_deficit... } // Account László Böszörményi ESOP Objekte, Klassen, ADTs - 10
11 Methoden der Klasse Account boolean deposit(double cash) { // Einzahlung, cash muss 0 sein boolean success = (cash >= 0); // Es wird geprüft, ob cash 0 if (success) { capital += cash; } // Cash wird einbezahlt return success; // Gibt true zurück, wenn cash 0, sonst false } // deposit boolean withdraw(double cash) {// Abheben, cash muss 0 sein wird nicht geprüft boolean success = (capital - cash >= max_deficit); // Prüft, ob Abheben möglich if (success ) { capital -= cash; } // Cash wird abgezogen return success; // Gibt true zurück, wenn Abheben erfolgreich war, sonst false } // withdraw double check() {return capital;} } // Account // Kontostand zurückgeben László Böszörményi ESOP Objekte, Klassen, ADTs - 11
12 public class BankClient { static void main(string [] args) { Account account = new Account(); double x = 0; Klasse BankClient // Benutzerklasse von Account, , LB // Legt neues Account-Objekt an // Hilfsvariable do { Out.println(" >0:Einzahlen, <0:Abheben, =0:Aufhoeren"); x = In.readDouble(); if (x > 0) { account.deposit(x); else if (x < 0) { // Einzahlen // Erfolg wird nicht geprüft: muss sein // Abheben if (! account.withdraw(-x)) Out.println("Zu viel verlangt, sorry "); } // if (x < 0) Out.println("Kontostand = " + account.check()); } while (x!= 0); } // main } // BankClient Bei Eingabe 3, 5, 10, -7, 0: 3.0, 8.0, Zu viel verlangt, sorry 8.0, 1.0, 1.0 László Böszörményi ESOP Objekte, Klassen, ADTs - 12
13 Abstrakte Datentypen (ADT) Ein Abstrakter Datentyp (ADT) besteht aus Name, Datenbereich, Menge von Operationen Ein ADT spezifiziert, was die einzelnen Operationen bewirken, sagt aber nicht wie Die Spezifikation muss für die Benützung voll ausreichen Der Benutzer darf über das wie keine Annahmen treffen Die Spezifikation der Operationen besteht aus Spezifikation der Syntax Normalerweise eine Menge von Funktionen, als eine Abbildung: Urmenge (domain) Zielmenge (range) Spezifikation der Semantik In Form von Axiomen, z.b. in algebraischer Form László Böszörményi ESOP Objekte, Klassen, ADTs - 13
14 Spezifikation eines abstrakten Stacks Es sei S eine Menge von Zuständen, die durch eine endliche Anzahl von push und pop Operationen erreicht werden kann s 0 S ist ein ausgezeichneter Zustand, s 0 steht für den leeren Stack X ist der Datenbereich (bedingt durch den Datentyp) der Elemente die gestackt (gestapelt) werden können. Syntax 1. create: S 2. empty: S {true, false} push pop 3. push: S x X S 4. pop: S S 5. top: S X top Semantik ( s S, x X) 1. create = s 0 2. empty (s 0 ) = true 3. empty (push (s, x)) = false 4. empty(s) pop (push (s, x)) = s 5. empty(s) top (push (s, x)) = x empty(s) pop (push (s, x)) = (s, x) László Böszörményi ESOP Objekte, Klassen, ADTs - 14
15 Realisierung von ADTs mit Klassen Die Operationen können durch Methoden realisiert werden Die Semantik kann in allgemeinen Programmiersprachen wie Java nicht ausgedrückt werden Die Semantik muss extra (formal oder informal) angegeben werden Zusätzliche Dokumentation, Kommentare etc. werden benutzt Sichtbarkeit Java ermöglicht die öffentlichen und privaten Teile einer Klasse zu unterscheiden László Böszörményi ESOP Objekte, Klassen, ADTs - 15
16 Realisierung einer Stack-Klasse public class StackDouble{ int top = -1; double[] info; StackDouble(int max) { info = new double[max]; } // StackDouble // Kann double Zahlen stapeln // -1 steht für den leeren Stack // Der Stack-Speicher // Konstruktor mit Parameter boolean empty () {return top < 0;} void push (double d) { top++; info[top] = d; } /* push prüft zunächst nicht, ob Platz da ist */ double pop() { top--; return info[top + 1]; } /* pop prüft nicht, ob stack nicht leer ist */ push top pop } // StackDouble László Böszörményi ESOP Objekte, Klassen, ADTs - 16
17 Benutzerklasse vom StackDouble public class StackClient { static final int N = 8; static void main(string [] args) { StackDouble s = new StackDouble (N); double x = 1.5; for (int i = 0; i < N; i++) { Out.print(x + " "); s.push(x); } // main } // StackClient x += 0.5; } // for i Out.println(); while (! s.empty()) Out.print(s.pop() + " ") ; Out.println(); László Böszörményi ESOP Objekte, Klassen, ADTs - 17
18 Realisierung von einem ADT für Brüche 1. public class Fraction { // Realisiert Operationen for Bruchzahlen int num, den; // Fraction = Numerator / Denominator (Zähler / Nenner) Fraction(int numer, int denom) {num = numer; den = denom; } // Konstruktor public String tostring () {return num + "/" + den;} //Wandelt Bruchzahl in Text um public Fraction copy() {return new Fraction(num, den);} // Erstellt eine Kopie public static Fraction plus (Fraction a, Fraction b) { // Klassenmethode Fraction x = a.copy(), y = b.copy(), z = new Fraction(1, 1); /* Wir kopieren a und b, um die Eingangsdaten nicht zu zerstören */ if (x.den!= y.den) { // Addition der Einfachheit halber ungekürzt x.num *= y.den; // (x.n/x.d) * (y.d/y.d) + y.num *= * x.den; // (y.n/y.d) * (x.d/x.d) = z.den = x.den * y.den; // (x.n*y.d + y.n*x.d) / (x.d * y.d) } else z.den = x.den; // x.n/x.d + y.n/x.d = (x.n + y.n) / x.d z.num = x.num + y.num; return z; } // plus László Böszörményi ESOP Objekte, Klassen, ADTs - 18
19 Realisierung von einem ADT für Brüche 2. public static Fraction minus (Fraction a, Fraction b) { return plus(a, new Fraction(-b.num, b.den)); } // minus // Klassenmethode // a - b a + (-b) public static Fraction times (Fraction a, Fraction b) { return new Fraction(a.num * b.num, a.den * b.den); } // times // Klassenmethode // == (a.n*b.n) / (a.d*b.d) public static Fraction div (Fraction a, Fraction b) { return times (a, new Fraction(b.den, b.num) ); } // div } // Fraction // Klassenmethode // a / b a * (1/b) László Böszörményi ESOP Objekte, Klassen, ADTs - 19
20 Benutzung vom ADT für Bruchzahlen public class FractionUser { // Benutzt die Klasse Fraction für Bruchzahlen static void main(string [] args) { Fraction a = new Fraction(1, 2); // Legt 1/2 an Fraction b = new Fraction(2, 3); // Legt 2/3 and Out.println(a + " + " + b + " = " + Fraction.plus(a, b) ); /* Äquivalent zu Out.println(a.toString() + " + " + b.tostring() + " = " + Fraction.plus(a, b).tostring() ); Typanpassung ruft automatisch die tostring Methode siehe auch später */ Out.println(a + " - " + b + " = " + Fraction.minus(a, b) ); Out.println(a + " * " + b + " = " + Fraction.times(a, b) ); Out.println(a + " / " + b + " = " + Fraction.div(a, b) ); } // main 1/2 + 2/3 = 7/6 1/2-2/3 = -1/6 } // FractionUser 1/2 * 2/3 = 2/6 1/2 / 2/3 = 3/4 László Böszörményi ESOP Objekte, Klassen, ADTs - 20
5.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
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
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
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
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
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
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 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
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();
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 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
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
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
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
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
MehrObjekt-Orientierte Programmierung
Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt
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
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
MehrJava Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
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
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
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
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
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
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
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,
MehrArrays Fortgeschrittene Verwendung
Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung
MehrAlgorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
MehrArrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen
MehrPIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
MehrVIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden
VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:
MehrVererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.
Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrProgrammierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
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
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)
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
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
Mehr5.6 Vererbung. Vererbung
5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
MehrKapitel 3 Das Projekt Bankkonto Seite 1
Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
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
Mehr620.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
MehrKlassen in Java. Klassen
Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrDr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrTest zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
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
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
MehrPrüfungszeuch im Fach Objektorientierte Programmierung WS 2000
Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,
MehrInteraktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten
Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere
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
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
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
MehrArrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
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 student"
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:
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrDatenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
MehrÜbung Programmierung WS 2007/08 - Blatt 5
RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays
1 Kapitel 8 Ziele 2 Die Datenstruktur der kennenlernen Grundlegende Algorithmen auf in Java implementieren können Mit von Objekten arbeiten können 3 Erweiterungen zur Behandlung von : Überblick Bisher
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
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
MehrPraktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
MehrObjective-C CheatSheet
App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController
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
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.
Mehr// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.
/ Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.
MehrTutorium Java Ein Überblick. Helge Janicke
Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren
MehrEinführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann
Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann
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:
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen
Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere
MehrKlassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
Mehr2.4.3 Polymorphie (Wiederholung von Alp2)
2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie
MehrSpec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba
Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrEin erstes Java-Programm
Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrHello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.
Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrErste Schritte in Java
Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
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 student"
MehrAufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.
»Programmieren«, WS 006/007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 4 Aufgabe 1 OOP In dieser Aufgabe sollen Sie Autos als Klasse Car modellieren. Die Eigenschaften auf attributiver Ebene sind:
MehrC# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung
C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe
MehrJava-Vorkurs 2015. Wintersemester 15/16
Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich
Mehr12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo
Mehr