Willkommen zur Vorlesung Objektorientierte Programmierung

Werbung
Willkommen zur Vorlesung
Objektorientierte
Programmierung Vertiefung
- Java
Zum Dozenten
●
Mein Name: Andreas Berndt
●
Diplom-Informatiker (TU Darmstadt)
●
●
Derzeit Software-Entwickler für WebApplikationen
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.fhfrankfurt.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 GUIKomponenten
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 OOBasis
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 bezeichneten
Speicherbereich „gesagt“, das die in ihm
gespeicherte Methode „bewegen“ ausgefü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) CodeEditor, 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
Herunterladen