Kapitel 5. Objektorientierte Programmierung mit Java. Xiaoyi Jiang Informatik I Grundlagen der Programmierung



Ähnliche Dokumente
Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Einführung in Eclipse und Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Applications Applets (eingeschränkte Rechte)

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Vorkurs Informatik WiSe 15/16

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Java lernen mit BlueJ

Objektorientierte Programmierung

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Programmieren in Java

Objektorientierte Programmierung für Anfänger am Beispiel PHP

GameGrid mit BlueJ Seite 1

JAVA. Ein kurzer Überblick. Thomas Karp

Überprüfung der digital signierten E-Rechnung

4D Server v12 64-bit Version BETA VERSION

Überblick. 5 Java. Insel Indonesiens. ( km 2, 65 Mill. Einw.) amerikanischer Slang für Kaffee (" Betriebsstoff der Java-Programmierer")

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ

Applets I. Grundlagen der g Applet-Programmierung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Grundlagen der Programmierung UE

Übung: Verwendung von Java-Threads

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Grundlagen der Programmierung UE

Java: Vererbung. Teil 3: super()

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Programmierkurs Java

Grundlagen von Python

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Bedienung von BlueJ. Klassenanzeige

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Vorkurs C++ Programmierung

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Objektorientierte Softwareentwicklung SoSe 15

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Anleitung zum Download und zur Bedienung des Tarifbrowsers für Microsoft Windows 7 und Mozilla Firefox

Java Einführung Packages

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Übung 8: Semaphore in Java (eigene Implementierung)

1. Java Grundbegriffe

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Java Kurs für Anfänger Einheit 5 Methoden

Objektorientierte Programmierung. Kapitel 12: Interfaces

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

Einführung in PHP. (mit Aufgaben)

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

SICHERN DER FAVORITEN

Workshop: Eigenes Image ohne VMware-Programme erstellen

Informationen zur Verwendung von Visual Studio und cmake

Eine Anwendung mit InstantRails 1.7

Step by Step Webserver unter Windows Server von Christian Bartl

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

JAVA als erste Programmiersprache Semesterkurs

Computeranwendung und Programmierung (CuP)

Mediator 9 - Lernprogramm

Nutzung von GiS BasePac 8 im Netzwerk

Testen mit JUnit. Motivation

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Lokale Installation von DotNetNuke 4 ohne IIS

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Programmierkurs Java

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Anleitung zum Download und zur Bedienung des Tarifbrowsers für Mac OSX und Safari / Mozilla Firefox

25 Import der Beispiele

Version 0.3. Installation von MinGW und Eclipse CDT

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Innere Klassen in Java

Professionelle Seminare im Bereich MS-Office

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Um die Installation zu starten, klicken Sie auf den Downloadlink in Ihrer (Zugangsdaten für Ihre Bestellung vom...)

Einführung in die Java- Programmierung

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Einführung in die Programmierung

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3

Java Einführung Programmcode

Powermanager Server- Client- Installation

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Handbuch für Easy Mail in Leicht Lesen

Programmentwicklung ohne BlueJ

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Objektorientierte Programmierung OOP

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Transkript:

Kapitel 5 Objektorientierte Programmierung mit Java 1

4.1 Einführung Java ist in den Jahren 1991 bis 1995 bei der Firma Sun Microsystems unter der Leitung von James Gosling entstanden Java: A simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded and dynamic language. The Java Language: A White Paper Objektorientierung: Die meisten wesentlichen Konzepte der OOP werden unterstützt Einfachheit: Beschränkung auf das Notwendige; Verzicht auf Trickkisten; Syntax aus der Sprachfamilie Pascal/C/C++ stammend 2

4.1 Einführung Plattformunabhängigkeit (architekturneutral, portabel): Konzept der virtuellen Maschine (übersetzte Java-Programme in Bytecode auf jeder Java-fähigen Rechnerplattform ausführbar) Sicherheit und Robustheit: keine direkten Speicherzugriffe mit Zeigerarithmetik strenge Typüberprüfung Ausnahmeroutinen (exceptions) zur Fehlerbehandlung eingebautes Speichermanagement ( garbage collection ) Netzwerk- und Nebenläufigkeitsfähigkeit: parallele Ausführung von Programmteilen (Threads); Ideal für verteilte Anwendungen (Client-Server-Software) Internet-Fähigkeit Java-Applets sind über das Netz verteilbar und auf lokalen Rechnern ausführbar 3

