PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren.

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
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
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
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.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Objekte und Arbeitsspeicher
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
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
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
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 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 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.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
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.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Anweisungen und Datentypen
Einführung in die Programmierung Klassendefinition und Objekte
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,
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.
2.4 Rekursion Klassifikation und Beispiele
Unterprogramme in JAVA
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
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.
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.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java Programme nur ein bisschen objektorientiert.
Einführung in die Programmierung mit Java
Implementieren von Klassen
 Präsentation transkript:

PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren für diese Typen Anweisungen Bedingte Anweisungen: if und if-else Schleifen: while und for Methoden (auch rekursiv)

PKJ 2005/2 Stefan Dissmann Zusammenfassung Mit diesen Hilfsmitteln möglich: Lösen von algorithmischen Fragestellungen Bearbeitung von Problemen mit fester Anzahl sequentiell angeordneter Elemente eines Typs Nicht möglich: z.B. komfortabler Umgang mit den Daten aller Studierenden einer Universität

PKJ 2005/3 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/4 Stefan Dissmann Klassen und Objekte In der physikalischen Umwelt: abgeschlossene Einheiten mit vorgegebener Funktionalität, zum Beispiel: –Kaffeemühle –Taschenrechner –Handy –Videorekorder Auffällig: technische Details sind uninteressant

PKJ 2005/5 Stefan Dissmann Formalisierung Kaffeemühle

PKJ 2005/6 Stefan Dissmann Kaffeemühle: Funktionen Formalisierung Kaffeebohnen einfüllen Kaffeepulver entnehmen kurbeln = mahlen

PKJ 2005/7 Stefan Dissmann Kaffeemühle: Zustand Formalisierung Vorrat Bohnen Vorrat Pulver

PKJ 2005/8 Stefan Dissmann Charakterisierung der Kaffeemühle Die Kaffeemühle unterstützt bestimmte Funktionen zur Nutzung: Füllen (mit Kaffeebohnen) Mahlen (manipuliert den Inhalt) Entnehmen (von Kaffeepulver) Inspektion des Bohnenvorrates Inspektion des Pulvervorrates Formalisierung

PKJ 2005/9 Stefan Dissmann Formalisierung Charakterisierung der Kaffeemühle (Fortsetzung) Die Kaffeemühle besitzt zustandsbestimmende, interne Werte (= Attribute): Vorrat an Kaffeebohnen Vorrat an Kaffeepulver

PKJ 2005/10 Stefan Dissmann Charakterisierung der Kaffeemühle (Fortsetzung) Zwischen der Ausführung der Funktionen und den Attributen (= interner Zustand) besteht Zusammenhang: Füllen ist nur möglich, wenn der Vorrat an Kaffeebohnen noch nicht voll ist. Mahlen erzeugt nur dann Kaffeepulver, wenn ein Vorrat von Kaffeebohnen noch vorhanden ist. Entnehmen ist nur möglich, wenn zuvor gemahlen wurde und noch nicht alles Pulver entnommen wurde. Formalisierung

PKJ 2005/11 Stefan Dissmann Formalisierung Charakterisie r ung der Kaffeemühle (Fortsetzung) aber:Die technische Realisierung der internen Abläufe bleibt unbekannt! Wie funktioniert das Mahlen? Wie kommen Bohnen zum Mahlwerk? und: Das Wissen um die technische Realisierung ist für die Benutzung der Kaffeemühle unerheblich!

PKJ 2005/12 Stefan Dissmann Weitere Diskussion- Taschenrechner Taschenrechner ist auch eine abgeschlossene Einheit! Funktionen: Ziffern eingeben Ziffern anzeigen Operator wählen Ziffern eingeben Ziffern anzeigen Auswertung anstoßen und Ergebnis anzeigen

PKJ 2005/13 Stefan Dissmann Taschenrechner präzisere Beschreibung der internen Abläufe: Ziffer eingeben und anzeigen und dabei andere Ziffern verschieben) Operator wählen und merken Wert eines Operanden aus Ziffernfolge bestimmen und merken Auswertung anstoßen und Ergebnis berechnen als Anwenden des Operators auf die beiden Operanden Ergebniswert in Ziffernfolge umwandeln und anzeigen

PKJ 2005/14 Stefan Dissmann Taschenrechner besitzt Gedächtnis, in dem mindestens 2 Zahlenwerte und 1 Operator abgelegt werden, manipuliert Gedächtnis nach Druck von Tasten, nutzt Werte aus Gedächtnis für Berechnungen, bestimmt Ergebnis aus Gedächtnis, löscht Gedächtnis. oder abstrakter: besitzt definierte extern verwendbare Funktionen (= Eingabe über Tasten), besitzt einen durch Attribute gegebenen internen Zustand (= Gedächtnis), verwendet nur intern bekannte Operationen (= Ziffernfolge zu Zahl)

PKJ 2005/15 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/16 Stefan Dissmann Beispiel: Bibliothek Anwendung der Prinzipien Leihbibliothek auf Vertrauensbasis Bücherbestand Zugang Buchausgabe und -rückgabe durch Selbstbedienung

PKJ 2005/17 Stefan Dissmann Beispiel: Bibliothek Leihbibliothek mit Kontrolle Bücherbestand Zugang - Buchausgabe und -rückgabe werden überwacht - Organisation des Buchbestandes ist unsicher Aufsicht

PKJ 2005/18 Stefan Dissmann Beispiel: Bibliothek Leihbibliothek mit Service Bücherbestand Zugang - Kontrolle der Organisation des Bestandes - universelle Aufsicht muss leistungsfähig sein Aufsicht

PKJ 2005/19 Stefan Dissmann Beispiel: Bibliothek Leihbibliothek mit spezialisiertem Service Bücherbestand Zugang - spezialisierte Bibliothekare erfüllen einfache Teilaufgaben - Organisation des Buchbestandes ist ohne Bedeutung

PKJ 2005/20 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/21 Stefan Dissmann Beispiel – Klasse Studierende Folgende Daten von jedem Studierenden sollen verwaltet werden: Vorname Name Geburtsdatum Matrikelnummer Studiengang Studienbeginn Semesterzahl

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

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

PKJ 2005/24 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } bekannt

PKJ 2005/25 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } neu

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

PKJ 2005/27 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } unklar

PKJ 2005/28 Stefan Dissmann 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/29 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/30 Stefan Dissmann Methode Lösung: Hinzufügen von Methoden, die auf Attribute zugreifen. Methoden müssen von außen zugreifbar sein. Analogie: Tasten des Taschenrechners oder Videorekorders

PKJ 2005/31 Stefan Dissmann Klasse 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; }

PKJ 2005/32 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/33 Stefan Dissmann Nutzung von Klassen Fragen: Wie werden Klassen genutzt? Wie werden Objekte erzeugt? Wie werden Objekte genutzt? Wie werden Methoden angesprochen?

PKJ 2005/34 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/35 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/36 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/37 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/38 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/39 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 !