60
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) • es kann mehrere Klassen geben • nur eine Klasse in einer Datei darf public sein • Variablen müssen mit new angelegt werden. Input in = new Input(); Funktionen werden Variablenname.Funktionsname aufgerufen in.readInt() oder in.readDouble()

Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Embed Size (px)

Citation preview

Page 1: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Informatik I : Software

höhere ProgrammiersprachenJava

Klassen:

• hat Methoden (Funktionen) und Daten (Variablen)• es kann mehrere Klassen geben• nur eine Klasse in einer Datei darf public sein• Variablen müssen mit new angelegt werden. Input in = new Input();• Funktionen werden Variablenname.Funktionsname aufgerufen in.readInt() oder in.readDouble()

Page 2: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Matrizen = zweidimensionale Felder

Page 3: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Matrizen = zweidimensionale Felder

• Deklaration: datentyp[][] variablenname;

Page 4: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Matrizen = zweidimensionale Felder

• Deklaration: datentyp[][] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe_x][größe_y];

Page 5: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Matrizen = zweidimensionale Felder

• Deklaration: datentyp[][] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe_x][größe_y];

variablenname = new datentyp[größe_x][]; variablenname[0] = new datentyp[größe_y]; variablenname[1] = new datentyp[größe_y + 1]; .........

Page 6: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Matrizen = zweidimensionale Felder

• Deklaration: datentyp[][] variablenname;

• Speicher reservieren: variablenname = new datentyp[größe_x][größe_y];

variablenname = new datentyp[größe_x][]; variablenname[0] = new datentyp[größe_y]; variablenname[1] = new datentyp[größe_y + 1]; .........

• Elementzugriff: variablenname[i][j];

int[][] d = new int[4][4];d[0][0] d[0][1] d[0][2] d[0][3]

d[1][0] d[1][1] d[1][2] d[1][3]

d[2][0] d[2][1] d[2][2] d[2][3]

d[3][0] d[3][1] d[3][2] d[3][3]

Page 7: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Reale Welt Virtuelle Welt

Page 8: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Reale Welt Virtuelle Welt

• Unsere Welt besteht aus Objekten!

Page 9: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Reale Welt Virtuelle Welt

• Unsere Welt besteht aus Objekten!

• Objekte mit gleichen Eigenschaften und gleichen Verhaltensweisen (Methoden) faßt man in Klassen zusammen.

Page 10: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Reale Welt Virtuelle Welt

• Unsere Welt besteht aus Objekten!

• Objekte mit gleichen Eigenschaften und gleichen Verhaltensweisen (Methoden) fasst man in Klassen zusammen. Klassen werden vereinbart.

• Ein Objekt aus einer Klasse nennt man eine Instanz der Klasse. Objekte müssen explizit erzeugt werden. Sie existieren dann mit einem persistenten lokalen Zustand. Verallgemeinerung von Prozeduren.

•Eingeschränkter Zugriff auf interne Struktur (Schnittstelle nach außen/ interne Realisierung)

Page 11: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Virtuelle Welt

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Page 12: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Virtuelle Welt

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Eigenschaften der Klasse werden in Datenfeldern gespeichert.

Page 13: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Virtuelle Welt

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Methoden der Klasse.

Page 14: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Virtuelle Welt

Konstruktor der Klasse.

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Page 15: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

package MyPackage;class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

import MyPackage.Person;

public class BeispielAnwendungPerson{ public static void main(String[] args) { Person berti = new Person(“Vogts“, “Berti“, “Leverkusen, Trainerstr. 0“);

berti.datenAusgeben(); }}

Page 16: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; } Person(String p_name) { name = p_name; } void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

import Person;

public class BeispielAnwendungPerson{ public static void main(String[] args) { Person berti = new Person(“Vogts“); berti.vorname = “Berti“; berti.adresse = „“Leverkusen, Trainerstr. 0“;

berti.datenAusgeben(); }}

Page 17: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; } Person(String p_name) { name = p_name; } void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Eine Klasse kann über viele Konstruktoren verfügen.Sie unterscheiden sich in den Eingabeparametern.

Jeder Konstruktor hat einen eindeutigen Satz vonEingabeparametern.

Page 18: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Person

Student Mitarbeiter Professor

Vererbung

Page 19: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Person

Student Mitarbeiter Professor

Vererbung

Basisklasse

Abgeleitete Klassen

