Teil 2: Objektorientierte Programmierung 2.3 Modularisierung Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt

Größe: px
Ab Seite anzeigen:

Download "Teil 2: Objektorientierte Programmierung 2.3 Modularisierung Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt"

Transkript

1 Grundzüge der Informatik Teil 2: Objektorientierte Programmierung 2.3 Modularisierung Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt

2 Java-Pakete: Überblick Pakete (Packages) ermöglichen: Bündeln von Klassen, die zu einem gemeinsamen Aufgabenbereich gehören Vermeiden von potentiellen Namenskonflikten Klassennamen müssen innerhalb eines Pakets eindeutig sein Ein Klassenname kann in anderen Paketen erneut verwendet werden Definition und Kontrolle von Zugriffen und Sichtbarkeit 2

3 Java-Pakete: Überblick Jede Klasse (und jede Schnittstelle) in Java ist Bestandteil genau eines Pakets Ist eine Klasse (oder eine Schnittstelle) nicht explizit einem Paket zugeordnet, dann gehört es implizit zu einem default-paket Paket-Hierarchie Pakete sind hierarchisch gegliedert ein Paket kann Unterpakete besitzen, die selbst wieder in Unterpakete aufgeteilt sind, usw. Punktnotation der Paketnamen paket.unterpaket1.unterpaket11.klasse Paketnamen sind sehr wichtig bei der Suche nach Klassen 3

4 Java-Pakete Zu welchem Paket eine Klasse gehört, wird in der zugehörigen.java-datei bestimmt Der Quelltext eines gesamten Java-Programms kann über mehrere Klassen und damit Dateien verteilt sein Typdefinitionen einer Datei können auch zu mehreren Programmen gehören (d.h. von ihnen verwendet werden) Wiederverwendung 4

5 Struktur einer.java-datei: Java-Pakete Source-File = [Package-Declaration] {Import-Declaration} { Class-Definition Interface-Definition }. Package-Declaration = "package" Package-Name ";". Package-Name = Identifier { "." Identifier }. Vor der Package-Declaration dürfen nur Kommentare und Leerzeilen stehen Nur eine Package-Declaration pro Datei Wird die Package-Declaration weggelassen, ist die Datei Element des Default-Pakets 5

6 Java-Pakete Paketdeklaration Der selbe Paketname kann in mehreren Dateien verwendet werden Typdefinitionen, die zu einem Paket gehören, können somit über mehrere Übersetzungseinheiten verteilt sein Kürzere Übersetzungszeiten Arbeitsaufteilung in großen Projekten wird unterstützt Paketname wird implizit jedem im Paket enthaltenen Typnamen vorangestellt Abtrennung durch einen Punkt Der vollständige Name einer Klasse ist packagename.classname 6

7 Import-Deklaration Java-Pakete Import-Declaration = "import" Package-Name "." (Class-Name "*") ";". Wird der Klassenname angegeben, kann auf diesen künftig ohne Angabe des Pakets zugegriffen werden Wird * angegeben, können sämtliche im Paket enthaltene Klassen ohne weitere Angabe des Paketnamens verwendet werden 7

8 Java-Pakete Nutzen von Klassen eines anderen Pakets Volle Qualifizierung der Klasse, z.b. java.util.random einzufall = new java.util.random(); import-anweisung, z.b. import java.util.random;... Random einzufall = new Random(); 8

9 Java-Pakete Nutzen von Klassen eines anderen Pakets import paket.* : alle Klassen des Pakets, z.b. import java.util.*;... Random einzufall = new Random(); Schlechter Stil: für Leser ist unklar, was gebraucht wird Nur wenn (fast) alle Typdefinitionen eines Pakets benötigt werden, ist die *-Form angebracht 9

