PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Zusammenfassung der Vorwoche
Kritische Betrachtung
Kapselung , toString , equals , Java API
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
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.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Objekte und Arbeitsspeicher
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Objektorientierte Programmierung JDK-Klassenbibliothek
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
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 Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
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.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Modulare Programmierung
DVG Klassenhierarchie. DVG Klassenhierarchie 4 Durch die Ableitung jeder Klasse aus genau einer Elternklasse entsteht eine Baumstruktur.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
DVG Klassenhierarchie Klassenhierarchie. DVG Klassenhierarchie 2 Klassenhierarchie Durch die Ableitung jeder Klasse aus genau einer Elternklasse.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Klassendefinition und Objekte
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
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,
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Aufruf einer Methode eines Objektes vom Typ „Bruch“
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Einführung in die Programmierung mit Java
Konstruktoren.
Grundkurs Informatik 11-13
Grundkurs Informatik 11-13
 Präsentation transkript:

PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private Datum geburt, beginn; } public class Datum { private int tag, monat, jahr; }

PKJ 2005/2 Stefan Dissmann Klasse Studierende public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private Datum geburt, beginn; public void setzeName(String n) { name = n; } public String gibName() { return name; } public void zeigeName() { System.out.println(name); }

PKJ 2005/3 Stefan Dissmann Klasse Studierende public class TestStud { public static void main(String[] args) { Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); }

PKJ 2005/4 Stefan Dissmann Klasse Studierende public class TestStud { public static void main(String[] args) { Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); } Ausgabe: Müller Müller

PKJ 2005/5 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName();

PKJ 2005/6 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2

PKJ 2005/7 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:

PKJ 2005/8 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:"Schmidt"

PKJ 2005/9 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:"Schmidt"

PKJ 2005/10 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller"

PKJ 2005/11 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller"

PKJ 2005/12 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller"

PKJ 2005/13 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller" Mehrere Referenzen können auf ein Objekt verweisen

PKJ 2005/14 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller" Mehrere Referenzen können auf ein Objekt verweisen Referenzen können während der Ausführung gesetzt werden

PKJ 2005/15 Stefan Dissmann Attribute - Initialisierung Variablen in Methoden sind nicht initialisiert! Attribute in Klassen sind immer mit 0 initialisiert: bei Zahlen der Wert 0, bei boolean der Wert false, bei Referenzen auf Klassen der Wert null Allerdings: Studierende haben andere Werte!

PKJ 2005/16 Stefan Dissmann Attribute - Initialisierung public class Studierende { private String name, vorname, studiengang; private int matNr, semester=1; private Datum geburt, beginn; … } Initialisierung bei Vereinbarung: nicht sehr flexibel Wert wird für alle Objekte gesetzt

PKJ 2005/17 Stefan Dissmann Attribute – Zuweisung durch expliziten Konstruktor public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private Datum geburt, beginn; public Studierende (String n, String vn, String sg) { name = n; vorname = vn; studiengang = sg; semester = 1; } … }

PKJ 2005/18 Stefan Dissmann Attribute – Zuweisung durch expliziten Konstruktor public Studierende (String n, String vn, String sg) { name = n; … } Expliziter Konstruktor ist spezielle Methode: Name = Name der Klasse keine Angabe eines Rückgabetyps, kein return zurückgegeben wird immer ein Objekt der Klasse Aufruf mit new Rumpf wird nach Initialisierung ausgeführt Rumpf kann Programmkonstrukte enthalten

PKJ 2005/19 Stefan Dissmann Konstruktoren Impliziter Konstruktor: steht standardmäßig zur Verfügung hat keine Parameter tut nichts: public Studierende () {} Sobald ein expliziter Konstruktor vereinbart ist, ist der Standardkonstruktor nicht mehr verfügbar. Aber: Es kann ein neuer paramterloser Konstruktor vereinbart werden, z.B.: public Studierende () {name = kein Name;}

PKJ 2005/20 Stefan Dissmann Konstruktoren In einer Klasse möglich: mehrere Konstruktoren mit unterschiedlichen Parameterlisten public class Studierende { public Studierende () {name = kein Name;} public Studierende (String n, String vn, String sg) { name = n; vorname = vn; studiengang = sg; } … }

