Vorlesung Programmieren

Ähnliche Dokumente
Vorlesung Programmieren

Vorlesung Programmieren

Vorkurs Informatik WiSe 17/18

Einführung in die Programmierung mit Java

Vorlesung Programmieren

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

7. Objektorientierung. Informatik II für Verkehrsingenieure

Vorkurs Informatik WiSe 16/17

Programmierkurs. Manfred Jackel

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 -

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Vorlesung Programmieren

Programme erstellen in Java

Repetitorium Informatik (Java)

Programmiertechnik Objektorientierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Vorkurs Informatik WiSe 15/16

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

Tag 7 Repetitorium Informatik (Java)

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Einführung in die Programmierung 1

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

10. Programmierungs-Phase: Objektorientierung Software Engineering

Vorlesung Programmieren

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Informationsverarbeitung im Bauwesen

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

2 Eine einfache Programmiersprache

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung Studiengang Medieninformatik

2 Eine einfache Programmiersprache

1 Klassen und Objekte

Überblick. R.Grossmann / P. Sobe 1

Javakurs für Anfänger

Programmiersprache. Emily & rica

Programmieren in Java

Java für Bauingenieure

Informatik II. Semesterklausur

Java Einführung Klassendefinitionen

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Objektorientierte Programmierung und Klassen

2 Eine einfache Programmiersprache

Erste Schritte in Java

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

7. Übung Informatik II - Objektorientierte Programmierung

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Programmieren in C/C++ und MATLAB

Überblick. 5. Objekt und Klasse, Elementfunktionen

Programmiertechnik Klassen

Java-Programmierung mit NetBeans

Algorithmen und Programmierung II

Java für Anfänger Teil 1: Intro. Programmierkurs Manfred Jackel

Martin Unold INFORMATIK. Geoinformatik und Vermessung

II.1.1. Erste Schritte - 1 -

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassen

Objektorientierte Programmierung Studiengang Medieninformatik

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Einführung in die Programmierung mit Java

Vorlesung Programmieren

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Umsetzung einer Klassenkarte in einer Programmiersprache

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Dr. Monika Meiler. Inhalt

Abschnitt 10: Datenstrukturen

Erste Java-Programme (Scopes und Rekursion)

Teil 2: OOP und JAVA (Vorlesung 11)

Transkript:

Vorlesung Programmieren 1. Objekte und Klassen 27.10.2014 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK sdq.ipd.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Organisatorisches Tutoriumsverteilung: Wer noch nicht in WebInScribe angemeldet ist, bitte E-Mail an programmieren-vorlesung@ipd.kit.edu bis spätestens morgen schicken Erstes Tutorium: bringen Sie Ihren Laptop mit, falls vorhanden Montag-Vormittags-Tutorien (8:00, 9:45, 11:30 Uhr) starten versetzt am 03.11., um der heutigen Vorlesung nicht vozugreifen Einverständniserklärung bitte diese Woche im Tutorium abgeben (Montag-Vormittags-Tutorien: erst am 03.11.) Heutiges Tutorium um 15:45 Uhr: ausnahmsweise in Raum 131 (1. OG, Informatik-Hauptgebäude 50.34) 2

Was ist Programmierung? Aufgabe: Aufstellung der Personen der Größe nach Verfügbare Instruktionen: 1. nach links oder rechts weitergeben 2. nach links oder rechts weitergeben 3. Personen, die oder halten, wechseln den Platz Beispielablauf: 1. nach rechts 2. Platz wechseln 3. nach links 4. Platz wechseln 3

War das nun Programmieren? Zum Teil ja: Präzise festgelegter Prozess Eindeutige Instruktionen Es fehlt: Ein allgemeiner Plan, der angibt, welcher Schritt als nächstes zu tun ist Allgemein: für beliebige Anzahl von Personen Möglichst abstrakt, d.h. (z.b.) nicht nur auf Personen bezogen Dies wäre dann ein Programm! Um zum Programm zu kommen, muss ein Problem der Anwendungswelt in einem Programm der Lösungswelt umgesetzt werden. Dies ist generelles Thema der Software-Technik. Dazu hilft Abstraktion! 4 27.10.2014 Vorlesung Programmieren: Objekte und Klassen

Ursprung Objektorientierter Programmierung 1960er Jahre: Ole-Johan Dahl (1931-2002) und Kristen Nygaard (1926-2002) entwickeln die Programmiersprache Simula genauer: erst Simula I, danach Simula 67 Simula steht für SIMulation LAnguage, eine Programmiersprache für Simulationen Erste Programmiersprache, die zwischen Klassen und Objekten unterscheidet Viele weitere Konzepte aus Simula finden sich in heutigen objektorientierten Sprachen wieder 5 27.10.2014 Vorlesung Programmieren: Objekte und Klassen

Billard-Spiel Angenommen, wir wollen ein Billard-Spiel programmieren Erster Schritt: Simulation der Bewegung der Kugeln Tisch Größe Kugeln: jede Kugel hat (zu jedem Zeitpunkt): Eine Position auf dem Tisch Eine Bewegungsrichtung und Geschwindigkeit Evtl. Effet (Drall, Spin) Kugeln können aneinanderstoßen und ändern dann die Bewegungsrichtung y (px,py) (vx,vy) x 6

