Statische Methoden, Vererbung, Benutzereingabe

Ähnliche Dokumente
Statische Methoden, Vererbung, Benutzereingabe

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmieren in Java

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

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

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen

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

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

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

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

Objektorientierte Programmierung Studiengang Medieninformatik

Javakurs für Anfänger

2. Vererbung und Kapselung

Einstieg in die Informatik mit Java

Kapitel 6. Vererbung

Objektorientierte Programmierung Studiengang Medieninformatik

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

Kapitel 6. Vererbung

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Vererbung, Polymorphie

3 Objektorientierte Konzepte in Java

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

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

Javakurs für Anfänger

Kapitel 6. Vererbung

Einstieg in die Informatik mit Java

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

6. Globalübung (zu Übungsblatt 8)

Arten von Klassen-Beziehungen

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Repetitorium Informatik (Java)

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

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

12 Abstrakte Klassen, finale Klassen und Interfaces

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Kapitel 4: Klassen und Unterklassen

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

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Arten von Klassen-Beziehungen

Geschachtelte Klassen

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

Java Vererbung. Inhalt

Einstieg in die Informatik mit Java

Teil 2: OOP und JAVA (Vorlesung 11)

Vererbung und Polymorphie

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs für Anfänger

Kontrollstrukturen: Wiederholungsanweisungen

Einstieg in die Informatik mit Java

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

1 Abstrakte Klassen, finale Klassen und Interfaces

Objektorientierte Programmierung Studiengang Medieninformatik

JAVA - Methoden

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

14 Abstrakte Klassen, finale Klassen, Interfaces

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

Java Einführung Vererbung und Polymorphie. Kapitel 13

Javakurs für Anfänger

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

Java: Vererbung. Teil 3: super()

Programmieren in Java

3 Objektorientierte Konzepte in Java

Klassenvariablen, Klassenmethoden

Programmieren in Java

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

Objektorientierte Programmierung. Kapitel 14: Interfaces

Einführung in die Programmierung

Vererbung. Martin Wirsing. Ziele. Vererbung

Objektorientierte Programmierung und Klassen

Algorithmen und Datenstrukturen II

Beziehungen zwischen Objekten

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

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

5.6 Vererbung. Vererbung

Wiederholung zur Vorlesung Programmieren

Vererbung und Polymorphie

Java I Vorlesung Vererbung und Sichtbarkeit

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

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Programmiertechnik Objektorientierung

Sortieren von Objekten

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Java für Bauingenieure

Javakurs für Anfänger

Einstieg in die Informatik mit Java

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

Theorie zu Übung 8 Implementierung in Java

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

II.4.1 Unterklassen und Vererbung - 1 -

Typumwandlungen bei Referenztypen

FAKULTÄT FÜR INFORMATIK

Grunddatentypen, Ausdrücke und Variablen

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung in die Programmiersprache Java II

Tücken der dynamischen Bindung

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

Transkript:

Statische Methoden, Vererbung, Benutzereingabe Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18

Instanz- vs. Klassenattribute/methoden (I) Wiederholung: Klassen und Objekte (vgl. ZÜ6) Attribute (=Instanzattribute) legen die charakteristischen Eigenschaften eines Objekts fest. Z.B. Klasse Mensch mit Attributen name, alter, groesse (Schablone) Z.B. Objekt Annabelle vom Klassentyp Mensch mit Attributwerten name="annabelle", alter=30, groesse=165 (konkrete Ausprägung) Methoden (=Instanzmethoden) legen das charakteristische Verhalten eines Objekts fest. Z.B. Klasse Mensch mit den Methoden getgroesse(), wachsen(int cm) Z.B. Verwendung eines Objekts mit annabelle.wachsen(10) 2

Instanz- vs. Klassenattribute/methoden (II) Neu: Statische Attribute und Methoden Statische Attribute (=Klassenattribute) legen die charakteristischen Eigenschaften einer Klasse unabhängig vom Zustand konkreter Objekte fest. Z.B. Klasse Mensch mit den statischen Attributen populationsgroesse, biologfamilie Statische Methoden (=Klassenmethoden) legen das charakteristische Verhalten einer Klasse unabhängig vom Zustand konkreter Objekte fest. Z.B. Klasse Mensch mit den statischen Methoden geburtregistrieren(), getbiologfamilie() 3

Beispiel 1: Klasse Mensch (I) Wir möchten uns in einem Attribut ernaehrung merken, was die bevorzugte Ernäherungsform eines Menschen ist. Welche Art von Attribut muss für die Ernäherungsform angelegt werden? a) ein Instanzattribut b) ein Klassenattribut c) ein Instanz- oder/und ein Klassenattribut speichert die Ernäherungsgewohnheit eines bestimmten Menschen (z.b. Alice ist Vegetarier, Bob ist Veganer, Charles isst alles) speichert die biologische Ernäherungsform der Familie der Menschen (= Allesfresser) 4

