Vorlesung Programmieren

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Programmieren"

Transkript

1 Vorlesung Wintersemester 2006/2007 Computerlinguistik, Campus DU

2 Überblick Seite 2 Rest der letzten Vorlesung: Kapselung final Abstrakte Klassen Interfaces Vector

3 Kapselung Bisher kein wesentlicher Unterschied zwischen Direkt- und Methodenzugriff auf Attribute Wünschenswert: Garantiert kontrollierter Zugriff, um Daten vor Direktzugriff zu schützen Umsetzung: Kapselung Ausschließlich kontrollierten Zugriff auf Attribute nur über die dazugehörigen Methoden erlauben M.a.W.: Attribute»verstecken«und via Methoden darauf zugreifen Zugriffsrechte via Attribut-/Methodenmodifier: public, private, protected,»«(package-private) Seite 3

4 HackTest.java package kapselung; class BankKonto { public String inhaber; public double saldo; public int dispo; public BankKonto(String inhaber, double saldo, int dispo) { this.inhaber = inhaber; this.saldo = saldo; this.dispo = dispo; public void auszahlen( int cash ){ saldo -= cash;»kontrollierter«zugriff, aber public class HackTest{ public static void main ( String[] args ){ BankKonto ba = new BankKonto( "Joe Woh", 12000, 5000); ba.auszahlen( 500 ); ba.saldo += ; Seite 4

5 Die Zugriffsmodifier private int x; Zugriff nur innerhalb der Klasse erlaubt. public int y; Zugriff für alle/von überall erlaubt. protected int z; Zugriff erlaubt für abgeleitete Klassen und das Paket. Abgeleitete Klassen können sich auch in anderen Paketen befinden. int a; Ohne Angabe (package): Zugriff nur innerhalb des aktuellen Pakets. Seite 5

6 Geschützte Bankdaten package kapselungbesser; class BankKonto { private String inhaber; private double saldo; private int dispo; public BankKonto(String inhaber, double saldo, int dispo) { // Alles beim Alten... public void auszahlen( int cash ){saldo -= cash; public double getsaldo( ) {return saldo; public class HackTest{ public static void main ( String[] args ){ BankKonto ba = new BankKonto( "Joe Woh", 12000, 5000); ba.auszahlen( 500 ); ba.saldo += ; // --> Kompilierungsfehler (Lesender) Zugriff auf saldo von außerhalb: Nur noch via getter-methode System.out.println(ba.saldo); // --> Kompilierungsfehler //Ausschließlich (lesender) Zugriff via getsaldo(): System.out.println( ba.getsaldo() ); Seite 6

7 Typecast-Operator, Typkonversion Bereits bekannt: Implizite Typkonversion von int zu double-werten: int x = 12; double y = 0; y = x; // y jetzt 12.0 Explizite Typumwandlungen via Typecast-Operator Der Ausdruck (type) a wandelt den Ausdruck a in einen Ausdruck vom Typ type um. Das Ergebnis von (type) a ist ein Ausdruck, der nur auf der rechten Seite eines Zuweisungsoperators stehen darf! Der Type-Cast-Operator wird benutzt, wenn der Compiler keine implizite Konvertierung vornimmt Bsp.: Zuweisung von größeren an kleinere numerische Typen, oder bei der Umwandlung von Objekttypen (nächste Seite) int x = 12; double y = 3.9; x = (int) y; // x jetzt 3 Seite 7

8 Repository.java public class Repository { public static void main(string[] args){ Person[] repository = new Person[3]; Seite 8 repository[0] = new Person("Tick", " ", 'f'); repository[1] = new Student("Donald"," ",'m',111); repository[2] =new Lecturer("Dagobert", " ", 'm',9877,75500); System.out.println( repository[1].tostring() ); System.out.println( repository[2].tostring() ); System.out.println( repository[2].salary ); Was ist mit salary in Lecturer-Objekten? if ( repository[2] instanceof Lecturer ){ Lecturer lec = (Lecturer) repository[2]; System.out.println( lec.salary ); // Kompakter: System.out.println( ((Lecturer) repository[2]).salary ); (Explizite) Typkonversion Erst Testen, ob de facto eine Instanz von Lecturer vorliegt. Ohne Abfrage kann es zum Laufzeitfehler kommen, wenn dem nicht so ist.

9 Kapselung: Definition Kontrollierter Zugriff auf Methoden bzw. Attribute von Klassen durch explizite Zugriffsrechte. Klassen können den internen Zustand anderer Klassen nicht in unerwarteter Weise lesen oder ändern. Eine Klasse hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit der Klasse interagiert werden kann. Vom Innenleben einer Klasse soll möglichst viel verborgen werden und der Anwender auch wenig wissen müssen. Durch die Kapselung werden nur Informationen über das "Was" einer Klasse (was es leistet) nach außen sichtbar, nicht aber das "Wie" (die interne Repräsentation). Dadurch wird eine Schnittstelle nach außen definiert und zugleich dokumentiert. Seite 9

10 Schlüsselwort final Elemente mit dem Schlüsselwortfinal können nicht mehr weiter modifiziert werden final vor Klassendefinition: Von der Klasse können keine Subklassen gebildet werden (Bsp. java.lang.string) final vor Methodendefinition: Die Methode kann in Subklassen nicht überschrieben werden final vor Attributen: Der Wert des Attributs kann nicht verändert werden, final dient also zur Deklaration von Konstanten Seite 10

11 Gute Gründe für final Klassen? Gutes objektorientieres Design: Ihre Klasse scheint Ihnen so»perfekt«zu sein, dass Erweiterungen über Subklassenbildung unsinnig sind/zu verhindern sind. Erhöhung der Systemsicherheit, indem bspw.»system subversion«verhindert wird: Subklasse einer Klasse bilden, und die originale Klasse durch die Subklasse zu ersetzen Die Subklasse»fühlt sich an«wie das Original, vollzieht jedoch ganz andere Dinge, die wohlmöglich Schaden anrichten Seite 11

12 final-beispiel Seite 12 class MyClass { final int CONSTANT = 0; public final void test() { CONSTANT = 1; MyFinalClass kann nicht mehr vererbt werden Kompilierungsfehler Deklaration und Initialisierung im Klassenrumpf, außerhalb von Methoden! test()kann nicht mehr überschrieben werden final class MyFinalClass extends MyClass { public void test() { System.out.println("Hallo"); class TestClass extends MyFinalClass { Kompilierungsfehler beim Versuch, einefinal- Methode zu überschreiben Kompilierungsfehler beim Versuch, einefinal-klasse abzuleiten

13 Weitere Abstraktionsmittel in Java Bereits bekannt: Sub- und Superklasse, Vererbung Weitere Abstraktionsmittel: Abstrakte Methoden und Klassen Abstrakte Methoden: Methoden ohne Implementierung Abstrakte Klassen: Keine Objekterzeugung möglich, da sie unter anderem abstrakte, nicht-implementierte Methoden enthalten! Wichtig: Enthält eine Klasse eine abstrakte Methode, muss sie die gesamte Klasse abstract deklariert werden Interfaces Ein Interface ist eine besondere Form einer Klasse, die ausschließlich abstrakte Methoden und Konstanten enthält. Seite 13

14 Motivationszenario Mitarbeiterdatenbank Fiktives Programm zur Verwaltung von Angestellten, Arbeitern, und Managern Alle Mitarbeitertypen haben Gemeinsamkeiten: Personalnummer, Name, Eintrittsdatum Die drei Typen haben auch jeweils Spezialisierungen: Arbeiter: Stundenlohn, Überstundenzuschlag, Überstunden, Schichtzulage Angestellter: Grundgehalt, Ortszuschlag, Zulage Manager: Fixgehalt, Provision, Umsatz Als Aktion haben alle die Berechnung des monatlichen Gehalts gemein. Die konkrete Realisierung der Berechnung ist jedoch bei allen unterschiedlich. Arbeiterlohn: stundenlohn * anzahlstunden + überstunden * Angestelltenlohn: grundgehalt + ortszuschlag + zulage Managerlohn: fixgehalt + umsatz * provision / 100 * 2 Seite 14

15 Lösungsansatz Individuengruppen als Klassen implementieren Vererbung, um allgemeine Eigenschaften einmalig festzuhalten: Code-Verdoppelung vermeiden Fraglich: Welcher der Klassen soll die Oberklasse bilden, wenn alle bereits (relativ) spezifisch sind? Vererbung von Arbeiter zu Angestellter. Problem: Angestellte haben keinen Stundenlohn Arbeitslohn wird anders berechnet, Methode muss überschrieben werden Wünschenswert: Oberklasse nur mit den allgemeinsten Eigenschaften Monatslohn-Methode ohne konkrete Implementierung Seite 15

16 Lösung: Abstraktion via abstract Erstellen einer neuen Basisklasse Mitarbeiter abstract class Mitarbeiter {... Mitarbeiter enthält die allgemeinen Eigenschaften der Mitarbeitergruppen Angestellter, Arbeiter, Manager int persnr; String name; Date eintritt; eine abstrakte, nicht-implementierte Methode zur Lohnberechung public abstract double monatsbrutto(); Von abstrakten Klassen können keine Objekte erzeugt werden. Cool, denn die Firmenposition»Mitarbeiter«gibt es in der Firma gar nicht Seite 16

17 Mitarbeiter.java Seite 17 package abstraction; import java.util.date; abstract class Mitarbeiter { int persnr; String name; Date eintritt; public abstract double monatsbrutto(); Eine abstrakte Methode Ganze Klasse muss abstract deklariert sein Wichtig: Abstrakte Methoden müssen von abgeleiteten Klassen implementiert werden, oder die Klasse muss ebenfalls abstract sein! Rumpf( -klammern { ) bei der Definition abstrakter Methoden stets weglassen! public String tostring(){ return name+", "+", "+eintritt.tostring(); Abstrakte Klassen können auch nicht-abstrakte Methoden enthalten!

18 Arbeiter.java Seite 18 package abstraction; class Arbeiter extends Mitarbeiter { double stundenlohn; double anzahlstunden; double ueberstundenzuschlag; double anzahlueberstunden; double schichtzulage; Ableitung abstrakter Klassen wie gehabt via Schlüsselwort extends: Arbeiter erbt hier alles von Mitarbeiter. public double monatsbrutto() { return stundenlohn * anzahlstunden + ueberstundenzuschlag * anzahlueberstunden + schichtzulage; monatsbrutto() wurde implementiert, Manager muss nicht abstract deklariert werden!

19 Angestellter.java Seite 19 package abstraction; class Angestellter extends Mitarbeiter { double grundgehalt; double ortszuschlag; double zulage; public double monatsbrutto() { return grundgehalt + ortszuschlag + zulage; monatsbrutto() muss implementiert werden, da Angestellter sonst abstract sein muss! Folge: Man müsste wieder ableiten, um ein Objekterzeugende Klasse zu haben.

20 Manager.java Seite 20 package abstraction; class Manager extends Mitarbeiter { double fixgehalt; double provision; double umsatz; public double monatsbrutto() { return fixgehalt+umsatz*provision/100*2; monatsbrutto() implementiert, da Manager die Ableitung einer abstrakten Klasse ist!

21 Polymorphismus Polymorphismus: Bedingte Fähigkeit, Objektvariablen Werte mit unterschiedlichen Typen zuweisen zu können. Wie kann das im Mitarbeiter-Szenario nützlich sein? Beispiel Gehaltsabrechnung: Alle Mitarbeitertypen können in einer Datenstruktur gehalten werden (Array) Der deklarierte Typ der Elemente im Array ist dann»allgemein«: Mitarbeiter Beim direkten Zugriff auf die Array-Elemente stehen die in der Basisklasse definierten Eigenschaften zur Verfügung, u.a. monatsbrutto Zur Laufzeit ist dann bekannt, welcher abgeleitete Typ hinter jedem einzelnen Array-Element steht, und das Laufzeitsystem ruft die darin implementierte Variante der Methode monatsbrutto auf. Seite 21

22 Gehaltsberechnung.java package abstraction; public class Gehaltsberechnung { private static final int ANZ_MA = 100; private static Mitarbeiter[] ma; private static double bruttosumme; public static void main(string[] args){ ma = new Mitarbeiter[ANZ_MA]; //Mitarbeiter-Array füllen, z.b. Manager mana = new Manager(); //... mana.fixgehalt = 1000; //... ma[0] = mana;//... Polymorphismus: Unabhängig davon, ob Arbeiter, Angestellter oder Manager, führt der Aufruf von monatsbrutto dank dynamischer Methodensuche die zum Typ des konkreten Objekts passende Berechnung aus. //ma[1] = new Arbeiter(); ma[2] = new Angestellter();... //Bruttosumme berechnen bruttosumme = 0.0; for (int i=0; i<ma.length; ++i) { bruttosumme += ma[i].monatsbrutto(); System.out.println("Bruttosumme = "+bruttosumme); Seite 22

23 Fazit/Zusammenfassung (1) Eine abstrakte Klasse dient dazu, die Schnittstelle zukünftiger Unterklassen festzulegen Muster, das vorgibt, welche Methoden in Unterklassen implementiert werden müssen Definition einer Familie von Klassen, die alle eine bestimmte Menge von Nachrichten verstehen. Jede Klasse, die bspw. mit Mitarbeiter arbeiten kann, kann auch mit Unterklassen von Mitarbeiter arbeiten Man kann sich darauf verlassen, dass die Unterklassen auch die Methoden monatsbrutto haben! Seite 23

24 Fazit/Zusammenfassung (2) Hinzufügen von neuen Personaltypen via Ableitung erfordert keine Veränderung bei der Berechnung der monatlichen Bruttosumme: package abstraction; public class GFManager extends Manager { double gfzulage; public double monatsbrutto() { return super.monatsbrutto()+gfzulage; Mehrfachvererbung Seite 24 package abstraction; public class Gehaltsberechnung { //... main(string[]... ma[14] = new GFManager(); // Bruttosumme berechnen bruttosumme = 0.0; for (int i=0; i<ma.length; ++i) { bruttosumme += ma[i].monatsbrutto(); //... Alles beim Alten

25 Interfaces Interfaces sind eine besondere Form von Klassen. Enthalten ausschließlich abstrakte Methoden und Konstanten Anstelle des Schlüsselwortes class wird ein Interface mit dem Bezeichner interface deklariert. Alle Methoden eines Interfaces sind implizit abstrakt und öffentlich. Interfaces können Konstanten enthalten. (final xyz) Interfaces dürfen keine Datenfelder und Konstruktoren definieren. Interfaces können zunächst nicht instantiiert werden Klassen können mehrere Interfaces gleichzeitig implementieren Seite 25

26 Interface-Beispiel Das folgende Listing definiert ein Interface Groesse, das die drei Methoden laenge, hoehe und breite definiert: Seite 26 public interface Groesse { public int laenge(); public int hoehe(); public int breite(); Durch das bloße Definieren eines Interfaces wird die gewünschte Funktionalität noch nicht zur Verfügung gestellt, sondern lediglich beschrieben. Soll diese von einer Klasse tatsächlich realisiert werden, muss das Interface erst implementiert werden!

27 Implementierung von Interfaces Implementierung durch Erweiterung der class- Definition um eine implements-klausel class Golfplatz implements Groesse { Name des zu implementierenden Interfaces nach implements Die implementierende Klasse muss alle im Interface definierten Methoden implementieren Sonst musst die implementierende Klasse abstract sein Zusätzlich»verleiht«er der implementierenden Klasse einen neuen Datentyp, der - wie wir noch sehen werden - ähnliche Eigenschaften wie eine echte Klasse hat. Eine implementierende Klasse»besitzt«demnach den eigenen Typ, sowie den Typ des Interfaces Beispielimplementierungen Auto, Fußballplatz, Papier Seite 27

28 Auto.java public class Auto implements Groesse { public String name; public int erstzulassung; public int leistung; public int laenge; public int hoehe; public int breite; Seite 28 public int laenge() { return this.laenge; public int hoehe() { return this.hoehe; public int breite() { return this.breite;

29 FussballPlatz.java Seite 29 public class FussballPlatz implements Groesse { private final int LAENGE = ; private final int BREITE = 70000; public int laenge(){ return LAENGE; public int hoehe(){ return 0; public int breite() { return BREITE;

30 Papierblatt.java public class Papierblatt implements Groesse { Seite 30 public int format; //0=DIN A0, 1=DIN A1 usw. public int laenge() { int result = 0; if (format == 0){result = 1189; else if (format == 1){result = 841; else if (format == 2){result = 594; //usw... return result; public int hoehe() { return 0; public int breite() { int ret = 0; if (format == 0) {ret = 841; else if (format == 1) {ret = 594; else if (format == 2) {ret = 420; //usw... return ret;

31 Gemeinsamkeiten, Erweiterung des Beispiels Wichtigste Gemeinsamkeit zwischen abstrakten Klassen und Interfaces: Beide können im Programm zur Deklaration von lokalen Variablen, Membervariablen oder Methodenparametern verwendet werden. Eine Interface-Variable ist kompatibel zu allen Objekten, deren Klassen dieses Interface implementieren. Folge hier: Effiziente Berechnung der Flächen von Autos, Fußballplätzen, Papier via Methode möglich. Methodenparameter benötigt lediglich den Typ des Interfaces (Groesse) Seite 31

32 FlaechenCalc.java»Eine Interface-Variable ist public class FlaechenCalc { kompatibel zu allen Objekten, public static long grundflaeche( Groesse g ) { deren Klassen dieses Interface return (long)g.laenge() * g.breite(); implementieren.«rufen zur Laufzeit die public static void main(string[] args) { tatsächlichen Methoden von Auto auto = new Auto(); //Zuerst ein Auto... Auto, Blatt, auf auto.laenge = 4235; auto.hoehe = 1650; auto.breite = 1820; Papierblatt blatt = new Papierblatt(); blatt.format = 1; //Ein DIN A1-Blatt... FussballPlatz platz = new FussballPlatz(); System.out.println("Auto: " + grundflaeche(auto)); System.out.println("Blatt: " + grundflaeche(blatt)); System.out.println("Platz: " + grundflaeche(platz)); Seite 32 auto, blatt, platz: Zwar unterschiedliche Klassen, implementieren jedoch alle Groesse Auto: Blatt: Platz:

33 Zusammenfassung/Fazit des Beispiels Nützlich ist ein Interface immer dann, wenn Eigenschaften einer Klasse beschrieben werden sollen, die nicht direkt in seiner normalen Vererbungshierarchie abgebildet werden können. Autos, Fußballplätze, Papier als Subklasse einer (abstrakten) Klasse Groesse? Wäre möglich, allerdings kann dann nichts anderes geerbet werden. Durch Implementieren des Groesse-Interfaces wird die Verfügbarkeit der drei Methoden laenge, hoehe und breite unabhängig von der eigenen Vererbungslinie garantiert: Auto leitet sich bspw. von Fahrzeug ab, Fußballplatz von Sportplatz, etc. Seite 33

34 Interfaces und instanceof instanceof-operator funktioniert auch mit Interfaces Erlaubt alternative Implementierung der Methode grundflaeche, die mit allen Objekttypen funktioniert: public static long grundflaeche( Object o ) { long ret = 0; if (o instanceof Groesse) { Groesse g = (Groesse)o; ret = (long)g.laenge() * g.breite(); return ret; Diese Implementierung verhält sich für alle Objekte, die das Interface Groesse implementieren, so wie die vorige. Für alle übrigen Objekte wird 0 zurückgegeben. Seite 34

35 FlaechenKalc.java public class FlaechenKalc { public static long grundflaeche( Object o ) { long ret = 0; if (o instanceof Groesse) { Groesse g = (Groesse)o; ret = (long)g.laenge() * g.breite(); return ret; public static void main(string[] args) { Auto auto = new Auto(); auto.laenge = 4235; auto.hoehe = 1650; auto.breite = 1820; Papierblatt blatt = new Papierblatt(); blatt.format = 1; FussballPlatz platz = new FussballPlatz(); System.out.println("Auto: "+ grundflaeche(auto)); System.out.println("Blatt: "+ grundflaeche(blatt)); System.out.println("Platz: "+ grundflaeche(platz)); System.out.println("Platz: "+ grundflaeche(new FlaechenKalc())); War vorher nicht möglich, da nur Groesse-implementierende Argumenttypen erlaubt waren! Seite 35

36 Mehrfachimplementierung public class Auto implements Groesse, Gewicht, Vermietung {... Seite 36

37 Die Klasse Vector Die Klasse Vector ist die Java-Repräsentation einer linearen Liste, und ihre Länge ist zur Laufzeit veränderbar. Vector erlaubt das Einfügen von Elementen an beliebiger Stelle und bietet sowohl sequentiellen als auch wahlfreien Zugriff auf die Elemente. Neue Elemente können wahlweise an das Ende des Vektors oder an einer beliebigen anderen Stelle eingefügt werden. Vector erlaubt die Speicherung beliebiger Objekttypen, denn die Einfüge- und Zugriffsmethoden arbeiten mit Instanzen der Klasse Object. Da jede Klasse letztlich aus Object abgeleitet ist, können auf diese Weise beliebige Objekte in die Liste eingefügt werden Konsequenz: Mit Hilfe des Typkonvertierungsoperators müssen im Vector abgelegte Objekte dann in das ursprüngliche Objekt zurückverwandelt werden. Die Verantwortung für korrekte Typisierung liegt damit beim Entwickler. Mit Hilfe des Operators instanceof kann bei Bedarf zumindest eine Laufzeit- Typüberprüfung vorgeschaltet werden. Seite 37

38 Wichtige Vector-Methoden Vector() Konstruktor, erzeugt leeren Vector void add( int index, Object Element) Fügt Objekt an Position index ein Elemente werden nicht überschrieben, sondern»rücken«eine Position weiter boolean add( Object o ) Fügt o am Ende der Liste ein Object elementat( int index ) Gibt Element an Position index zurück int size() Anzahl der Elemente Object toarray() Gibt Vector-Inhalt als Array zurück Seite 38

39 VectorTest.java import java.util.vector; class Katze{ String name; Katze(String name){this.name=name;; class Ball{ String farbe; Ball(String color){this.farbe=color;; public class VectorTest { public static void main(string[] args) { Typecast Pflicht, da tatsächlicher Typ»vergessen«wurde Vector v = new Vector(); v.addelement(new Katze("Mung")); v.addelement(new Ball("rot")); for (int i=0; i<v.size(); i++ ) { if ( v.elementat(i) instanceof Katze ){ System.out.println(( (Katze)v.elementAt(i) ).name); else if ( v.elementat(i) instanceof Ball ){ System.out.println(( (Ball)v.elementAt(i) ).farbe); else { System.out.println("Unknown Type"); ; Kann ohne Überpfrüfung zum Laufzeitfehler führen, falls es keine Katze/kein Ball ist Seite 39

40 Organisatorisches Klausur Datum:11. Januar 2007 Zeit: 14 Uhr 16 Uhr Raum: LB 107 Seite 40 Testat Bereitstellung in der letzten Sitzung (Februar) Bearbeitungszeit: 2 Wochen Täuschungsversuche unerwünscht Täter und Opfer erhalten 0 Punkte

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

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

Inhalt. Informatik B Objektorientierte Programmierung in Java. Vorlesung 04: Objektorientierte Programmierung (Teil 4) Inhalt.

Inhalt. Informatik B Objektorientierte Programmierung in Java. Vorlesung 04: Objektorientierte Programmierung (Teil 4) Inhalt. Universität Osnabrück 1 Inhalt 3 Objektorientierte Programmierung in Java Interfaces Definition Verwendung Implementierung mehrerer Interfaces Vorlesung 04: Objektorientierte Programmierung (Teil 4) Konstanten

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

Abschnitt 12: Vererbung und Polymorphismus

Abschnitt 12: Vererbung und Polymorphismus Abschnitt 12: Vererbung und Polymorphismus 12. Vererbung und Polymorphismus 12.1 Das Konzept der Vererbung 12.2 Vererbung in Java 12.3 Abstrakte Klassen und Polymorphismus 12 Vererbung und Polymorphismus

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Teil 8: Interfaces Prof. Dr. Peer Kröger, Florian Richter, Michael Fromm Wintersemester 2018/2019 Übersicht 1. Einführung 2. Schnittstellen in Java 3. Exkurs: Marker-Interfaces

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Vererbung Polymorphie Packages Kapselung, Zugriffsmodifier OOP und Vererbung Grundlegender Mechanismus für hierarschische

Mehr

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 567

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 567 Überblick 6. Grundlagen der objektorientierten Programmierung 6.1 Abstrakte Datentypen: von Structures zu Klassen 6.2 Das objektorientierte Paradigma 6.3 Klassen und Objekte in Java 6.4 6.5 Interfaces

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

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1 Vererbung 1 11.1 Motivation und Begriffsdefinitionen 11.2 Vorgehensweise und Implementierung 11.3 Arten von Vererbung 11.4 Konstruktoren 11.5 Abstrakte Klasse 11.6 Verschattung 11.7 Wurzelklasse Object

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Info B VL 11: Innere Klassen/Collections

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

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

Informatik II Übung 6

Informatik II Übung 6 Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Die abstrakte Klasse Expression:

Die abstrakte Klasse Expression: Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

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

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette

Mehr

14. Java Objektorientierung

14. Java Objektorientierung Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen

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

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

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

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

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

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

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

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

Mehr

Abschnitt 14: Schnittstellen: Interfaces

Abschnitt 14: Schnittstellen: Interfaces Abschnitt 14: Schnittstellen: Interfaces 14. Schnittstellen: Interfaces 14.1 Die Idee der Schnittstellen 14.2 Schnittstellen in Java 14.3 Marker-Interfaces 14.4 Interfaces und Hilfsklassen 14 Schnittstellen:

Mehr

14. Java Objektorientierung

14. Java Objektorientierung Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

Mehr

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

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

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

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

14. Java Objektorientierung. Klassen, Vererbung, Kapselung 427 14. Java Objektorientierung Klassen, Vererbung, Kapselung Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen

Mehr

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor: 4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

1. Abstrakte Klassen

1. Abstrakte Klassen 1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,

Mehr

Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene

Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette Problem:

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

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

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

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

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

Klassen und Konstruktoren in Java

Klassen und Konstruktoren in Java Klassen und Konstruktoren in Java class Circle { int r; Circle(int r) { this.r = r; // 1 Circle(Circle c) { this.r = c.r; // 2 Circle() { r = 1; // 3...... Circle a = new Circle(2); // Konstruktor 1 Circle

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung Teil 7: Vererbung Prof. Dr. Peer Kröger, Florian Richter, Michael Fromm Wintersemester 2018/2019 Vererbung Vererbung ist die Umsetzung von is-a-beziehungen zwischen zwei

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Erste Java-Programme (Java Wiederholung & Vererbung)

Erste Java-Programme (Java Wiederholung & Vererbung) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

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

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

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

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

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1 Vererbung 1 11.1 Motivation und Begriffsdefinitionen 11.2 Vorgehensweise und Implementierung 11.3 Arten von Vererbung 11.4 Konstruktoren 11.5 Abstrakte Klasse 11.6 Verschattung 11.7 Wurzelklasse Object

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

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

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

Mehr

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

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

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

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

Mehr

Vorlesung 8. Sitzung Grundlegende Programmiertechniken

Vorlesung 8. Sitzung Grundlegende Programmiertechniken Vorlesung 8. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 OOP-Abstraktionsmittel:

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 11 Besprechung: 15. 19.01.018 (KW 3) Vorbereitende

Mehr

Vorlesung 9. Sitzung Grundlegende Programmiertechniken

Vorlesung 9. Sitzung Grundlegende Programmiertechniken Vorlesung 9. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 OOP Abstraktionsmittel:

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

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 018/19 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 11 Besprechung: 1. 5.01.019 (KW 4) Vorbereitende

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

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

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

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

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

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

Einführung in die Programmierung für NF. Vererbung Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden

Mehr

Implementieren von Klassen

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

Mehr

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017 Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden

Mehr

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete 2 Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, und Pakete Martin Wirsing Ziele Den Begriff der einfachen und mehrfachen Vererbung verstehen Verstehen, wann Vererbung eingesetzt wird deklarationen

Mehr