PKJ 2005/21 Stefan Dissmann Konstruktoren In einer Klasse möglich: mehrere Konstruktoren mit unterschiedlichen Parameterlisten public class Studierende { public Studierende () {name = kein Name;} public Studierende (String n, String vn, String sg) { name = n; vorname = vn; studiengang = sg; } … }

PKJ 2005/22 Stefan Dissmann Methoden Allgemein gilt: Methoden mit gleichen Namen werden anhand ihrer Parameterlisten unterschieden! int m(int p, int q) { … } int m(char p, int q) { … } int m(int p) { … } int m(int p, char q) { … }

PKJ 2005/23 Stefan Dissmann Methoden Allgemein gilt: Methoden mit gleichen Namen werden anhand ihrer Parameterlisten unterschieden! int m(int p, int q) { … } int m(char p, int q) { … } int m(int p) { … } int m(int p, char q) { … } aber Konflikt mit: void m(int p) { … }

PKJ 2005/24 Stefan Dissmann Beispiel: Klasse String Konstruktoren (insgesamt 13): String() Initializes a newly created String object so that it represents an empty character sequence. String(byte[] ascii, int hibyte) Deprecated. This method... String (char[] value) Allocates a new String... String(char[] value, int offset, int count) Allocates a new String... String(StringBuffer buffer) Allocates a new string... …

PKJ 2005/25 Stefan Dissmann Beispiel: Klasse String Konstruktoren (insgesamt 13): String() Initializes a newly created String object so that it represents an empty character sequence. String(byte[] ascii, int hibyte) Deprecated. This method... String (char[] value) Allocates a new String... String(char[] value, int offset, int count) Allocates a new String... String(StringBuffer buffer) Allocates a new string... …

PKJ 2005/26 Stefan Dissmann Beispiel: Klasse String Methoden (insgesamt ca. 60): char charAt(int index) Returns the char value at the specified index. intcompareTo(String anotherString) Compares two strings lexicographically. int compareToIgnoreCases(String str) Compares two strings lexicographically, ignoring case differences. String concat(String str) Concatenates the specified string to the end of this string. boolean endsWith(String suffix) Tests if this string ends with the specified suffix. …

PKJ 2005/27 Stefan Dissmann Beispiel: Klasse String Methoden (Fortsetzung): int indexOf(int ch) Returns the index within this string of the first occurrence of the specified character. int indexOf(String str) Returns the index within this string of the first occurrence of the specified substring. int lastIndexOf(int ch) Returns the index within this string of the last occurrence of the specified character. int length() Returns the length of this string. …

PKJ 2005/28 Stefan Dissmann Beispiel: Klasse String Hinweis: String ist eine etwas untypische Klasse! Objekte werden nur bei Konstruktion mit dem Text gefüllt. Methoden liefern entweder - Informationen über Objekt (z.B. charAt() ) oder - liefern neu konstruiertes Objekt (z.B. concat(String str)) änderbare Textobjekte bietet die Klasse StringBuffer

PKJ 2005/29 Stefan Dissmann Lebensdauer von Objekten Objekt wird durch Aufruf eines Konstruktors erzeugt! Wann und wie wird ein Objekt vernichtet?

PKJ 2005/30 Stefan Dissmann Lebensdauer von Objekten Objekt wird durch Aufruf eines Konstruktors erzeugt! Wann und wie wird ein Objekt vernichtet? Im Prinzip gar nicht; Objekte existieren immer weiter!

PKJ 2005/31 Stefan Dissmann Lebensdauer von Objekten Objekt wird durch Aufruf eines Konstruktors erzeugt! Wann und wie wird ein Objekt vernichtet? Im Prinzip gar nicht; Objekte existieren immer weiter! Aber Referenzen auf Objekte haben einen eingeschränkten Sichtbarkeitsbereich!

PKJ 2005/32 Stefan Dissmann Lebensdauer von Objekten Objekt wird durch Aufruf eines Konstruktors erzeugt! Wann und wie wird ein Objekt vernichtet? Im Prinzip gar nicht; Objekte existieren immer weiter! Aber Referenzen auf Objekte haben einen eingeschränkten Sichtbarkeitsbereich! Und wenn es keine Referenz mehr zu einem Objekt gibt ist es nicht mehr erreichbar und so für das Programm verloren!

PKJ 2005/33 Stefan Dissmann Frohe Weihnachten und alles Gute für 2006