10 Import von Paketen Durch die Verwendung von Import-Anweisungen können Namenskonflikte auftreten Existieren identische Typnamen in mehr als einer der importierten Pakete, muss bei der Verwendung dieser Namen immer das Paketpräfix benutzt werden, z.b. import java.awt.*; // Enthaelt eine Klasse List import java.util.*; // Enthaelt ebenfalls eine // Klasse List... java.util.list list; // Paketname verwenden um festzustellen, // welche List verwendet wird 10

11 Import von Paketen In jeder Datei werden einige Pakete automatisch importiert: Das eigene Paket Das vordefinierte Paket java.lang enthält elementare Klassen wie z.b. Object, String 11

12 Import von Paketen Zu Java gehören eine Vielzahl vordefinierter Pakete, die mit dem JDK ausgeliefert werden, z.b.: java.applet Applet-Unterstützung java.io Ein- und Ausgabe für Dateien java.net Netzwerkprogrammierung java.util Hilfsklassen, z.b. Zufallszahlengenerator java.util.zip Hilfsklassen zum Verwenden von.zip-dateien usw. 12

13 Paketbenennung Paketnamen spielen eine zentrale Rolle für die Vermeidung oder Auflösung von Namenskonflikten sollten bedeutungstragend sein sollten möglichst eindeutig sein, am besten weltweit Konventionen zur Konstruktion weltweit eindeutiger Paketnamen Der Paketname enthält als Präfix den Internet-Domain- Namen der Hersteller in umgekehrter Reihenfolge Bindestriche sind in Paketnamen nicht erlaubt Beispiele URL der Firma Sun: sun.com Klassen der Firma Sun: com.sun.paket1.paket11.klasse URL der TU Darmstadt: informatik.tu-darmstadt.de Klassen der TU Darmstadt: de.tudarmstadt.informatik.paket1.paket11.klasse 13

14 Paketbenennung Paketnamen und Dateisystemstrukturen Für die Zuordnung von Paketnamen zu Dateinamen müssen Punkte im Paketnamen durch das Trennzeichen des Betriebsystems ersetzt werden UNIX: / Slash Microsoft-Betriebsysteme \ Backslash Beispiel: Paketname: kilian.hobby.raytracer Zugehöriger UNIX-Verzeichnisname: kilian/hobby/raytracer Zugehöriger Windows-Verzeichnisname: kilian\hobby\raytracer 14

15 Suche nach Paket- und Typnamen Ein Paketname wird als relativer Pfadname aufgefasst Die Betriebssystemvariable CLASSPATH definiert die Verzeichnisse, ab denen ein Paketname gesucht wird Einträge in einer CLASSPATH-Spezifikation können Verzeichnisse, ZIP- oder JAR-Dateien sein, die Klassen enthalten Beispiel UNIX-Betriebssystem: CLASSPATH=.:/home/joe/classes:/usr/local/classes.zip Beispiel Windows-Betriebssystem Trennt einzelne Verzeichnisse set CLASSPATH=.;C:\joe\classes;D:\local\classes.zip 15

16 Suche nach Paket- und Typnamen Die Verzeichnisse aus CLASSPATH sind die Ausgangspunkte für den relativen Pfadnamen, der über den Paketnamen festgelegt ist Die Verzeichnisse aus CLASSPATH werden in der angegebenen Reihenfolge durchsucht (von links nach rechts) Prinzipiell können mehrere Verzeichnisse existieren, die über einen Paketnamen gefunden werden können Keine gute Idee, da es dann von der in CLASSPATH definierten Reihenfolge abhängt, welche Pakete (und damit Typdefinitionen) tatsächlich verwendet werden 16

17 Suche nach Paket- und Typnamen Eigene Pakete Der Compiler löst den hierarchischen Namen in eine Kette von Unterverzeichnissen auf Am Ende der Kette liegt die Quelldatei Neben der Quelldatei wird auch die Klassendatei in diesem Unterverzeichnis abgelegt 17

