Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP JAVA 2 II. Objektorientierte Programme Aufbau eines objektorientierten Programmes class omwst { class Anwendung ... Deklaration eines Objektes von neue_Klasse; Anlegen eines Objektes von neue_Klasse; ... Anwenden der Methoden des Objektes public static void main(String args[]) { int eingabe; Mehrwertsteuer mwst; mwst=new Mehrwertsteuer(); eingabe=Integer.parseInt(args[0]); mwst.nettopreis(eingabe); mwst.berechnung(); System.out.println(mwst.getbrutto()); } } // Ende des Programmes class Mehrwertsteuer { private int netto; private double brutto; public void nettopreis(int eingabewert) { netto=eingabewert; } public void berechnung() { brutto=netto+netto*0.15; } } Ende des Programmes class neue_Klasse ... Beschreibung der Klasse (Bauplan) Weitere Klassen ... Nach dem Compilieren existieren von allen definierten Klassen eigenständige Dateien .class Beschreiben Sie den Aufbau der Klasse Mehrwertsteuer: public double getbrutto() { return brutto; } } Datenkapselung Datenfelder von Objekten werden mit den Zugriffs-Modifizierern private oder protected deklariert. _______________________________ Arbeitsblätter zur VL OOP; Java 2 Seite 1 Methoden werden public deklariert. private protected public Variable oder Methode gilt nur in definierter Klasse Variable oder Methode gilt auch in vererbten Objekten Variable oder Methode ist öffentlich Vererbung erbt eine Klasse die Eigenschaften einer anderen, so wird bei der Klassendefinition mit dem Schlüsselwort extends auf den Ursprung hingewiesen: class Kind extends Vater Variablen, die vererbbar sind, müssen protected sein, d.h. sie sind nur in einer Klassenhierarchie verwendbar. Beispiel: class vmwst // Anwendung der Vererbung; Programm verlangt einen Eingabeparameter { public static void main(String args[]) { int eingabe; Mehrwertsteuer mwst; mwst=new Mehrwertsteuer(); eingabe=Integer.parseInt(args[0]); mwst.nettopreis(eingabe); mwst.berechnung(); System.out.println(mwst.getbrutto()); Mehrwertsteuer17 mwst17; // Objekte können an beliebiger Stelle mwst17=new Mehrwertsteuer17(); // im Programm definiert werden mwst17.nettopreis(eingabe); // Anwendung der alten Methoden mwst17.berechnung(); // im neuen Objekt System.out.println(mwst17.getbrutto()); System.out.println(mwst17.brutto17()); // Anwendung der neuen Methode } } // 2. Klammer à Programmende class Mehrwertsteuer { protected int netto; // protected, da vererbbar protected double brutto; public void nettopreis(int eingabewert) // Methodendefinitionen: { netto=eingabewert;} public void berechnung() { brutto=netto+netto*0.15;} public double getbrutto() {return brutto;} } class Mehrwertsteuer17 extends Mehrwertsteuer { public double brutto17() { return netto+netto*0.17; } } Polymorphie (Verwandlungsfähigkeit), d.h. eine Methode kann überschrieben werden (overriding), der Name bleibt bestehen, der Inhalt ändert sich. _______________________________ Arbeitsblätter zur VL OOP; Java 2 Seite 2 Methoden können auch überladen werden (overloading); D.h., der Name der Methode ist gleich, aber die Parameterliste ist verschieden. Java sucht beim Programmablauf die Metohode mit der richtigen Parameterliste aus. Bsp.: ... Kreis K1=new Kreis(); //es wird ein Objekt angelegt K1.zeichnen(); //es existiert eine Methode zeichnen, die keine Parameter hat, Java wendet diese Methode an; K1.zeichnen(5,5); // es existiert eine Methode zeichnen, die Parameter hat, Java wendet diese Methode an; ... Statische Datenfelder und Methoden - werden durch das Schlüsselwort static vereinbart und gelten für die gesamte Klasse; - müssen also nur einmal definiert (gesetzt) werden - bei Änderung ist die Änderung für alle Objekte der Klasse wirksam Methoden und Datenfelder können auch als final deklariert werden. Das bedeutet für Klassen, daß sie nicht erweitert, verändert oder überschrieben werden können. Es sind also echte Konstanten. Pakete - sind Bibliotheken in Java (Klassenbibliotheken) - werden durch import ins Programm integriert Beispiele zum Import: import java.applet.Applet; Hier wird die Klasse Applet aus dem package applet von java importiert. Alle Methoden und Variablen der Klasse Applet sind im eigenen Programm verfügbar. import java.applet.*; alle Klassen des applet-packages sind verfügbar import java.*; macht alle packages und damit alle Klassen, die Java anbietet, verfügbar Einige wichtige Java-packages: Bezeichnung Inhalt enthält Klassen zum Schreiben eines eigenen Applets java.applet enthält Klassen zum Aufbau einer graf. Benutzeroberfläche, wie Fenster, Dialoge, java.awt java.io java.lang java.net Schaltflächen, Listen, Rollbalken u.a. Klassen zur Ein-und Ausgabe grundlegendes package zur Sprachbeschreibung (language), wird automatisch in alle Java-Programme eingebunden; beinhaltet die Klasse Object, die die Elternklasse aller anderen Klassen von Java ist implementiert Netzwerk-Protokolle (FTP, Sockets, Telnet, WWW) diese Klassen machen Java internetkompatibel; der Austausch von Daten übers Netzwird möglich _______________________________ Arbeitsblätter zur VL OOP; Java 2 Seite 3