Allgemeiner Aufbau einer Klasse in Java public class C { private type 1 attr 1 ;... private static type 2 attr 2 =...;... Instanzattribute Klassenattribute public C(params) {body... public type 1 /void methodname 1 (params 1 ) {body 1... public static type 2 /void methodname 2 (params 2 ) {body 2... Konstruktoren Instanzmethoden Klassen -methoden 5

Klassenattribute Beispiel 1: Klasse Mensch (II) public class Mensch { private String name; Instanzattribute private int alter; private int groesse; private static int populationsgroesse = 0; public static final String biologfamilie = "Menschenaffen"; public static void geburtregistrieren() { populationsgroesse++; public static String getbiologfamilie() { return biologfamilie;... // siehe ZÜ6 Klassenmethoden 6

Beispiel 1: Klasse Mensch (III) public class MenschTest { public static void main(string[] args){ Mensch baby = new Mensch("Helena", 0, 53); // Registrierung der Geburt baby.wachsen(15); Was ist der korrekte Aufruf, um die Geburt von Helena bekanntzugeben? a) this.geburtregistrieren(); b) baby.geburtregistrieren(); c) Mensch.geburtRegistrieren(); d) geburtregistrieren(baby); 7

Klassen und Vererbung Ein Klasse definiert die charakteristischen Merkmale von Objekten einer bestimmten Art. Z.B. Klasse Mensch mit Attributen name, geschlecht, alter, groesse Vererbung dient dazu, neue Unterklassen zu definieren, die alle charakteristischen Merkmale einer Oberklasse haben und diese Oberklasse spezialisieren Z.B. Klasse Frau mit den geerbten Attributen name, geschlecht, alter, groesse, wobei geschlecht="weiblich" festgelegt wird diese Oberklasse erweitern Z.B. Klasse Angestellter mit den geerbten Attributen name, geschlecht, alter, groesse, und den zusätzlichen Attributen position, gehalt 8

Wissenswertes zur Vererbung (I) Sichtbarkeiten beachten! Eine Subklasse erbt automatisch alle Attribute der Oberklasse. Geerbte Attribute dürfen in der Subklasse nicht nochmal deklariert werden. Zusätzliche Attribute werden in der Subklasse deklariert. Der Konstruktor der Subklasse muss alle Attribute initialisieren (eventuell unter Verwendung des super-konstruktors). Eine Subklasse erbt automatisch alle Methoden der Oberklasse. Geerbte Methoden sind automatisch in der Subklasse verfügbar. Geerbte Methoden können nochmal definiert werden und überschreiben damit die Funktionsweise der Methode in der Oberklasse. Zusätzliche Methoden werden in der Subklasse definiert. 9

Beispiel 2: Schif Jedes Schif hat eine Tragfähigkeit Tonnage (in metrischen Tonnen) und eine aktuelle Beladung. Ein Schif kann beladen werden und es kann ausgegeben werden, mit welchem Antrieb das Schif fährt. public class Schiff { protected int tonnage; protected int beladung; public Schiff(int tonnage) { this.tonnage = tonnage; this.beladung = 0; public void beladen(int ladung) { this.beladung += ladung; public String antriebausgeben() { return "Schiff ohne Antrieb"; 10

Beispiel 2: Subklasse Motorschif Jedes Motorschif hat zusätzlich eine Motorleistung (Kilowatt). public class Motorschiff extends Schiff { private int motorleistung; public Motorschiff(int tonnage, int motorleistung) { super(tonnage); oder this.tonnnage = tonnage, da Attribut protected this.motorleistung = motorleistung; Die Methode antriebausgeben wird überschrieben. public String antriebausgeben() { return "Motorschiff mit einer Motorleistung von " + this.motorleistung; Die Methode beladen ist automatisch verfügbar. 11

Beispiel 2: Subklasse Segelschif Jedes Segelschif hat zusätzlich eine Segelfläche (m 2 ). public class Segelschiff extends Schiff { private int segelflaeche; public Segelschiff(int tonnage, int segelflaeche) { super(tonnage); oder this.tonnnage = tonnage, da Attribut protected this.segelflaeche = segelflaeche; Die Methode antriebausgeben wird überschrieben. public String antriebausgeben() { return "Segelschiff mit einer Segelfläche von " + this.segelflaeche; Die Methode beladen ist automatisch verfügbar. 12

Subtyping Welche Initialisierung ist nicht erlaubt? public class Main { public static void main(string[] args) { Schiff schiff1 = new Schiff(1000); // a) Schiff schiff2 = new Segelschiff(1000,150); // b) Segelschiff sschiff1 = new Schiff(1000); // c) Segelschiff sschiff2 = new Segelschiff(1000,150); // d) Segelschiff sschiff3 = new Motorschiff(1000,35000); // e) 13

Dynamische Bindung Was ist die Ausgabe des Programmstücks? public class Main { public static void main(string[] args) { Schiff schiff1 = new Segelschiff(1000,150); System.out.println(schiff1.antriebAusgeben()); a) "Schiff ohne Antrieb" b) "Motorschiff mit einer Motorleistung von 150" c) "Segelschiff mit einer Segelfläche von 150" 14

Grafische Benutzereingabe mit JOptionPane Die bisherigen Anwendungen in den Übungen können verschiedene Dinge berechnen aber sie sind noch nicht interaktiv. Wie kann eine grafische Benutzereingabe auf einfache Weise realisiert werden? Bisher: public static void main(string[] args) { int a = 2; int b = 5; int produkt = a * b; System.out.println("Produkt von a und b: " + produkt); 15

Grafische Benutzereingabe mit JOptionPane import javax.swing.joptionpane; public static void main(string[] args) { String a = JOptionPane.showInputDialog("Wert von a: "); String b = JOptionPane.showInputDialog("Wert von b: "); Wir brauchen für die Berechnung eines Produkts Integerwerte Solange das Dialogfenster angezeigt wird, stoppt das Programm und wartet, bis der Nutzer einen Wert eingegeben hat. 16

Grafische Benutzereingabe: Parsen eines Strings import javax.swing.joptionpane; public static void main(string[] args) { String sa = JOptionPane.showInputDialog("Wert von a: "); int a = Integer.parseInt(sa); String sb = JOptionPane.showInputDialog("Wert von b: "); int b = Integer.parseInt(sb); int produkt = a * b; System.out.println("Produkt von a und b: " + produkt); 17

Grafische Benutzereingabe: Parsen eines Strings Was passiert, wenn der Nutzer in der Eile ein Leerzeichen vor der Ganzzahl eingibt? Oder eine Gleitkommazahl, oder einen Buchstaben? 18