Objektorientierte Programmierung mit Java unter BlueJ

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Einführung in die Programmierung Zusammenfassung
Kritische Betrachtung
Kapselung , toString , equals , Java API
Objektorientierung mit VBA
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Vererbung.
Abstrakte Klassen.
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Vererbung. Das Prinzip der Vererbung im täglichen Leben:
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Objektorientierte Modellierung
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Delphi II - OOP IFB Fortbildung
Programme dokumentieren mit JavaDoc
Entwurfs- und Implementationsdiagramme
Klassendefinitionen in Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Konzepte der objektorientierten Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
EPROG Tutorium #5 Philipp Effenberger
Analyseprodukte numerischer Modelle
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
1 VeranstaltungThemaVortragende AINF-Lehrgang 2003 Titel: Grundlagen der Objektorientierten Programmierung Name: Gruppe Programmierung.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Sichtbarkeit einschränken
UML-Klassendiagramm: Klassen
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Venusspiegel und Marsschild
November 18 Informatik Kurse
Programmierung und Vererbung in Java
OO-Programmierung & Vererbung
2. Vererbung und Kapselung
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
Vererbung in Java Von Jan und Eddi.
 Präsentation transkript:

Objektorientierte Programmierung mit Java unter BlueJ Teil 2 Beziehungen zwischen Klassen/Objekten (Grundlagen): Vererbung Objektinteraktion Christoph Oberweis 2008

Agenda Vererbung Klassendiagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Vererbung Klassendiagramme Objekte erzeugen Abstrakte Klassen Objektinteraktion Objekte erzeugen Objekte Quellen C.O.

Vererbung: Wo sie herkommt Das Entity-Relationship-Modell als semantisches Datenmodell kennt den is-a (ist-ein) Beziehungstyp: Ein Entitätstyp besitzt alle Attribute eines anderen Entitätstyps und zusätzlich noch andere Attribute. Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Person hat z. B. die Attribute Name, Adresse, bei Mitarbeiter kommt z. B. das Eintritts-Datum in die Firma hinzu, Kunde könnte z. B. eine Angabe hinsichtlich der Bonität haben. C.O.

Vererbung: Generalisierung und Spezialisierung Eine Klasse ist eine Spezialisierung einer anderen Klasse, wenn sie zusätzlich zu den Datenfeldern der anderen Klasse eigene besitzt (z.B. bei PKW: Attribut „Anzahl Türen“). Mit „ist ein“ wird das Verhältnis von Spezialisierung zu Generalisierung beschrieben. Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Fahrrad ist ein Fahrzeug Kraftfahrzeug ist ein Fahrzeug PKW ist ein Kraftfahrzeug Kleinlaster ist ein Kraftfahrzeug  In der OOP wird eine Spezialisierung durch Vererbung realisiert. C.O.

Vererbung: UML-Notation Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Der Pfeil zeigt auf die Oberklasse, von der die Unterklasse „erbt“, d. h. die Oberklasse gibt Eigenschaften an diese weiter. C.O.

Beispiel 1 C.O. Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Aufgabe 1 Implementieren Sie bitte die drei Klassen der vorherigen Folie in BlueJ! Nehmen Sie bitte in den Unterklassen folgende Veränderungen vor: Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen public class Werkzeug_einfach extends Artikel public class Werkzeug_elektro extends Artikel Die Konstruktoren der Unterklassen müssen die Datenfelder der Oberklasse mit berücksichtigen: public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung) Im Konstruktor der Unterklassen: super(aNum, aBez, nPreis); C.O.

