Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen



Ähnliche Dokumente
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Vorkurs C++ Programmierung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Objektorientierte Programmierung

Programmierkurs Java

Algorithmen und Datenstrukturen

Einführung in die Programmierung für Wirtschaftsinformatik

Modellierung und Programmierung 1

Innere Klassen in Java

Propädeutikum zur Programmierung

Delegatesund Ereignisse

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Objektorientierte Programmierung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Studentische Lösung zum Übungsblatt Nr. 7

Einführung in die Java- Programmierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

public class SternchenRechteckGefuellt {

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Propädeutikum zur Programmierung

Java Einführung Collections

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

C# im Vergleich zu Java

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Einführung in die Programmierung

U08 Entwurfsmuster (II)

Tagesprogramm

Einführung in die Programmierung

Javakurs 2013 Objektorientierung

Einführung in Javadoc

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Verteilte Systeme CS5001

Programmieren in Java

7. Pakete Grundlagen der Programmierung 1 (Java)

Java Einführung Operatoren Kapitel 2 und 3

Java Virtual Machine (JVM) Bytecode

Typumwandlungen bei Referenztypen

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Programmieren in Java

2A Basistechniken: Weitere Aufgaben

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Übungen zu C++ Kapitel 1

5. Tutorium zu Programmieren

Die Programmiersprache C99: Zusammenfassung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Vererbung & Schnittstellen in C#

Arrays Fortgeschrittene Verwendung

Objektorientierte Programmierung. Kapitel 12: Interfaces

2.8 Klassen. Nichtgleichartige Elemente können in Klassen zu einem neuen Typ zusammengefasst werden. Beispiel: Die drei Komponenten

Einführung in die Informatik Tools

Einführung in die Programmierung (EPR)

2. Semester, 2. Prüfung, Lösung

Klassendefinitionen verstehen

Einführung in die Java- Programmierung

Objektorientierte Programmierung

teischl.com Software Design & Services e.u. office@teischl.com

Übungen zu Softwaretechnik

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Probeklausur Softwareengineering SS 15

Java Kurs für Anfänger Einheit 5 Methoden

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Test-Driven Design: Ein einfaches Beispiel

SEP 114. Design by Contract

5.5.8 Öffentliche und private Eigenschaften

Java: Vererbung. Teil 3: super()

Software Engineering Klassendiagramme Assoziationen

PIWIN 1 Übung Blatt 5

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

Applet Firewall und Freigabe der Objekte

Große Übung Praktische Informatik 1

Programmieren Tutorium

Java Einführung Abstrakte Klassen und Interfaces

EndTermTest PROGALGO WS1516 A

2. Programmierung in C

Prinzipien Objektorientierter Programmierung

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Assoziation und Aggregation

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Übung Programmierung WS 2007/08 - Blatt 5

Client-Server-Beziehungen

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Dr. Monika Meiler. Inhalt

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Deklarationen in C. Prof. Dr. Margarita Esponda

Grundlagen von Python

Transkript:

Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen

Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere Eemplare davon braucht: int da1; String month1; int ear1; int da2; String month2; int ear2; Idee: die 3 Variablen zu einem eigenen Datentp zusammenfassen 2

Datentp Klasse Speicherung verschiedenartiger Werte unter einem gemeinsamen Namen Deklaration class Date { int da; String month; int ear; Felder der Klasse Date Verwendung als Tp Date, ; Zugriff.da = 13;.month = "November";.ear = 2004; Date-Objekt 13 da "November" month 2004 ear Date-Variablen sind Zeiger auf Objekte 3

Objekte Objekte einer Klasse müssen vor ihrer ersten Benutzung erzeugt werden Date, ; reserviert nur Speicher für die Zeigervariablen haben anfangs den Wert null Erzeugung = new Date(); erzeugt ein Date-Objekt und weist seine Adresse zu 0 null 0 da month ear neu erzeugte Objekte werden mit 0, null, false, '\u0000' initialisiert Eine Klasse ist wie eine Schablone, von der beliebig viele Objekte erzeugt werden können. Benutzung.da = 13;.month = "November";.ear = 2004; 13 "November" 2004 da month ear Freigabe von Objekten durch den Garbage Collector 4

Zuweisungen = ; 13 "November" 2004 da month ear Zeigerzuweisung!.da = 20; 20 "November" 2004 da month ear ändert auch.da! Zuweisungen sind erlaubt, wenn die Tpen gleich sind class Date { int da; String month; int ear; class Address { int number; String street; int zipcode; Date d1, d2 = new Date(); Address a1, a2 = new Address(); d1 = d2; a1 = a2; d1 = a2; // ok, gleiche Tpen // ok, gleiche Tpen // verboten: verschiedene Tpen trotz gleicher Struktur! 5

Vergleiche Zeigervergleich ==!= < <= > >= vergleicht nur Zeiger nicht erlaubt == liefert true 13 "November" 2004 == liefert false 13 "November" 2004 13 "November" 2004 Wertvergleich muss mittels Vergleichsmethode selbst implementiert werden static boolean equaldate (Date, ) { return.da ==.da &&.month.equals(.month) &&.ear ==.ear; 6

Wo werden Klassen deklariert In einer einzigen Datei (auf äußerster Ebene) class C1 { class C2 { class MainProgram { MainProgram.java In getrennten Dateien C1.java class C1 { C2.java class C2 { MainProgram.java class MainProgram { public static void main (String[] arg) { public static void main (String[] arg) { Übersetzung javac MainProgram.java javac MainProgram.java C1.java C2.java 7

Beispiel: Polgone class Point { int, ; class Polgon { Point[] pt; (20,40) (60,40) int color; (10,20) (70,20) Polgon pol = new Polgon(); pol.pt = new Point[4]; pol.color = RED; Point p = new Point(); p. = 10; p. = 20; pol.pt[0] = p; p = new Point(); p. = 20; p. = 40; pol.pt[1] = p; p = new Point(); p. = 60; p. = 40; pol.pt[2] = p; p = new Point(); p. = 70; p. = 20; pol.pt[3] = p; pol Polgon pt color Zugriff z.b. pol.pt[0]. = ; p Point 10 20 Point 20 40 Point 60 40 Point 70 20 8

Beispiel: Methoden mit mehreren Rückgabewerten Java-Funktionen haben nur 1 Rückgabewert Will man mehrere Rückgabewerte, muss man sie zu einer Klasse zusammenfassen Beispiel: Umrechnung von Sekunden auf Std, Min, Sek sec convert h m s class Time { int h, m, s; Time class Program { static Time convert (int sec) { Time t = new Time(); t.h = sec / 3600; t.m = (sec % 3600) / 60; t.s = sec % 60; return t; public static void main (String[] arg) { Time t = convert(10000); Out.println(t.h + ":" + t.m + ":" + t.s); 9

Kombination von Klassen mit Arras Beispiel: Telefonbuch 0 99 name phone Maier 876 8878 Mar 543 2343 Meier 656 2332 zweidimensionales Arra kann hier nicht verwendet werden Arra von Objekten class Person { String name; int phone; Person[] book = new Person[100]; book[0] = new Person(); Objekt bestehend aus 2 Arras class PhoneBook { String[] name; int[] phone; PhoneBook book = new PhoneBook(); book.name = new String[100]; book.phone = new int[100]; book Maier 876 8878 book name phone Maier 876 8878 Diese Lösung ist aus logischer Sicht besser 10

Implementierung class Person { String name; int phone; class PhoneBookSample { static Person[] book; static int nentries = 0; // current number of entries in book static void enter (String name, int phone) { if (nentries >= book.length) Out.println("--- phone book full"); else { book[nentries] = new Person(); book[nentries].name = name; book[nentries].phone = phone; nentries++; static int lookup (String name) { int i = 0; while (i < nentries &&!name.equals(book[i].name)) i++; // i >= nentries name.equals(book[i].name) if (i < nentries) return book[i].phone; else return -1; book 0 1 2 3 nentries = 3 Maier 876 8878 11

Implementierung (Fortsetzung) public static void main (String[] arg) { book = new Person[1000]; //----- read the phone book from a file In.open("phonebook.tt"); String name = In.readWord(); int phone; while (In.done()) { phone = In.readInt(); enter(name, phone); name = In.readWord(); In.close(); //----- search in the phone book for (;;) { Out.print("Name: "); name = In.readWord(); if (!In.done()) break; phone = lookup(name); if (phone >= 0) Out.println("phone number = " + phone); else Out.println(name + " unknown"); // end PhoneBookSample 12