Übung Praktische Informatik I

Ähnliche Dokumente
Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

JAVA Kommentieren mit Javadoc

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Vererbung und Polymorphie

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einführung in die Programmierung für NF. Übung

Geschachtelte Klassen

Einstieg in die Informatik mit Java

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 17/18

Praxis der Programmierung

Einstieg in die Informatik mit Java

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

Angewandte Mathematik und Programmierung

Vererbung, Polymorphie

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Ausdrücke der Programmiersprache Java

Programmierung Nachklausurtutorium

Einstieg in die Informatik mit Java

Java Vererbung. Inhalt

Informatik II Übung 1

Einstieg in die Informatik mit Java

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Einstieg in die Informatik mit Java

Exceptions und Vererbung

Vorkurs Informatik WiSe 15/16

7. Übung Informatik II - Objektorientierte Programmierung

Einführung in das Programmieren Probeklausur Lösungen

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Algorithmen und Datenstrukturen

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Algorithmen und Datenstrukturen 07

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Programmierpraktikum Java Entdecken Merkblatt 2

JAVA 05: Objektorientierte Konzepte

1 Klassen anlegen und Objekte erzeugen

Probeklausur: Programmierung WS04/05

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Einführung in Javadoc

OCP Java SE 8. Lambda

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

OCP Java SE 8. Lambda

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

3 Objektorientierte Konzepte in Java

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Methoden und Wrapperklassen

Einstieg in die Informatik mit Java

Methoden (fortgeschritten) in C# - 1

C++ - Objektorientierte Programmierung Vererbung

Implementieren von Klassen

Ausdrücke (1) Grundlegende Eigenschaften

1 Klassen anlegen und Objekte erzeugen

Kleines Java-Glossar zum Praktikum Einführung in das Programmieren

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Programmieren in Java

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kurzskript zur Veranstaltung Programmieren Prof. Dipl.-Ing. Jirka R. Dell'Oro-Friedl 2012

1 Klassen und Objekte

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

4. Vererbung Die Klasse Object. Die Klasse Object

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

JAVA - Methoden - Rekursion

Operatoren in C/C++ und Java:

Tag 8 Repetitorium Informatik (Java)

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Programmieren in Java

Algorithmen und Datenstrukturen 06

Delegaten. d. h. eine Tätigkeitsanforderung wird weitergeleitet

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Prozeduren vs. Funktionen

Einführung in die Programmierung II. 5. Zeiger

Einstieg in die Informatik mit Java

Wie entwerfe ich ein Programm?

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Klausur Grundlagen der Programmierung

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Die Klasse java.lang.object. Thorsten Treffer

Fragen zur OOP in Java

Wiederholung zur Vorlesung Programmieren

Einstieg in die Informatik mit Java

II.4.5 Generische Datentypen - 1 -

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Einstieg in die Informatik mit Java

Programmiervorkurs Einführung in Java Tag 1

C-Programmierung: Ausdrücke und Operatoren#Division.2F

Transkript:

Übung Praktische Informatik I HWS 2008/2009 Hendrik Lemelson Lehrstuhl für Praktische Informatik IV Universität Mannheim lemelson@pi4.informatik.uni-mannheim.de 10.10.08 1-1

Themenübersicht Vererbung public, protected, private, Überschreiben geerbter Methoden Operatoren Unterschiede zwischen &&,&,, Post-/Präinkrement, Post-/Prädekrement Operatoren-Präzedenz Variablen-Kontexte Hinweise zum vierten Übungsblatt Die Methode Math.random() Die Klasse Scanner Das Programm javadoc 10.10.08 1-2

Vererbung Schlüsselwörter static: Bei dieser Methode oder Variable handelt es sich um eine Klassen- Methode oder Variable. Sie ist nicht an eine Instanz der Klasse gebunden und für diese Klasse eindeutig. public: Die Methode oder Variable ist von beliebigen anderen Klassen aus sicht- und zugreifbar. protected: Die Methode oder Variable ist von innerhalb der Klasse selbst, von Unterklassen sowie von Klassen aus dem selben Paket sicht- und zugreifbar. private: Die Methode oder Variable ist nur von innerhalb der Klasse in der sie definiert wurde sicht- und zugreifbar. (kein Schlüsselwort): Die Methode oder Variable ist von innerhalb der Klasse in der sie definiert wurde sowie von Klassen aus dem gleichen Paket sicht- und zugreifbar. Vorsicht: Diese Schlüsselwörter sind nur im Klassenrumpf erlaubt! 10.10.08 1-3

Überschreiben geerbter Methoden Methoden, die in einer Elternklasse definiert wurden und für Kindklassen sichtbar sind, können in den Kindklassen verwendet werden. Aber: In manchen Fällen soll zwar die Signatur aller Kindklassen gleich sein, aber je nach Kindklasse soll eine Methode andere Operationen ausführen. In so einem Fall kann eine geerbte Methode in der Kindklasse einfach überschrieben werden. Dazu wird in der Kindklasse einfach eine Methode mit gleichem Namen und gleicher Signatur definiert. Dieses Überschreiben kann man in Java auch erzwingen! Dazu wird die Elternklasse selbst und die Methode in der Elternklasse mit dem Schlüsselwort abstract deklariert. Diese Methode MUSS dann in allen abgeleiteten Klassen implementiert werden. 10.10.08 1-4

