Post on 25-Aug-2019
transcript
Willkommen zur Vorlesung
Objektorientierte Programmierung Vertiefung
- Java
Zum Dozenten
● Mein Name: Andreas Berndt
● Diplom-Informatiker (TU Darmstadt)
● Derzeit Software-Entwickler für Web-Applikationen
● Derzeitige Sprachen: Java, PHP, Ruby
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
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
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)
Kurze Erinnerung an die OO-Basis
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
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
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
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.
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
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
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
JAVA
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!");}
}
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
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)
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
Eclipse
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
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
Eclipse
Eclipse
Eclipse
Eclipse
Eclipse
Eclipse