Page 20: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Person

Student Mitarbeiter Professor

Vererbung

Basisklasse

Abgeleitete Klassen

Abgeleitete Klassen verfügen über zusätzlicheEigenschaften und Fähigkeiten (Methoden).

Page 21: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Vererbungclass Mitarbeiter extends Person{ float gehalt;

Mitarbeiter(String p_name, String p_vorname, String p_adresse, float p_gehalt) { // Konstruktor der Basisklasse aufrufen super(p_name, p_vorname, p_adresse);

gehalt = p_gehalt; }

void gehaltAusgeben() { System.out.println(“\n“); System.out.println(“Gehalt : “ + gehalt); } void gehaltAendern(int aenderung) { gehalt += aenderung; }}

Page 22: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

public class AnwendungVonMitarbeiter{ public static void main(String[] args ) { Mitarbeiter billy;

billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); billy.gehaltAendern(-2000); billy.datenAusgeben(); billy.gehaltAusgeben(); }}

Vererbungclass Mitarbeiter extends Person{ float gehalt;

Mitarbeiter(String p_name, String p_vorname, String p_adresse, float p_gehalt) { // Konstruktor der Basisklasse aufrufen super(p_name, p_vorname, p_adresse);

gehalt = p_gehalt; }

void gehaltAusgeben() { System.out.println(“\n“); System.out.println(“Gehalt : “ + gehalt); } void gehaltAendern(int aenderung) { gehalt += aenderung; }}

Page 23: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Vererbung

Person

Student Mitarbeiter Professor

Wissenschaftl. Mitarbeiter Nicht-wissenschaftl. Mitarbeiter

class WissenschaftlicherMitarbeiter extends Mitarbeiter{ // Implementierung}

Page 24: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Polymorphismus

class Mitarbeiter extends Person{ float gehalt;

Mitarbeiter(String p_name, String p_vorname, String p_adresse, float p_gehalt) { // Konstruktor der Basisklasse aufrufen super(p_name, p_vorname, p_adresse);

gehalt = p_gehalt; }

void gehaltAusgeben() { System.out.println(“\n“); System.out.println(“Gehalt : “ + gehalt); } void gehaltAendern(int aenderung) { gehalt += aenderung; }}

public class FirstTestPolymorphism{ public static void main(String[] args ) { Person[] personen = new Person[300];

Mitarbeiter billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); personen[0] = billy;

((Mitarbeiter)personen[0]).gehaltAendern(-1000); ((Mitarbeiter)personen[0]).gehaltAusgeben(); }}

Cast-Operator

Page 25: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

public class FirstTestPolymorphism{ public static void main(String[] args ) { Person[] personen = new Person[300];

Mitarbeiter billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); personen[0] = billy;

((Mitarbeiter)personen[0]).gehaltAendern(-1000); ((Mitarbeiter)personen[0]).gehaltAusgeben(); }}

Cast-Operator

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Polymorphismus

Page 26: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

public class SecondTestPolymorphism{ public static void main(String[] args ) { Person[] personen = new Person[300];

Mitarbeiter billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); personen[0] = billy;

((Mitarbeiter)personen[0]).gehaltAendern(-1000); personen[0].gehaltAusgeben(); }}

class Person{ String vorname; String name; String adresse;

Person(String p_name, String p_vorname, String p_adresse) { name = p_name; vorname = p_vorname; adresse = p_adresse; }

void gehaltAusgeben() { } void datenAusgeben() { System.out.println(“\n“); System.out.println(“Name : “ + name); System.out.println(“Vorname :“ + vorname); System.out.println(“Adresse :“ + adresse); }}

Polymorphismus

Page 27: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

import Person;import Mitarbeiter;

public class SecondTestPolymorphism{ public static void main(String[] args ) { Person[] personen = new Person[300];

Mitarbeiter billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); personen[0] = billy;

((Mitarbeiter)personen[0]).gehaltAendern(-1000); personen[0].gehaltAusgeben(); }}

Polymorphismus

class Mitarbeiter extends Person{ float gehalt;

Mitarbeiter(String p_name, String p_vorname, String p_adresse, float p_gehalt) { // Konstruktor der Basisklasse aufrufen super(p_name, p_vorname, p_adresse);

gehalt = p_gehalt; }

void gehaltAusgeben() { System.out.println(“\n“); System.out.println(“Gehalt : “ + gehalt); } void gehaltAendern(int aenderung) { gehalt += aenderung; }}