18 Suche nach Paket- und Typnamen Der Java-Compiler übersetzt eingebundene Quelldateien, die noch nicht übersetzt sind, automatisch mit, z.b.: package mypackage; import mypackage.subpackage.someclass; class MainClass { } private SomeClass xy; public static void main(string[] args) { }... Wird javac mypackage\mainclass.java aufgerufen, wird automatisch auch mypackage\subpackage\someclass.java compiliert 18

19 Kapselung Kapselung und Geheimnisprinzip (information hiding) Objekte kommunizieren miteinander über wohldefinierte Schnittstellen Jedes Objekt stellt den anderen Objekten nur die nötige Menge an Operationen zur Verfügung Verdeckt hinter dieser Schnittstelle: die interne Struktur und die aktuellen Werte der Attribute sowie die Implementierung der Operationen Was geht Dich meine Post an? 19

20 Kapselung Mehr Abstraktion, einfacher von den Klienten zu benutzen nicht geheim halten, sondern von unnötigen Details befreien! Verhindert unerlaubte Zugriffe von kritischen Daten Anpassbarkeit Zugriff nur über öffentliche Methoden (Schnittstelle) Realisierung der Schnittstelle ist austauschbar, ohne Änderungen in anderen getesteten und bewährten Klassen nachzuziehen 20

21 Kapselung Eine Analogie Bankautomaten haben eine Bedienungsschnittstelle Das Betätigen einer Funktionstaste - z.b. Auszahlung - entspricht dem Aufruf einer Methode des Bankautomat-Objekts Frau Schmidt ist der Sender und der Automat der Empfänger Die Eingabe des Betrags entspricht der Parametereingabe 21

22 Kapselung Frau Schmidt sieht nur die Bedienungsschnittstelle Sie hat keine Information darüber, wie der Automat intern aufgebaut ist Für sie ist es unmöglich, den Geldbehälter des Automaten anzuschauen, ob genügend 50 Euro- Scheine darin enthalten sind, und ihren Betrag selbst herauszuholen. 22

23 Kapselung leichter zu verwenden Frau Schmidt möchte die Details der internen Realisierung gar nicht wissen! verhindert unerlaubte Angriffe Nicht jeder sollte auf den Geldbehälter des Automaten zugreifen können! schützt Klienten vor Veränderungen in der Realisierung des Objektes Die Bank kann einen neuen Automaten aufstellen Solange die Bedienungsschnittstelle dieselbe bleibt, können Kunden die neue Implementierung ohne weiteres benutzen 23

