objektorientierte Programmierung

Größe: px
Ab Seite anzeigen:

Download "objektorientierte Programmierung"

Transkript

1 Einführung in die objektorientierte Programmierung mit Java Fachbereich Informatik FH 10. April

2 Organisatorisches zum Thementag Ziel: Einstieg in die objektorientierte Programmierung Voraussetzung: Kenntnis einer imperativen Programmiersprache (Pascal o.ä.) Materialien: Folien, Beispielprogramme, Übungen (verwendete Entwicklungsumgebung: BlueJ) Zeitplan: Homepage: 2

3 Inhalt Grundbegriffe der OOP Basiskonzepte weiterführende Konzepte Java ohne BlueJ / Java in der Schule 3

4 Inhalt - Grundbegriffe der OOP Objekte Klassen Methoden Einstieg mit BlueJ - Basiskonzepte - weiterführende Konzepte - Java ohne BlueJ / Java in der Schule 4

5 Objektorientierte Programmierung Kernthemen: Objekte und Klassen Beziehungen zwischen Objekten und Klassen Kommunikation (Nachrichtenaustausch) zwischen Objekten Im Vordergrund stehen die Daten, ihre Struktur und ihre Beziehungen zueinander. Weniger im Blickpunkt: die Art der Verarbeitung, das Prozedurale, die Algorithmik. 5

6 Objekt ist ein Modell für ein Objekt der realen Welt hat einen Zustand, der durch Attribute beschrieben wird hat ein Verhalten, das durch Methoden beschrieben wird. Attribute beschreiben somit die Eigenschaften eines Objekts. Methoden beschreiben die Reaktion eines Objektes auf Nachrichten. 6

7 Klasse dient der Kategorisierung von Objekten beschreibt alle Objekte mit gleichartigen Attributen und Methoden. Ein Objekt ist ein einzelnes Exemplar (eine Instanz ) einer Klasse. Eine Klasse ist eine Art Bauplan für Objekte. 7

8 Methode beschreibt die Reaktion eines Objektes auf eine Nachricht dient der Kommunikation mit anderen Objekten (auch anderer Klassen) regelt den Zugriff auf die Attribute eines Objektes Methoden mit Rückgabewert werden auch als Anfrage bezeichnet ( gib mir den Wert... ) Methoden ohne Rückgabewert werden auch als Auftrag bezeichnet ( erledige das... ) 8

9 Vergleich zu Pascal Häufig wird die (stark hinkende ) Analogie zu imperativen Konstrukten gesehen: Klasse <-> Datentyp (z.b. record) Objekt <-> Variable (von diesem Typ) Methode <-> Prozedur/Funktion (Operation auf dem Datentyp) 9

10 Beispiel: Sportfest1 Die Teilnehmer eines Sportfestes sollen als Objekte modelliert werden. Teilnehmer sind gekennzeichnet durch Name Geburtsjahr Startnummer erreichte Punkte in den einzelnen Wettbewerben Mögliche Aktionen sollen sein Punkte für eine Disziplin eintragen Gesamtsumme der erreichten Punkte berechnen 10

11 Beispiel 1 als Klassendiagramm String int int int[ ] Teilnehmer name geburtsjahr startnummer punkte void punkteeintragen (int wettbewerbsnummer, int erreichtepunktzahl) int summe ( ) 11

12 Beispiel 1 als Java-Code Datei mit irgendeinem Editor (hier: BlueJ) erstellen und unter Teilnehmer.java speichern. 12

13 Beispiel 1 in BlueJ Das BlueJ-Fenster zeigt alle Klassen, die zu einem Projekt gehören und (später) ihre Abhängigkeiten. 13

14 Erzeugung von Objekten mit BlueJ Ein Rechts-Mausklick auf das Klassensymbol öffnet ein Fenster, in dem der Operator new ausgewählt werden kann. 14

15 Erzeugung von Objekten mit BlueJ Hier wurden zwei Objekte mit den Variablen -namen anna bzw. otto erzeugt. 15

16 Zustand eines Objektes Rechtsklick auf ein Objekt öffnet ein Fenster, in dem u.a. der BlueJ-Inspektor aufgerufen werden kann. Er zeigt den Zustand des Objektes, also die aktuelle Belegung der Attributvariablen. Wir sehen: alle Attribute sind mit der 0 des jeweiligen Datentyps vorbelegt. 16

17 Methodenaufruf in BlueJ In demselben Fenster (geöffnet durch Rechtsklick auf das Objektsymbol) können auch die Methoden aufgerufen werden, die für das Objekt definiert sind. Wir tragen für die erste Disziplin die Punktzahl 12 ein: 17

