Was sind Klassen?

Werbung
Themen
Was wir bis hier wissen
sollten,
könnten,
müssten
Stefan Szalowski
Programmierung II
Rückblick
Was sind Klassen?
●
Beschreibung von Objekten mit
●
Gleichen Eigenschaften
–
Stefan Szalowski
Attribute genannt
● Aus Objekten
● Aus Typen
Programmierung II
Datei Bank.java
public class Bank {
}
String name;
int blz;
double eurDollarKurs = 1.2336;
Rückblick
Was sind Klassen?
●
Beschreibung von Objekten mit
●
Gleichen Eigenschaften
–
●
public class Bank {
String name;
int blz;
double eurDollarKurs = 1.2336;
void setEurDolKurs(double kurs) {
eurDollarKurs = kurs;
}
Gleichen Funktionalitäten
–
Stefan Szalowski
Attribute genannt
● Aus Objekten
● Aus Typen
Datei Bank.java
Methoden genannt
● Mit leerem Rückgabewert
● Mit Rückgabewert
● Objekte
● Typen
Programmierung II
}
double euroInDollar(double euro) {
return (eurDollarKurs * euro);
}
Rückblick
Was sind Klassen?
●
Programme sind Klassen
●
●
Haben main()-Methode
Datei Bank.java
public class Bank {
Erzeugen Objekte mit new
String name;
int blz;
double eurDollarKurs = 1.2336;
void setEurDolKurs(double kurs) {
eurDollarKurs = kurs;
}
}
double euroInDollar(double euro) {
return (eurDollarKurs * euro);
}
Datei MeinProgramm.java
public class MeinProgramm {
}
Stefan Szalowski
Programmierung II
public static void main(String[] args) {
Bank sparkasseWR = new Bank();
}
Rückblick
Was sind Klassen?
●
Programme sind Klassen
●
●
●
Haben main()-Methode
Datei Bank.java
public class Bank {
Erzeugen Objekte mit new
String name;
int blz;
double eurDollarKurs = 1.2336;
Rufen Methoden auf den
Objekten auf
void setEurDolKurs(double kurs) {
eurDollarKurs = kurs;
}
}
double euroInDollar(double euro) {
return (eurDollarKurs * euro);
}
Datei MeinProgramm.java
public class MeinProgramm {
}
Stefan Szalowski
Programmierung II
public static void main(String[] args) {
Bank sparkasseWR = new Bank();
double dollar =
sparkasseWR.euroInDollar(1000);
}
Rückblick
Was sind Klassen?
●
Programme sind Klassen
●
●
●
●
Haben main()-Methode
Datei Bank.java
public class Bank {
Erzeugen Objekte mit new
String name;
int blz;
double eurDollarKurs = 1.2336;
Rufen Methoden auf den
Objekten auf
void setEurDolKurs(double kurs) {
eurDollarKurs = kurs;
}
Geben die Ergebnisse auf
der Konsole aus
}
Datei MeinProgramm.java
public class MeinProgramm {
}
Stefan Szalowski
Programmierung II
double euroInDollar(double euro) {
return (eurDollarKurs * euro);
}
public static void main(String[] args) {
Bank sparkasseWR = new Bank();
double dollar =
sparkasseWR.euroInDollar(1000);
System.out.print("Dollar: ");
System.out.println(dollar);
}
Rückblick
Was sind Konstruktoren?
●
Besondere Methoden
●
●
●
Ohne Rückgabewert
Datei Bank.java
public class Bank {
Zum Erzeugen von
Objekten mittels new
String name;
int blz;
double eurDollarKurs = 1.2336;
int naechsteFreieKontoNummer;
Bank (String name, int blz) {
this.name = name;
this.blz = blz;
this.naechsteFreieKontoNummer = 1;
}
Und sofortiger Belegung
der Attribute eines
Objektes mit Werten
void setEurDolKurs(double kurs) {
eurDollarKurs = kurs;
}
}
double euroInDollar(double euro) {
return (eurDollarKurs * euro);
}
Datei MeinProgramm.java
public class MeinProgramm {
Stefan Szalowski
Programmierung II
}
public static void main(String[] args) {
Bank sparkasseWR =
new Bank("SK WR", 12345678);
}
Rückblick
Wozu benutze ich this?
●
Für Zugriffe auf
–
–
●
Attribute innerhalb der
Klasse
Methoden innerhalb der
Klasse
Datei Bank.java
public class Bank {
String name;
int blz;
double eurDollarKurs = 1.2336;
int naechsteFreieKontoNummer;
Zur Unterscheidung
–
–
Von Attributen und
Parametern
Von Attributen und lokalen
Variablen
Bank (String name, int blz) {
this.name = name;
this.blz = blz;
this.naechsteFreieKontoNummer = 1;
}
String getName() {
return this.name;
return name;
// geht auch
}
}
Stefan Szalowski
Programmierung II
String getNameAndBLZ () {
return this.getName() + " " +
this.blz;
}
Rückblick
Was sind Klassenattribute?
●
Gemeinsame Attribute für
alle Objekte einer Klasse
Datei Bank.java
●
Deklariert durch static
public class Bank {
String name;
int blz;
double eurDollarKurs = 1.2336;
int naechsteFreieKontoNummer;
static boolean hatMitGeldZuTun = true;
}
Stefan Szalowski
Programmierung II
Rückblick
Was sind Klassenmethoden?
●
Methoden, deren
Funktionalität nicht an
Objekte gebunden ist
Datei Bank.java
public class Bank {
●
Deklariert durch static
●
Aufruf über Klassenname
●
Nicht über Objekt
String name;
int blz;
double eurDollarKurs = 1.2336;
int naechsteFreieKontoNummer;
static boolean hatMitGeldZuTun = true;
}
static double convert(double kurs,
double money) {
return (kurs * money);
}
Datei MeinProgramm.java
public class MeinProgramm {
}
Stefan Szalowski
Programmierung II
public static void main(String[] args) {
double euroDollarKurs = 1.5;
double euronen = 1000;
double dollar =
Bank.convert(euroDollarKurs,
euronen);
System.out.print("Dollar: ");
System.out.println(dollar);
}
Rückblick
Was ist Information Hiding?
●
●
●
●
●
Stefan Szalowski
OO basiert auf:
Verbergen von Abläufen
innerhalb der Klasse
Bereitstellen einer
Schnittstelle zum Ändern,
Abrufen von Daten der
Klasse
Schnittstelle sind die
Methoden
Deshalb ...
Programmierung II
Rückblick
Was ist Information Hiding?
●
●
Deshalb sollten wir:
Attribute nicht als public
deklarieren
–
●
Attribute sind Daten
private int naechsteFreieKontoNummer;
bei Konstanten
private void incrementKontoNummer() {
this.naechsteFreieKontoNummer++;
}
public Konto createKonto() {
Konto k =
new Konto(naechsteFreieKontoNummer);
this.incrementKontoNummer();
return k;
}
Methoden als private
deklarieren
–
●
public class Bank {
Attribute als public
deklarieren
–
●
Datei Bank.java
Wenn sie nicht die
Schnittstelle bedienen sollen
}
public class MeinProgramm {
Methoden als public
deklarieren
–
Wenn sie die Schnitstelle
bedienen sollen
}
Stefan Szalowski
Programmierung II
public static void main(String[] args) {
Bank sparkasseWR = new Bank("SK WR",
12345678);
// geht, Schnittstelle
Konto konto =
sparkasseWR.createKonto();
// geht nicht, soll verborgen bleiben
int nFKN =
sparkasseWR.naechsteFreieKontoNummer;
}
Rückblick
Was sind Packages?
●
●
Sammlung von Klassen,
die sinnvoll zusammengehören
Java-Packages
–
–
–
–
–
Stefan Szalowski
java.io
java.net
java.util
javax.swing
...
Programmierung II
Rückblick
Was sind Packages?
●
Sammlung von Klassen,
die sinnvoll zusammengehören
Datei Bank.java
import java.util.*;
●
Java-Packages
–
–
–
–
–
●
public class Bank {
java.io
java.net
java.util
javax.swing
...
private Vector bankKonten;
Bank (String name, int blz) {
this.name = name;
this.blz = blz;
this.naechsteFreieKontoNummer = 1;
this.bankKonten = new Vector();
}
Importieren von Packages
mittels import
}
●
Stefan Szalowski
Konto createKonto() {
Konto k =
new Konto(naechsteFreieKontoNummer);
this.incrementKontoNummer();
bankKonten.add(k);
return k;
}
Funktionalitäten
vorhandener Klassen
nutzen
Programmierung II
Rückblick
Herunterladen