Java Schulung. Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte. Prof. Dr. Nikolaus Wulff

Größe: px
Ab Seite anzeigen:

Download "Java Schulung. Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte. Prof. Dr. Nikolaus Wulff"

Transkript

1 Java Schulung Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte Prof. Dr. Nikolaus Wulff

2 Referenzvariablen Referenzvariablen verweisen auf (unbenannte) Objekte im Speicher. Uninitialisierte Variablen enthalten eine Null-Referenz (null). a Objekt Point a,b; a b null Objekte werden zur Laufzeit erzeugt. new Point(0,0); a = new Point(1,2); Objekte sind anonym. a :Point 0 0 a:point 1 2 Sie haben eine unveränderliche Identität. Prof. Dr. Nikolaus Wulff 2

3 Binden von Referenzvariablen Beim Zuweisen eines Objektes auf eine Variable wird eine Referenz zugewiesen: a = new Point(0,0); b = new Point(3,4); Beim Zuweisen von Referenzvariablen aufeinander werden nur die Referenzen kopiert, nicht die Objekte: a = b; Vorsicht! Das Objekt kann jetzt über zwei Pfade geändert werden: a.set(5,6); b.set(20,30); a b a b Prof. Dr. Nikolaus Wulff 3

4 Vergleichen von Objekten Beim Vergleichen zweier Referenzvariablen werden die Referenzen verglichen, nicht die referenzierten Objekte. Es wird also auf Objektidentität, nicht auf Inhaltsgleichheit geprüft. == (shallow equality) a b c d a == b a!= c d == null Prof. Dr. Nikolaus Wulff 4

5 Inhaltsvergleich Der Inhalt von zwei Objekten wird durch die Methode equals verglichen. equals (deep equality) new Integer(1)!= new Integer(1) new Integer(1).equals(new Integer(1)) Bei selbstdefinierten Klassen vergleicht equals (geerbt von Object) per Default auch nur die Objektidentiät, d.h. verwendet shallow equality. Die Methode equals muss selbst neu überladen werden, damit sie die gewünschte Funktionalität bietet. Prof. Dr. Nikolaus Wulff 5