Code Beispiel 1 Fußballmannschaft 10.10.08 1-5

Operatoren Logisches UND: && - lazy Abarbeitung : Ist das zuerst betrachtete Element false, dann kann der gesamt Ausdruck nur noch false ergeben. Deshalb wird die Abarbeitung sofort abgebrochen und als Ergebnis false ausgegeben. & - komplette Abarbeitung: Der komplette Ausdruck wird weiter abgearbeitet, auch wenn das Ergebnis eigentlich schon feststeht. Diese Variante kann auch für Bitvektoren verwendet werden. Logisches ODER: - siehe && - siehe & Die einstelligen Varianten sind z.b. sinnvoll, wenn der bool'sche Wert Ergebnis einer Methode ist, die auf jeden Fall ausgeführt werden soll. 10.10.08 1-6

Operatoren (2) Post-/Prä-Inkrement / -Dekrement x++: Der Wert von x wird zuerst gelesen und danach um eins erhöht. Weitergearbeitet wird mit dem ursprünglichen Wert. ++x: Der Wert von x wird zuerst um eins erhöht und erst danach für die weitere Verwendung ausgelesen. x-- / --x: Das Gleiche, nur wird der Wert von x hier um eins verringert. Modulo-Operator (%) Der Modulo-Operator liefert den Rest einer Division mit Rest. In Java ist er für alle numerischen Datentypen erlaubt. Weitere Operatoren:!, (), *, /, +, -, >>, <<, >=, <=, ==,!=, ^, =,... 10.10.08 1-7

Operatoren (3) Die Reihenfolge in der Ausdrücke ausgewertet werden, hängt von den verwendeten Operatoren ab. Dies ist ähnlich zu der Regel Punkt vor Strich in der Mathematik. Es gilt: 1. unäres + oder -, (typecast) 2. *, /, % 3. +, - 4. <=, >=, <, > 5. ==,!= 6. && 7. Prinzipiell sollte man aber lieber zusätzliche Klammern verwenden, um so die Lesbarkeit des Quellcodes sicherzustellen. 10.10.08 1-8

Variablen Kontext Lokale Variablen sind nur innerhalb ihres jeweiligen Kontextes gültig. Der Kontext wird durch ein Paar geschweifte Klammern ({...}) festgelegt. Für Instanz- und Klassenvariablen wird der Gültigkeitsbereich über die Schlüsselwörter public, protected, private und festgelegt. Innerhalb ihres Gültigkeitsbereiches sind Variablennamen eindeutig. 10.10.08 1-9

Exkurs: Debugging in BlueJ Als Debugging bezeichnet man die Fehlersuche und -entfernung u.a. bei der Softwareentwicklung (engl. bug Laus, Käfer). Wichtiges Hilfsmittel beim Debugging sind so genannte Haltepunkte. An diesen Punkten wird die Code-Ausführung während des Debuggings unterbrochen. Der Entwickler hat dann Zugriff auf den aktuellen Zustand des Prozesses und kann diesen überprüfen bzw. unter Umständen auch verändern. BlueJ bietet dazu eine sehr komfortable Oberfläche. 10.10.08 1-10

Code Beispiel 2 Debugging und Operatoren 10.10.08 1-11

Das Programm javadoc Markierung und Parameter Dokumentation Verwendung in @author name Erzeugt einen Autoreneintrag. Klasse, Interface @version version Erzeugt einen Versionseintrag. Darf höchstens einmal je Klasse oder Interface verwendet werden. Klasse, Interface @since JDK-Version @see reference @param name description @return description @exception classname description @deprecated description Beschreibt, seit wann das beschriebene Feature existiert Erzeugt einen Querverweis auf eine andere Klasse, Methode oder einen beliebigen anderen Teil der Dokumentation. Gültige Verweise sind z.b.: @see java.util.vector @see Vector @see Vector#addElement Parameterbeschreibung einer Methode Beschreibung des Rückgabewerts einer Methode Beschreibung einer Ausnahme, die von dieser Methode geworfen wird Markiert eine veraltete Methode, die zukünftig nicht mehr verwendet werden sollte. Klasse, Interface Klasse, Interface, Instanzvariable, Methode Methode Methode Methode Methode Siehe auch: http://java.sun.com/j2se/javadoc/index.jsp 10.10.08 1-12

Code Beispiel 3 javadoc & die Berater Klasse 10.10.08 1-13

Hinweise zum Übungsblatt java.lang.math.random(): Die Methode Math.random() ist eine statische Methode, es muss also kein Math-Objekt erzeugt werden. Sie liefert als Ergebnis eine Zahl die größer oder gleich Null und kleiner als Eins ist! Frage: Wie bilde ich diesen Bereich auf einen beliebigen Bereich [x:y] mit x <= y ab? java.util.scanner (siehe auch Script 3.3-43): Scanner liest jeweils eine Eingabezeile ein Die eingelesenen Daten können in verschiedenen Formaten abgerufen werden. (Wichtig, falls mit der Eingabe z.b. gerechnet?! werden soll.) javadoc: Rufen Sie javadoc auf der Kommandozeile mit dem Parameter -help auf, um eine Übersicht der Optionen zu erhalten. 10.10.08 1-14