27
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java

Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

  • Upload
    ngocong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Willkommen zur Vorlesung

Objektorientierte Programmierung Vertiefung

- Java

Page 2: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Zum Dozenten

● Mein Name: Andreas Berndt

● Diplom-Informatiker (TU Darmstadt)

● Derzeit Software-Entwickler für Web-Applikationen

● Derzeitige Sprachen: Java, PHP, Ruby

Page 3: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Organisatorisches

● Vorlesung: Donnerstags, 11:45 – 13:15 Uhr

● Übung 1: Donnerstags, 10:00 – 11:30 Uhr

● Übung 2: Freitags, 10:00 – 11:30 Uhr

● Beide Übungen in Gebäude 1, Raum 250● Web-Seite:http://www.informatik.fb2.fh-

frankfurt.de/~aberndt/oojava

Page 4: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Inhalt der Vorlesung

● Erweitern der Erfahrung mit Objektorientierung auf eine andere Sprache (Java)

● Nutzen der Klassenbibliotheken● Nutzen von Interfaces● Erzeugen von eigenen Bibliotheken● Anwendung von oo-gesteuerten GUI-

Komponenten● Einführung in Software-Design

Page 5: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Vorlesung <-> Übung

● Die Inhalte der Vorlesung werden in der Übung vertieft

● Dabei wird besonders Augenmerk auf verteiltes Arbeiten und Teamwork gelegt

● Daher gibt es in der Übung keine Aufgaben (und somit auch keine Musterlösungen), sondern Projekte

● Zunächst gemeinsame Projekte, dann verteilte Projekte (Team A entwickelt etwas, was Team B benötigt)

Page 6: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Kurze Erinnerung an die OO-Basis

Page 7: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung

● Grundidee der OO ist eine softwaretechnische Abbildung der Realität

● Idee dahinter ist eine einfachere Verwaltung von Softwareprojekten

● Auch Qualitätssicherung spielt eine herausragende Rolle

● Ebenso die Wiederverwendbarkeit von Code und Modulen

Page 8: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung

● Abstraktion– Jedes Objekt kann als abstrakter Akteur

beschrieben werden– Dieser kann Aufträge erledigen, seinen

Zustand berichten und verändern und mit anderen Objekten kommunizieren

– Dabei müssen die Methoden dafür nach aussen nicht sichtbar sein

– Abstraktion wird durch das Prinzip der Klassen erreicht

Page 9: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung

● Abstraktion – Klassen– Ist die Beschreibung (Vorlage, Bauplan) für

die aus ihr erzeugten konkreten Objekte– Besitzt wie der ADT eine Datenstruktur– Besitzt darüber hinaus Methoden, zur

Manipulation dieser Datenstruktur– Hat die Möglichkeit durch bestimmte

Schlüsselworte seine Daten und Methoden nach aussen unsichtbar zu machen

Page 10: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung class Fahrzeug // Die Klasse "Fahrzeug" ist die Basisklasse. { public: virtual void bewegen() { std::cout << "Fahrzeug wird bewegt.\n"; } }; class Auto : public Fahrzeug { // Die Klasse "Auto" ist die abgeleitete Klasse. public: void bewegen() { std::cout << "Auto wird bewegt.\n"; } }; void aktion(Fahrzeug &f) { f.bewegen(); } int main() { Fahrzeug objekt1; Auto objekt2; objekt1.bewegen(); objekt2.bewegen(); aktion(objekt1); aktion(objekt2); return 0; }

Hier wird im Speicher ein Bereich erzeugt,in dem die Daten und Methoden der Klasse„Fahrzeug“ quasi „kopiert“ und mit dem Namen„objekt1“ versehen werden.

Hier wird dem mit objekt1 bezeichnetenSpeicherbereich „gesagt“, das die in ihmgespeicherte Methode „bewegen“ aus-geführt werden soll.

Page 11: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung

● Datenkapselung– Schlüsselworte zur Kapselung sind

● Public● Private● Protected (je nach Programmiersprache anders)

– Durch diese kann der externe Zugriff auf Daten oder Methoden eines Objekt gesteuert werden

– Dies hat insbesondere Bedeutung bei der Einbindung von Software-Bibliotheken in den eigenen Code

Page 12: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung

● Public: externer Zugriff ohne Einschränkung möglich

● Protected (o.ä.): eingeschränkter externer Zugriff möglich

● Private: externer Zugriff nicht möglich, nur innerhalb des Objektes

Page 13: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Grundzüge der Objekt-Orientierung

● Vererbung– Erbt eine Klasse von einer anderen, so haben

die Objekte, die aus ihr erzeugt werden, automatisch alle Daten und Methoden der sog. Elternklasse

– Darüber kann jede erbende Klasse zusätzliche Daten oder Methoden einführen

– Ebenso können ererbte Methoden überschrieben werden

Page 14: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

JAVA

Page 15: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Java

● Java ist eine objekt-orientierte Programmiersprache

● Durch das Java-VM-Konzept auf nahezu allen Systemen ausführbar

● Syntax ist an C (C++) angelehnt● Syntax-Beispiel

public class HalloWelt {public static void main(String[] args) {

System.out.println("Hallo Welt!");}

}

Page 16: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Java

● Java braucht eine sogenannte Laufzeitumgebung, in der der Java-Code ausgeführt wird (JRE – Java Runtime Enviroment)

● Diese JREs gibt es für ziemlich jedes Betriebssystem

● Der Java-Code wird aus Performancegründen in einen Bytecode übersetzt, der dann ausgeführt wird

Page 17: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Java

● Verweise auf Objekte (Referenzen) sind in Java indirekt ausgeführt

● Die Speicherstellen der Referenzen könne nicht direkt ausgelesen oder geschrieben werden

● Damit werden vor allem Fehler in der Zeigerarithmetik verhindert (bzw. diese ist komplett ausgeschlossen)

Page 18: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Java

● Java unterstützt– Threads (Nebenläufigkeit von Prozessen)– Exceptions (Abfangen und Behandeln von

Fehlerfällen)– Generics (Generische Datentypen)– KEINE Mehrfachvererbung (jede Klasse hat

nur genau eine Superklasse)– Schnittstellen (Interfaces), eine Klasse kann

beliebig viele Schnittstellen implementieren– Plattformunabhängige GUI (Swing)– Garbage Collection

Page 19: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

Page 20: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

● Ein Framework zur Softwareentwicklung● Bekannteste Nutzung als IDE = Integrated

Development Enviroment● Eine IDE beinhaltet (mindestens) Code-

Editor, Projektdatei-Verwaltung und Debugger

● Eclipse ist selbst in Java geschrieben

Page 21: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

● Die Fenster in Eclipse heissen Views● Diese können per Drag & Drop nahezu

beliebig angeordnet werden● Jede View hat eine eigene Anwendung

und Darstellungsart● So ist z.B. der Codeeitor eine View zum

Texteditieren, der aber dazu noch Syntaxhighlighting und elementare Fehleranzeige beinhaltet

Page 22: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

Page 23: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

Page 24: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

Page 25: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

Page 26: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse

Page 27: Objektorientierte Programmierung Vertiefung - Javaaberndt/oojava/Vorlesung/1... · – Jedes Objekt kann als abstrakter Akteur beschrieben werden – Dieser kann Aufträge erledigen,

Eclipse