Einführung in die Java- Programmierung



Ähnliche Dokumente
Einführung in die Java- Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung

Computeranwendung und Programmierung (CuP)

Programmierkurs Java

Objektorientierte Programmierung für Anfänger am Beispiel PHP

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

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

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

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

Zeichen bei Zahlen entschlüsseln

Objektorientierte Programmierung. Kapitel 12: Interfaces

Java Kurs für Anfänger Einheit 5 Methoden

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

7 Rechnen mit Polynomen

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

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

Wir arbeiten mit Zufallszahlen

Vorkurs C++ Programmierung

Einführung in die Programmierung

Professionelle Seminare im Bereich MS-Office

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

5. Tutorium zu Programmieren

1 Vom Problem zum Programm

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

Vererbung & Schnittstellen in C#

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

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

Übungen Programmieren 1 Felix Rohrer. Übungen

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

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

Delegatesund Ereignisse

Diana Lange. Generative Gestaltung Operatoren

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Primzahlen und RSA-Verschlüsselung

von: Oktay Arslan Kathrin Steiner Tamara Hänggi Marco Schweizer GIB-Liestal Mühlemattstrasse Liestal ATG

Was meinen die Leute eigentlich mit: Grexit?

Anleitung über den Umgang mit Schildern

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Mediator 9 - Lernprogramm

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

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

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

Einführung in die Java- Programmierung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Scala kann auch faul sein

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Arbeiten mit UMLed und Delphi

Wir machen neue Politik für Baden-Württemberg

Informationsblatt Induktionsbeweis

Erstellen von x-y-diagrammen in OpenOffice.calc

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

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

BEISPIELKLAUSUR Softwareentwicklung:

Programmierkurs Java

Zählen von Objekten einer bestimmten Klasse

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Vorgehensweise bei Lastschriftverfahren

WPF Steuerelemente Listbox, ComboBox, ListView,

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

2. Negative Dualzahlen darstellen

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

1 Mathematische Grundlagen

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Grundlagen von Python

Javakurs zu Informatik I. Henning Heitkötter

Leichte-Sprache-Bilder

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

5. Abstrakte Klassen

Die SPD und die Grünen machen im Niedersächsischen Landtag. Alle Menschen sollen in der Politik mitmachen können.

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Musterlösungen zur Linearen Algebra II Blatt 5

Modellierung und Programmierung 1

Viele Bilder auf der FA-Homepage

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

Javakurs 2013 Objektorientierung

Lineare Gleichungssysteme

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

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Objektbasierte Entwicklung

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Netzwerkversion PVG.view

Nina. bei der Hörgeräte-Akustikerin. Musterexemplar

Papa - was ist American Dream?

Hohe Kontraste zwischen Himmel und Landschaft abmildern

Studentische Lösung zum Übungsblatt Nr. 7

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

1 topologisches Sortieren

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Erstellen der Barcode-Etiketten:

Transkript:

Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1

Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113 (Kevin + Ich?) E 413 E 313 (Jan) Evaluation Teilnahmebescheinigungen: E-Mail an riediger@uni-koblenz.de 2

Rückblick Rechen(un)genauigkeit Arrays als Referenztypen Mehrdimensionale Arrays 3

Heutige Themen Erste Einblicke in die objektorientierte Programmierung 4

Objektorientierte Programmierung Motivation: Wir erinnern uns, dass Fließkommazahlen (double) nicht beliebig präzise sind 2.05 0.05 // = 1.9999999999998 Es ist aber 2.05 = 41/20, 0.05 = 1/20, so dass wir präzise mit den Brüchen rechnen können 41/20 1/20 = 40/20 = 2/1 = 2 Leider gibt es in Java keinen Datentyp für rationale Zahlen :-( 5

Rationale Zahlen Analog zur Darstellung von Punkten mittels mehrerer Variablen, könnten wir auch Brüche mit 2 Variablen darstellen int a_z = 41; int a_n = 20; int b_z = 1; int b_n = 20; int c_z = a_z b_z; int c_n = a_n; 6

Rationale Zahlen Blöd wird es, wenn die Nenner nicht gleich sind: int a_z = 41; int a_n = 3; int b_z = 1; int b_n = 4; // Wir müssen auf Nenner 12 erweitern int c_z = a_z * 4 b_z * 3; int c_n = 3 * 4; 7