Programmtest C.O. Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Datenfelder der Oberklasse Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Methode – geerbt! C.O. Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Quellcode: Oberklasse public class Artikel { private int artikelnummer; private String bezeichnung; private double nettopreis; public Artikel(int aNum, String aBez, double nPreis) artikelnummer = aNum; bezeichnung = aBez; nettopreis = nPreis; } public double bruttoAusgeben() return nettopreis * 1.19; Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Quellcode: Subklasse 1 public class Werkzeug_einfach extends Artikel { private String groesse; private String anwendung; public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung) super(aNum, aBez, nPreis); groesse = dieGroesse; anwendung = dieAnwendung; } Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Quellcode: Subklasse 2 public class Werkzeug_elektro extends Artikel { private int leistung; // in Watt private String zusatz; // z. B. Koffer ... public Werkzeug_elektro(int aNum, String aBez, double nPreis, int dieLeistung, String derZusatz) super(aNum, aBez, nPreis); leistung = dieLeistung; zusatz = derZusatz; } Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Aufgabe: Versehen Sie bitte den Quellcode mit Kommentaren! C.O.

Schönheitsfehler Von der Oberklasse lässt sich ein Objekt erzeugen, obwohl das in der Regel eher wenig Sinn macht. Ein direkter Zugriff auf die Datenfelder der Oberklasse aus den Subklassen wird verhindert („private“). Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Schönheitsfehler: Reparatur Von der Oberklasse lässt sich ein Objekt erzeugen, obwohl das in der Regel eher wenig Sinn macht. Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Abhilfe: public abstract class Artikel Verhindert, dass eine Instanz von „Artikel“ erzeugt werden kann! C.O.

Schönheitsfehler: Reparatur Ein direkter Zugriff auf die Datenfelder der Oberklasse aus den Subklassen wird verhindert („private“). Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Lösung: protected int artikelnummer; protected String bezeichnung; protected double nettopreis; Zugriff für Subklassen möglich, Kapselung bleibt erhalten! C.O.

Beispiel 2 Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen preisMengegroesser10(): Berechnung des Mengenrabatts beim Kauf von mehr als 10 gleiche Artikel. C.O.

Lösung: Oberklasse C.O. public abstract class Artikel { protected int artikelnummer; protected String bezeichnung; protected double nettopreis; public Artikel(int aNum, String aBez, double nPreis) artikelnummer = aNum; bezeichnung = aBez; nettopreis = nPreis; } public double bruttoAusgeben() return nettopreis * 1.19; Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Lösung: Subklasse 1 C.O. public class Werkzeug_einfach extends Artikel { private String groesse; private String anwendung; public Werkzeug_einfach(int aNum, String aBez, double nPreis, String dieGroesse, String dieAnwendung) super(aNum, aBez, nPreis); groesse = dieGroesse; anwendung = dieAnwendung; } public double preisMengegroesser10() return (nettopreis * 0.9); Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Lösung: Subklasse 2 C.O. public class Werkzeug_elektro extends Artikel { private int leistung; // in Watt private String zusatz; // z. B. Koffer ... public Werkzeug_elektro(int aNum, String aBez, double nPreis, int dieLeistung, String derZusatz) super(aNum, aBez, nPreis); leistung = dieLeistung; zusatz = derZusatz; } Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Objektinteraktion Neben der Vererbung existiert noch ein weiteres wichtige Konzept hinsichtlich der Beziehungen zwischen Klassen. Häufig ist es sinnvoll (und in der Praxis unumgänglich), ein Problem in Teilprobleme zu zerlegen. Eine Rechnung setzt sich z. B. zusammen aus Rechnungskopf-Daten, Positionszeilen (gekaufte Artikel) und dem Rechnungsfuß. Das Objekt Rechnung könnte also in diese drei „Bereiche“ zerlegt werden (Modularisierung). Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Ein Beispiel Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Die Positionszeile mit den Artikeln muss jetzt „irgendwie“ zum Rechnungs-kopf in Beziehung gesetzt werden. Beachte: Das Konzept der Vererbung löst das Problem nicht! C.O.

Nutzer - Beziehung Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Grundgedanke: Das Objekt „Rechnung“ erzeugt (automatisch) „Hilfsobjekte“, welche bestimmte Aufgaben übernehmen, z. B. Berechnung des Brutto-Betrags. Das Objekt „Rechnung“ benutzt dann also das Objekt „Gesamtbetrag_rechnen“. C.O.

Abzüglich 3% Rabatt : 3,60 Euro Nettobetrag : 116,40 Euro Der Rechnungsfuß Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Summe : 120,00 Euro Abzüglich 3% Rabatt : 3,60 Euro Nettobetrag : 116,40 Euro MwSt. (19)% : 22,12 Euro zu zahlender Rechnungsbetrag : 138,52 Euro C.O.

Analyse Summe : 120,00 Euro Abzüglich 3% Rabatt : 3,60 Euro Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Summe : 120,00 Euro Abzüglich 3% Rabatt : 3,60 Euro Nettobetrag : 116,40 Euro MwSt. (19)% : 22,12 Euro zu zahlender Rechnungsbetrag : 138,52 Euro Teilaufgaben, diese können ausgegliedert und getrennt erstellt werden: Modularisierung C.O.

Teilaufgaben sind Objekte Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Summe : 120,00 Euro Abzüglich 3% Rabatt : 3,60 Euro Nettobetrag : 116,40 Euro MwSt. (19)% : 22,12 Euro zu zahlender Rechnungsbetrag : 138,52 Euro Lösung der Teilaufgaben durch Objekte, die sich allerdings sehr ähnlich sind C.O.

Eine Klasse – mehrere Objekte Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Summe : 120,00 Euro Abzüglich 3% Rabatt : 3,60 Euro Nettobetrag : 116,40 Euro MwSt. (19)% : 22,12 Euro zu zahlender Rechnungsbetrag : 138,52 Euro Lösung der Teilaufgaben durch Objekte, die sich allerdings sehr ähnlich sind C.O.

Lösung: „Die Klasse zum Rechnen“ public class Betrag_berechnen { private int proz; public Betrag_berechnen(int prozent) proz = prozent; } public double rech_und_gibBetrag(double betrag) return ((betrag * proz) / 100) + betrag; Mwst oder Rabatt Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Ein Objekt erzeugt Objekte: public class Rechnung { private Betrag_berechnen rab; private Betrag_berechnen mwst; private double nettorab; private double endBetrag; public Rechnung() rab = new Betrag_berechnen (-3); mwst = new Betrag_berechnen (19); } public void rechne_und_aktualisiere(double nettoPreis) nettorab = rab.rech_und_gibBetrag(nettoPreis); endBetrag = mwst.rech_und_gibBetrag(nettorab); Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen C.O.

Und wie funktioniert es? private Betrag_berechnen rab; private Betrag_berechnen mwst; rab = new Betrag_berechnen (-3); mwst = new Betrag_berechnen (19); nettorab = rab.rech_und_gibBetrag(nettoPreis); endBetrag = mwst.rech_und_gibBetrag(nettorab); Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Erklären Sie bitte die oben stehenden vier Code-Zeilen! Versehen Sie bitte den Quellcode mit Kommentaren! Hilfe: Quellenangabe am Ende dieser Präsentation C.O.

Objektinteraktion in Aktion! 1. Rechnung „benutzt“ Betrag_berechnen (in BlueJ dargestellt als gestrichelter Pfeil) Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen 2. Test 3. Es funktioniert! C.O.

Quellen Balzert, Helmut: Lehrbuch Grundlagen der Informatik.- Spektrum Vererbung Klassen- diagramme Objekte erzeugen Abstrakte Klassen Objektinter-aktion Objekte erzeugen Objekte Quellen Balzert, Helmut: Lehrbuch Grundlagen der Informatik.- Spektrum Verlag Barnes, D. u. Kölling, M.: Java lernen mit BlueJ.- Pearson-Verlag Das BlueJ Tutorial http://www.bluej.org/download/download.html http://jerry.c-lab.de/java/21Tage/kap02.htm http://openbook.galileocomputing.de/javainsel7/javainsel_06_006.htm#mje036077517a5d928d3e7974ed4ca9777 C.O.