Page 28: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

import Person;import Mitarbeiter;

public class SecondTestPolymorphism{ public static void main(String[] args ) { Person[] personen = new Person[300];

Mitarbeiter billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); personen[0] = billy;

((Mitarbeiter)personen[0]).gehaltAendern(-1000); personen[0].gehaltAusgeben(); }}

Polymorphismus

Polymorphismus erlaubt die gleichartige Behandlung verschiedener Objekte untergleichzeitiger Berücksichtigung der speziellen Eigenheiten der einzelnen Objekte

Page 29: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

import Person;import Mitarbeiter;

public class SecondTestPolymorphism{ public static void main(String[] args ) { Person[] personen = new Person[300];

Mitarbeiter billy = new Mitarbeiter(“Gates“, “Bill“, “Hollywood“, 2000); personen[0] = billy;

((Mitarbeiter)personen[0]).gehaltAendern(-1000); personen[0].gehaltAusgeben(); }}

Polymorphismus

Beispiel: In dem Feld „personen“ können Objekte der Basisklasse „Person“ und der abgeleiteten Klassen „Mitarbeiter“ , „Student“usw. gespeichert werden. Für alle Elementeim Feld kann man die Methoden der Basis-Klasse aufrufen, wobei für Elemente abgeleiteter Klassen automatisch die über-schriebenen Versionen aufgerufen werden.

Polymorphismus erlaubt die gleichartige Behandlung verschiedener Objekte untergleichzeitiger Berücksichtigung der speziellen Eigenheiten der einzelnen Objekte

Page 30: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

abstract class Figur{ float x, y; // x und y Koordinate Figur( float px, float py) { x = px; y = py; }

abstract void zeichnen();}

Page 31: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

abstract class Figur{ float x, y; // x und y Koordinate Figur( float px, float py) { x = px; y = py; }

abstract void zeichnen();}

class Kreis extends Figur{ float radius; Kreis( float px, float py, float r) { super(px,py); radius = r; }

void zeichnen() { System.out.println(“Zeichne Kreis“); }}

Page 32: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

abstract class Figur{ float x, y; // x und y Koordinate Figur( float px, float py) { x = px; y = py; }

abstract void zeichnen();}

class Rechteck extends Figur{ float breite, laenge; Rechteck( float px, float py, float b, float l) { super(px,py); breite = b; laenge = l; }

void zeichnen() { System.out.println(“Zeichne Rechteck“); }}

Page 33: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

abstract class Figur{ float x, y; // x und y Koordinate Figur( float px, float py) { x = px; y = py; }

abstract void zeichnen();}

class Rechteck extends Figur{ float breite, laenge; Rechteck( float px, float py, float b, float l) { super(px,py); breite = b; laenge = l; }

void zeichnen() { System.out.println(“Zeichne Rechteck“); }}

Figur

Kreis Rechteck Linie

Page 34: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

public class ZeichneFiguren{ public static main(String[] args) { Figur[] zeichenobjekte = new Figur[3];

zeichenobjekte[0] = new Kreis(0.0,0.0, 3.0); zeichenobjekte[1] = new Rechteck(1.0,1.0, 5.0, 5.0); zeichenobjekte[2] = new Kreis(0.0, 0.0, 5.0);

for (int i=0; i <zeichenobjekte.length; i++) { zeichenobjekte[i].zeichnen(); } }} Figur

Kreis Rechteck Linie

Page 35: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

public class ZeichneFiguren{ public static main(String[] args) { Figur[] zeichenobjekte = new Figur[3];

zeichenobjekte[0] = new Kreis(0.0,0.0, 3.0); zeichenobjekte[1] = new Rechteck(1.0,1.0, 5.0, 5.0); zeichenobjekte[2] = new Kreis(0.0, 0.0, 5.0);

for (int i=0; i <zeichenobjekte.length; i++) { zeichenobjekte[i].zeichnen(); } }} Figur

Kreis Rechteck Linie

abstract class Figur{ float x, y; // x und y Koordinate Figur( float px, float py) { x = px; y = py; }

abstract void zeichnen();}

Page 36: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Abstrakte Klassen

In vielen Situationen möchte der Programmiererdas Polymorphismus-Konzept nutzen, in denendie entsprechende Funktionen für die Basis-Klassekeine sinnvolle Funktionalität besitzen.In solchen Situationen definiert man abstrakteKlassen und Funktionen.

Figur

Kreis Rechteck Linie

abstract class Figur{ float x, y; // x und y Koordinate Figur( float px, float py) { x = px; y = py; }

abstract void zeichnen();}

Page 37: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Wie entwirft man geeignete Klassenhierarchien?

In Java gibt es viele bereits implementierte Klassen (Pakete), die dem Nutzer sehr vielFunktionalität zur Verfügung stellen.

Page 38: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Wie entwirft man geeignete Klassenhierarchien?

In Java gibt es viele bereits implementierte Klassen (Pakete), die dem Nutzer sehr vielFunktionalität zur Verfügung stellen.

Alle Klassen in Java werden von der Superklasse Objekt abgeleitet.

Page 39: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Wie entwirft man geeignete Klassenhierarchien?

In Java gibt es viele bereits implementierte Klassen (Pakete), die dem Nutzer sehr vielFunktionalität zur Verfügung stellen.

Alle Klassen in Java werden von der Superklasse Objekt abgeleitet.

Beschreibungen der Funktionalität der wichtigsten Klassen findet man zum Beispiel im WWW unter der folgenden Adresse:

http://java.sun.com/j2se/1.3/docs/api/overview-summary.html

Page 40: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Wie entwirft man geeignete Klassenhierarchien?

In Java gibt es viele bereits implementierte Klassen (Pakete), die dem Nutzer sehr vielFunktionalität zur Verfügung stellen.

Alle Klassen in Java werden von der Superklasse Objekt abgeleitet.

Beschreibungen der Funktionalität der wichtigsten Klassen findet man zum Beispiel im WWW unter der folgenden Adresse:

http://java.sun.com/j2se/1.3/docs/api/overview-summary.html

Page 41: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Wie entwirft man geeignete Klassenhierarchien?

In Java gibt es viele bereits implementierte Klassen (Pakete), die dem Nutzer sehr vielFunktionalität zur Verfügung stellen.

Alle Klassen in Java werden von der Superklasse Objekt abgeleitet.

Beschreibungen der Funktionalität der wichtigsten Klassen findet man zum Beispiel im WWW unter der folgenden Adresse:

http://java.sun.com/j2se/1.3/docs/api/overview-summary.html

Frage: Kann man die zu entwickelnde Klasse von bereits implementierten Klassen ableiten?

Page 42: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Gewagte Konstruktionen?

Abgeleitete2

Basis

Abgeleitete1a Abgeleitete1b

Page 43: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Gewagte Konstruktionen?

Abgeleitete2

Basis

Abgeleitete1a Abgeleitete1b

Mehrfachvererbung

Page 44: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Gewagte Konstruktionen?

Abgeleitete2

Basis

Abgeleitete1a Abgeleitete1b

Auf Mehrfachvererbung wird in Java verzichtet. Java bietet dafür das Konzeptder sogenannten Interfaces (für Fortgeschrittene).

Page 45: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Datenkapselung (Information Hiding)

Das Prinzip der Datenkapselung stellt einen Grundpfeiler der objektorientierten Programmierung dar.

Page 46: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Datenkapselung (Information Hiding)

Das Prinzip der Datenkapselung stellt einen Grundpfeiler der objektorientierten Programmierung dar.

Möglichst wenig von der Implementierung der Klasse wirdnach außen sichtbar gemacht.

Page 47: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Datenkapselung (Information Hiding)

Das Prinzip der Datenkapselung stellt einen Grundpfeiler der objektorientierten Programmierung dar.

Möglichst wenig von der Implementierung der Klasse wirdnach außen sichtbar gemacht.

Man bietet dem Nutzer eine wohldefinierte Schnittstellen zur Klasse an. Diese Schnittstelle sollte sich auch bei Änderungen der Implementierung nicht ändern.

Page 48: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Datenkapselung (Information Hiding)

class Chamaeleon {

int wert;

BerechneResultat() {

wert = ......; }}

Page 49: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Datenkapselung (Information Hiding)

class Chamaeleon { int wert; int resultat;

BerechneResultat() {

resultat = ......; }}

Page 50: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Datenkapselung (Information Hiding)

class Chamaeleon { private int wert; private int resultat;

private BerechneResultat() { resultat = ......; }

public ResultatAusgabe() { System.out.println(resultat); }}

Page 51: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Zugriffsmodifizierer: public, protected, private

Page 52: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class Basisklasse { public int resultat;

// in jeder Methode der Basisklasse { resultat = ......; }}

Zugriffsmodifizierer: public, protected, private

Page 53: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class BasisKlasse { public int resultat;

// in jeder Methode der Basisklasse { resultat = ......; this.resultat = .....; }}

this ist eine spezielle Instanzvariable, die der Compiler automatisch anlegt und die immer auf die aktuelle Instanz der Klasse, in der Sie sich gerade befinden, verweist.

Zugriffsmodifizierer: public, protected, private

Page 54: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class BasisKlasse { public int resultat;

// in jeder Methode der Basisklasse { resultat = ......; }}

Zugriffsmodifizierer: public, protected, private

class AbgeleiteteKlasse extends BasisKlasse{

// in jeder Methode der Abgeleitete.. { resultat = ......; }}

Page 55: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class BasisKlasse { public int resultat;

// in jeder Methode der Basisklasse { resultat = ......; }}

import BasisKlasse.*;

class ExterneKlasse{

// in jeder Methode von ExterneKl... { Basisklasse basis = new BasisKlasse(); basis.resultat = ......; }}

Zugriffsmodifizierer: public, protected, private

class AbgeleiteteKlasse extends BasisKlasse{

// in jeder Methode der Abgeleitete.. { resultat = ......; }}

Page 56: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class BasisKlasse { public int resultat;

// in jeder Methode der Basisklasse { resultat = ......; }}

import BasisKlasse.*;

class ExterneKlasse{

// in jeder Methode von ExterneKl... { Basisklasse basis = new BasisKlasse(); basis.resultat = ......; }}

Auf Klassenvariablen und Methoden, die als „public“deklariert sind, kann aus jeder Methode der Klasse,aus jeder Methode der abgeleiteten Klassen undaus jeder Methode von „externen“ Klasse zugegriffen werden.

Zugriffsmodifizierer: public, protected, private

class AbgeleiteteKlasse extends BasisKlasse{

// in jeder Methode der Abgeleitete.. { resultat = ......; }}

Page 57: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

class BasisKlasse { protected int resultat;

// in jeder Methode der Basisklasse { resultat = ......; }}

import BasisKlasse.*;

class ExterneKlasse{

// in jeder Methode von ExterneKl... { Basisklasse basis = new BasisKlasse(); basis.resultat = ......; }}

Auf Klassenvariablen und Methoden, die als „protected“deklariert sind, kann aus jeder Methode der Klasse undaus jeder Methode der abgeleiteten Klassen zugegriffenwerden.

Zugriffsmodifizierer: public, protected, private

class AbgeleiteteKlasse extends BasisKlasse{

// in jeder Methode der Abgeleitete.. { resultat = ......; }}

Page 58: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Zugriffsmodifizierer: public, protected, private

class BasisKlasse { private int resultat;

// in jeder Methode der Basisklasse { resultat = ......; }}

class AbgeleiteteKlasse extends BasisKlasse{

// in jeder Methode der Abgeleitete.. { resultat = ......; }}

import BasisKlasse.*;

class ExterneKlasse{

// in jeder Methode von ExterneKl... { Basisklasse basis = new BasisKlasse(); basis.resultat = ......; }}

Auf Klassenvariablen und Methoden, die als „private“deklariert sind, kann aus jeder Methode der Klasse zugegriffen werden.

Page 59: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Definition von n!

Durch n! wird die Zahl der Permutationen einer Menge mit n Elementen bestimmt. Eine Permutation ist dabei eine beliebige lineare Anordnung der n Elemente.

n! ist definiert durch:1 falls n = 0n*(n-1)! falls n > 0

Page 60: Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine

Methoden n! zu berechnenclass Fac{

long compute (long n){ Fac f = new Fac(); if (n == 0)

return 1; else return n*f.compute(n-

1);}

long computeWhile (long n){ long a = n, b = 1; while (a != 0) { b = a*b; a--; } return b;}

long compute (long n1, long n2){ if (n1 == 0)

return n2; else return compute(n1-1,n1*n2);}

class Fac{

long compute (long n){ if (n == 0)

return 1; else return n*compute(n-1);}

long computeFor (long n){ long b = 1; for (long a = n; a != 0; a--)

b = a*b; return b;}

}