Informatik für Ingenieure (InfIng) JAVA Doz. Dipl.-Ing. H. Hiller WS 2012/13 Java Java ist… … eine Insel, eine von den vier großen Sunda-Inseln – – Java ist Teil des Staatsgebiets der Republik Indonesien Auf Java befindet sich die indonesische Hauptstadt Jakarta … eine Kaffeesorte … eine Programmiersprache !!! Die Insel Java. © Sergii Figurnyi - Fotolia.com FH D Fachhochschule Düsseldorf Seite 2 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Themen dieser Vorlesung Wir wollen folgenden Fragen nachgehen: 1. "Was ist Java und was macht Java so besonders?" Java-Biografie 2. "Wie unterstützt Java den OOP-Gedanken?" Java & OOP FH D Fachhochschule Düsseldorf Seite 3 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Java-Biographie OOP mit Java Klassen & Objekte Botschaften Vererbung & Polymorphie Datenkapselung Programmstruktur FH D Fachhochschule Düsseldorf Seite 4 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Historisches 1991: Green Projekt der Firma Sun Microsystems Ziel: Vereinfachung der SW-Portierung auf andere Hardware Ergebnis: Plattformunabhängige Programmiersprache Oak, bzw. Java 1994: Einstellung des Green-Projekts Kommerzielle Vermarktung gescheitert Lizenzierung von Oak nicht gefragt 1995: Idee für den Einsatz im Web Grundlegende Veränderung des Internets mit Beginn der 1990er Jahre Wandlung von rein wissenschaftlicher zu öffentlicher Plattform Forderung nach mehr Dynamik – – Mit HTML alleine nicht zu schaffen Clientseitige Programme erforderlich Java: Die Lösung hatte ihr Problem gefunden! 2010: Java unter der Obhut von Oracle Sun Microsystems ist seit 2010 Tochterfirma von Oracle Corporation FH D Fachhochschule Düsseldorf Seite 5 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Design-Merkmale “Write once, run anywhere" Objektorientierung Plattformunabhängigkeit Klassen & Objekte Robustheit Verzicht auf Zeiger etc. Sicherheit Java Virtual Machine (JVM) FH D Fachhochschule Düsseldorf Seite 6 Informatik für Ingenieure WS 2012/13 Vertrautheit Syntaktische Nähe zu C/C++ FB 5 Fachbereich Medien Programmerstellung Quellcode Schreiben des Quelltextes mit einem Editor – Quellcode-File hat die Extension ".java" Quellcode (.java) Übersetzen des Quelltextes in Bytecode – Java Bytecode hat die Extension ".class" Compilieren Beispiel – – Quellcode : HelloWorld.java Bytecode : HelloWorld.class Java Bytecode Bytecode (.class) Architekturneutraler Programmcode in binärer Darstellungsform – Nicht gebunden an den Befehlssatz eines bestimmten Prozessors Unmittelbare Ausführung des Codes auf einer Plattform nicht möglich – Code nicht lauffähig, weil die expliziten Prozessorbefehle fehlen Code ist zur Ausführung in einer Java Laufzeitumgebung bestimmt Der Java Bytecode ist plattform-unabhängig ! FH D Fachhochschule Düsseldorf Seite 7 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Programmausführung Java Run Time Environment (JRE) Laufzeitumgebung für die Java-Plattform von Sun Microsystems Enthält die Java Klassen-Bibliothek und die Java Virtual Machine Java Virtual Machine (JVM) Plattformspezifischer Teil der Laufzeitumgebung Ergänzt den Java Bytecode um die plattformabhängigen Befehle – JVM ist plattform-spezifisch und kennt daher den Befehlssatz des Prozessors Ausführung (Interpretation) des Java-Bytecodes zur Laufzeit Just-in-Time (JIT) Compiler Ansatz zur Optimierung der Ausführungsgeschwindigkeit – – Codeblöcke werden zur Ausführungszeit in Maschinencode übersetzt Codezeilen werden nicht wie beim Interpreter zeilenweise abgearbeitet JIT-Compiler ist neben dem Interpreter Bestandteil der JVM Die Java Virtual Machine ist plattform-abhängig ! FH D Fachhochschule Düsseldorf Seite 8 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Plattformunabhängigkeit JVM ist der Schlüssel zur Plattformunabhängigkeit Schnittstelle zwischen Java-Programm und Plattform (Betriebssystem + HW) Verfügbar für viele Plattformen, z.B. Windows, Mac, Linux und Solaris (Sun) JVM Compiler HelloWorld.java HelloWorld.class Programm-Ausführung Java-Quelltext plattform-unabhängig Java Bytecode plattform-unabhängig Java Virtual Machine plattform-abhängig Sun selbst bietet JVMs für die Betriebssysteme Solaris, Linux und Windows an Andere Hersteller lassen eigene JVM für ihre Plattform zertifizieren, z.B. Apple FH D Fachhochschule Düsseldorf Seite 9 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Plattformunabhängigkeit Plattformabhängigkeit vs. Plattformunabhängigkeit Plattformabhängige Sprachen z.B. Pascal, Fortran, C/C++ Plattformunabhängige Sprachen z.B. Java Compilieren Compilieren & Linken Binärcode Binärcode Ausführen Ausführen Windows FH D Fachhochschule Düsseldorf Linux Java-Bytecode Ausführen Ausführen JVM JVM Windows Linux Seite 10 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Sprachumfang von Java Syntax Syntax von Java wurde weitestgehend von C bzw. C++ übernommen – – C : Strukturierte Programmiersprache C++ : OOP-Variante von C (kompatibel zu C) Beispiele für die Anlehnung an C bzw. C++ – – – Elementare Datentypen wie Integer, Character Kontrollstrukturen, z.B. if…else, do…while, etc. Nicht zu vergessen, das Semikolon ;-) Inhaltlich bestehen aber deutliche Unterschiede Objektorientierung Umsetzung des OOP-Gedankens Programme sind eine Sammlung von Klassen Geringere Komplexität (gegenüber C++) Keine Zeiger, keine Mehrfachvererbung, nur Einfachvererbung Keine explizite Speicheranforderung und -freigabe Keine globalen Konstanten, Variablen oder Funktionen FH D Fachhochschule Düsseldorf Seite 11 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Klassenbibliothek Klassenbibliothek Java verfügt über eine große Anzahl von Bibliotheksklassen (aktuell ca. 200) Klassen sind thematisch gruppiert in Paketen (engl. packages) Paket java.awt AWT (Abstract Windowing Toolkit), grafische Bedienoberflächen java.awt.event Schnittstellen für verschiedene Ereignisse unter grafischen Oberflächen java.io Möglichkeiten zur Ein- und Ausgabe java.lang Basisklassen wie String-, Thread- oder Wrapper-Klassen java.util Datenstrukturen, Raum und Zeit, Zufallszahlen javax.swing Einfache Swing-Komponenten Verwendung von Paketen Einbindung der gewünschten Klassen mit Hilfe einer import-Anweisung Beispiel: import java.util.*; FH D Fachhochschule Düsseldorf Seite 12 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Java-Programme Verschiedene Formen von Java-Programmen Applikationen : "Normales, ausführbares Programm" (mit main()-Methode) Applets : Java-Programme, die in einem Web-Browser ausgeführt werden Servlets : Java-Programme, die auf einem Web-Server ausgeführt werden Client Server Applet Servlet Web-Browser Web-Server Applikation Internet Java Virtual Machine (JVM) Plattform FH D Fachhochschule Düsseldorf Seite 13 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Applets – und der Erfolg von Java Was hat Java so erfolgreich gemacht? Aufstrebendes WWW hatte den Wunsch, Programme auf Clientseite auszuführen Verbunden mit diesem Wunsch waren 3 Probleme – Rechner-Vielfalt, Sicherheit und Übertragungsgeschwindigkeit Anfrage HTML-Seite Applet © Ken Ng - Fotolia.com Antwort Web-Server Web-Client Java war (und ist) für alle 3 Probleme die Lösung (siehe nächste Folie) © Spectral-Design - Fotolia.com Applets waren Anfang der 1990er Jahre der Schlüssel zum Erfolg! FH D Fachhochschule Düsseldorf Seite 14 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Applets – und der Erfolg von Java Problem 1: Rechner-Vielfalt Programme müssen auf unterschiedlichsten Plattformen laufen (HW & BS) Java-Programme sind plattformunabhängig Problem 2: Sicherheit Ausführung auf dem Rechner des Anwenders (Sicherheitsrisiko) Vertrauenswürdigkeit der Programme fraglich Java-Programme laufen nicht direkt auf der Plattform, sondern auf der JVM Applets werden im Web-Browser ausgeführt ("Sandbox-Prinzip") Problem 3: Übertragungsgeschwindigkeit Geringe Bandbreiten bzw. Übertragungskapazitäten Java-Programme sind kleiner als konventionelle Programme Klassen-Bibliotheken sind bereits auf dem Ziel-System vorhanden (JRE) Drei Probleme – eine Lösung: JAVA ! FH D Fachhochschule Düsseldorf Seite 15 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Entwicklungsumgebungen JDK Herausgeber : Oracle (Sun) Java Entwicklungsumgebung – – – – – JDK (Java Development Kit) Java-Entwicklungstools + JRE Compiler : javac Interpreter : java Disassembler: javap Appletviewer : appletviewer ... Kommandozeilenorientiert JRE (Java Runtime Environment) Klassen-Bibliothek + JVM JVM (Java Virtual Machine) Ausführung von Java-Programmen Eclipse Integrierte Entwicklungsumgebung – – – Editieren Compilieren Ausführen Grafische Benutzeroberfläche FH D Fachhochschule Düsseldorf Seite 16 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Java-Editionen 3 Editionen Ab Version 1.2 (Java 2) ist Java unterteilt in verschiedene Editionen – – – Java SE : Java Standard Edition Java EE : Java Enterprise Edition Java ME : Java Mobile Edition Die aktuelle Java-Version ist die Version 7 (JDK und JRE) Java SE (JSE) Edition für den generellen Einsatz auf PCs bzw. Servern Basis für die Java-EE- und Java-ME-Technologien Java EE (JEE) Edition für die serverseitige Java-Programmierung Quasi “de facto“-Standard für Business-Anwendungen Java ME (JME) Plattform für Embedded Consumer Products, wie etwa Mobiltelefone oder PDAs FH D Fachhochschule Düsseldorf Seite 17 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Java-Biographie OOP mit Java Klassen & Objekte Botschaften Vererbung & Polymorphie Datenkapselung Programmstruktur FH D Fachhochschule Düsseldorf Seite 18 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Vorwort Einführung in Java erfolgt im Kontext eines Beispiels "Es ist ein Programm zur Verwaltung der Studenten/innen zu entwickeln" – Im Folgenden wird der Einfachheit halber nur noch der Begriff des "Studenten" verwendet; er soll gleichermaßen für männliche & weibliche Studierende gelten! Fokus ist die Umsetzung des OOP-Ansatzes mit der Programmiersprache Java Grundgedanke Studenten als reale Objekte sollen durch abstrakte Objekte repräsentiert werden Objekte basieren auf Klassen, bzw. werden aus ihnen erstellt (Bauplanprinzip) Name Wohnort ändern Fachbereich Daten drucken Matrikel-Nr Wohnort © AKS - Fotolia.com Noten eintragen Student FH D Fachhochschule Düsseldorf Seite 19 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Klassen Klassen Definition einer Klasse erfolgt über das Schlüsselwort class Attribute A1… A n Syntax class klasse { // Attribute // Methoden } klasse Klasse Methoden M1 … Mn : Name der Klasse Beispiel class Student { // Attribute & Methoden } FH D Fachhochschule Düsseldorf Seite 20 Informatik für Ingenieure WS 2012/13 Student Attribute A1… An Methoden M1 … Mn FB 5 Fachbereich Medien Klassen Attribute Festlegung der Eigenschaften eines Objekts Attribute A1… A n Syntax typ attribut; typ attribut Klasse : int, float, char, etc. : Name des Attributs bzw. der Eigenschaft Methoden M1 … Mn Referenztypen Neben den Grundtypen wie int, char, etc. gibt es Referenztypen Referenztypen werden durch Klassen repräsentiert (z.B. String) Anders ausgedrückt, Attribut kann Klasse bzw. Objekt sein Beispiel name matrNr String name; int matrNr; FH D Fachhochschule Düsseldorf Student Methoden M1 … Mn Seite 21 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Klassen Methoden Programmteile, die die Attribute bearbeiten Attribute A1… A n Syntax typ () typ bezeichner methode (par1, par2...) { // Lokale Vereinbarungen und Anweisungen } typ methode par1 Methoden M1 … Mn : int, float, char, etc. : Name der Methode bzw. der Aktivität : Übergabe-Parameter (z.B. int a) Beispiel Student void drucken() { System.out.println("..."); } FH D Fachhochschule Düsseldorf Klasse Seite 22 Informatik für Ingenieure WS 2012/13 name matrNr drucken() FB 5 Fachbereich Medien Verschnaufpause Was bisher geschah… Student Erstellung einer Klasse (Bauplan für Objekte) – name matrNr Klasse Student Definition zweier Eigenschaften – – Name (name) des Studenten Matrikel-Nummer (matrNr) des Studenten drucken() Hinzufügen einer Methode – – Methode drucken() Ausgabe der Daten (Name und Matrikel-Nr.) class Student { String name; int matrNr; // Klasse Student // Eigenschaft name // Eigenschaft matrNr void drucken() { System.out.println("..."); } // Methode drucken() // Bildschirmausgabe } FH D Fachhochschule Düsseldorf Seite 23 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Verschnaufpause Wie es weitergeht… Objekte erzeugen! Woraus? Aus der zuvor erstellten Klasse! Zunächst sollen zwei Studenten mit dem Programm verwaltet werden Zwei Studenten zwei Objekte: Axel (Chemie) und Kati (Architektur) © Fredy Sujono - Fotolia.com Axel (Chemie) © AKS - Fotolia.com Student © Pétrouche - Fotolia.com Kati (Architektur) FH D Fachhochschule Düsseldorf Seite 24 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Objekte Objekte Objekte (Instanzen) sind die konkreten Ausprägungen einer Klasse Objekte werden mit dem Schlüsselwort new erzeugt (=instantiiert) Jedes Objekt ist eindeutig und hat eigene Kopien der Attribute und Methoden Gespeichert werden die Objekte als eine Referenz in einer Objekt-Variablen Syntax klasse objekt = new konstruktor (par1, par2...); klasse objekt konstruktor : Name der Klasse : Name des Objekts : Name des Konstruktors Beispiel FH D Fachhochschule Düsseldorf Student s1 Klasse Objekt = new Student() Obj. erzeugen Konstruktor Seite 25 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Konstruktor Konstruktor Methode, die ausschließlich beim Erzeugen von Objekten aufgerufen wird Sinn und Zweck: Attribute vom Start weg mit Anfangswerten zu besetzen Definition Konstruktoren werden wie Methoden definiert, mit folgendem Unterschied – – Name des Konstruktors ist identisch mit dem Namen der Klasse Konstruktoren haben keinen Rückgabetyp Default Konstruktor – – Wird zur Verfügung gestellt, wenn kein Konstruktor vorhanden ist Default Konstruktor ist ein Konstruktor ohne jegliche Parameter Beispiel Student(String N, int M) { name = N; matrNr = M; } FH D Fachhochschule Düsseldorf Aufruf des Konstruktors beim Erzeugen eines Objekts. Student s1 = new Student("Axel", 1122); Seite 26 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Objekte erzeugen Objekte werden aus der Klasse Student erzeugt name matrNr s1 name Axel matrNr 1122 drucken() Student s2 = new Student(...) s2 name Kati matrNr 3344 drucken() © Pétrouche - Fotolia.com Student © AKS - Fotolia.com Student s1 = new Student(...) © Fredy Sujono - Fotolia.com Objekte s1 und s2 repräsentieren die realen Objekte Axel und Kati Beide Objekte verfügen über die gleichen Attribute und Methoden Attribute sind identisch, Attribut-Werte hingegen sind unterschiedlich drucken() FH D Fachhochschule Düsseldorf Seite 27 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Java-Biographie OOP mit Java Klassen & Objekte Botschaften Vererbung & Polymorphie Datenkapselung Programmstruktur FH D Fachhochschule Düsseldorf Seite 28 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Botschaften Objekte reagieren auf Botschaften Objekt sind in der Lage Botschaften, bzw. Aufträge entgegenzunehmen Unsere Objekte der Klasse Student verstehen die Botschaft: drucken() s1 Botschaft drucken() name Axel matrNr 1122 Ausgabe auf dem Bildschirm Student(in) Axel hat die Matrikel-Nr. 1122 drucken() Geheimnisprinzip Andere Objekte wissen, welche Botschaften ein Objekt versteht Ebenso ist bekannt, was ein Objekt leistet (z.B. Daten drucken) Nicht bekannt ist jedoch, wie das Objekt letztendlich funktioniert FH D Fachhochschule Düsseldorf Seite 29 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Botschaften Botschaften Sendeseitig : Das Senden einer Botschaft ist der Aufruf einer Methode Empfangsseitig : Für die Botschaft muss eine Methode implementiert sein Syntax objekt . methode(par1, par2...); objekt methode par1 : Name des Objekts : Name der Methode : Übergabe-Parameter (z.B. int a) Punktoperator Operator für den Zugriff auf Elemente von Klassen (oder Datenstrukturen) Hier wird über den Punktoperator auf die Methoden einer Klasse zugegriffen Beispiel s1.drucken(); s2.drucken(); FH D Fachhochschule Düsseldorf Seite 30 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Botschaften Objekte kennen sich selbst am besten Methoden greifen auf ihre eigenen Daten zu (Attribute bzw. Eigenschaften) Beispiel Objekt s1 kennt seinen Namen und seine Matr-Nr., gleiches gilt für Objekt s2 Botschaft drucken() veranlasst beide Objekte, ihre eigenen Daten auszugeben s1 xy s1. drucken() …. name Axel matrNr 1122 Student(in) Axel hat die Matrikel-Nr. 1122 drucken() ... s2. drucken() s2 name Kati matrNr 3344 Student(in) Kati hat die Matrikel-Nr. 3344 drucken() FH D Fachhochschule Düsseldorf Seite 31 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Java-Biographie OOP mit Java Klassen & Objekte Botschaften Vererbung & Polymorphie Datenkapselung Programmstruktur FH D Fachhochschule Düsseldorf Seite 32 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Vererbung Programmerweiterung, Teil 1 Hochschulbezogene Tätigkeit als Tutor soll Berücksichtigung finden Existierender Programmcode soll aber nicht verändert werden !!! Vorgehensweise Neue Klasse für Tutor, basierend auf der Klasse Student Honorar Honorar zahlen Fachgebiet Daten drucken Konto-Nr. © Alexey Bannykh - Fotolia.com Std. abrechnen Tutor FH D Fachhochschule Düsseldorf Seite 33 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Vererbung Vererbung erfolgt über das Schlüsselwort extends Syntax class subKlasse extends basisKlasse subKlasse basisKlasse Basis-Klasse Vererbung Student name matrNr ausgeben() : Klasse, die erbt : Klasse, von der geerbt wird Einfach-/Mehrfachvererbung Beispiel class Tutor extends Student { String lehrgebiet; } FH D Fachhochschule Düsseldorf Seite 34 Informatik für Ingenieure WS 2012/13 Sub-Klasse Mehrfachvererbung ist in Java nicht möglich Tutor lehrgebiet FB 5 Fachbereich Medien Vererbung Konstruktor und Vererbung Konstruktoren werden nicht vererbt Sub-Klasse braucht einen eigenen Konstruktor Konstruktor der Subklasse (a) Ausführung des Standard-Konstruktors der Basisklasse – – Ausführung erfolgt automatisch Falls nicht vorhanden: Definition in Superklasse mit leerer Argumentenliste (b) Ausführen eines speziellen Konstruktors der Basisklasse – – Genaue Angabe des Konstruktors, der in der Basisklasse aufzurufen ist Aufruf des Konstruktor als erstes Statement mit dem Schlüsselwort super FH D Fachhochschule Düsseldorf Seite 35 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Vererbung Beispiel class Student { String name; int matrNr; Student(String N, int M) { name = N; matrNr = M; } } Klasse Tutor erbt von der Superklasse Student class Tutor extends Student { String lehrgebiet; Tutor(String N, int M, String L) { super(N, M); lehrgebiet = L; Aufruf des Konstruktors } der Basisklasse } FH D Fachhochschule Düsseldorf Seite 36 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Polymorphie Programmerweiterung, Teil 2 Botschaft drucken() an Tutor soll den Zusatz "Tutor" auf den Bildschirm bringen Auch hier gilt wieder: Existierender Programmcode soll nicht verändert werden !!! Student name matrNr Ausgabe auf dem Bildschirm Student(in) Axel hat die Matrikel-Nr. 1122 drucken() Tutor lehrgebiet drucken() FH D Fachhochschule Düsseldorf Methode nicht gefunden, Botschaft wird weitergereicht Hier fehlt noch der Zusatz "Tutor" Um die gewünschte Ausgabe auf dem Bildschirm zu realisieren, muss die Methode drucken() in der Subklasse Tutor überschrieben werden. Seite 37 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Polymorphie Beispiel Klasse Tutor hat von Klasse Student die Methode drucken() geerbt Sub-Klasse Tutor soll nicht nur "Student", sondern zusätzlich "Tutor" ausgeben Student name matrNr drucken() Tutor lehrgebiet drucken() FH D Fachhochschule Düsseldorf Super-Klasse void drucken() { System.out.println("Student " + name + " hat" +" die "+ matrNr + "."); } Sub-Klasse Überscheiben der Methode drucken() void drucken() { super.drucken(); System.out.println("Tutor für " + lehrgebiet); } Seite 38 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Java-Biographie OOP mit Java Klassen & Objekte Botschaften Vererbung & Polymorphie Datenkapselung Programmstruktur FH D Fachhochschule Düsseldorf Seite 39 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Zugriffskontrolle Gültigkeitsbereich von Klassen, Attributen und Methoden Zugriffsrechte legen die Sichtbarkeit, bzw. den externen Zugriff fest – – – – public protected package private Niedrigste Schutzebene Zugriff von außen erlaubt Zugriff nur innerhalb abgeleiteter Klassen Standardeinstellung Zugriff innerhalb des Pakets erlaubt Höchste Schutzebene Kein Zugriff von außen Bestandteile einer Klasse können individuell geschützt werden Übersicht Zugriffsrecht Zugriff aus gleicher Klasse Zugriff aus gleichem Paket Zugriff aus Sub-Klasse Zugriff aus beliebiger Klasse public Ja Ja Ja Ja protected Ja Ja Ja Nein package Ja Ja Nein Nein privat Ja Nein Nein Nein FH D Fachhochschule Düsseldorf Seite 40 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Zugriffskontrolle Bespiel Deklaration private verhindert unerwünschten Zugriff von außerhalb der Klasse s1.name = "Peter"; kein Zugriff möglich class Student { private String name; private int matrNr; void drucken() { System.out.println("..."); } stattdessen Zugrifffunktionen s1.setName("Peter"); void setName(String N) { name = N; } } FH D Fachhochschule Düsseldorf Seite 41 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Java-Biographie OOP mit Java Klassen & Objekte Botschaften Vererbung & Polymorphie Datenkapselung Programmstruktur FH D Fachhochschule Düsseldorf Seite 42 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Programmstruktur Programmstart Jede Applikation hat eine main()-Methode, die von der JVM aufgerufen wird public class HelloWorld { public static void main(String [] args) { System.out.println("Hello World"); } } Erläuterungen public static : Öffentliche Methode der spezifizierten Klasse (hier: HelloWorld) void : Methode ohne Rückgabewert String[ ] args : Parameter, mit denen eine Applikation gestartet werden kann Dateiname Programm muss in einer Datei gespeichert sein, die den gleichen Namen trägt wie die public-Klasse, verbunden mit der Erweiterung ".java" (hier: HelloWorld.java) Hinweis: Innerhalb einer Datei gibt es nur eine öffentliche Klasse FH D Fachhochschule Düsseldorf Seite 43 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Programmstruktur Beispiel Test der Klasse Student soll aus einer Klasse namens "Test" heraus erfolgen Klasse Test enthält main() und erzeugt die beiden Objekte s1 und s2 Weiterhin wird den Objekten s1 und s2 die Botschaft drucken() gesendet public class Test { public static void main(String [] args) { Student s1 = new Student("Axel", 1122); Student s2 = new Student("Kati", 3344); class Student { String name; int matrNr; Student(String N, int M) { name = N; matrNr = M; } s1.drucken(); s2.drucken(); } } void drucken() { System.out.print(".."); } Objekt erzeugen Test Botschaft senden s1 s2 FH D Fachhochschule Düsseldorf Seite 44 Informatik für Ingenieure WS 2012/13 } FB 5 Fachbereich Medien Zeit für einen Tasse Java… © Andy Short - Fotolia.com FH D Fachhochschule Düsseldorf Seite 45 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien