Programmiertechnik Objektorientierung, Teil 2
|
|
- Anneliese Schuler
- vor 5 Jahren
- Abrufe
Transkript
1 Programmiertechnik Objektorientierung, Teil 2 Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1
2 Einschub: Pakete Java-Klassen können in Paketen organisiert sein. Ein Paket (package) ist eine Sammlung von Klassen. Klassen, die keinem Paket zugeordnet sind, gehören dem unbenannten Standardpaket an ( so wie bisher alle Beispielklassen). Klassen, die einem benannten Paket angehören, müssen mit der package-anweisung beginnen: Syntaxregel package <paketname>; Beispiel: package mypackage; Oliver Haase Hochschule Konstanz 2
3 Einschub: Pakete Der vollständige (qualifizierte) Namen einer Klasse besteht aus Paketname und Klassenname. Syntaxregel <paketname>.<klassenname> Oliver Haase Hochschule Konstanz 3
4 Einschub: Pakete Alle Klassen eines Pakets müssen in einem Verzeichnis liegen, das den Namen des Pakets trägt. Verzeichnisstruktur paketnamen Klasse1.class Klasse2.class Klasse3.class Pakete können hierarchisch ineinander geschachtelt sein. Beispiel: paketa enthält paketb und paketc. Oliver Haase Hochschule Konstanz 4
5 Einschub: Pakete paketa Verzeichnisstruktur paketc paketb Klasse1.class Klasse2.class Klasse1.class Klasse2.class Klasse3.class vollständiger Name von Klasse3: paketa.paketb.klasse3 es existieren jeweils 2 Klassen mit dem Namen Klasse1 und Klasse2 Eindeutigkeit ergibt sich erst aus den vollständigen Namen. Oliver Haase Hochschule Konstanz 5
6 Einschub: Pakete Beispiel Verwendung der Klasse3 aus Paket paketa.paketb in der Klasse1 aus Paket paketa.paketc. package paketa.paketc; public class Klasse1 { public static void main(string[] args) { paketa.paketb.klasse3 obj; obj = new paketa.paketb.klasse3(); Oliver Haase Hochschule Konstanz 6
7 Einschub: Pakete Mit Hilfe der import-anweisung können statt vollständiger Namen auch relative Namen verwendet werden können, solange die Eindeutigkeit gewahrt bleibt. package paketa.paketc; import paketa.paketb.klasse3; public class Klasse1 { public static void main(string[] args) { Klasse3 obj; obj = new Klasse3(); Oliver Haase Hochschule Konstanz 7
8 Einschub: Pakete weiteres Beispiel: package paketname; import java.util.scanner; public class Klasse1 { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); int zahl = scanner.nextint(); Oliver Haase Hochschule Konstanz 8
9 Einschub: Pakete Es gibt auch die Möglichkeit, alle Klassen eines Pakets zu importieren: Syntaxregel import <paketname>.*; Beispiel: import paketa.paketb.*; oder: import java.util.*; Oliver Haase Hochschule Konstanz 9
10 Kapselung Oliver Haase Hochschule Konstanz 10
11 Motivation Ziel: Benutzer einer Klasse sollte so unabhängig von der Implementierung der Klasse sein, dass diese geändert werden kann, ohne dass der Benutzer das merkt. Der "Benutzer einer Klasse A" ist eine andere Klasse B, die ein Objekt der Klasse A instanziiert, oder auf Variablen von A zugreift, oder Methoden von A verwendet (aufruft). Beispiel: public class KlasseB { public static void main(string[] args) { KlasseA objecta = new KlasseA(); objecta.dosomething(); Oliver Haase Hochschule Konstanz 11
12 Motivation Warum ist Kapselung wichtig? Implementierung kann durch effizientere ersetzt werden eine gekaufte Implementierung kann durch eine andere ersetzt werden Programm kann von einer Gruppe von Entwicklern gleichzeitig entwickelt werden, solange Klassen unabhängig voneinander sind. Kapselung ist eines der wichtigsten Programmierprinzipien überhaupt, unabhängig davon, ob objektorientiert programmiert wird oder nicht! Oliver Haase Hochschule Konstanz 12
13 Idee Idee: Klassen können nur über ihre Methoden verwendet und manipuliert werden. Komponentenvariablen werden versteckt (data/information hiding) Benutzer wissen, wie Klasseninstanzen manipuliert werden können (Methoden), kennen aber nicht ihre innere Struktur (Variablen). Oliver Haase Hochschule Konstanz 13
14 Zugriffsrechte Wie werden Komponentenvariablen versteckt? Über Zugriffsrechte. Dafür gibt es Zugriffsrechtemodifizierer. Sie definieren, ob eine Klassenkomponente zugreifbar ist für die folgenden Kategorien von Benutzern: eigene Klasse Subklassen Klassen des eigenen Pakets alle anderen Klassen Oliver Haase Hochschule Konstanz 14
15 Zugriffsrechte Es gibt 4 verschiedene Zugriffsrechtemodifizierer: public private protected kein Modifizierer (Default-Modifizierer, package-private) Diese Variante wird vorgestellt, in diesem Kurs aber nicht weiter verwendet. Oliver Haase Hochschule Konstanz 15
16 Zugriffsrechte Effekt der Zugriffsrechtemodifizierer: eigene Klasse Klassen desselben Pakets Subklassen alle anderen Klassen public protected + + nur für eigene Instanz - kein Modifizierer private Beachte: Eine Subklasse kann, muss aber nicht demselben Paket angehören wir die Superklasse. Oliver Haase Hochschule Konstanz 16
17 Beispiel Klasse Student Beispiel: Klasse zur Darstellung eines Studenten: Student name: nummer: String int public class Student { public String name; public int nummer; // Matrikelnummer Oliver Haase Hochschule Konstanz 17
18 ungekapselte Benutzung Benutzung der Klasse Student : Student student = new Student(); student.name = "Karla Karlson"; student.nummer = 12345; Annahme: Innere Struktur von Student soll so geändert werden, dass Vor- und Nachname als 2 getrennte Strings gespeichert werden. Problem: Benutzer der Klasse Student kennt innere Struktur der Klasse. Diese kann nur geändert werden, wenn auch alle Benutzer geändert werden! Oliver Haase Hochschule Konstanz 18
19 Verstecken der Struktur Student private Komponenten -name: -nummer: String int public class Student { private String name; private int nummer; // Matrikelnummer Oliver Haase Hochschule Konstanz 19
20 fehlerhafte Benutzung erneute Benutzung der Klasse Student : Student student = new Student(); student.name = "Karla Karlson"; student.nummer = 12345; führt wie erwartet zu Fehlermeldung beim Übersetzungsvorgang: Konsole Variable name in class Student not accessible Oliver Haase Hochschule Konstanz 20
21 Zugriffsmethoden Damit ein Benutzer die Klasse Student verwendet kann, definieren wir die folgenden Zugriffsmethoden (get- und set-methoden): public String getname() public void setname(string name) public int getnummer() public void setnummer(int nummer) Student private Komponenten -name: -nummer: String int öffentliche Komponenten +getname(): String +setname(string): void +getnummer(): int +setnummer(int): void Oliver Haase Hochschule Konstanz 21
22 Zugriffsmethoden public String getname() { return this.name; Instanzvariable public void setname(string name) { this.name = name; Instanzvariable Eingabeparameter Oliver Haase Hochschule Konstanz 22
23 Zugriffsmethoden public String getnummer() { return nummer; Auf this kann verzichtet werden, da nummer nur die Instanzvariable bezeichnen kann public void setnummer(int n) { nummer = n; Auf this kann verzichtet werden, da nummer nur die Instanzvariable bezeichnen kann Oliver Haase Hochschule Konstanz 23
24 Benutzung über Set-Methoden erneute Benutzung der Klasse Student, diesmal über set- Methoden: Student student = new Student(); student.setname("karla Karlson"); student.setnummer(12345); Inwieweit ist das anders oder gar besser als der direkte Zugriff auf die Variablen name und nummer? (Viel Rauch um nichts?) Validierung der Eingabe Ändern der internen Struktur Oliver Haase Hochschule Konstanz 24
25 Validierung der Eingabe Annahme: Matrikelnummer müssen einem bestimmten Format gehorchen, etwa: 5 Stellen lang keine führende Null ungerade public boolean isvalid(int n) { return ( n > 9999 && n < && n % 2!= 0 ); Oliver Haase Hochschule Konstanz 25
26 Validierung der Eingabe Idee: Integriere Methode isvalid in setnummer verhindert Eingabe unzulässiger Matrikelnummern! public void setnummer(int n) { if ( isvalid(n) ) { nummer = n; Beachte: Diese Validierung wäre mit direktem Zugriff auf die Variable nummer nicht möglich! Oliver Haase Hochschule Konstanz 26
27 Ändern der internen Struktur Da Benutzer nun unabhängig von internen Struktur der Klasse Student, kann z.b. Name getrennt werden in Vor- und Nachname: Student -vorname: -nachname: -nummer: String String int sichtbarer Teil unverändert! +getname(): String +setname(string): void +getnummer(): int +setnummer(int): void Oliver Haase Hochschule Konstanz 27
28 Geänderte Implementierung public class Student { private String vorname; private String nachname; private int nummer; // Matrikelnummer public String getname() { return vorname + " " + nachname; public void setname(string name) { int index = name.indexof(" "); vorname = name.substring(0, index); nachname = name.substring(index+1); public int getnummer() { return nummer; public void setnummer(int n) { nummer = n; Beachte: An der Benutzung der Klasse Student hat sich nichts geändert! Oliver Haase Hochschule Konstanz 28
29 Beispiel 2 Punkte Beispiel: Klasse zur Darstellung eines Punktes in der 2-dimensionalen Ebene: public class Punkt { private double x; private double y; public void setcoordinates(double x, double y) { this.x = x; this.y = y; public void spiegeleanxachse() { y = -y; public void spiegeleanyachse() { x = -x; public void output() { System.out.println("(" + x + ", " + y + ")"); Oliver Haase Hochschule Konstanz 29
30 Beispiel 2 Punkte Benutzung der Klasse Punkt: Punkt punkt = new Punkt(); punkt.setcoordinates(3.5, 1.7); punkt.spiegeleanxachse(); punkt.output(); (3.5, -1.7) Konsole Oliver Haase Hochschule Konstanz 30
31 Punkte Polarkoordinaten Annahme: Darstellung eines Punktes p soll geändert werden in Polarkoordinatendarstellung, d.h. ein Paar (phi, d), mit phi: Winkel zwischen X-Achse und p, Scheitel im Nullpunkt d: Distanz von p zum Nullpunkt p 1 d phi 1 Oliver Haase Hochschule Konstanz 31
32 geänderte Punktdarstellung public class Punkt { private double phi; // Winkel in Rad (Bogenmass) private double d; public void setcoordinates(double x, double y) { d = Math.sqrt(x * x + y * y); phi = Math.atan(y / x); public void spiegeleanxachse() { phi = 2 * Math.PI - phi; public void spiegeleanyachse() { phi = ( phi < Math.PI )? Math.PI phi : 3 * Math.PI phi; public void output() { // Rueckrechung in kart. Koordinaten und Ausgabe Oliver Haase Hochschule Konstanz 32
33 Benutzung Unveränderte Benutzung der geänderten Klasse Punkt! Punkt punkt = new Punkt(); punkt.setcoordinates(3.5, 1.7); punkt.spiegeleanxachse(); punkt.output(); (3.5, -1.7) Konsole Oliver Haase Hochschule Konstanz 33
34 Polymorphismus [griechischer Ursprung: "Vielgestaltigkeit"] Oliver Haase Hochschule Konstanz 34
35 Definition Polymorphismus beruht auf drei Prinzipien, die ineinander greifen: Substitutionsprinzip Überschreiben von Methoden späte Bindung Oliver Haase Hochschule Konstanz 35
36 Substitutionsprinzip Idee: Wenn B eine Subklasse von A ist, dann können Instanzen von B überall dort auftreten, wo Instanzen von A verlangt sind. Erlaubt, weil B alle Eigenschaften von A erbt. Adresse meineadresse = new FaxAdresse(); meineadresse.setplz(78464); Oliver Haase Hochschule Konstanz 36
37 Überschreiben von Methoden Nicht zu verwechseln mit dem Überladen von Methoden Zur Erinnerung: Überladen: Methoden derselben Klasse gleichen Namens unterschiedliche Parameter Überschreiben: Methoden gleichen Namens gleiche Parameterlisten aber: definiert in Super- und Subklasse Oliver Haase Hochschule Konstanz 37
38 Motivation Wozu ist das Überschreiben von Methoden gut? Wegen Vererbung stehen Methoden der Superklasse auch der Subklasse zur Verfügung, aber: Manchmal soll Implementierung der Superklasse durch speziellere Implementierung in der Subklasse überschrieben werden. Beispiel: allgemeine Klasse Mammal definiert Instanzmethode getlifespan () d, die die durchschn. Lebensdauer eines Säugetiers in Jahren zurückliefert 20 speziellere Klasse Rodent ( 5) erbt die Methode, überschreibt sie und liefert den Wert 5 zurück. Oliver Haase Hochschule Konstanz 38
39 Beispiel public static class Mammal {... public int getlifespan() { return 20; public static class Rodent extends Mammal {... public int getlifespan() { return 5; Oliver Haase Hochschule Konstanz 39
40 Späte Bindung Das Java-Laufzeitsystem (Java Virtual Machine) ruft für jedes Objekt die speziellste zur Verfügung stehende Methode auf: Sei o eine Instanz der Klasse k 2, die eine Subklasse von k 1 ist. Bei der Auswertung der Anweisung o.f() wird die speziellere Implementierung von f in k 2 aufgerufen, falls k 2 f überschreibt, und die Implementierung in k 1, falls k 2 f von k 1 erbt, d.h. nicht selbst überschreibt. Oliver Haase Hochschule Konstanz 40
41 Anwendung Eine Methode, die einen Parameter vom Typ Mammal erwartet, kann ungeachtet des eigentlichen Typs (Mammal oder spezieller) die Methode getlifespan() aufrufen, und Java verwendet immer die 'richtige' Variante: public static void printlifespan(mammal mammal){ System.out.println(mammal.getLifeSpan()); Oliver Haase Hochschule Konstanz 41
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
MehrProgrammiertechnik Objektorientierung
Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung
MehrEinstieg 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
MehrEinstieg 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:
MehrVererbung, 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
MehrEinstieg 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
MehrObjektorientierte 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
MehrVererbung. 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
Mehr7. 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
MehrProgrammiertechnik Vererbung & Polymorphismus für Fortgeschrittene
Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette Problem:
MehrGrundzü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
Mehr3. 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.
MehrEinstieg 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
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 11: 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
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette
MehrTeil 2: Weitere Aspekte der Objektorientierung
Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:
MehrMethoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public
MehrSilke 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
MehrInnere 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
MehrGrundelemente 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
MehrGrundelemente 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
MehrGrundelemente 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
MehrVererbung. 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
MehrJavakurs 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
MehrVererbung 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
MehrProgrammiertechnik Klassen
Programmiertechnik Klassen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Aufgabe: Programm zur Adressverwaltung (20 Adressen) Adresse besteht aus: Name Adresse (Straße und Wohnort)
MehrJava Einführung Vererbung und Polymorphie. Kapitel 13
Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort
MehrNeben 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
MehrKapitel 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
MehrJavakurs 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
MehrKlassenvariablen, 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
MehrEinstieg 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
MehrSilke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassen
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassen Motivation Aufgabe: Programm zur Adressverwaltung (20 Adressen) Adresse besteht aus: Name Adresse (Straße und Wohnort) Postleitzahl
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch
MehrEinstieg 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
MehrProgrammieren 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
MehrProgrammieren 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
MehrProgrammierung 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
MehrArten 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
MehrProgrammiertechnik Klassenmethoden
Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner
MehrInformatik II. Woche 13, Giuseppe Accaputo
Informatik II Woche 13, 30.03.2017 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Nachbesprechung Self-Assessment Test Nachbesprechung Übung 5 Java: Objektorientierte Programmierung Klassen und Objekte
MehrDie Welt in unseren Programmen false -1.4E-12. false. Klassen
Algorithmen und Datenstrukturen Die Welt in unseren Programmen Die Welt in unseren Programmen Wintersemester 2012/13 9. Vorlesung Sortieren von Objekten 1.357374356 25236748458 true "HalloWelt!" 14136.23462
MehrKlassenmethoden. 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
MehrBeispiele 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]
MehrImplementieren 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
MehrInhaltsü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)
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Ausnahmen Motivation Anwendungsbeispiel 1: java Excep1 a: 15 b: 3 a / b = 5 Job done. Konsole Anwendungsbeispiel 2: Konsole java
MehrÜ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
MehrAlgorithmen 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
MehrProgrammiertechnik Ausnahmen
Programmiertechnik Ausnahmen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation public class Excep1 { public void doyourjob() { Scanner scanner = new Scanner(System.in); System.out.print("a:
MehrInstitut 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
MehrJavakurs 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
Mehr14. Java Objektorientierung
Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object
Mehr14. Java Objektorientierung. Klassen, Vererbung, Kapselung
427 14. Java Objektorientierung Klassen, Vererbung, Kapselung Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen
Mehr14. Java Objektorientierung
Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen
MehrProgrammiertechnik Erweiterungen in Java 5
Programmiertechnik Erweiterungen in Java 5 Prof. Dr. Oliver Haase! Oliver Haase Hochschule Konstanz!1 Überblick Mit Java 5 wurde Java um einige neue Konstrukte erweitert, z.b.:! vereinfachte For-Schleifen
MehrVorlesung 8. Sitzung Grundlegende Programmiertechniken
Vorlesung 8. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 OOP-Abstraktionsmittel:
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe
Mehr4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:
4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende
MehrEinfü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
MehrEinführung in die Programmierung I. 10. Klassen und Objekte. Stefan Zimmer
Einführung in die Programmierung I 10. Klassen und Objekte Stefan Zimmer 14.1.2008 Objektorientierte Programmierung Ein wesentliches Prinzip in Java haben wir bisher umgangen: die objektorientierte Programmierung.
MehrPakete Software Entwicklung 1
Pakete Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Organisation von Klassen- und Interface-Deklaration Java-Programme bestehen aus Typdeklarationen, d.h. Klassen- und Interface-Deklarationen.
MehrTest zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003
Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler 1. Jänner 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat
Mehr5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte
5 Vererbung Subklassen, Superklassen, Pakete Zugriffsrechte Wiederverwendung von Code Konventionelle Methode: Wähle einen Quelltext, der ein ähnliches Problem bearbeitet und passe diesen Text auf das neue
MehrVererbung, Polymorphismus
Vererbung, Polymorphismus INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Automobilbau Firma produziert Limousine Kunde möchte Kombi Wielösen? Möglichkeiten Neudesign
MehrKapitel 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
MehrPropädeutikum Programmierung in der Bioinformatik
Propädeutikum Programmierung in der Bioinformatik Java Klassen und Objekte Thomas Mauermeier 27.11.2018 Ludwig-Maximilians-Universität München Rückblick Imperative Programmierung Variablen Fallunterscheidungen
MehrEinstieg 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
MehrJava 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
MehrJAVA 05: Objektorientierte Konzepte
Lernkartenkurs JAVA 05: Objektorientierte Konzepte panitz Zusammenfassung Dieser Kurs beschäftigt sich mit Grundkonzepten der objektorientierten Programmierung. Was sind Klassen und Objekte? Wie sehen
MehrPolymorphie und UML Klassendiagramme
Polymorphie und UML Klassendiagramme Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Vererbung hat einen sehr interessanten und effektiven Effekt: die Polymorphie. Darum geht es in dieser Veranstaltung. 2
MehrAufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {
Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse
MehrII.4.1 Unterklassen und Vererbung - 1 -
n 1. Grundelemente der Programmierung n 2. Objekte, Klassen und Methoden n 3. Rekursion und dynamische Datenstrukturen n 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und
MehrDurch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei
Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der
MehrModularisierung in Java: Pakete Software Entwicklung 1
Modularisierung in Java: Pakete Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Um zusammengehörende Klassen, Interfaces, etc. gemeinsam zu verwalten, Sichtbarkeiten einzugrenzen und
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Objektorientierung I : Statische Klassen Statische Aspekte (Modularisierung) Dynamische Aspekte (Klassen-Objekte) Seite 1 Th Letschert
MehrGeoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)
Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA) Ihr Name: Matrikelnummer: Allgemeine Hinweise: Erlaubtes Hilfsmittel: Ein beidseitig handbeschriebenes Din-A4-Blatt Tragen Sie Ihren Namen und
MehrII.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
MehrEinstieg in die Informatik mit Java
1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen
MehrKapitel 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
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben
MehrSortieren von Objekten
Algorithmen und Datenstrukturen Wintersemester 2013/14 18. Vorlesung Sortieren von Objekten Krzysztof Fleszar Lehrstuhl für Informatik I 1 Die Welt in unseren Programmen 1.357374356-4.526426 25236748458
Mehr10. Pakete. Ein Paket (package) bündelt thematisch zusammengehörige Klassen und Schnittstellen zu einer Klassenbibliothek.
10. Pakete Grundlagen zu Paketen 10. Pakete Ein Paket (package) bündelt thematisch zusammengehörige Klassen und Schnittstellen zu einer Klassenbibliothek. Beispiele: java.lang: Standardklassen zur Sprache
Mehr4. Vererbung Die Klasse Object. Die Klasse Object
4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrRückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren
Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen
MehrWas du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.
Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe http://www.zitate-online.de/autor/goethe-johann-wolfgang-von/ http://www.weimar-lese.de/files_weimar_lese/johann_wolfgang_von_goethe_bearbeitet_von_andreas_werner.jpg
MehrArten 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
MehrC++ - Objektorientierte Programmierung Polymorphie
C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie
Mehr