Einführung in die Programmierung Klassendefinition und Objekte

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
Einführung in die Programmierung Zusammenfassung
Zusammenfassung der Vorwoche
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
Objektorientierte Programmierung Definition von Klassen
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.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Imperative Programmierung Funktionen und Parameter
Einführung in die Programmierung mit Java
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
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
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 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 Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Vererbung
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
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,
Delphi II - OOP IFB Fortbildung
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
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Objektorientiertes Konstruieren
Unterprogramme in JAVA
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
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.
Objektorientierte Programmierung Einführung
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Die Struktur einer Java-Klasse
Grundkurs Informatik 11-13
Implementieren von Klassen
 Präsentation transkript:

Einführung in die Programmierung Klassendefinition und Objekte Fakultät für Wirtschaftswissenschaften Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel www.wi.hs-wismar.de/~laemmel Uwe.Laemmel@hs-wismar.de

Inhalt Klasse Methoden Parameter Erzeugung und Nutzung von Objekten Bauplan: Zweck, Aufbau, Entwurf ausführbare Klasse Bibliotheksklasse Methoden Konstruktor Zugriff Ausgabe Verarbeitung Parameter Erzeugung und Nutzung von Objekten

Klasse repräsentiert alle Objekte eines Typs (Bauart), z.B.: "Student ", "Ticketautomat " beschreibt Objekte mittels: Daten = Merkmale (Attribute, Instanz-Variablen) Aktionen = Methoden

Ticket-Automat: Nutzersicht /externe Sicht Beispiel: Ein naiver Ticket-Automat: liefert Tickets zum festen Preis Fragen: Wie wird dieser Festpreis festgelegt? Wie wird "Geld eingeworfen"? Wie verwaltet der Automat das Geld?

Ticket-Automat: interne Sicht Klasse muss Objekte so beschreiben, dass gewünschtes Verhalten erreicht wird Merkmale? Methoden? preis bisherGezahlt gesamtsumme anzVerkaufterTickets Konstruktor getPreis getBisherGezahlt geldEinwerfen ticketDrucken