4.1.1 Java Virtual Machine Maschinenabhängigkeit: Jede Maschine hat einen eigenen Befehlssatz Ein Programm für einen PC läuft nicht auf einem Mac und umgekehrt Pascal Pascal Compiler für PC mit Linux PC mit Linux Pascal Compiler für PC mit Windows Pascal Compiler für Mac mit MacOS C PC mit Windows C++ Mac mit MacOS m Sprachen, n Plattformen m*n Compiler 4

4.1.1 Java Virtual Machine Virtuelle Maschine: Eine Maschine, die auf jedem realen Computer simuliert (emuliert) wird Sie versteht eine maschinenunabhängige Zwischensprache Pascal PC mit Linux C VM PC mit Windows C++ Mac mit MacOS m Sprachen, n Plattformen m Compiler, n VM-Implementierungen 5

4.1.1 Java Virtual Machine Java Virtuelle Maschine (JVM): Die Java-Runtime-Engine ist eine VM speziell für Java und versteht (interpretiert) die maschinenunabhänige Sprache Java-Bytecode. Ein Java-Programm (file.java) wird übersetzt in ein Bytecode-Programm (file.class). Sie ist auf fast allen Plattformen implementiert; java.exe unter Windows PC mit Linux JVM PC mit Windows Mac mit MacOS 6

4.1.1 Java Virtual Machine Auch andere Sprachen können in Bytecode übersetzt werden. Seit sich Java durchgesetzt hat, wird JVM auch als Zielmaschine für andere Sprachen benutzt PC mit Linux NetProlog JVM PC mit Windows Smalltalk/JVM Mac mit MacOS 7

4.1.1 Java Virtual Machine Interpretierende Ausführung von Bytecode: Java Applikationen eigenständige Applikationen, laufen innerhalb der JVM werden auf der Befehlszeilenebene oder als Mac-/Windows- Applikation gestartet Java Applets laufen innerhalb der JVM eines Webbrowsers haben eigene, festgelegte Zeichenfläche im Webbrowser In hardware realisiert (z.b. PicoJava-Prozessor) Compilierende Ausführung von Bytecode: Classfiles werden unter Verwendung von JIT-Compiler (Just-In-Time- Compiler, der Klassen nur bei Bedarf zur Ausführungszeit übersetzt ) in die Maschinensprache der Zielplattform übersetzt (i.d.r. Geschwindigkeitsvorteile im Vergleich zum Interpreter) 8

4.1.2 Java-Plattform Die Java Plattform hat zwei Komponenten: Die Java Virtual Machine (JVM) Das Java Application Programming Interface (Java API) Gesamtheit der Softwarekomponenten, die von der JVM bzw. den darauf laufenden Programmen benutzt werden (Laufzeitbibliothek) aufgeteilt in Bibliotheken ( packages) von zueinander in Beziehung stehenden Klassen und Interfaces Bytecode-Programme Java-Plattform: Java-API JVM Hardware 9

4.1.2 Java-Plattform Funktionalitäten, die das Java API bereitstellt (Paketnamen in Klammern): Basis (java.lang): Die wichtigsten Klassen von Java wie Object, Class, String, Integer, System... Applets (java.applet): Module für die Einbindung von Java Anwendungen in Webseiten Graphik (java.awt, javax.swing, u.a.): Komponenten zur Erzeugung von Programmen mit einer graphischen Oberfläche (GUI) Nützliches (java.util): Z.B. Zufallszahlengeneratoren, Dynamische Arrays, Collections Framework, Reguläre Ausdrücke Netzwerk (java.net): Module für den Umgang mit URLs, TCP Sockets, IP Adressen, etc. Datenbanken (java.sql): Paket zur Verwendung von relationalen Datenbanken (SQL = Standard Query Language) Datensicherheit (java.security): Verschlüsselung, Authentifizierung, digitale Unterschriften etc. und viele weitere 10

4.1.3 Programmierumgebungen Java Development Kit (JDK): javac.exe: Compiler java.exe: Java Virtual Machine javadoc.exe: Dokumentionstool Programmierumgebungen: umfangreiche Systeme, z.b. Eclipse und netbeans BlueJ: Zum Erlernen und Experimentieren mit objektorientierter Programmierung hervorragend geeignet 11

4.2 Literatur B. Eckel. Thinking in Java. Prentice Hall, 2002 http://www.mindview.net/books/tij/ C. Ullenboom. Java ist auch eine Insel. Galileo Computing, 2006 http://openbook.galileocomputing.de/javainsel7/ G. Krüger, T. Stark. Handbuch der Java-Programmierung. 5. Auflage, Addison-Wesley, 2007; auf Vorlesungswebsite D.J. Barnes, M. Kölling. Objektorientierte Programmierung mit Java: Eine praxisnahe Einführung mit BlueJ. Pearson Studium, 2003 12