Rationale Zahlen Ein wenig besser wird es, wenn wir Brüche als Arrays der Länge 2 auffassen int[] a = {41, 3}; int[] b = {1, 4}; // Wir müssen auf Nenner 12 erweitern int[] c = {a[0] * b[1] b[0] * a[1], a[1]*b[1]}; // Die Rechnung an sich ist immer noch // unübersichtlich! 8

Rationale Zahlen Was wir eigentlich sagen wollen, ist in etwa: Rational a = 41/3; Rational b = 1/4; // Um richtiges erweitern wollen wir uns // nicht selbst kümmern müssen! Rational c = a - b; System.out.println(c); // Ausgabe??? 9

Wunsch Wir möchten einen eigenen Datentyp Rational definieren Wir wollen alle arithmetischen Operationen mit Werten dieses Typs nutzen können Wir (als Programmierer, die diesen Typ benutzen) wollen uns nicht um Nebensächlichkeiten wie Erweitern, Kürzen, etc. kümmern 10

Klassen & Objekte Eine Klasse ist ein (Referenz-)Datentyp Eine Klasse beschreibt die Eigenschaften, die Werte dieses Datentyps haben Zunächst beschränken wir uns darauf, dass eine Eigenschaft eine Variable (Attribut) ist Frage: Welche Eigenschaften hat eine rationale Zahl? Einen Wert vom Typ einer Klasse nennt man meist Objekt oder Instanz der Klasse 11

Klassen & Objekte Ohne es zu wissen, haben wir schon die ganze Zeit mit Klassen und Objekten gearbeitet String ist eine Klasse "Alice" ist ein Objekt der Klasse String Im Gegensatz dazu sind alle klein geschriebenen Typen (int, long, double, boolean) keine Klassen, sondern sog. primitive Typen Nicht wichtig, aber der Vollständigkeit halber: Ein Array ist ein Objekt, aber int[] ist keine Klasse 12