24 Geheimnisprinzip class Auto { // Schnittstelle public Auto(String farbe, int geschwindigkeit, int tankinhalt) { this.tankinhalt = tankinhalt; this.farbe = farbe; this.geschwindigkeit = geschwindigkeit;... } // end constructor... // Implementierung (Modell) private int tankinhalt, geschwindigkeit; private String farbe;... } // end class Auto Schnittstelle 24

25 Geheimnisprinzip class Auto { // Schnittstelle public Auto(String farbe, int geschwindigkeit, int tankinhalt) { this.tankinhalt = tankinhalt r farbe = rot(f); = f; g = gruen(f);... this.geschwindigkeit = geschwindigkeit;... } // end constructor... // Implementierung (Modell) private int tankinhalt, geschwindigkeit; private int String r, g, farbe; b;... } // end class Auto 25

26 Geheimnisprinzip class Auto { // Schnittstelle public Auto(String farbe, int geschwindigkeit, int tankinhalt) { this.tankinhalt = tankinhalt r farbe = rot(f); = f; g = gruen(f);... this.geschwindigkeit = geschwindigkeit;... } // end constructor... // Implementierung (Modell) private int tankinhalt, geschwindigkeit; private int String r, g, b; farbe;... } // end class Auto Änderung der Implementierungsentscheidung nach außen nicht sichtbar Alle Klienten können unverändert weiter verwendet werden 26

27 Geheimnisprinzip Möglichkeiten zur Realisierung des Geheimnisprinzips Vertrauen: andere wissen, dass Geheimnisprinzip eine gute Idee ist sie sollten nur über Methoden auf Daten eines Objekts zugreifen Aber: wenn das jemand nicht weiß? Versehentliche Zugriffe? Dokumentieren, welche Elemente wichtig sind Bösartige Zugriffe auf das Modell? (Grund für viele Sicherheitslücken von Programmen) Programmiersprache muss Geheimnisprinzip unterstützen 27

28 Geheimnisprinzip Java bietet integrierte Sichtbarkeitsmodifikatoren Definieren Zugriffsrechte auf Elemente Die Programmiersprache erlaubt Zugriff auf Elemente nur für Klassen, die auch dürfen In EBNF als Visibility geschrieben (siehe Teil 1.4, 2.1) Sowohl Methoden, Konstruktoren und Attribute als auch Klassen können eine definierte Sichtbarkeit haben Modifikatoren für Methoden, Konstruktoren und Attribute (Wiederholung): "public" "protected" "private" (oder kein Modifikator) Modifikatoren für Klassen (Wiederholung): "public" (oder kein Modifikator) 28

29 Zugriffsrechte und Sichtbarkeit implizit (Ohne Angabe eines Modifikators) Das Element ist nur innerhalb des Pakets sichtbar, in dem die Klasse definiert ist Das gilt für Subklassen und Nicht-Subklassen Von außerhalb des Pakets ist kein Zugriff möglich 29

30 Zugriffsrechte und Sichtbarkeit private: Nur Objekte der selben Klasse dürfen auf das Element zugreifen weder andere Klassen, noch Erben class A { private void op1() {... } public void op2(a anaobject) { } }... anaobject.op1();... // OK 30

31 Zugriffsrechte und Sichtbarkeit protected: Alle Klassen im gleichen Paket dürfen auf das Element zugreifen, sowie alle Klassen, die davon erben (egal in welchem Paket definiert) public: Zugriff von überall erlaubt 31

32 Zugriffsrechte und Sichtbarkeit private implizit protected public Eigene Klasse Erben im gleichen Paket Im Paket Erbe in anderem Paket Im anderen Paket 32

33 Zugriffsrechte und Sichtbarkeit package package A; A; A; A; class public class AA AA { AC AC extends AA AA {{ { // public int intone; // one, one, two, two, four four } int inttwo; } two; private void voidthree() {{ }} package protected void voidfour() {{ } B; B; } class } BA BA extends AA AA {{ } // // one, one, four four }} package A; A; class AB AB {{ // // one, one, two, two, four four }} package B; B; class BB BB {{ // // one one }} 33

34 Zugriffsrechte und Sichtbarkeit UML-Darstellung von Sichtbarkeit UML bietet die Sichtbarkeiten public, protected und private public-elemente werden durch ein + gekennzeichnet protected-elemente werden durch # gekennzeichnet private-elemente werden durch gekennzeichnet Keine Kennzeichnung der Sichtbarkeit = Sichtbarkeit undefiniert Klassenname -privateattribute : Klasse1 #protectedattribute : int +publicmethode(x: int) : boolean 34

35 Zugriffsrechte und Sichtbarkeit Zugriffskategorien beim Überschreiben Beim Überschreiben einer Methode wird die geerbte Zugriffskategorie zunächst beibehalten Zugriffsrechte dürfen erweitert werden (z.b. public anstelle von protected) Zugriffsrechte nicht eingeschränkt werden Grund für diese Regel: Ersetzbarkeit Daher muss die Subklasse nach außen hin mindestens alles das zur Verfügung stellen, was auch ihr Vorfahr zur Verfügung stellt Beim Überschreiben darf der Zugriff daher nicht weiter eingeschränkt werden 35

36 Zugriffsrechte und Sichtbarkeit Zugriffskategorien beim Überschreiben private-elemente, die in Unterklassen neu definiert werden, dürfen eine beliebige Kategorie besitzen Grund: private-elemente sind außerhalb der definierenden Klasse nicht sichtbar Eine Subklasse sieht die Elemente nicht es ist, als ob es diese Elemente gar nicht gäbe 36

37 Zugriffsrechte und Sichtbarkeit Zugriffskategorien beim Überschreiben Methoden mit impliziter Zugriffskategorie können so bleiben oder als protected oder public überschrieben werden protected darf als public überschrieben werden public-methoden müssen public bleiben 37

38 Die Bedeutung der Zugriffsrechte Information Hiding (Parnas) Jedes Objekt enthält die Details seiner Realisierung Nach außen soll so wenig wie möglich von den Details der Realisierung sichtbar sein Vererbung bricht Kapselung Ein Erbe übernimmt die Implementierung seiner Vorfahren Führt eine Abhängigkeit zwischen Ahnen und Erben ein Regel: es ist sinnvoll, so viele Attribute und Methoden wie möglich mit dem Sichtbarkeitsmodifikator private zu deklarieren 38

39 Mehrfachvererbung Bisher: Vererbung = Objektmodellierung mittels hierarchischer Taxionomie Was passiert, wenn mehrere verschiedene Taxionomien verwendet werden sollen? Lebewesen Pflanzen Spielgefährte Säugetiere Haustier Hunde Katzen Haushund Lösung: Mit Mehrfachvererbung (Vielfachvererbung, Multiple Inheritance) kann eine Subklasse die Funktionalität mehrerer Basisklassen erben 39

40 Mehrfachvererbung Bei Mehrfachvererbung erben die Subklassen die Eigenschaften und Methoden aller Basisklassen Angesteller Studierender personalnr : String matrikelnr : String geburtsdatum : Date fachbereich : int gehalt() : int lerne() alter() : int HiWi Ein HiWi ist sowohl Angesteller als auch Studierender Erbt die Eigenschaften personalnr und geburtsdatum von Angestellter Erbt die Eigenschaften matrikelnr und fachbereich von Studierender Erbt die Methoden gehalt() und alter() von Angestellter Erbt die Methode lerne() von Studierender Ersetzbarkeit: Objekte der Klasse HiWi kann überall verwendet werden, wo Objekte der Klasse Angesteller oder der Klasse Studierender verwendet werden kann 40

41 Mehrfachvererbung Probleme bei Mehrfachvererbung Elemente mit gleichem Namen können in mehreren Basisklassen vorkommen Beispiel: Angestellter und Studierender sollen je um ein Attribut Name erweitert werden Angesteller personalnr : String geburtsdatum : Date name : String gehalt() : int alter() : int Studierender matrikelnr : String fachbereich : int name : String lerne() HiWi Welche Bedeutung hat HiWi.name??? 41

42 Mehrfachvererbung Probleme bei Mehrfachvererbung Sprachen mit Mehrfachvererbung bieten verschiedene Strategien 1. Mehrfache Kopie und explizite Basisklasse (z.b. C++) Die Subklasse erbt alle Elemente Die Elemente mit Konflikten werden über den Namen der Basisklasse unterschieden Beispiel: HiWi h = new HiWi(); h.angestellter::name = "Name"; h.studierender::name = "anderer Name"; Attribute mit gleichem Namen können verschiedene Werte haben 42

43 Mehrfachvererbung Probleme bei Mehrfachvererbung 2. Mehrfache Kopie und explizites Umbenennen (z.b. Eiffel) Die Subklasse erbt alle Elemente Bei Konflikten muss der Programmierer den problematischen Elementen neue Namen geben Beispiel (Java-ähnlich): class HiWi extends Angestellter, Studierender { } rename Angestellter.name -> aname; rename Studierender.name -> sname; Attribute erhalten neue Namen, können weiterhin unterschiedliche Werte enthalten Vorteil gegenüber 1 Vererbungshierarchie ist nicht nach außen sichtbar: kann geändert werden Information Hiding! 43

44 Mehrfachvererbung Probleme bei Mehrfachvererbung 3. Einfache Kopie (z.b. C++) Basisklassen haben ihrerseits eine gemeinsame Basisklasse Namen der Basisklasse werden mehrfach vererbt - Konflikt Die Elemente mit Konflikten werden vereinigt, es gibt nur ein Element Beispiel: HiWi erbt name sowohl von Angesteller als auch von Studierender Grund: beide erben von Person HiWi.name wird auf Person.name abgebildet, ist eindeutig Elegant, funktioniert aber nur bei derartigen Gabelungen Angesteller personalnr : String geburtsdatum : Date gehalt() : int alter() : int Person name : String HiWi Studierender matrikelnr : String fachbereich : int lerne() 44

45 Interfaces Mehrfachvererbung bringt Probleme, wenn ein Element mehrfach benannt vorkommen kann Besonders konfliktträchtig: Attribute kommen mehrfach vor Java unterstützt keine Mehrfachvererbung von Klassen mit Attributen Allerdings: mit Interfaces (Schnittstellen) kann man ähnliche Effekte erzielen 45

46 Interfaces Was sind Interfaces? definieren Dienstleistungen für andere Klassen, ohne die Implementierung der Dienstleistungen festzulegen stellen funktionale Abstraktionen bereit, d.h.: legen das Was fest, aber nicht das Wie nur das Äußere einer Klasse, das ein Nutzer (Client) wissen muss, nicht das Innere, das für Clients gemäß OOP ohnehin versteckt wird verhalten sich wie Klassen, die nur abstrakte Methoden enthalten Interfaces können von anderen Interfaces erben Zwischen Interfaces ist mehrfache Vererbung möglich UML Notation <<interface>> AnInterface amethod() 46

47 Interfaces EBNF Interface-Definition = ["public "] "interface " Interface-Name [Interface-Extension] "{" Interface-Body "}". Extension = "extends " Base-Interface {"," Base-Interface }. Interface-Body = { ["public "] Method-Header ";" }. 47

48 Interfaces Interfaces enthalten nur eine Schnittstellenbeschreibung Namenskonflikt zwischen Methoden von Interfaces implementierte Methode gilt alle deklarierenden Interfaces Beispiel public interface AInterface { public void methoda(); public void methodx(); } public interface BInterface { public void methodb(); public void methodx(); } 48

49 Beispiel (fortgesetzt) Interfaces public interface ABInterface extends AInterface, BInterface { } // enthält Methoden: // void methoda() von AInterface // void methodb() von BInterface // void methodx() von AInterface und BInterface 49

50 Interfaces Implementierung von Interfaces Interfaces werden von Java-Klassen implementiert Wenn eine Klasse eine Schnittstelle implementiert, dann muss sie alle Methoden der Schnittstelle implementieren Ansonsten ist Klasse abstrakt, Unterklassen müssen fehlende Methoden implementieren Auch leere Implementierungen sind erlaubt, z.b. durch {} 50

51 Interfaces Implementierung von Interfaces - Notation Java: Interfaces werden nach dem implements Schlüsselwort in der Klassendefinition angegeben UML: Durch gestrichelte Linie des Vererbungspfeils <<interface>> AnInterface AnInterface wird implementiert von Klasse 1 Klasse1 Klasse2 AnInterface wird implementiert von Klasse 2 51

52 Verwendung von Interfaces Interfaces Verschiedene Java-Klassen können das selbe Interface auf unterschiedliche Weise implementieren Die Klienten-Klassen sprechen nur die entsprechenden Klassen nur über das Interface an Die implementierenden Klassen können nach Belieben verändert werden Die Schnittstelle des Interface bleibt unverändert keine Auswirkung auf Klienten-Klasse 52

53 Verwendung von Interfaces Interfaces Ein Interface kann wie eine abstrakte Klasse verwendet werden Variablen mit einem Interface als Typ sind möglich Verfügbare Methoden: alle im Interface deklarierten Methoden Prüfung, ob ein Objekt ein Interface implementiert: mit dem instanceof-operator anobject instanceof AnInterface anobject gehört zu einer Klasse, die AnInterface implementiert 53

54 Interfaces Beispiel Das Interface Comparable stellt eine Methode zur Verfügung, um zwei Objekte zu vergleichen compareto nimmt einen Parameter vom Typ Object und gibt zurück -1 oder kleiner wenn das implementierende Objekt kleiner als der Parameter ist 0 wenn das implementierende Objekt gleich zum Parameter ist +1 oder größer wenn das implementierende Objekt größer als der Parameter ist 54

55 Interfaces Beispiel Definition des Interfaces Comparable aus dem Java-Quelltext /* This interface imposes a total ordering on * the objects * of each class that implements * it. */ package java.lang; public interface Comparable { /* Compares this object with the specified * object for order. Returns a negative integer, * zero, or a positive integer as this object * is less than, equal to, or greater than the * specified object. */ int compareto(object o); } 55

56 Interfaces Beispiel Verwendung von Comparable in einer allgemeinen Methode, die Elemente in eine Liste sortiert einfügt Beispiel verwendet Klasse java.util.list Enthält mehrere beliebige Objekte Objekte werden über Index angegeben Index beginnt bei 0 56

57 Interfaces Beispiel java.util.list bietet Methoden int size() // gibt die Anzahl der Elemente in der Liste zurück Object get(int index); // liefert Objekt mit dem Index, der dem Parameter entspricht Beispiel: get(1) liefert Objekt B Objekt A Objekt B Objekt C Index 0 Index 1 void add(int index, Object element); // fügt element am angegebenen Index ein // alle nachfolgenden Elemente werden nach hinten geschoben 57

58 import java.util.list; Interfaces Beispiel /** * Neue Klasse SortedList, die sortiert einfuegt */ public class SortedList { private List elements = new List(); // leere Liste /** * Fuegt ein neues Element an die passende Position hinzu newelement das hinzuzufuegende Element, * darf nicht null sein */ public void add(comparable newelement) { if (newelement == null) return; // tue nichts, wenn newelement null ist int index = 0; boolean stored = false; // true, sobald newelement gespeichert ist 58

59 Interfaces Beispiel while (index < elements.size() &&!stored) { Comparable testelement = (Comparable)elements.get(index); // Cast noetig, da get nur ein Object liefert // wir wissen: alle Elemente sind comparable // (es werden keine anderen hineingesteckt) } // das Element am Index ist groesser als das // neue Element => Element auf diesen Index speichern if (testelement.compareto(newelement) > 0) { elements.add(index, newelement); stored = true; } index++; 59

60 Interfaces Beispiel if (!stored) // nicht gespeichert <=> newelement ist // groesser als alle Eintraege von elements // => speichern am Ende elements.add(elements.size(), newelement); } // end add /** * Gibt das Objekt am passenden Index zurueck */ public Object get(int index) { return elements.get(index); } } 60

61 Interfaces Beispiel public class Employee implements Comparable { String lastname; String firstname; /** Employees werden nach Namen geordnet */ public int compareto(object obj) { if (obj instanceof Employee) { Employee empl = (Employee)obj; int c = lastname.compareto(empl.lastname); // Strings enthalten bereits compareto } // Wenn Nachnamen gleich, entscheidet der Vorname if (c == 0) return firstname.compareto(empl.firstname); else return c; } else return -1 ; }... 61

62 Interfaces Beispiel public class Point extends GraphicObject implements Comparable { double x, y ; /** Points werden nach Abstand vom Ursprung geordnet */ public int compareto(object obj) { if (obj instanceof Point) { Point p = (Point)obj; double dist = x*x + y*y; double pdist = p.x*p.x + p.y*p.y; } if (dist == pdist) return 0; else return dist < pdist? -1 : 1; } else return -1 ; }... 62

63 Interfaces Beispiel SortedList kann sowohl Objekte vom Typ Point als auch Objekte vom Typ Employee sortiert speichern Änderungen am Quelltext der Klasse sind nicht notwendig Point kann weiterhin ohne Probleme von GraphicObject erben 63

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

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

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

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

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

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

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

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

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

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

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

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz Stefan Brass: OOP (Java), 16. Pakete, Zugriffsschutz 1/30 Objektorientierte Programmierung Kapitel 16: Pakete, Zugriffsschutz Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete Grundlagen der Programmierung Prof. H. Mössenböck 15. Pakete Idee Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck mehr Ordnung in Programme bringen bessere Kontrolle der Zugriffsrechte (wer

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

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

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

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

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

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

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

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

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

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

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

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

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

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein

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

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

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

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

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

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

Java I Vorlesung Generics und Packages

Java I Vorlesung Generics und Packages Java I Vorlesung 9 Generics und Packages 21.6.2004 Generics Packages Qualifizierte Namen Mehr zu Zugriffsklassen Generics (Java 1.5) Die Klassen im Java Collections Framework sind mit dem Typ ihrer Elemente

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren

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

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

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 3 2 Übersicht der heutigen Inhalte Pakete Beispiel zur Verdeckung Polymorphie Modifikatoren bei Klassenelementen 3 Zusammenhang

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

Ü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

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

Programmieren 2 Java Überblick

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

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

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

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

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

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

- dynamisches Laden -

- dynamisches Laden - - - Fachbereich Technik Department Elektrotechnik und Informatik 21. Juni 2012 1/23 2/23 s dynamisch Code kann von mehreren Programmen genutzt werden => kleinere Programme einzelne Teile eines Programms

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

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

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

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung (Teil II), Abstrakte Klassen, Schnittstellen Prof. Dr. Margarita Esponda SS 2012 35 Vererbungsbeispiel: public class Haustier { Haustier public static enum Zustand

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

Mehr

7. Pakete Grundlagen der Programmierung 1 (Java)

7. Pakete Grundlagen der Programmierung 1 (Java) 7. Pakete Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 29. November 2005 Einordnung im Kontext der Vorlesung 1.

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

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

Faustregeln zu Zusicherungen

Faustregeln zu Zusicherungen Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während

Mehr

Arten von Klassen-Beziehungen

Arten von Klassen-Beziehungen Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant

Mehr

Allgemeine Informatik II SS :30-13:30 Uhr

Allgemeine Informatik II SS :30-13:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

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

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

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

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen implementieren am Beispiel Suchbaum Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

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

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit

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

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

Kurs OPR. Objektorientierte Programmierung

Kurs OPR. Objektorientierte Programmierung Kurs OPR Objektorientierte Programmierung Lektion: 006-Abstrakte Klassen, Interfaces etc. Zürcher Hochschule für Angewandte Wissenschaften Mitglied der Fachhochschule Zürich Version 1.4 Inhaltsverzeichnis

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

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

1. In welchen Formen (mindestens zwei) kann man durch das Ersetzbarkeitsprinzip Wiederverwendung erzielen?

1. In welchen Formen (mindestens zwei) kann man durch das Ersetzbarkeitsprinzip Wiederverwendung erzielen? Kapitel 2 1. In welchen Formen (mindestens zwei) kann man durch das Ersetzbarkeitsprinzip Wiederverwendung erzielen? 1. Durch das Verwenden von Untertypbeziehungen: Untertypen können oft einen Großteil

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

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

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

Vererbung. Was versteht man unter dem Begriff Vererbung?

Vererbung. Was versteht man unter dem Begriff Vererbung? Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &

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

Betreutes Programmieren Vorlesung Informatik II, Blatt 4 Musterlösung

Betreutes Programmieren Vorlesung Informatik II, Blatt 4 Musterlösung SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.05.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 4 Musterlösung Programmieraufwand für geübte

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

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ziele Sie wissen, was Vererbung

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

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections

Mehr

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595 Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified

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