6 Eine Klasse class Cell { private int value = 0; void setvalue(int newvalue){ this.value = newvalue; int getvalue( ) { return this.value;... Attribut Methoden Klassendefinition Prof. Dr. Nikolaus Wulff 6

7 Bestandteile einer Klasse Einleitung einer Klasse durch Schlüsselwort class: class EineKlasse { /* Klassenrumpf */ Erzeugung eines Objektes mit new: EineKlasse a = new EineKlasse(); Attribute: class Datengrab { int i; float f; boolean b; Jede Instanz (jedes Objekt) der Klasse Datengrab bekommt eine eigene Kopie der Attribute. Prof. Dr. Nikolaus Wulff 7

8 Methoden Methoden: Verhalten eines Objekts Inspizieren und ändern den Zustand eines Objekts. Berechnen von Rückgabewerten. Anstoßen von weiteren Methoden über das Senden von Nachrichten an andere Objekte. In anderen Sprachen: Funktionen oder Prozeduren. Nur innerhalb von Klassen (keine Methode ohne Klasse!). Aufruf einer Methode = Senden einer Nachricht: int x = a.f(); rufe Methode f von Objekt a bzw. sende Nachricht f an Objekt a Prof. Dr. Nikolaus Wulff 8

9 Parameterliste Die Parameterliste spezifiziert die Typen der Objekte, die als Argumente an die Methode übergeben werden können. Jedes Objekt (Parameter) erhält einen lokalen Namen, über den innerhalb der Methode auf das Objekt zugegriffen werden kann. Typ Name void reset(cell c) { c.setvalue(0); Beachte: Es werden nicht die Objekte (Kopien), sondern Referenzen auf die Objekte übergeben! Cell acel1 = new Cell(); acel1.setvalue(4); reset(acel1); acel1.getvalue(); ==> 0 Prof. Dr. Nikolaus Wulff 9

10 Rückgabewerte Methoden können Werte bzw. Objektreferenzen zurückliefern: Rückgabetyp Integer berechne(int a, int b) { int sum = a + b; return new Integer(sum); Rückgabe Mit return wird die Methode sofort verlassen - auch wenn noch Befehle dahinter folgen! Methoden ohne Rückgabe haben den Rückgabetyp void: void print(int a, int b) { System.out.println("a + b = " + a + b); Prof. Dr. Nikolaus Wulff 10

11 Methodenrumpf Variablendeklarationen und -zuweisungen. void berechne(int a, int b) { int i; Deklaration i = a * b; Zuweisung Beachte: Lokale Variablen müssen initialisiert werden! void berechne() { int i; i++; Compile-Fehler! Prof. Dr. Nikolaus Wulff 11

12 Statische Attribute und Methoden Attribute und Methoden, die nicht für einzelne Objekte, sondern für die ganze Klasse definiert sind. D.h., jedes Attribut kommt nur einmal pro Klasse vor! class Person { static int erzeugtepersonen = 0; static void printstatistik() { System.out.println("Erzeugt: " + erzeugtepersonen); Statische Attribute und Methoden können genutzt werden, ohne Objekte zu erzeugen. Der Zugriff erfolgt über den Klassennamen: Person.printStatistik(); Person.erzeugtePersonen++; Vergleiche: System.out.println(...); main Prof. Dr. Nikolaus Wulff 12

13 Statische Attribute class Person { static int erzeugtepersonen = 0; String name; Person erzeugtepersonen = 0 Klasse mit statischen Attribut das Objekt kennt seine Klasse peter class name = Peter mary class name = Mary Objekte mit Attributen Prof. Dr. Nikolaus Wulff 13

14 Konstanten Konstanten = finale Werte von Basisdatentypen Konstanten zur Übersetzungszeit werden vom Compiler ausgewertet: final int ANZAHL_MONATE = 12; Konstanten zur Laufzeit sind nach der Initialisierung unveränderlich: final int ZUFALL = (int)(math.random() * 20); final static: nur ein Wert pro Klasse, der seinen Wert nach dem ersten Laden der Klasse nicht mehr ändert. finale Referenzen: können nicht mehr an andere Objekte gebunden werden final Integer NULL = new Integer(0); Prof. Dr. Nikolaus Wulff 14

15 this und super Auf das aktuelle Objekt, auf dem die Methode ausgeführt wird (an das die Nachricht gesendet wurde), kann über das Schlüsselwort this zugegriffen werden. Auf das direkte Elternobjekt kann innerhalb einer Methode mit super zugegriffen werden. Prof. Dr. Nikolaus Wulff 15

16 Überladen von Methoden Eine Nachricht mit mehreren Signaturen und Methodenimplementationen. class SuperWasher { void wash(shirt s) {... void wash(car c) {... void wash(dog d) { SuperWasher sw = new SuperWasher(); Dog adog = new Dog(); sw.wash(adog); Die Methode wird (statisch) beim Senden der Nachricht anhand der Parameter ausgewählt. Prof. Dr. Nikolaus Wulff 16

17 Kein Überladen bei Rückgabewerten Folgende überladene Methoden unterscheiden sich nur im Rückgabewert: void washall() {... int washall() {... I Das geht nicht, denn der Compiler kann für diesen Aufruf nicht bestimmen, welche Methode zu verwenden ist: washall(); Prof. Dr. Nikolaus Wulff 17

18 Default-Konstruktor Konstruktoren dienen zur Erzeugung und Initialisierung von Objekten einer Klasse. Wenn kein Konstruktor angegeben wird, ist implizit ein Default-Konstruktor (ohne Parameter) definiert. class Bird { String name; Bird nc = new Bird(); class Bird { String name; Bird() { super(); Aufruf der Konstruktors der Superklasse Prof. Dr. Nikolaus Wulff 18

19 Konstruktordefinition Konstruktoren können überladen werden und Parameter erhalten, z.b. zur Initialisierung von Attributen: class Worker extends Person { String name; Worker() { Aufruf des Super-Konstruktors ist optional super(); (erfolgt sonst automatisch vom Compiler) name = "Noname"; System.out.println("Erzeuge Noname"); ; Worker(String name) { super(); this.name = name; System.out.println("Erzeuge " + name); Worker noname = new Worker(); Worker peter = new Worker("Peter"); Prof. Dr. Nikolaus Wulff 19

20 Konstruktorverkettung Konstruktoren können sich gegenseitig aufrufen: class Person {... Person(String name, int alter) { this(name);... Konstruktor dieser Klasse mit Parameter String aufrufen Konstruktoren können Konstruktoren der Superklasse aufrufen: class Mitglied extends Person {... Mitglied(String name, int tarifgruppe) { super(name);... Konstruktor der Superklasse mit Parameter String aufrufen Prof. Dr. Nikolaus Wulff 20

21 Konstruktoraufrufe Beim Erzeugen eines Objektes einer Subklasse wird automatisch der Default- Konstruktor der Superklasse aufgerufen. class Person { Person() { System.out.println(" Person"); class Angestellter extends Person { Angestellter() { System.out.println(" Angestellter"); Angestellter peter = new Angestellter(); Ausgabe: Person Angestellter Prof. Dr. Nikolaus Wulff 21

22 Konstruktor mit Argumenten Ein Konstruktor der Superklasse mit Argumenten muss als erstes im Konstruktor explizit (über super) aufgerufen werden. class Person { Person(String name) { System.out.println(" Person " + name); class Angestellter extends Person { Angestellter(String name) { super(name); System.out.println(" Angestellter " + name); Prof. Dr. Nikolaus Wulff 22

23 Initialisierungsreihenfolge class Test { Person p1 = new Person(); Person p2; // null static int zaehler; // 0 3: per Objekt: Attribute initialisieren 1: per Klasse: Attribute initialisieren Test() { p2 = new Person(); 4: per Objekt: Konstruktor ausführen static { zaehler = 9; 2: per Klasse: Init-Code ausführen Prof. Dr. Nikolaus Wulff 23

24 Arrays Arrays sind Objekte. Bei der Deklaration wird keine Größe angegeben, da nur die Referenz abgelegt wird: int a[]; int[] a; Einfache Arrays können direkt erzeugt und initialisiert werden: int [] a = { 1, 2, 3, 4, 5 ; Beim Zugriff auf ein Array wird der Index auf Überschreitung der Array-Größe geprüft: int x = a[3]; int x = a[567]; ArrayIndexOutOfBounds Die Länge des Arrays kann abgefragt werden: a.length Prof. Dr. Nikolaus Wulff 24

25 Arrays von Objekten Arrays von Objekten werden so erzeugt und initialisiert: Person[] a = new Person[20]; for(int i = 0; i < a.length; i++) { a[i] = new Person("Person Nummer " + i); Wie bei einfachen Arrays kann direkt initialisiert werden: Integer[] a = { new Integer(1), new Integer(2), new Integer(3), ; Prof. Dr. Nikolaus Wulff 25

26 Mehrdimensionale Arrays Mehrdimensionale Arrays werden so deklariert: int[] a[]; int[][] a; Die Initialisierung kann auch hier direkt erfolgen: int[][] a = { { 1, 2, 3, { 5, 6 ; Prof. Dr. Nikolaus Wulff 26

27 Zeichenketten Zeichenketten sind unveränderliche Objekte der Klasse String. String-Literale werden durch eingefasst. String-Literale werden automatisch in String-Objekte umgewandelt. Zeichenketten können auch durch Aufruf eines Konstruktors der Klasse String erzeugt werden. String c = "abc"; Außerdem erzeugen viele Methoden Zeichenketten: String c = new String("abc"); Integer i = new Integer(789); String c = i.tostring(); Prof. Dr. Nikolaus Wulff 27

28 Verkettung von Zeichenketten Zeichenketten können durch den Operator + verkettet werden: String c = "Hello " + "World"; Die Verkettung erzeugt ein neues String-Objekt. Werte von Basisdatentypen oder Objekte von Klassen können auch mit Strings verkettet werden. String n = "Die Antwort lautet " + 42; Sie werden dann implizit in Strings umgewandelt, bei Objekten durch den Aufruf der Methode tostring (definiert in der Klasse Object). Prof. Dr. Nikolaus Wulff 28

29 Sichtbarkeitsbereiche Blockstrukturierte Sichtbarkeitsbereiche: Lokale Variablen sind nach dem Schließen des Blocks nicht mehr sichtbar. { // <-- Anfang Scope 1 int x; x = 12; // Nur x ist sichtbar, q gibt es noch nicht { // <-- Anfang Scope 2 int q = 96; x = q + x; // x kann nicht neu definiert werden! // x und q sind verfügbar. // <-- Ende Scope 2 // Nur x ist noch sichtbar // Auf q kann nicht mehr zugegriffen werden. // <-- Ende Scope 1 Prof. Dr. Nikolaus Wulff 29

30 Bedingter Ausdruck Verzweigung, die zu einem Wert evaluiert. int a, b;... b = (a >= 0)? a : -a; Bedingung then else Wird häufig in Projekten verboten, da "schwer zu lesen". Aquivalent ist eine if - else Verzweigung: if (a >= 0) { b = a; else { b = -a; Prof. Dr. Nikolaus Wulff 30

31 Freispeicherverwaltung Java-Objekte werden dynamisch mit new angelegt. Sie werden nie explizit gelöscht oder freigegeben. Die Java-Maschine schaut regelmäßig (oder nach Aufforderung) nach, welche Objekte nicht mehr erreichbar sind (garbage collection) und gibt diese frei. Vor der Freigabe wird bei jedem Objekt die Methode finalize aufgerufen. Prof. Dr. Nikolaus Wulff 31

32 Freispeicherverwaltung (2) Die virtuelle Maschine prüft, ob ein Objekt noch von Außen, d.h. ausgehend von der main Methode noch erreichbar ist. Ausgangspunkt main Speicher der Java Maschine X X Müll X X Prof. Dr. Nikolaus Wulff 32

33 Wiederverwendung Vier Alternativen der Wiederverwendung: Schreibe die Klasse komplett selber (keine echte Wiederverwendung). Kaufe die fertige Klasse und nutze sie so (volle Wiederverwendung). Benutze eine vorhandene Klasse und binde sie in einer Komposition in Deine Klasse ein. Benutze eine vorhandene Klasse, indem Deine Klasse von ihr erbt und bestimmte Attribute/Methoden ergänzt oder überschreibt. Dies gilt sowohl für einzelne Klassen als auch für Rahmenwerke (Frameworks) und Bibliotheken. Prof. Dr. Nikolaus Wulff 33

34 Komposition vs. Vererbung Auto Reifen[] Shape draw() erase() Fenster[] Tuer[] Motor Circle draw() erase() Square draw() erase() Line draw() erase() Komposition: hat ein besteht aus Vererbung: ist ein verschiedene Objekte/Klasse haben gemeinsame Eigenschaften Prof. Dr. Nikolaus Wulff 34

35 Komposition MeineKlasse Vorhandene Klasse Vorhandene Klasse Vorhandene Klasse Vorhandene Klasse... class Auto { Motor motor = new Motor(100); Reifen[] reifen = new Reifen[4];... Ein komponiertes (aggregiertes) Objekt hat Objekte vorhandenener Klassen als Attribute. hat ein oder besteht aus Flexibilität: Die Objekte können zur Laufzeit ausgewechselt werden. Die Komponenten werden meist im Konstruktor übergeben oder erzeugt. Prof. Dr. Nikolaus Wulff 35

36 Vererbung: Motivation class Person{ String name; String vorname; int alter; String getname(){... String getid(){... class Angestellter { String name; String vorname; int alter; int uid; String getname(){... String getid(){... class Mitglied { String name; String vorname; int alter; int tarifgruppe;... String getname(){... String getid(){... int gettarif(){... Subklasse Mitglied tarifgruppe gettarif() Person name... getname() getid() Angestellter uid getid() Superklasse Prof. Dr. Nikolaus Wulff 36

37 Vererbung: Semantik Ist ein Person name vorname alter Die Attribute und Methoden aus der Superklasse sind automatisch auch in der Subklasse vorhanden. getname() getid() Mitglied tarifgruppe gettarif() Angestellter uid getid() Ererbte Methoden können in der Subklasse redefiniert werden, z.b. um eine andere Id zu implementieren (Uxxxxxx). Prof. Dr. Nikolaus Wulff 37

38 Vererbung: Syntax class Person { String name; String vorname; int alter; String getname(){... String getid(){... class Mitglied extends Person { int tarifgruppe; neue Attribute hinzufügen String gettarif(){... neue Methoden hinzufügen class Angestellter extends Person { int uid; String getid(){... redefiniert Person.getId() derselbe Methodenname dieselbe Parameterliste derselbe Rückgabetyp Prof. Dr. Nikolaus Wulff 38

39 Komposition vs. Vererbung Ist ein Auto ein Motor? Motor Auto Auto Reifen[] Fenster[] Tuer[] Falsch! Richtig Reifen[] Fenster[] Tuer[] Motor Ein Motor wird gestartet, ein Auto wird gestartet: Ist deshalb ein Auto so etwas wie ein Motor? Generell: Komposition ist flexibler als Vererbung (Laufzeit vs. Übersetzungszeit). Prof. Dr. Nikolaus Wulff 39

40 Verwendung von final Finale Methoden können in Subklassen nicht überschrieben (redefiniert) werden. final void print() {... private Methoden sind implizit final. finale Parameter: Dem Parameter darf innerhalb des Methodenrumpfes kein neuer Wert zugewiesen werden. void print(final int anzahl) {... Von einer finalen Klassen kann keine Subklasse gebildet werden. final class Angestellter {... Prof. Dr. Nikolaus Wulff 40

41 Polymorphismus Substitutierbarkeit: Wann immer ein Objekt der Superklasse erwartet wird (als Parameter, Empfänger einer Nachricht,...), kann ein Objekt einer Subklasse benutzt werden. Beispiel: Wenn eine Person angezeigt werden soll, kann auch ein Mitglied (Angestellter,...) angezeigt werden. a Circle draw() erase() : Shape a Square a Line Prof. Dr. Nikolaus Wulff 41

42 Upcast void moveshape(shape s) {...; s.draw(); Cast nach oben in der Vererbungshierarchie Shape draw() erase() Circle draw() erase() Square draw() erase() Line draw() erase() Referenz auf das Circle-Objekt Shape s = (Shape)new Circle(); // explizit moveshape(new Circle()); // implizit Prof. Dr. Nikolaus Wulff 42

43 Statisches vs. Dynamisches Binden f()... f()... f() Funktion f Aufrufe statisch an die Funktion gebunden zur Übersetzungszeit shape.draw()... shape.draw()... shape.draw() Dynamischer Binde- Mechanismus zur Laufzeit Circle draw() Square draw() Line draw() Prof. Dr. Nikolaus Wulff 43

44 Abstrakte Klassen Abstrakte Klassen können abstrakte Methoden enthalten, d.h. Methoden ohne Methodenrumpf. Andere Methoden und Daten können definiert sein. abstract class ColouredShape { private Colour c; public abstract void draw(); public Colour getcolour() { return c; public abstract void erase(); Abstrakte Methoden Abstrakten Klassen können nicht instanziert werden. Subklassen müssen die abstrakten Methoden implementieren - oder sie sind selber abstrakt. Prof. Dr. Nikolaus Wulff 44

45 Template Pattern In einer abstrakten Klasse können die abstrakten Methoden von anderen Methoden benutzt werden. abstract class PrintTemplate { protected abstract void printheader(); protected abstract void printfooter(); protected abstract void printcontent(); public void print(){ printheader(); printcontent(); printfooter(); Prof. Dr. Nikolaus Wulff 45

46 Innere Klassen Verschachtelte Klasse einer anderen Klasse. class Person { class Adresse { class Person { public String doit(final int i) { class Adresse {... i Der Klassenname ist versteckt. Objekte der inneren Klasse können auf Attribute, Methoden der umgebenden Klasse zugreifen. Wenn eine innere Klasse innerhalb einer Methode definiert wird, kann sie auf die Parameter und lokalen Variablen der Methode zugreifen, wenn diese final sind. Prof. Dr. Nikolaus Wulff 46

47 Anonyme innere Klassen Innere Klassen könne auch anonym sein. new WindowListener(){ public void onclose() {... class MyWindowListener extends WindowListener { public void onclose() {... new MyWindowListener(); Prof. Dr. Nikolaus Wulff 47

48 Schnittstellen Schnittstellen enthalten keine Implementationen, sondern nur Methodensignaturen und Konstanten (statische, finale Attribute). Methodensignatur : = Rückgabetyp + Methodenname + Parameterliste interface Shape { Point zero = Point(0,0); void erase(); void draw(); automatisch static & final automatisch public Eine Schnittstelle kann von einer oder mehreren Schnittstellen erben. interface ColouredShape extends Shape, Colour {... Prof. Dr. Nikolaus Wulff 48

49 Schnittstellen und Implementierung Eine Schnittstelle legt ein Protokoll (verstandene Nachrichten) fest. Eine Klasse kann eine oder mehrere Schnittstellen implementieren. Schnittstellen class Circle implements Shape, Persistent { pivate int radius; public void erase() {... public String draw() { aus Shape... public int getradius(){... Prof. Dr. Nikolaus Wulff 49

50 Übung Erstellen und testen (wie?) Sie den Code für das folgende Klassenmodell: painter + Painter + Paintable (from painter) Painter paintables : Paintable[] drawall() addpaintable() 0..* <<Interface>> Paintable (from painter) draw() Achtung: zwei verschieden Pakete für Painter und alle Shapes! (from sha pes) type : String Shape Shape(type : String) <<abstract>> draw() : void shapes + Shape + Circle + Square + Line Circle (from shapes) Square (from shapes) Line (from shapes) Prof. Dr. Nikolaus Wulff 50

51 Tip Schreiben Sie eine Main Klasse, die den Painter mit Shapes initialisiert und dann die drawall Methode aufruft. Die draw Methode der Shapes gibt einfach per System.out.println den Typ aus. Die Zeichenobjekte werden in einem Array verwaltet, dieses muss dynamisch wachsen! Verwenden Sie ein temporäres Hilfsarray. (Später lernen Sie Collection Klassen kennen, die uns genau diese Arbeit abnehmen...) Prof. Dr. Nikolaus Wulff 51

52 Übung Erstellen Sie eine Dokumentation der Klassen: %SRC%>javadoc -d../doc * Navigieren Sie in der Klassendokumentation und passen Sie die Kommentare in Ihren Methoden und Klassen an. Erkunden Sie die verschiedenen Möglichkeiten, die javadoc bietet (javadoc -? bietet Hilfe) Javadoc läßt sich auch als Tool in Eclipse integrieren: Run External Tools External Tools... Programm New Location: %JAVA_HOME%\bin\javadoc.exe Working Dir: ${project_loc\src Arguments: -d ${project_loc\doc * Prof. Dr. Nikolaus Wulff 52

53 Package Übersicht Prof. Dr. Nikolaus Wulff 53

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

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

Probeklausur: Programmierung WS04/05

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

Mehr

Kapitel 6. Vererbung

Kapitel 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

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

Kapitel 6. Vererbung

Kapitel 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

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

Kapitel 6. Vererbung

Kapitel 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

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

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

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

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

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

Mehr

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Mehr

Klassenbeziehungen & Vererbung

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

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java 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

Mehr

5.6 Vererbung. Vererbung

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

Mehr

Programmieren in Java

Programmieren 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

Mehr

5.4 Klassen und Objekte

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

Java für Computerlinguisten

Java 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

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java 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

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Klassen in Java. Klassen

Klassen 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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java 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

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

Vererbung & Schnittstellen in C#

Vererbung & 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

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 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

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

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, 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:

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

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

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

Mehr

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

Mehr

Repetitorium Informatik (Java)

Repetitorium 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

Einstieg in die Informatik mit Java

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

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [2P] Welcher fundamentale Unterschied besteht zwischen dem Zweck eines Computer von dem Zweck anderer Maschinen (etwa einer

Mehr

Programmieren I. Kapitel 8. Vererbung

Programmieren I. Kapitel 8. Vererbung Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte

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

Software Engineering Klassendiagramme Einführung

Software 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

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Javakurs für Anfänger

Javakurs 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

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

Algorithmen und Datenstrukturen 07

Algorithmen 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

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. 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,

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 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

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

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

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

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

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

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

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test 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

Mehr

3. Konzepte der objektorientierten Programmierung

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

Mehr

Interfaces und Vererbung

Interfaces und Vererbung Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren

Mehr

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

Probeklausur: Programmierung WS04/05

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

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

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

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

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

Mehr

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt Inhalt 1. Einführung 2. Array-Komponenten von elementaren Datentypen 3. Array-Komponenten sind Objekte 4. Array als Parameter 5. Kopieren von Arrays 6. Beispiel 7. Vector versus Array Folie 1 Lernziele

Mehr

Enumerations und innere Klassen

Enumerations und innere Klassen Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung

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

II.1.1. Erste Schritte - 1 -

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

Mehr

Theorie zu Übung 8 Implementierung in Java

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

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 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

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

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

Info B VL 8: Abstrakte Klassen & Interfaces

Info B VL 8: Abstrakte Klassen & Interfaces Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

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

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prü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,

Mehr

Javakurs zu Informatik I. Henning Heitkötter

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

Mehr

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

Mehr

6. Globalübung (zu Übungsblatt 8)

6. Globalübung (zu Übungsblatt 8) 6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

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

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

Mehr

FHZ. Man unterscheidet ein- und mehrdimensionale Arrays. Bei einem mehrdimensionalen Array sind die Komponenten wiederum Arrays.

FHZ. Man unterscheidet ein- und mehrdimensionale Arrays. Bei einem mehrdimensionalen Array sind die Komponenten wiederum Arrays. 1 Einführung Ein Array (Feld) enthält eine Anzahl von gleichartigen Komponenten (Elemente), die nicht via Namen, sondern über einen Index zugegriffen werden. Komponenten können von einem elementaren Datentyp

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

1 Polymorphie (Vielgestaltigkeit)

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

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

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

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java 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

Mehr

Klassen mit Instanzmethoden

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

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

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

Mehr

Objekt-Orientierte Programmierung

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

Mehr

Android will doch nur spielen. Java Eine kurze Einführung

Android will doch nur spielen. Java Eine kurze Einführung Android will doch nur spielen Java Eine kurze Einführung Agenda Einführung in Java Syntax und Semantik Komplexe Datenstrukturen OOP Weitere Java-Elemente 2 Einführung in Java Was ist Java? lt. Sun: einfach

Mehr

Abschnitt 6: Klassen, Objekte und Methoden in Java

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

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces 10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:

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

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

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

Mehr

Ü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

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus

Mehr

Javakurs für Anfänger

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

Mehr