Java: Objektorientierte Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
der Universität Oldenburg
FH-Hof Einbindung von JavaScript Anweisungen
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Abstrakte Klassen.
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Abstrakte Klassen DVG
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Einführung in die Programmierung Klassendefinition und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objektorientiertes Konstruieren
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Instanzmethoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
OOP II.
Implementieren von Klassen
 Präsentation transkript:

Java: Objektorientierte Programmierung Richard Göbel Seite 1

Grundlagen der OO-Programmierung - Ansatz und Begriffe Natürliche Abbildung von Objekten der realen Welt auf ein Modell mit entsprechenden Datenstrukturen: Zusammenfassen von Objekten eines Typs zu Klassen Definition eines einheitlichen Schemas zur Beschreibung von Objekten einer Klasse: Merkmale: Attribute Operationen: Methoden Festlegen einer Klassenhierarchie mit Unter- und Oberklassen. Lösung der Aufgabenstellung durch Entwicklung geeigneter Methoden. Seite 2

Grundlagen der OO-Programmierung - Beispiel: Hochschule Teil I Vorlesung Programmieren Betriebssysteme Datenbanksysteme Studenten Müller Meier Huber Becker Schmidt Personen Dozenten Rote Gelbor Unblau Seite 3

Grundlagen der OO-Programmierung - Beispiel: Hochschule Teil II Person String name; int alter; Student String name; int alter; Vorlesung[] teilnahme; Dozent String name; int alter; Vorlesung[] angebot; Vorlesung String bezeichnung; int stunden; Seite 4

Grundlagen der OO-Programmierung - Beispiel: Hochschule Teil III class Student extends Person { Vorlesung[] teilnahme; Vorlesung[] getTeilnahme() return teilnahme; } void setTeilnahme (Vorlesung[] t) teilnahme = t; class Person { String name; int alter; String getName() { return name;} void setName(String na) { name = na;} int getAlter() { return alter;} void setAlter(int al) { alter = al;}} Seite 5

Grundlagen der OO-Programmierung - Erzeugen von Objekten einer Klasse Operator zur Erzeugung eines Objekts class Test { public static void main (String[] args) Person p; p = new Person(); p.setName(“Meier“); p.setAlter(19); System.out.println(p.getName()); System.out.println(p.getAlter()); } Konstruktor Methodenaufruf Seite 6

Grundlagen der OO-Programmierung - Definition eigener Konstruktoren class Vorlesung { String bezeichnung; int stunden; Vorlesung (String bez) bezeichnung = bez; } . . . Seite 7

Grundlagen der OO-Programmierung - Verwendung von Konstruktoren . . . Student s; s = new Student(); s.setName(“Meier“); s.setAlter(19); Vorlesung[] v; v = new Vorlesung[2]; v[0] = new Vorlesung(“Datenbanksysteme“); v[1] = new Vorlesung(“Betriebssysteme“); s.setTeilnahme(v); Seite 8

Übung Seite 9

Grundlagen der OO-Programmierung - Statische Elemente: Konzept Statische Variable und Funktionen: sind direkt einer Klasse zugeordnet. können direkt über den Klassennamen angesprochen werden, ohne dass ein Objekt der Klasse verwendet werden muss. Der Wert einer statischen Variable ist identisch für alle Objekte der Klasse. Für statische Variablen und Funktionen spielt die Klasse ausschließlich die Rolle eines „Behälters“! Seite 10

Grundlagen der OO-Programmierung - Statische Variablen: Deklaration class Person { static int numGen = 1; int nummer; String name; Person () { nummer = numGen++;} Person (String na) { nummer = numGen++; name = na;} . . . } Seite 11

Grundlagen der OO-Programmierung - Statische Variablen: Anwendung Hauptfunktion class Test { public static void main (String[] args) Person p1 = new Person(“Meier“), p2 = new Person(“Becker“); System.out.println(p1.nummer); System.out.println(p2.nummer); } Attributzugriff Seite 12

Grundlagen der OO-Programmierung - Statische Variablen: Initialisierung class Person { static int numGen; int nummer; String name; . . . static numGen = 1; } Static Initializer Seite 13

Grundlagen der OO-Programmierung - Statische Funktionen: Deklaration class Person { static int numGen = 1; static void setGenWert (int wert) numGen = wert; } static int getGenWert () return numGen; . . . Seite 14

Grundlagen der OO-Programmierung - Statische Funktionen: Anwendung class Test { public static void main (String[] args) Person.setGenWert(10); Person p1 = new Person(“Meier“), p2 = new Person(“Becker“); System.out.println(p1.getGenWert()); System.out.println(Person.getGenWert()); } Seite 15