18 Beispiel nach dem Eintragen von Punkten für den 1. und den 3. Wettbewerb 18

19 Zwischenbemerkung: Arrays in Java Wir haben für das Array zur Darstellung der Punkte die Länge 6 vereinbart. Im BlueJ-Inspector sehen wir, wie ein Array realisiert wird. Die Länge wird als eigene "Variable" eingetragen. Die einzelnen Feldelemente werden von 0 an nummeriert. Letzte Nummer ist also immer (Feldlänge - 1). 19

20 Aufruf der Methode summe (für das Objekt otto) 20

21 Übung 0 Starten Sie auf dem PC die Entwicklungsumgebung BlueJ. Öffnen Sie das Projekt Sportfest1. Erzeugen Sie zwei Objekte anna und otto. Geben Sie für Objekt anna Punkte ein und lassen Sie die Summe berechnen. Schauen Sie sich (mit dem Editor) den Quellcode der Klasse an. 21

22 Inhalt - Grundbegriffe der OOP - Basiskonzepte Klassendefinition Erzeugung von Objekten Methoden Konstruktoren Zugriff auf Attribute - weiterführende Konzepte - Java ohne BlueJ / Java in der Schule 22

23 Klassendefinition public class Klassenname { // Definition der Attribute // Definition der Methoden } Das Schlüsselwort class leitet die Definition einer Klasse ein. Das Schlüsselwort public regelt Zugriffsrechte. Der Klassenname ist frei wählbar. Innerhalb der geschweiften Klammern werden Attribute und Methoden (in beliebiger Reihenfolge) definiert. 23

24 Definition der Attribute Die Definiton von Attributen sieht wie eine Variablendeklaration aus: Es wird der Datentyp des Attributs angegeben, dann der Name. Die Definition wird mit einem Semikolon abgeschlossen. Der Attributname ist frei wählbar. Als Typ kommen die elementaren Datentypen (int, double, char, boolean,...) in Frage, aber auch selbstdefinierte Klassen oder arrays (Felder). 24

25 Definition der Methoden Rückgabetyp methodenname (Parameterliste){ // Definition lokaler Variablen // Anweisungen } Eine Methodendefinition sieht wie eine Funktionsoder Prozedurdefinition aus: Im Methodenkopf werden der Name der Methode, eine Liste der Eingabeparameter (in runden Klammern) und der Datentyp des Rückgabewertes angegeben. Im Methodenrumpf (eingeschlossen von geschweiften Klammern) werden lokale Variablen definiert und Anweisungen gegeben. 25

26 Methodenkopf Die Parameterliste ist eine Aufzählung von formalen Parametern mit ihren Typen. Die Parameterliste kann auch leer sein (, die runden Klammern müssen dann trotzdem geschrieben werden)! Die Parameter können elementare Typen, Klassen oder arrays als Typ haben. Der Rückgabetyp kann ein einfacher Datentyp oder eine Klasse sein oder leer (void) sein. 26

27 Methodenrumpf Lokale Variablen werden (wie Attribute einer Klasse) durch Angabe des Typs und des Namens definiert. Als Typen sind alle elementaren Typen, Klassen und arrays möglich. Anweisungen sind Wertzuweisungen oder Methodenaufrufe oder durch Sequenz, Verzweigung oder Schleifen aus solchen zusammengesetzt. 27

28 Erzeugung von Objekten Die Klasse steht uns wie ein abstrakter Datentyp zur Verfügung. Wir können nun beliebig viele Objekte (Instanzen) dieser Klasse erzeugen. Dies geschieht mit dem new-operator. Beispiel: Teilnehmer anna = new Teilnehmer(); oder Teilnehmer otto; otto = new Teilnehmer(); 28

29 Methodenaufruf Mittels Methoden werden Nachrichten an Objekte versandt. Das Objekt muss als Empfänger der Nachricht beim Aufruf genannt werden (instanziierter Aufruf). Konsequenz: (Instanzen-)Methoden können erst aufgerufen werden, nachdem ein Objekt der Klasse erzeugt wurde! Für jeden formalen Parameter wird ein aktueller Wert (vom passenden Typ) übergeben. 29

30 Beispiel Methodenaufruf Teilnehmer otto = new Teilnehmer(); otto.punkteeintragen(1, 12); /* belegt die erste Komponente des Feldes punkte (von Objekt otto) mit dem Wert 12. */ 30

31 Noch einmal: Zustand eines Objektes Wir sehen: alle Attribute sind mit der 0 des jeweiligen Datentyps vorbelegt. Die Belegung des arrays punkte können wir durch die Methode punkteeintragen ändern. Wie können wir die Attribute name, geburtsjahr und startnummer mit sinnvollen Werten belegen? 31

32 Wie kann ich Attribute mit Werten belegen? durch Methoden beim Erzeugen des Objektes durch direkte Wertzuweisung 32

33 Belegung von Attributwerten durch Methoden Ein Beispiel hierfür kennen wir schon: die Methode punkteeintragen(int nr, int n). Wir können solche Methoden auch für die Attribute name, geburtsjahr und startnummer schreiben: 33

34 Beispiel: Sportfest2 Wir erweitern die Klasse Teilnehmer um drei Methoden : public void nameaendern (String neuername){ name = neuername; } public void gebjaendern (int neuesgebj){ geburtsjahr = neuesgebj; } public void startnummeraendern (int neuenummer){ startnummer = neuenummer; } 34

35 Beispiel: Sportfest2 Damit sind jetzt folgende Aufrufe möglich: Teilnehmer anna = new Teilnehmer(); anna.nameaendern("anna Anders"); anna.gebjaendern(1992); anna.startnummeraendern(1); Bemerkung: Werte von Strings müssen immer (auch bei der Eingabe über das BlueJ-Fenster) in "Gänsefüßchen" eingeschlossen werden. 35

36 Noch einmal: Zustand eines Objektes Danach sehen die Attributwerte so aus: Achtung! Durch die Methode nameaendern wird die Belegung des Attributs name geändert. Der Variablenname selber (anna) bleibt davon unberührt. 36

37 Bemerkung Die Möglichkeit, sich die aktuelle Belegung der Attribute mit Hilfe des Inspectors anzusehen, ist eine BlueJ-Spezialität. Ohne diese Lernumgebung muß man spezielle Methoden zur Ausgabe des Objektzustandes (z.b. auf dem Bildschirm oder dem Drucker) definieren. Dazu stellt Java die Methoden print() bzw. println() aus der Klasse System für das Standardausgabegerät out zur Verfügung. System.out.println(String s); 37

38 Für die Klasse Teilnehmer könnte das so aussehen : public void zeigezustand() { int i; System.out.println(name + ", " + geburtsjahr); System.out.println("Startnummer: " + startnummer); System.out.println("Punktestand: "); for (i = 0; i < punkte.length; i = i+1) System.out.print(" " + punkte[i]); } 38

39 Belegen von Attributwerten bei der Erzeugung des Objektes Bei der Erzeugung eines Objektes mit dem new- Operator wird eine spezielle Methode, der sog. Konstruktor aufgerufen. Wenn der Programmierer keinen Konstruktor angegeben hat, wird automatisch ein Standard- Konstruktor angelegt. Durch explizite Angabe eines Konstruktors können wir Einfluß darauf nehmen, was bei der Erzeugung eines Objektes geschieht. 39

40 Konstruktor public Klassenname(Parameterliste){ // Anweisungen } Ein Konstruktor ist eine spezielle Methode. Der Name des Konstruktors ist identisch mit dem Klassennamen. Die Angabe des Rückgabetyps entfällt. (Es wird immer ein Objekt der Klasse erzeugt und ein Verweis darauf zurückgegeben.) Im Methodenrumpf können beliebige Anweisungen stehen. Dem Konstruktor können Parameter übergeben werden. 40

41 Standardkonstruktor public Klassenname(){ // keine Anweisungen } Wird vom Programmierer kein Konstruktor angegeben, so wird von Java der Standardkonstruktor verwendet. Er enthält keine Eingabeparameter und keine Anweisungen. 41

42 Konstruktor für die Klasse Teilnehmer Wir wollen erreichen, dass die Werte für die Attribute name, geburtsjahr und startnummer gleich bei der Erzeugung eines Objektes belegt werden. Der Name und das Geburtsjahr des Teilnehmers/der Teilnehmerin sollen als Parameter übergeben werden. Die Startnummer soll den default-wert 1 erhalten. public Teilnehmer(String teilnehmername, int gebjahr){ name = teilnehmername; geburtsjahr = gebjahr; startnummer = 1; } 42

43 Aufruf eines Konstruktors Der Aufruf eines von uns selbst definierten Konstruktors sieht genauso aus wie ein normaler Methodenaufruf. Durch Rechtsklick auf das Objektsymbol kann man den Konstruktor auswählen und Werte für die Parameter eingeben. 43

44 Beispiel 2: Nach Aufruf des Konstruktors 44

45 Belegen von Attributen durch Wertzuweisung Wertzuweisungen an eine Attributsvariable sehen genauso aus, wie wir sie bisher in Methoden schon verwendet haben. Wir unterscheiden lediglich nach der Stelle, an der die Wertzuweisung ausgeführt wird: nicht innerhalb einer Methode des eigenen Objektes sondern aus Methoden anderer Objekte oder Klassen heraus 45

46 Zugriff auf Objektattribute von außen Der Zugriff (von außerhalb) auf eine Attributsvariable eines Objektes erfolgt durch Nennung des Objektnamens, gefolgt von einem Punkt und dem Namen der Attributsvariablen. Bsp.: Teilnehmer anna = new Teilnehmer(); anna.geburtsjahr = 1992; System.out.println(anna.name); 46

47 Kapselung guter Programmierstil: Zugriff von außen auf Attribute durch Setzen von Zugriffsrechten verhindern dadurch Zugriff nur durch Methoden möglich Beispiele hierfür später. 47

48 Zugriff auf Objektattribute von innen Innerhalb von Instanzmethoden (das sind Methoden, die wie alle, die wir bisher kennengelernt haben, an ein Objekt gebunden sind,) kann auf Attribute einfach durch Nennung des Variablennamens zugegriffen werden: geburtsjahr =...; System.out.println(name); 48

49 this Um den Bezug zum Objekt bewußt herzustellen oder um Namenskonflikte mit anderen Größen zu vermeiden, kann auf das eigene Objekt mit dem Schlüsselwort this Bezug genommen werden. Wir hätten in allen unseren Methoden schreiben können: this.geburtsjahr =...; System.out.println(this.name); Andere Größen können sein: lokale Variablen oder Parameter. 49

50 Überladen von Methoden Beim Betrachten des Quelltextes des Beispiels Sportfest2 fällt auf, dass zwei Konstruktoren existieren. Das ist auch für andere Methoden möglich: Methoden können gleich heißen, wenn sie sich in der Parameterstruktur unterscheiden (Anzahl oder Typen der Parameter). Beim Aufruf ist dann durch die Angabe der Parameter klar, welche Variante der Methode ausgeführt wird. 50

51 Übung 1 (Bank1) Wir wollen (Bank-)Konten modellieren: Ein Konto hat einen Besitzer, eine Nummer und einen Saldo. Man kann Beträge abheben oder einzahlen und sich den Kontostand anzeigen lassen. Definieren Sie eine Klasse Konto mit geeigneten Attributen, Methoden und einem Konstruktor. Fügen Sie Methoden ein, um Geld auf ein anderes Konto zu überweisen oder von einem anderen Konto einzuziehen. 51

52 Inhalt - Grundbegriffe der OOP - Basiskonzepte - weiterführende Konzepte Klassenvariable Klassenmethoden Umgang mit mehreren Klassen Vererbung - JAVA ohne BlueJ / Java in der Schule 52

53 Klassenvariable stellen Eigenschaften einer Klasse, nicht eines einzelnen Objektes dar existieren nur einmal pro Klasse sind unabhängig von einzelnen Objekten werden definiert, indem bei der Deklaration das Schlüsselwort static vorangestellt wird 53

54 Beispiel: Sportfest3 Wir wollen mitzählen, wieviele Teilnehmer sich angemeldet haben. Dazu fügen wir in der Klassendefinition die Deklaration einer Klassenvariablen anzahlteilnehmer ein, die wir mit 0 initialisieren. public class Teilnehmer { static int anzahlteilnehmer = 0; } // weiter wie bisher: String name; int geburtsjahr; //... 54

55 Klassenvariable existieren nur einmal! anzahlteilnehmer 0 otto name geburtsjahr startnummer 0 0 punkte anna name geburtsjahr startnummer 0 0 punkte

56 Zugriff auf Klassenvariable Der Zugriff geschieht durch eine Wertzuweisung an die Variable. Eine Instanziierung mit einem Objektbezeichner oder mit this ist für Klassenvariable nicht erforderlich (und syntaktisch falsch)! Bei einem Zugriff aus einer anderen Klasse heraus ist der Klassenname und ein Punkt voranzustellen. Beispiel: Teilnehmer.anzahlTeilnehmer =... 56

57 Beispiel: Sportfest3 Zum Mitzählen muss diese Variable bei jedem Erzeugen eines neuen Teilnehmers (also bei jedem Aufruf des Konstruktors) um 1 erhöht werden. Wir können diese Variable auch dazu benutzen, die Startnummern automatisch zu vergeben: public Teilnehmer(String teilnehmername, int gebjahr){ anzahlteilnehmer = anzahlteilnehmer + 1; this.name = teilnehmername; this.geburtsjahr = gebjahr; this.startnummer = anzahlteilnehmer; } 57

58 Klassenmethoden stehen der Klasse als Ganzem zur Verfügung existieren nur einmal pro Klasse sind unabhängig von einzelnen Objekten werden definiert, indem bei der Deklaration das Schlüsselwort static vorangestellt wird können ausgeführt werden, ohne dass ein Objekt der Klasse erzeugt wurde 58

59 Beispiel: Sportfest3 Wir wünschen uns eine Methode, die den aktuellen Anmeldestand ausgibt. Die Methode benötigt keine Eingabeparameter, liefert keinen Wert zurück und soll zeigeanmeldestand heißen. public static void zeigeanmeldestand(){ System.out.println ("Zur Zeit sind " + anzahlteilnehmer + " Teilnehmer angemeldet."); } 59

60 Sportfest3 (final version) 60

61 Übung 2 (Bank2) Erweitern Sie die Klasse Konto so, dass nun bei Eröffnung eines neuen Kontos automatisch die nächste freie Kontonummer vergeben wird. Sehen Sie eine Möglichkeit vor, den Gesamt- Umsatz der Bank zu ermitteln. (Wir berechnen den Umsatz als Summe aller Kontostände.) Bei der Eröffnung eines Kontos kann ein Dispositionskredit (mit dem default-wert 0) vereinbart werden. Auszahlungen werden verweigert, wenn der Dispositionskredit überschritten wird. 61

62 Umgang mit mehreren Klassen Wir erweitern das Szenario des Sportfests um eine Klasse, die die angebotenen Wettbewerbe modelliert. Ein Objekt der Klasse Wettbewerb verfügt über die Attribute Beschreibung (String) maximale Teilnehmerzahl (int) Anzahl der angemeldeten Teilnehmer (int) Liste der angemeldeten Teilnehmer (array) Außerdem werden Methoden angeboten, um einen Teilnehmer in die Teilnehmerliste einzutragen zu überprüfen, ob es noch freie Plätze gibt 62

63 Beispiel Sportfest4: Wettbewerb 63

64 Korrespondenzen zwischen Klassen Die Klasse Wettbewerb benutzt die Klasse Teilnehmer wie einen Datentyp. Aber auch umgekehrt kann nun die Klasse Teilnehmer auf die Klasse Wettbewerb Bezug nehmen: Teilnehmer können sich für Wettbewerbe anmelden (Aufruf einer Methode der Klasse Wettbewerb) für jeden Teilnehmer soll vermerkt werden, für welchen Wettbewerb er angemeldet ist (array mit Basistyp Wettbewerb) 64

65 Datenblatt der Klasse Teilnehmer: Es wird ein Feld gemeldet vom Typ Wettbewerb als Attribut eingefügt. name geburtsjahr Anna 1992 startnummer gemeldet punkte Laufen Springen 65

66 Beispiel Sportfest4: Teilnehmer Wir müssen ein Attribut anzahlgemeldet einfügen, das mitzählt, für wieviele Wettbewerbe ein Teilnehmer angemeldet ist. 66

67 Beispiel Sportfest4 in BlueJ: Die gegenseitige Abhängigkeit der Klassen wird durch Pfeile angezeigt. 67

68 Teilnehmer melden sich zu Wettbewerben an Eine Methode, die es einem Teilnehmer ermöglicht, sich zu einem Wettbewerb anzumelden, muss prüfen, ob der Teilnehmer sich nicht schon für die maximale Anzahl an Wettbewerben angemeldet hat, prüfen, ob im gewünschten Wettbewerb noch Startplätze frei sind, den Wettbewerb im array gemeldet eintragen, den Teilnehmer in die Starterliste des Wettbewerbs aufnehmen. 68

69 Beispiel Sportfest4: Die Methode anmelden der Klasse teilnehmer 69

70 Für Teilnehmer werden Punkte eingetragen An die Methode punkteeintragen soll nun nicht mehr die Nummer des Wettbewerbs, sondern eine Referenz auf den Wettbewerb selbst übergeben werden. Um die richtige Position im array punkte zu finden, muss der übergebene Parameter mit den Einträgen im array gemeldet verglichen werden. 70

71 Beispiel Sportfest4: Die Methode punkteeintragen der Klasse teilnehmer 71

72 Übung 3 (Bank3) Definieren Sie eine Klasse Person, die Namen und Geburtsjahr von Personen darstellen soll. Die Klasse Konto soll nun ein neues Attribut kontofuehrer vom Typ Person erhalten, das das Attribut name ersetzt. 72

73 Modularität Uns fällt auf: Die Klasse Person enthält Attribute und Methoden, die wir auch in der Klasse Teilnehmer definiert hatten. Wünschenswert: "Doppelte" Definitionen vermeiden und Klassen aus anderen Projekten für das aktuelle Projekt nutzbar machen. Eine der Stärken der OOP: Wiederverwendbarkeit von Klassen durch modularen Aufbau! 73

74 Spezialisierung und Generalisierung Die Klasse Teilnehmer kann als Spezialisierung der Klasse Person angesehen werden. Mathematisch betrachtet ist die Menge Teilnehmer eine Teilmenge von Person. Person Teilnehmer 74

75 Vererbung Java stellt für diese Situation das Konzept der Vererbung zur Verfügung. Damit können Klassen als Unterklassen anderer Klassen definiert werden. Objekte der Unterklasse erben alle Attribute und Methoden der Oberklasse und können zusätzlich über weitere Attribute und Methoden verfügen. public class Unterklasse extends Oberklasse { } // zusätzliche Attribute und Methoden 75

76 Beispiel: Sportfest5 Wir fügen die Klasse Person in das Projekt Sportfest ein und leiten die Klasse Teilnehmer von der Klasse Person ab: public class Teilnehmer extends Person { } // zusätzliche Attribute und Methoden 76

77 Objekte einer Unterklasse erzeugen Im Konstruktor einer Unterklasse darf der Konstruktor der Oberklasse aufgerufen werden (als erste Anweisung). Der Aufruf erfolgt mit super(parameter); 77

78 Beispiel Sportfest5 BlueJ zeigt die Vererbungsstruktur durch Pfeile im Klassendiagramm. 78

79 Vererbungshierarchie Es ist möglich, dass von einer Klasse mehrere Unterklassen abgeleitet werden. Es ist auch möglich, dass über mehrere Stufen vererbt wird. Oberklasse Unterklasse1 Unterklasse2 Unterunterklasse 79

80 Keine Mehrfachvererbung in Java! Oberklasse 1 Oberklasse 2 Unterklasse Es ist nicht möglich, dass eine Klasse von mehreren Oberklassen erbt! 80

81 Die Attribute oder Methoden der Oberklasse stehen zur Verfügung, als seien es eigene Attribute. Teilnehmer anna = new Teilnehmer("Anne", 1992); // Erzeugen eines Objektes der Klasse Teilnehmer anna.nameaendern("anna"); // Aufruf einer Methode der Oberklasse Person (In BlueJ über den Menupunkt inherited from <Oberklasse> ) 81

82 Polymorphie ist die gleichzeitige Existenz verschiedener Methoden mit gleichem Namen und gleicher Parameterstruktur in verschiedenen Klassen. Allein durch die Klassenzugehörigkeit des Objektes wird entschieden, welche der Methoden ausgeführt wird (dynamisches Binden, dynamische Polymorphie). Dadurch kann die gleiche Nachricht (derselbe Methodenaufruf) an verschiedene Objekte unterschiedliche Wirkung haben. 82

83 Mit dem Schlüsselwort super, (gefolgt von einem Punkt,) kann bewusst auf Attribute oder Methoden der Oberklasse zugegriffen werden. 83

84 Erinnerung Unter Überladen von Methoden haben wir die gleichzeitige Existenz verschiedener Methoden mit gleichem Namen und unterschiedlicher Parameterstruktur innerhalb einer Klasse verstanden. Hier entscheidet die Struktur der Aktual- Parameter beim Aufruf darüber, welche Methode ausgeführt wird (statische Bindung, statische Polymorphie). 84

85 Beispiel: Sportfest6 Wir definieren eine Klasse Schiedsrichter, die von der Klasse Person abgeleitet wird und zusätzlich zu Name und Geburtsjahr ein Attribut vom Typ Wettbewerb erhalten soll. Wir implementieren eine Methode einsatzwaehlen(wettbewerb w), mit der einem Schiedsrichter ein Wettbewerb zugeteilt wird. Wir fügen in der Klasse Wettbewerb ein Attribut wettkampfleiter vom Typ Schiedsrichter ein, das durch die Methode einsatzwaehlen entsprechend belegt wird. 85

86 Beispiel: Sportfest6 86

87 Übung 4 (Sportfest6) Schauen Sie sich den Quellcode der Klassen von Sportfest6 an. Erzeugen Sie mit BlueJ die Wettbewerbe Kirschkernweitspucken, Eierlaufen, Fingerhakeln und Tauziehen. Am Fingerhakeln sollen höchstens zwei Starter teilnehmen können. Erzeugen Sie die Teilnehmer Anna, Otto, Emma und Ulli und den Schiedsrichter Willi. Anna möchte sich für alle 4 Wettbewerbe anmelden, Otto für Fingerhakeln und Tauziehen, Emma für Tauziehen und Eierlaufen und Ulli für Fingerhakeln und Kirschkernweitspucken. 87

88 Inhalt - Grundbegriffe der OOP - Basiskonzepte - weiterführende Konzepte - JAVA ohne BlueJ / Java in der Schule ausführbare Klassen main-methode Ein- und Ausgabe Java in der Schule? 88

89 Java ohne BlueJ Definition der verwendeten Klassen wie in BlueJ (möglicherwiese mehrere, jede in einer eigenen Datei abgelegt) Definition einer ausführbaren Klasse mit einer speziellen Methode namens main Übersetzen der Klassen Starten des Programms 89

90 ausführbare Klassen In jedem Java-Programm muss es in genau einer Klasse eine statische (Klassen-)Methode mit Namen main geben. Kopf der main-methode: public static void main(string[] args) Diese Methode kann aufgerufen werden, ohne dass irgendein Objekt zuvor erzeugt wurde. Innerhalb dieser Methode können Objekte erzeugt und Methoden aufgerufen werden. 90

91 Beispiel: Sportfest7 Wir definieren die Klassen Person, Wettbewerb, Teilnehmer, Schiedsrichter wörtlich genauso wie in Sportfest6. Zusätzlich implementieren wir eine Klasse Test,die nun die Aufgaben übernimmt, die uns BlueJ durch den rechten Mausklick auf Klassen- oder Objektsymbole abgenommen hat: 91

92 Testklasse für Beispiel Sportfest7 92

93 Übersetzen und Starten eines Java-Programms Klassen werden übersetzt, indem (in einem DOS- Fenster oder über die Kommandozeile RUN...) der Java-Compiler javac aufgerufen wird: javac Klassenname.java Java-Programme werden gestartet, indem das Kommando java Klassenname gegeben wird. Bei diesem Kommando wird in der angegeben Klasse nach der main-methode gesucht und diese ausgeführt. 93

94 Übersetzen und Starten unseres Test-Programms 94

95 Ausgabe Ohne den BlueJ-Inspector ist man auf die Ausgabe von Ergebnissen bzw. die Ansicht von Objekten via System.out.println() angewiesen. In unserem Beispiel: 95

96 Eingabe Die Eingabe von Daten während des Programmablaufs ist in Java sehr umständlich und für Anfänger nicht zu empfehlen. 96

97 "Imperative" Programmierung mit Java Man kann "imperative" Programme (z.b. aus Pascal) nach Java übertragen, indem nur eine ausführbare Klasse (mit der main-methode) definiert wird und dort nur statische (Klassen-)variablen und statische (Klassen-)methoden benutzt werden. 97

98 Beispiel Mittelwert.java 98

99 Java in der Schule? 99

100 Anforderungen an Programmieranfänger Programmierung sprachunabhängig problemlösend Programmentwurf "mit Papier und Bleistift", umgangssprachlich... Sprache Syntax der Sprache Datentypen Strukturen (if, Schleifen,...) Funktionen, Parameter, Aufrufe... Umgebung Editor, Compiler,... Programmstart in Kommandozeile Handhaben der integrierten Entwicklungsumgebung

101 Programmiermodell imperativ objektorientiert Pascal C... Java Smalltalk... integrierte Umgebung? jdk BlueJ Eclipse

102 imperative vs. objektorientierte Paradigmen: imperativ objektorientiert einfache Datentypen Strukturen (if, Schleifen,...) komplexe Algorithmen zusammengesetzte Datentypen (record) Unterprogramme Pointer, Referenzen... Klassen Methoden Objekte einfache Datentypen Strukturen (if, Schleifen,...) komplexe Datenabhängigkeiten

103 Literatur Objektorientierte Programmierung mit Java. Eine praxisnahe Einführung mit BlueJ. von David J. Barnes, Michael Kölling das BlueJ-Buch Grundlage für diesen Kurs als Lehrbuch geeignet Java von Stefan Middendorf, Reiner Singer, Jörn Heid das Java-Buch reines Nachschlagewerk nicht als Lehrbuch geeignet 103

104 Literatur Programmieren spielend gelernt. Mit dem Java- Hamster-Modell. von Dietrich Boles "Hamster"-Buch spezielle Lernumgebung imperative Programmierung eingeschränktes Java als Lehrbuch geeignet Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell. von Dietrich Boles, Cornelia Boles 2. Teil des "Hamster"-Buchs nicht ohne 1. Teil veratändlich objektorientierte Programmierung eingeschränktes Java als Lehrbuch geeignet? 104

105 Literatur Java als erste Programmiersprache. Vom Einsteiger zum Profi. m. CD-ROM von Cornelia Heinisch, Frank Müller, Joachim Goll von unseren Dozenten häufig empfohlen etwas trocken und langweilig Objektorientierte Programmierung in Java. Eine leicht verständliche Einführung. von Otto Rauh beginnt imperativ kommt schnell zu objektorientierten Konzepten als Lehrbuch geeignet 105

106 Literatur Grundkurs Programmieren in Java 1. Der Einstieg in Programmierung und Objektorientierung. von Dietmar Ratz, Jens Scheffler, Detlef Seese von unseren Dozenten empfohlen Lehrbuch mit vielen Beispielen und Übungen nicht als Nachschlagewerk geeignet Guido Krüger Handbuch der Java-Programmierung bei Studierenden beliebt auch online und kostenlos verfügbar unter 106

107 Links die Startseite von SUN Java-Standard-Dokumentation von SUN online-tutorial von SUN (in englischer Sprache) 107

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

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

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Klassen mit Instanzmethoden

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

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

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

Objektorientierte Programmierung und Klassen

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

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

Java-Programmierung mit NetBeans

Java-Programmierung mit NetBeans Java-Programmierung mit NetBeans Klassen, Objekte, Alternativen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Grundlegende Definitionen - Objekt Ein Objekt ist allgemein ein Gegenstand

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

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

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

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Einstieg in die Informatik mit Java

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

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

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

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

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/ in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de http://ls14-www.cs.tu-dortmund.de

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

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

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

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

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

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

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

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

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Vererbung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Ähnlichkeiten zwischen Klassen? Beispiel: Klassen Auto

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

Programmiertechnik Klassenvariablen & Instantiierung Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

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

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

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

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

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Objekte und Klassen INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? typedef struct Konto { double saldo; int id; Konto; Modul "konto" konto.h konto.c Prozedurale Programmierung:

Mehr

Einführung in die Programmierung mit BlueJ

Einführung in die Programmierung mit BlueJ Einführung in die Programmierung mit BlueJ Thema 4 Steuerstrukturen - Verzweigungen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Daten speichern: Datenfelder Instanzvariablen,

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 12 Ekkart Kindler III. Objektorientierte Programmierung Überblick Klassen und Methoden Vererbung Zugriffsrechte Definition einer Methode

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots. falls Zeit: Scheduling 8.11.

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots. falls Zeit: Scheduling 8.11. IT I: Heute Nachbetrachtung Wissensüberprüfungen Einführung Vererbung Roboter in becker.robots falls Zeit: Scheduling 8.11.2016 IT I - VO 5 1 Organisatorisches VO nächste Woche im Peter-Tunner-HS! Tutorium

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

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

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

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

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

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

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung

Mehr

1 Einleitung Generizität Syntax... 2

1 Einleitung Generizität Syntax... 2 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Objektzugriff Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Attribute sind in der Klasse mit Datentyp und Namen deklariert im Objekt sind sie mit jeweils

Mehr

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten Noch ein Beispiel Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten public class Konto { private String kundenname; private double kontostand; private double

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

Tafelübung 07 Algorithmen und Datenstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmieren für Wirtschaftswissenschaftler SS 2015 DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 6. Klassen Agenda Klassen und

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/ in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 08: Mehr zu Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Wiederholung Heutige Agenda Verwendung der ArrayList 2. Teil: Weitere Aspekte der OO

Mehr

Praxis der Programmierung

Praxis der Programmierung Klassenvariablen und -methoden, Vererbung Institut für Informatik und Computational Science Henning Bordihn 1 Klassenvariablen und -methoden 2 Klassenvariablen und -methoden werden mit dem Schlüsselwort

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java In diesem Kapitel werden wir an einem kleinen Beispiel wichtige Grundbegriffe der objektorientierten Programmierung kennenlernen. Wir wollen ein Programm schreiben, das in der Lage

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

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

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

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

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

Gliederung der Folien

Gliederung der Folien 1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition

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

Java Referenzdatentypen genauer betrachtet

Java Referenzdatentypen genauer betrachtet Informatik 1 für Nebenfachstudierende Grundmodul Java Referenzdatentypen genauer betrachtet Kai-Steffen Hielscher Folienversion: 23. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Referenzdatentypen

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

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

Mehr

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

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

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

Mehr

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und 17.6.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine

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

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

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

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Objektorientierte Programmierung Ronja Düffel WS2018/19 09. Oktober 2018 Objektorientierte Programmierung Überblick 1 Was ist das? 2 Wie geht das? 3 Warum gibt es das?

Mehr