4.3 BlueJ Java-Entwicklungsumgebung, ausdrücklich mit dem Ziel der Einführung in objektorientierte Programmierung entwickelt (Monash University in Australien) Einfache Benutzerschnittstelle: Kann nach kurzer Einführung von Programmieranfängern kompetent benutz werden; Konzentration auf die wichtigsten Konzepte (Objektorientierung und Java) Wichtige Lernwerkzeuge, die in anderen Umgebungen nicht zur Verfügung stehen. Eins davon ist die Visualisierung der Klassenstruktur. Es ist nicht leicht, das Konzept von Objekten zu verstehen, wenn auf dem Bildschirm nur Programmtext zu sehen ist! Eine der wichtigsten Stärken besteht in der Möglichkeit für den Benutzer, direkt Objekte von beliebigen Klassen erzeugen und die Methoden dieser Objekte aufrufen zu können. 13

4.3 BlueJ One of the fundamental characteristics of BlueJ is that you cannot only execute a complete application, but you can also directly interact with single objects of any class and execute their public methods. An execution in BlueJ is usually done by creating an object and then invoking one of the object s methods. This is very helpful during development of an application you can test classes individually as soon as they have been written. There is no need to write the complete application first. 14

4.3 BlueJ Herunterladen von: http://www.bluej.org/download/download.html Hilfreich ist das Tutorial: http://www.bluej.org/doc/documentation.html Im Unterverzeichnis lib von BlueJ befindet sich die Datei bluej.defs, die verschiedene Einstellungen von BlueJ beinhaltet. Jede Zeile mit # am Anfang ist unwirksam. Z.B. Deutsche Version einstellen: bluej.language=english #bluej.language=german #bluej.language=english bluej.language=german 15

4.3 BlueJ BlueJ starten: 16

4.3 BlueJ Neues Projekt öffnen: mit Projekt Neues Projekt, z.b. Hallo Neue Klasse Klasse Hallo.java entstanden. Rechte Maustaste öffnet ein Kontextmenü; wir können z.b. die Klasse editieren. 17

4.3 BlueJ Editieren, Compilieren: Der Editor enthält schon Beispielcode, den wir editieren können Dann können wir den Code compilieren 18

4.3 BlueJ Die Klasse zeigt eine erfolgreiche Kompilierung; sie ist nicht mehr gestreift. Das Kontextmenü (rechte Maustaste) bietet die Möglichkeit eines Methodenaufrufs void main(string[] args) an. 19

4.4 Klassen und Objekte Grundkonzepte der objektorientierten Programmierung: Modellierung Entscheidend ist das Denken in Objekten Programme sind Modelle für einen Ausschnitt der Wirklichkeit. In der Phase der Problemanalyse wird festgelegt, welche Objekte modelliert werden und wie die modellierten Objekte mit ihrer Umgebung sowie untereinander interagieren. Dazu werden Datentypen für die Objekte definiert, die mit Hilfe von Klassen beschrieben werden. Eine Klasse entspricht dem Typ eines Gegenstands in der realen Welt. Der Begriff Gegenstand ist dabei sehr weitgefasst zu verstehen: Auch Lebewesen, Konzepte, Begriffe etc. fallen darunter. Man spricht deshalb statt von Gegenständen auch von Entitäten. Sie sind Abstraktionen von Dingen in der Realität. 20

4.4 Klassen und Objekte Klassen: Eine Klasse beschreibt eine bestimme Art von Objekten. Sie definiert einen eigenen Datentyp, hat einen Klassennamen, und enthält Datenfelder (auch Attribute genannt). Ferner stellt sie Methoden zur Verfügung, mit denen man auf die Objekte dieser Klasse und deren Datenfelder zugreifen kann. Man kann sich eine Klasse vorstellen als softwaretechnische Einheit aus Klassennamen, Attributen und Methoden: Complex float re, float im add, subtract,.. Das Konzept von Klassen kann man in verschiedenen Programmiersprachen implementieren 21

4.4 Klassen und Objekte Objekte: Objekte repräsentieren individuelle Instanzen einer Klasse. Von einer Klasse kann man durch Aufruf eines Konstruktors Objekte erzeugen. Sie existieren von dem Moment der Erzeugung an im Speicher des Rechners. Dort belegt jedes Objekt soviel Platz, wie für die Speicherung seiner Attributwerte erforderlich ist. Objekte sind Zustandskapseln. Der Zustand eines Objekts wird intern dargestellt durch den Zustand seiner Datenfelder. Mit Hilfe der Methoden seiner Klasse kann der Zustand verändert oder abgefragt werden. Die Methoden einer Klasse existieren nur einmal pro Klasse, dagegen können gleichzeitig viele Objekte der Klasse vorhanden sein 22

