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