Objektorientierte Programmierung (OOP) Grundidee der Objektorientierten Programmierung: Jedes Objekt der Realität hat ein virtuelles Gegenstück Objekte kooperieren durch Datenaustausch Im Zentrum: Modellierungsfrage Wer macht was? (Im Gegensatz zu: Wie wird s gemacht? ) Gebräuchliche Benennungen für Datenaustausch: Objekt A sendet Nachricht an Objekt B Objekt A ruft eine Methode von Objekt B auf y (px,py) (vx,vy) x 7

OOP am Beispiel Billard-Spiel Reale Welt Objektname Programmwelt Objekte Attribute Modellierung length width name getlength() getwidth() getname() addball() Table t 254 cm 127 cm Toronto Deluxe Methoden 8 Ball blueball Ball redball diameter Ball whiteball 57,2 mm diameter 57,2 mm weight diameter 170 g 57,2 mm weight 170 g color weight 170 g RED color RED xpos color 30 cm RED xpos 30 cm ypos xpos 50 cm 30 cm ypos 50 cm ypos 50 cm simulationstep() simulationstep() simulationstep()

Klassen: Der Bauplan von Objekten Objekt Klasse (Java) Ball redball diameter 57,2 mm weight 170 g color RED xpos 30 cm ypos 50 cm simulationstep() class Ball { // Attribute float diameter; // in mm Int weight; // in gram float xpos; // in cm float ypos; // in cm // Methoden void simulationstep() { } } Aus einer Klasse können beliebig viele Objekte ( Objekt-Instanzen, Instanzen der Klasse ) dieses Bauplans erzeugt werden. 9

Definition: Objekte und Klassen Ein Objekt wird durch drei Aspekte charakterisiert: Identität Objekteigenschaften können sich ändern, die Identität des Objekts bleibt aber gleich Durch Objektnamen sichergestellt Zustand Menge der Eigenschaften des Objekts zu einem Zeitpunkt Durch Attribute realisiert Verhalten Ausführen von Aktionen, die den Zustand ändern können Durch Methoden realisiert Eine Klasse ist ein Bauplan für gleichartige Objekte und legt fest welche Attribute die Objekt-Instanzen der Klasse haben welche Methoden die Objekt-Instanzen der Klasse haben 10

Klassen in Java class Ball { // Attribute float diameter; // in mm int weight; // in gram float xposition; // in cm float yposition; // in cm float xvelocity; // in m/s Float yvelocity; // in m/s } // Methoden Kommentare Zwei Arten von Kommentaren in Java: // Zeilenkommentar /* längerer Kommentar über mehrere Zeilen */ Schema: class Name { Klassenrumpf } Klassen-Deklaration 11

Ist die Klassendefinition gut so? class Ball { // Attribute float diameter; // in mm int weight; // in gram float xposition; // in cm float yposition; // in cm float xvelocity; // in m/s Float yvelocity; // in m/s Wir haben zweimal fast dasselbe Konstrukt. Lässt sich das vereinfachen? } // Methoden Ja! Abstraktion der x/y-paare in eine neue Klasse Vector2D. 12

Abstraktion: Klasse für Koordinatenpaare class Ball { // Attribute float diameter; // in mm int weight; // in gram float Vector2D xposition; position; // in cm float Vector2D yposition; velocity; // in cm m/s float xvelocity; // in m/s Float // Methoden yvelocity; // in m/s } // Methoden } class Vector2D { // Attribute: x/y-koordinaten float x; float y; } // Methoden Was haben wir gewonnen? Kürzere, übersichtlichere Klassendeklaration Strukturierung, Kapselung von Daten 13

Wie erzeugt man Objekte? Objekte werden mit dem new-operator erzeugt Vector2D position = new Vector2D(); // erzeugt Vektor position Vector2D velocity = new Vector2D(); // erzeugt Vektor velocity Ball ball = new Ball(); // erzeugt Billardkugel 14

Jetzt sind Sie gefragt! Wir modellieren die Mensa Bauplan für gleichartige Objekte Welche Klassen benötigen wir? Welche Attribute? Welche Methoden? Eigenschaften eines Objekts (Zustand) Aktionen, welche den Objekt-Zustand ändern können (Verhalten) 15

Zusammenfassung Objekte modellieren Gegenstände der realen Welt Klassen sind Baupläne für Objekte Klassen in Java werden deklariert mit class Name { Klassenrumpf } Neue Objekte einer Klasse werden mittels new erzeugt Klassen erlauben eine Erweiterung der eingebauten Java-Datentypen 16

Praxis: Übersetzen von Java-Klassen Der Computer versteht kein Java! Java-Programme müssen daher übersetzt ( compiliert ) werden javac Jede Klasse in einer eigenen Datei: class Vector2D Datei Vector2D.java Dateiname muss dem Klassennamen entsprechen Klassendeklaration in Java Vector2D.java Java-Compiler javac Ausführbare Version der Klasse ( Bytecode ) Vector2D.class 17

Praxis: Ausführen von Java-Programmen Mit javac übersetze Programme (Klassen) werden mit dem Java-Interpreter java ausgeführt. Im Beispiel: java Vector2D Dabei wird in der angegebenen Klasse die Methode main gesucht und diese gestartet. main muss deklariert sein als public static void main(string args[]) { } Ausgaben können mittels System.out.print() und System.out.println() vorgenommen werden; letzteres gibt einen Zeilenvorschub mit aus class Vector2D { // attributes: // x/y-coordinates float x; float y; } class Vector2D { // attributes: x/y-coordinates float x; float y; } // main method (for test) public static void main(string args[]) { Vector2D v = new Vector2D(); System.out.println("v.x = " + v.x); System.out.println("v.y = " + v.y); } 18