Demo: Rational.java Aufgabe: Schreibe eine Klasse Rational, welche die Eigenschaften (Bestandteile) einer rationalen Zahl als Attribute deklariert Aus welchen Bestandteilen besteht eine rationale Zahl? Grundgerüst einer Klasse: public class MyClass { // Deklaration der Bestandteile // als Attribute } 13

Erzeugung von Objekten Um ein Objekt einer Klasse zu erzeugen, muss die Klasse einen Konstruktor definieren Ein Konstruktor ist eine spezielle Methode, die genau wie die Klasse heißt und keinen Return-Typ deklariert Beispiel: public class MyClass { public MyClass(double x, int y) { // Initialisiere Attribute anhand von // den gegebenen Parametern } } 14

Demo: Rational.java Aufgabe: Definiere einen Konstruktor für unsere Klasse Rational Welche Parameter sollte dieser Konstruktor bekommen? Gibt es ungültige Parameterwerte? 15

Erzeugung von Objekten Definiert eine Klasse einen Konstruktor, so kann man ein Objekt dieser Klasse mit dem von Arrays bekannten new-operator erzeugen Beispiel: MyClass mc = new MyClass(1.4, 17); 16

Demo: Rational.java Aufgabe: Erstelle in unserer Rational- Klasse eine main()-methode und erzeuge dort ein paar Rational-Objekte Gib die erzeugten Objekte mit System.out.println() aus 17

Ein Ausgabeformat definieren Falls ein Objekt (für die Ausgabe) in einen String konvertiert wird, dann ruft Java automatisch eine Methode tostring() auf Möchte man ein eigenes Ausgabeformat definieren, dann kann man in seiner eigenen Klasse einfach eine tostring()-methode definieren public class MyClass { } // kein static: diese Methode gehört Objekten // der Klasse, nicht der Klasse an sich public String tostring() { } // Ausgabe-String x berechnen return x; 18

Demo: Rational.java Aufgabe: Definiere eine tostring()- Methode für unsere Rational-Klasse Ist der Nenner gleich 1, dann soll einfach der Zähler (als String) zurückgegeben werden Ansonsten soll die übliche Form "Zähler/Nenner" verwendet werden 19

Demo: Kürzen! Prima, bis jetzt können wir rationale Zahlen erzeugen (Konstruktor mit new aufrufen) ausgeben (da tostring() geeignet definiert wurde) Aufgabe: Verbessere unsere Rational-Klasse derart, dass alle rationalen Zahlen automatisch gekürzt werden! System.out.println(new Rational(2, 4)); // Es soll 1/2 statt 2/4 ausgegeben werden 20

Demo: Kürzen! Aufgabe: Verbessere unsere Rational-Klasse derart, dass alle rationalen Zahlen (Brüche) automatisch gekürzt werden! Idee: Direkt bei der Initialisierung von Zähler und Nenner im Konstruktor kürzen Regel zum Kürzen:??? 21

Demo: Kürzen! Aufgabe: Verbessere unsere Rational-Klasse derart, dass alle rationalen Zahlen (Brüche) automatisch gekürzt werden! Idee: Direkt bei der Initialisierung von Zähler und Nenner im Konstruktor kürzen Regel zum Kürzen: Bestimme den ggt von Zähler und Nenner Dividiere Zähler und Nenner durch den ggt 22

Demo: Multiplizieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode mul(), mit der wir eine rationale Zahl mit einer anderen rationalen Zahl multiplizieren können Die Methode soll unser Rational-Objekt nicht verändern, d.h. dessen Attribute ändern, sondern es soll ein neues Rational-Objekt zurückgegeben werden 23

Demo: Dividieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode div(), mit der wir eine rationale Zahl durch eine anderen rationalen Zahl dividieren können Es soll wieder ein neues Rational-Objekt zurückgegeben werden Frage: Wie dividiert man rationale Zahlen (Brüche)? 24

Demo: Dividieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode div(), mit der wir eine rationale Zahl durch eine anderen rationalen Zahl dividieren können Es soll wieder ein neues Rational-Objekt zurückgegeben werden Frage: Wie dividiert man rationale Zahlen (Brüche)? Einfach mit dem Kehrwert multiplizieren 25

Demo: Addieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode add(), mit der rationale Zahlen addieren können Es soll wieder ein neues Rational-Objekt zurückgegeben werden Frage: Wie addiert man rationale Zahlen (Brüche)? 26

Demo: Addieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode add(), mit der rationale Zahlen addieren können Es soll wieder ein neues Rational-Objekt zurückgegeben werden Frage: Wie addiert man rationale Zahlen (Brüche)? Man muss die Brüche auf den gleichen Nenner bringen (erweitern)! 27

Demo: Subtrahieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode sub(), mit der rationale Zahlen voneinander subtrahiert werden können Es soll wieder ein neues Rational-Objekt zurückgegeben werden Frage: Wie subtrahiert man rationale Zahlen (Brüche)? 28

Demo: Subtrahieren Aufgabe: Ergänze unsere Rational-Klasse um eine Methode sub(), mit der rationale Zahlen voneinander subtrahiert werden können Es soll wieder ein neues Rational-Objekt zurückgegeben werden Frage: Wie subtrahiert man rationale Zahlen (Brüche)? Na klar, einen der Brüche negieren und dann addieren 29

Demo: Vergleichen Soweit können wir rationale Zahlen erzeugen ausgeben und damit Rechnen Was uns noch fehlt ist eine Möglichkeit, rationale Zahlen zu vergleichen Klassen sind Referenztypen, bei denen man mit equals() einen inhaltlichen Vergleich macht 30

Demo: Vergleichen Aufgabe: Füge der Rational-Klasse eine equals()-methode hinzu, mit der man zwei Rationalzahlen vergleichen kann 31

Demo: Nach double konvertieren Aufgabe: Füge der Rational-Klasse eine todouble()-methode hinzu, die eine Fließkommarepräsentation der rationalen Zahl liefert 32

Für die Übung Wer in der Übung gerne eine OO-Aufgabe lösen möchte, der kann gerne die folgende Aufgabe bearbeiten Aufgabe: Erstelle nach dem Muster der Klasse Rational eine Klasse Complex, mit der sich komplexe Zahlen darstellen lassen Die Rechenregeln sind einfacher als bei Rational und sind auf der Wikipedia gut beschrieben 33