Berner Fachhochschule Technik und Informatik Einführung in die OOP mit Java Unterlagen zum Modul „OOP mit Java“ V 3.0 © 2007 by WBR1/HTI © 2011 by MOU2/TI Einführung in die OOP WBR1&MOU2/BFH-TI V3.0 © 2011 by Berner Fachhochschule Technik und Informatik Interfaces - Eigenschaften Interfaces bestehen aus abstrakten Methoden und Konstanten. • Alle Attribute eines Interfaces sind konstant (final) und `public` • Alle Methoden eines Interfaces sind `public` Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-2 Berner Fachhochschule Technik und Informatik Syntax der Interface-Klasse public interface Printer { int attribute1 = 100; void methode1(); } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-3 Berner Fachhochschule Technik und Informatik Interfaces - Eigenschaften Interfaces definieren Schnittstellen Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-4 Berner Fachhochschule Technik und Informatik Interfaces - Eigenschaften In einer Klasse, welche ein Interface implementiert: • müssen alle Methoden dieses Interfaces implementiert werden ODER • die Klasse muss als abstract bezeichnet werden Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-5 Berner Fachhochschule Technik und Informatik Syntax der Klasse, welche das Interface implementiert public class Name implements Interface-Name1, Interface-Name2 { // Implementation des Interfaces void methode1() { ... } ... } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-6 Berner Fachhochschule Technik und Informatik Interfaces - Eigenschaften Eine Klasse kann mehrere Interfaces implementieren. Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-7 Berner Fachhochschule Technik und Informatik Interfaces - Eigenschaften Interfaces können von andern Interfaces erben public interface ExportData extends ImportData { void export(); } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-8 Berner Fachhochschule Technik und Informatik Beispiel für ein Interface abstract GeometrischesObjekt x_coord y_coord isVisible GeometrischesObjekt() setCoord() draw() move() area() Rechteck width height Rechteck() area() getWidth() getHeight() Einführung in die OOP <Interface> Printer style print() feedPaper() V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-9 Berner Fachhochschule Technik und Informatik Codebeispiel Definition Interface // Interface Definition public interface Printer { public final int style= 11; public void print(String str); public void feedPaper(); } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-10 Berner Fachhochschule Technik und Informatik Codebeispiel Implementation Interface public class Rechteck extends GeometrischesObjekt implements Printer { ... // Interface implementation public void print(String str) { System.out.println(str); } public void feedPaper(){...}; } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-11 Berner Fachhochschule Technik und Informatik Interfaces vs. Abstrakte Klassen • Eine abstrakte Klasse ist eine unvollständige Klasse – ein Interface ist eine Art Vorschrift für ein bestimmtes Verhalten einer Klasse • Eine Klasse kann mehrere Interfaces implementieren aber nur von einer Oberklasse erben • In Interfaces sind alle Methoden „public“, bei abstrakten Klassen „public“ oder „protected“ • In Interfaces sind alle Attribute „public“ und „final“, bei abstrakten Klassen sind bei Attributen alle Zugriffsmodifier möglich. • Weder Interfaces noch abstrakte Klassen können instanziert werden Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-12 Berner Fachhochschule Technik und Informatik Packages • Ein Package (Paket) ist eine Sammlung verschiedener Klassen mit ähnlichen Aufgaben. • Sie schaffen übersichtliche Strukturen • Sie ermöglichen die Identifikation von Klassen in sehr grossen Projekten • Sie steuern die Sichtbarkeit von Klassen, Methoden und Attributen in einem Projekt Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-13 Berner Fachhochschule Technik und Informatik Verwendung und Import • • Bevor sie eine Klasse in ihrem Code verwenden können, müssen sie angeben, aus welchem Package sie stammt. Dazu gibt es folgende Möglichkeiten: 1) Angabe des vollständigen Namens inklusive Package und Subpackage. 2) Einbindung der Klasse am Anfang des Codes mit import. 3) Einbindung des ganzen Packages am Anfang des Codes, ebenfalls mit import. Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-14 Berner Fachhochschule Technik und Informatik Angabe des vollständigen Namens public class Datum01 { public static void main(String[] args) { java.util.GregorianCalendar date = new java.util.GregorianCalendar(); System.out.println(date.getTime()); } } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-15 Berner Fachhochschule Technik und Informatik Einbindung der Klasse am Anfang des Codes // Import Klasse aus Package import java.util.GregorianCalendar; public class Datum02 { public static void main(String[] args) { GregorianCalendar date = new GregorianCalendar(); System.out.println(date.getTime()); } } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-16 Berner Fachhochschule Technik und Informatik Einbindung des Package am Anfang des Codes // Import Package import java.util.*; public class Datum03 { public static void main(String[] args) { GregorianCalendar date = new GregorianCalendar(); System.out.println(date.getTime()); } } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-17 Berner Fachhochschule Technik und Informatik Erstellen eigener Packages package paket1; public class Test_A { public void sayHello() { System.out.println("My name is Bond"); } } Einführung in die OOP V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-18 Berner Fachhochschule Technik und Informatik Beispiel eigenes Package Eclipse Filesystem Einführung in die OOP Editor V3.0 © 2011 by WBR1&MOU2/BFH-TI Folie 3-19