Grundlagen der OO-Programmierung - Überladen von Funktionssymbolen In praktisch allen objektorientierten Sprachen lassen sich verschiedene Funktionen und Methoden mit identischem Namen definieren. Funktionen oder Methoden mit identischem Namen unterscheiden sich mindestens bezüglich einer der folgenden Kriterien: Zughörigkeit zu einer Klasse Anzahl der Argumente Typ der Argumente Begriff für dieses Konzept: Overloading Seite 16

Grundlagen der OO-Programmierung - Überladen von Methoden class Person { String name; String name() return name; } void name(String na) name = na; . . . . . . Person p; p = new Person(“Meier“); System.out.println(p.name); p.name(“Becker“); System.out.println(p.name()); Seite 17

Grundlagen der OO-Programmierung - Überladen von Konstruktoren I class Vorlesung { String bezeichnung = ““; int stunden = 0; Vorlesung (String bez) { bezeichnung = bez; stunden = 4;} Vorlesung (String bez, int std) { stunden = std;} . . . } Seite 18

Grundlagen der OO-Programmierung - Überladen von Konstruktoren II class Vorlesung { String bezeichnung; int stunden; Vorlesung (String bez) { this(bez,4);} Vorlesung (String bez, int std) { bezeichnung = bez; stunden = std;} . . . } Der Aufruf eines anderen Konstruktors ist mit dem Schlüsselwort this möglich. Damit ist die Wiederverwendung des Programmcodes aus dem anderen Konstruktor möglich! Seite 19

Grundlagen der OO-Programmierung - Konstruktoren und Vererbung Konstruktoren werden nicht vererbt! Konstruktoren der Oberklasse lassen sich mit dem Schlüsselwort super aufrufen. Enthält ein Konstruktor der Unterklasse keinen Aufruf eines Konstruktors der Oberklasse, dann: erfolgt automatisch ein Aufruf eines passenden Konstruktors der Oberklasse vor der Bearbeitung der Anweisungen des aktuellen Konstruktors Wird kein eigener Konstruktor definiert, dann erzeugt Java automatisch einen Konstruktor ohne Argumente. Seite 20

Grundlagen der OO-Programmierung - Überladen von Methoden der Oberklasse I class Person { int alter; void alter(int al) alter = al; } . . . class Student extends Person { . . . void alter(int al) if (al > 17) alter = al; } Seite 21

Grundlagen der OO-Programmierung - Überladen von Methoden der Oberklasse II class Student extends Person { . . . void alter(int al) if (al > 17) super.alter(al); } Zugriff auf Funktionen der Oberklasse mit dem Schlüsselwort super Vorteil: kein direkter Zugriff auf Attribute der Oberklasse in der Unterklasse. Seite 22

Grundlagen der OO-Programmierung - Ansatz: Programmcode ohne Redundanz Programmcode so organisieren, dass identischer Code an anderen Stellen mitbenutzt wird: Verwendung anderer Funktionen, Methoden und Konstruktoren zur Realisierung eigener Funktionen. Verwendung vorhandener Klassen durch Definition der eigenen Klasse als Unterklasse. Vorteile: Programm wird kleiner und weniger komplex Änderungen müssen an weniger Stellen durchgeführt werden Seite 23

Grundlagen der OO-Programmierung - Weitere Möglichkeiten in Java Deklarationen mit dem Schlüsselwort abstract: Für eine mit ‘abstract‘ deklarierte Klasse können keine Objekte erzeugt werden. Eine mit ‘abstract‘ deklarierte Klasse kann Deklarationen von Funktionen ohne Rumpf enthalten, die in allen Unterklassen entsprechend der Deklaration definiert werden müssen. Deklarationen mit dem Schlüsselwort final: Der Wert einer mit ‘final‘ deklarierter Variablen oder eines Attributs kann nicht mehr geändert werden. Eine mit ‘final‘ deklarierte Methode oder Funktion darf in einer Unterklasse nicht ersetzt werden. Seite 24

Grundlagen der OO-Programmierung - Beispiel für eine ‚abstrakte‘ Klasse abstract class Person { . . . abstract void setID(String id); abstract String getID(); } Seite 25

Grundlagen der OO-Programmierung - Beispiel für die Deklaration von Konstanten class Student extends Person { int Studiengang; final static int VWL = 1; final static int BWL = 2; final static int PHYSIK = 3; Student(int sg) Studiengang = sg; } . . . . . . Student s; s = new Student(Student.BWL); Seite 26

Übung Seite 27