PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

Imperative 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
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
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 Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Programmieren mit JAVA
Programmieren mit JAVA
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
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 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.
Packages Vortrag : Cornelia Hardt 23. November 1999.
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 Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Einführung in die Programmierung Klassendefinition und Objekte
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
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
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
2.4 Rekursion Klassifikation und Beispiele
Objektorientiertes Konstruieren
Unterprogramme in JAVA
Aufruf einer Methode eines Objektes vom Typ „Bruch“
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Methoden
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.
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
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Konstruktoren.
Grundkurs Informatik 11-13
Implementieren von Klassen
Grundkurs Informatik 11-13
 Präsentation transkript:

PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit nicht-sequentiellen Strukturen Umgang mit Strukturen aus heterogenen Typen In JAVA gelöst durch Klassen und Objekte

PKJ 2005/2 Stefan Dissmann Erkenntnisse Prinzipien bei der Gestaltung von abgeschlossenen Einheiten: Kapselung Jede Einheit hat Grenzen. Lokalität Funktionen und Daten der Einheit sind zusammengefasst. konzeptionelle Vollständigkeit Jede Einheit kann ihre Aufgaben erledigen. Geheimhaltung von Interna Jede Einheit verbirgt Daten und Handlungsumsetzung. Autonomie Jede Einheit entscheidet selbstständig.

PKJ 2005/3 Stefan Dissmann Klassen und Objekte Objekt ist abgeschlossene Einheit im JAVA-Programm Klasse ist Konstruktionsbeschreibung für Objekte Folgerungen: Klasse wird benötigt, um Objekt zu erzeugen. Aus einer Klasse können viele Objekte erzeugt werden.

PKJ 2005/4 Stefan Dissmann Beispiel – Klasse Studierende Folgende Daten von jedem Studierenden sollen verwaltet werden: VornameText NameText MatrikelnummerZahl StudiengangText SemesterzahlZahl

PKJ 2005/5 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; }

PKJ 2005/6 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; } neu GeheimnisprinzipAttribut

PKJ 2005/7 Stefan Dissmann Attribut private String name, vorname, studiengang; Attribut ist Variable auf Ebene einer Klasse steht in der ganzen Klasse zur Verfügung wird ähnlich vereinbart wie eine Variable in Methode hat eine Angabe zu Zugriffsrecht (hier: private ) private verbirgt Attribut innerhalb eines Objektes, so dass kein Zugriff von Objekten anderer Klassen aus möglich ist. Objekte der Klasse Studierende sind völlig abgeschottet!

PKJ 2005/8 Stefan Dissmann Methode Lösung: Hinzufügen von Methoden, die auf Attribute zugreifen. Methoden müssen von außen zugreifbar sein. Analogie: Tasten des Fernsehers oder Videorekorders

PKJ 2005/9 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; public void setzeName(String n) { name = n; } public String gibName() { return name; }

PKJ 2005/10 Stefan Dissmann Klasse public void setzeName(String n) { name = n; } public String gibName() { return name; } Methoden nutzen Attribut name lesend und schreibend. Vereinbarung der Methoden ohne static. Implementierung der Methoden wie bekannt.

PKJ 2005/11 Stefan Dissmann Nutzung von Klassen Offene Fragen: Wie werden Objekte erzeugt? Wie werden Objekte genutzt? Wie werden Methoden angesprochen?

PKJ 2005/12 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; } Vereinbart nur eine Referenz, die auf Objekte der Klasse Studierende verweisen kann. Dadurch ist noch kein Objekt erzeugt.

PKJ 2005/13 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); } Es wird ein neues Objekt der Klasse Studierende erzeugt. Die Referenz stud verweist auf diese Objekt. () ist notwendig!

PKJ 2005/14 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); stud.setzeName("Musterfrau"); } setzeName des Objekts, auf das stud verweist, wird aufgerufen! " Musterfrau " wird als Parameter übergeben. Folge: Das Attribut name des Objekts wird auf "Musterfrau" gesetzt.

PKJ 2005/15 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); stud.setzeName("Musterfrau"); } Zugriff über.-Notation x.y heißt (in JAVA) immer: Nimm das Objekt, auf das x verweist, und von diesem Objekt (die Methode) y.

PKJ 2005/16 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); stud.setzeName("Musterfrau"); System.out.println("Name: "+stud.gibName()); } gibName des Objekts, auf das stud verweist, wird aufgerufen! gibName liefert den Wert des Attributs name !

PKJ 2005/17 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/18 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/19 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/20 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/21 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/22 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/23 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/24 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/25 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/26 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!