4.4 Klassen und Objekte Methoden: Ein zentraler Bestandteil der Modellierung ist Analyse der Fähigkeiten von Objekten einer Klasse. Sie werden durch die Methoden der Klasse realisiert. Beim Aufruf einer Methode werden der Klasse der Name der Methode und die Werte der Aufrufparameter übergeben. Aus diesen Informationen ermittelt die Klasse unmittelbar beim Aufruf der Methode, wie sie den Aufruf durchführt. Die objektorientierte Programmierung ist eine Weiterentwicklung der datengesteuerten Programmierung. Objektorientiert programmierte Systeme sind wegen der losen Kopplung leichter zu erweitern und/oder zu modifizieren. Das macht die objektorientierte Methodik besonders zur Implementierung großer Systeme attraktiv. 23

4.4 Klassen und Objekte Klassen: umfassen gleichartige Objekte enthalten Bauplan für Objekte erzeugen Objekte Objekte: modellieren Gegenstände (im weitgefassten Sinne) haben Eigenschaften (Datenfelder) haben Methoden (Fähigkeiten) 24

4.4 Klassen und Objekte Wir eröffnen das Projekt Figuren und sehen vier Klassen. Nun erzeugen wir einen Kreis, ein Quadrat und ein Dreieck. Konvention: Klassennamen beginnen mit Groß- und Objektnamen mit Kleinbuchstaben Warum sind die erzeugten Objekte unsichtbar? 25

4.4 Klassen und Objekte Wir untersuchen das Objekt kreis1 (nicht Klasse Kreis!), indem wir aus dem Kontextmenü Inspizieren wählen 26

4.4 Klassen und Objekte Zustand von kreis1: Durchmesser = 30 xposition = 20 yposition = 60 Farbe = blau istsichtbar = false Wir ändern den Zustand durch Aufruf der Methode sichtbarmachen(). Dasselbe wird für quadrat1 und dreieck1 wiederholt. Anschließend probieren wir weitere Methoden: kreis1 nachuntenbewegen() quadrat1 nachrechtsbewegen(), nachobenbewegen() dreieck1 nachlinksbewegen() 27

4.4 Klassen und Objekte Wir ändern die Größe und Farbe von kreis1. Methoden können Parameter haben, mit denen zusätzliche Informationen für eine Aufgabe angegeben werden. 28

4.4 Klassen und Objekte Wir können mit Objekten kommunizieren, indem ihre Methoden aufgerufen werden. Dies verändert den Zustand der Objekte. Wir kontrollieren die Datenfelder von kreis1 und stellen neue Werte fest. Drei Typen von Werten kommen vor: int: die Koordinaten und Durchmesser String: Farbe gelb boolean: Sichtbarkeit true 29

4.4 Klassen und Objekte Versuchen Sie, diese idyllische Szene nachzuzeichnen. Von einer Klasse können viele gleichartige Instanzen erzeugt werden (in diesem Beispiel zwei Quadrate). 30

4.4 Klassen und Objekte Bisher haben wir manuell Objekte erzeugt und mit deren Methoden herumexperimentiert (gut für das Verstehen von Klassen und Objekten dank BlueJ) In der Praxis würden wir die Arbeit von einem Objekt der Klasse Zeichner mit Methode zeichnehaus() erledigen lassen Projekt Zeichner 31

4.4 Klassen und Objekte Die Klasse Zeichner ist so geschrieben, dass durch Aufruf der Methode zeichnehaus() zwei Quadrat-Instanzen, ein Dreieck und ein Kreis erzeugt werden. Anschließend werden diese Objekte so lange bewegt und in Farbe and Form verändert, bis die Figuren wie erwünscht aussehen. Der entscheidende Punkt: Objekte können andere Objekte erzeugen und deren Methoden aufrufen. Objekte kommunizieren miteinander durch gegenseitige Methodenaufrufe. 32

4.4 Klassen und Objekte Objekte als Parameter: Projekt Laborkurse ist ein vereinfachter Teil einer Studentendatenbank, um Studenten in Laborkursen zu verwalten und Kurslisten auszudrucken Objekte können als Parameter an andere Objekte übergeben werden. Wenn eine Methode ein Objekt als Parameter erwartet, dann wird der Name der Klasse als Parametertyp in der Signatur angegeben. 33

4.4 Klassen und Objekte 34