Merkmal (Datenfeld, Instanz-Variable) Instanz-Variablen speichern Merkmale BlueJ: "inspect" zeigt die Merkmale eines Objekts Werte der Instanz-Variablen = Zustand eines Objekts public class TicketAutomat{ private int preis; private int bisherGezahlt; private int gesamtsumme;   //hier: Konstruktoren und Methoden } //TicketAutomat Sichtbarkeit Typ Name der Variable private int preis;

Konstruktoren … erzeugen ein Objekt … haben denselben Namen wie die Klasse … legen Anfangswerte für Merkmale fest: häufig: Anfangswert als Parameter "von außen" public TicketAutomat (int ticketPreis) { preis = ticketPreis; bisherGezahlt = 0; gesamtsumme = 0; anzTickets = 0; } // TicketAutomat

Daten-Übergabe mittels Parameter TicketAutomat bus = new TicketAutomat(500);

Zuweisung (Assignment) variable = expression; Werte in Variablen speichern: preis = ticketPreis; bisherGezahlt = 0; Variable speichert NUR EINEN Wert; vorheriger Wert verloren

Methoden legen das Verhalten von Objekten fest unterscheiden: Konstruktor-Methoden Zugriffsmethoden (lesend, schreibend) Verarbeitungsmethoden Ausgabe-Methoden einheitlicher Aufbau: Kopf (Signatur) public int getPreis() Körper { … Anweisungen … }

Zugriffsmethode, lesend Information über das Objekt besitzt Ergebnis-Typ und return-Anweisung return-Anweisung bestimmt Ergebnis Ergebnis-Typ Sichtbarkeit Methodenname Parameterliste public int getPreis(){ return preis; } //getPreis return-Anweisung bestimmt Ergebnis Kommentar zur schließenden Klammer Anfang und Ende des Methoden-Körpers (block)

Zugriffsmethode, schreibend Verändert die Merkmale eines Objekts besitzt (meist) Parameter kein Ergebnis-Typ (void) enthält Zuweisungen an Instanz-Variable Sichtbarkeit (kein) Ergebnis-Typ Methodenname Parameterliste public void setPreis(int neu){ preis = neu; } //setPreis Zuweisung Kommentar zur schließenden Klammer Anfang und Ende des Methoden-Körpers (block)

Ausgabemethode KEINE Verarbeitung nur Ausgabe der Objekt-Werte in gewünschter Form 2 Möglichkeiten: direkte Ausgabe : Ergebnistyp void, Ausgabe: System.out.println(…); toString-Methode: Ergebnistyp String und return-Anweisung public void ausgabe() { System.out.println("Preis=" + preis + " Geldsumme= "+gesamtsumme); } //ausgabe public String toString() { return "Preis=" + preis + " Geldsumme= "+gesamtsumme; } //toString

Klasse = Bauplan Merkmale Konstruktoren Methoden class Klasse { // Merkmale = Instanz-Variablen (private) private int number; // Konstruktor(en) mit/ohne Parameter public Klasse( ) { /* Initialisierungen */ } // Zugriffsmethoden: getX/setX public int getNumber() { return number;} public void setNumber(int n) { number=n; } // Arbeitsmethoden public boolean istTeiler(int a) { … } // Ausgabe public void ausgabe() { System.out.println("Nummer= "+number); } }//Klasse Merkmale Konstruktoren Methoden

Klasse TicketAutomat Beispiel in BlueJ entwickeln. Klasse testen: TicketAutomat-Objekt erzeugen Methoden an das Objekt senden mittels "inspect" Zustand des Objekts einsehen Schreiben einer ausführbaren Klasse

Ausführbare Klasse enthält main Methode: public static void main(String[ ] args) { … } kann als Programm ausgeführt werden: class Klasse { // main-Methode: public static void main(String[ ] args) { // Verarbeitung TicketAutomat bus = new TicketAutomat(500); bus.geldEinwerfen(200); bus.ticketDrucken(); bus.ausgabe(); System.out.println(bus); }//main }//Klasse

Aufgabe  selbst erarbeiten! Machen Sie sich mit dem Projekt "Naiver-Ticket-Automat" vertraut. Verbessern Sie den Ticket-Automaten: Es wird ein Ticket nur gedruckt, falls genügend (ev. auch mehr) Geld eingeworfen wurde. Eine Methode gibt das Wechselgeld heraus. Es werden nur sinnvolle Geldbeträge in der Methode "geldEinwerfen" akzeptiert.  selbst erarbeiten!

Zusammenfassung Klassen bilden reale/virtuelle Welt ab Klassen beschreiben Objekte Klasse: Merkmale, Konstruktoren, Methoden Merkmale = Instanzen-Variablen Menge der Werte = Zustand des Objekts Konstruktor: erzeugt Objekt Zugriffsmethoden: lesend, schreiben Methoden können … Zustand des Objekts ändern Parameter besitzen ein Ergebnis liefern Zuweisung Wert an Variable: Speicher

Digitale Uhr: Klassen und Objektinteraktion Eine Anzeige aus 4 Ziffern? Zwei Anzeigen zu je 2 Ziffern?

Abstraktion und Modularisierung Details ignorieren Konzentration auf Wesentliches Modularisierung Teilen der Aufgabe in kleinere Teile getrennte Lösung der Teilprobleme Interaktion der Teillösungen

Klasse Nummeranzeige public class Nummernanzeige { private int limit; private int wert; // Konstruktor und // Methoden fehlen hier. } // Nummernanzeige

Klasse Uhrenanzeige public class Uhrenanzeige { private Nummernanzeige stunden; private Nummernanzeige minuten; // Konstruktor und // Methoden fehlen hier! } // Uhrenanzeige

Objekt-Interaktion

Klassendiagramm

Klasse Uhrenanzeige public class Uhrenanzeige { private Nummernanzeige stunden; private Nummernanzeige minuten; private String zeitanzeige; // techn. Gründe public Uhrenanzeige (){ stunden = new Nummernanzeige(24); minuten = new Nummernanzeige(60); anzeigeAktualisieren(); } // Uhrenanzeige // hier folgen weitere Methoden! } // Uhrenanzeige Merkmale Konstruktor

Methoden der Klasse Uhrenanzeige public String gibUhrzeit(){ return zeitanzeige; } public void setzeUhrzeit(int stunde, int minute){ stunden.setzeWert(stunde); minuten.setzeWert(minute); anzeigeAktualisieren(); } //setzeUhrzeit private void anzeigeAktualisieren(){ zeitanzeige = stunden.gibAnzeigewert() + ":" + minuten.gibAnzeigewert(); } //anzeigeAktualisieren Methoden-Aufruf: setzWert(int wert) und gibAnzeigewert() in Klasse Nummernanzeige definieren!

Methoden der Klasse Uhrenanzeige /** * - Operation einmal pro Minute aufrufen * - sorgt dafür, dass diese Uhrenanzeige um eine Minute * weiter gestellt wird. */ public void taktsignalGeben( ) { minuten.erhoehen( ); if (minuten.gibWert( ) == 0) { // Limit wurde erreicht! stunden.erhoehen( ); } //if anzeigeAktualisieren(); } //taktsignalGeben

Methoden der Klasse Nummernanzeige public Nummernanzeige(int anzeigeLimit) { limit = anzeigeLimit; wert = 0; } //Konstruktor // Zugriffsmethoden: public int gibWert() { return wert; } public String gibAnzeigewert() { if(wert<10) { return "0" + wert;} else { return "" + wert; } } //gibAnzeigewert public void setzeWert(int ersatzwert) { if((ersatzwert >= 0) && (ersatzwert < limit)) { wert = ersatzwert; } //if } //setzeWert

Zusammenfassung Klassen bilden reale/virtuelle Welt ab Klassen beschreiben Objekte Klasse: Merkmale, Konstruktoren, Methoden Merkmale = Instanzen-Variablen Menge der Werte = Zustand des Objekts Konstruktor: erzeugt Objekt Zugriffsmethoden: lesend, schreiben Methoden können … Zustand des Objekts ändern Parameter besitzen ein Ergebnis liefern Objekte können andere Objekte benutzen Klassen fördern Modularisierung Modularisierung fördert Wiederverwendung

Ende