Vorlesung Programmieren

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Programmieren"

Transkript

1 Vorlesung Programmieren 1. Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), KIT-FAKULTÄT FÜR INFORMATIK are.ipd.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

2 Organisatorisches Erstes Tutorium: bringen Sie Ihren Laptop mit, falls vorhanden Die Tutorien finden ab heute statt Das Tutorium 19 entfällt aus organisatorischen Gründen Falls Sie diesbezüglich keine bekommen haben, fragen Sie bitte Frau Yurchenko nach der Vorlesung Einverständniserklärung bitte bis per Programmieren- Briefkasten abgeben, falls noch nicht geschehen Parallel zur Vorlesung im Audimax gibt es Live-Streams in die Hörsäle: -101, Gebäude 50.34, 1. UG -102, Gebäude 50.34, 1. UG Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

3 Semesterplan - Überblick Objekte und Klassen Typen und Variablen Kontrollstrukturen Konstruktoren und Methoden Arrays; Konvertierung, Datenkapselung, Sichtbarkeit Listen und Abstrakte Datentypen Vererbung Interfaces und Generics; Exceptions Rekursion; Java API Testen und Assertions Parsen, Suchen, Sortieren Präsenzübung Objektorientierte Design-Prinzipien Vom Programm zur Maschine, Best Practices Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

4 Literaturhinweis - Weiterlesen Dietmar Ratz, Jens Scheffler, Detlef Seese und Jan Wiesenberger Grundkurs Programmieren in Java, 7. Auflage, 2014 (mit Java 8), Hansa-Verlag Abschnitt 2.2. Was heißt Programmieren? Abschnitt 3.1. Mein erstes Programm Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

5 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

6 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! Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

7 Bubblesort Implementierung public class BubbleSort { public static void sort(long[] a) { for (int pass = 1; pass < a.length; pass++) { for (int i = 0; i < a.length - pass; i++) { if (a[i] > a[i+1]) { long tmp = a[i]; a[i] = a[i+1]; a[i+1] = tmp; Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

8 System.out.println("Hello World!"); Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

9 System.out.println("Hello World!"); Wie starte ich mein Java-Programm? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

10 Praxis: Übersetzen von Java-Klassen Der Prozessor versteht kein Programm in einer höheren Programmiersprache, wie z.b. Java! Er verarbeitet nur Binärcode! Java-Programme müssen daher zunächst übersetzt ( compiliert ) werden javac Jede Klasse in einer eigenen Datei: class SimpleProgram Datei SimpleProgram.java Dateiname muss dem Klassennamen entsprechen Klassendeklaration in Java SimpleProgram. java Java-Compiler javac Ausführbare Version der Klasse ( Bytecode ) SimpleProgram. class Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

11 System.out.println("Hello World!");...$javac SimpleProgram.java Wie starte ich mein Java-Programm? Kompilieren Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

12 Praxis: Ausführen von Java-Programmen Mit javac übersetze Programme (Klassen) werden mit dem Java-Interpreter java ausgeführt. Im Beispiel: java SimpleProgram 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

13 System.out.println("Hello World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Wie starte ich mein Java-Programm? Kompilieren Ausführen Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

14 Wozu Compiler? Ein Programm ist ein Algorithmus, der in einer Programmiersprache geschrieben wurde. Die Programmierer sprechen also mit dem Rechner. Zum Sprechen kann in einer Sprache erfolgen, die der Rechner direkt versteht. Binärcode Eine Notation mit Nullen und Einsen Für Menschen schwer verständlich Idee: Maschinennahe Sprachen, auch Assemblersprache genannt. Assemblersprache besteht aus Buchstaben und Ziffern, z.b.: MOV RG1 RG5 ADD RG2 RG Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

15 Wozu Compiler? Assemblercode kann direkt vom Prozessor ausgeführt werden. Abhängig vom Prozessortyp Verwenden einer benutzernahen Sprache Höhere Programmiersprachen Übersetzer notwendig Übersetzer ist eine spezielle Software, die den Code einer höheren Programmiersprache übersetzt in die Maschinensprache oder eine Zwischensprachen Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

16 Compiler vs. Interpreter Compiler Compiler transformieren die Programme in einer höheren Sprache in maschinennahe Programme. Compiler übersetzen die Programme nicht vollständig. Die Programme werden später ausgeführt. Interpreter Interpreter werden benutzt, wenn die Programme Anweisung für Anweisung übersetzt werden. Die Programme werden unmittelbar ausgeführt Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

17 Übersetzung in Maschinennahe Sprache Traditionelle höhere Programmiersprachen benötigen für jeden Prozessortyp einen Compiler. Der Quellcode wird in das Zielprogramm übersetzt. Das Programm muss für jeden Prozessortyp übersetzt werden Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

18 Interpretation nach Vorübersetzung Java hingegen ist plattformunabhängig. Nur ein Compiler wird für alle Plattformen benötigt. Compiler übersetzt den Quellcode in Java-Bytecode. Java-Bytecode ist unabhängig von einem bestimmten Prozessor. Java-Bytecode kann nicht unmittelbar ausgeführt werden. Java-Bytecode ist portabel. Java-Bytecode wird für einen virtuellen Prozessor gefertigt. Der virtuelle Prozessor wird die virtuelle Maschine (VM) genannt. Java-Interpreter analysiert den Java-Bytecode und führt ihn aus Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

19 Übersetzung und Ausführung in Java Java-Quellcode Vector2D.java Java-Compiler javac Java-Bytecode Vector2D.class java Java VM für Windows Java VM für Linux Java VM für MacOS Ausführbares Windows-Programm Ausführbares Linux- Programm Ausführbares MacOS-Programm Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

20 Just In Time Compilation Ein leichtgewichtiger Compiler Findet während der Ausführung des Codes statt Ziel: Optimierung des Codes zum Verbessern der Performance Optimierung des häufig auszuführenden Codes, wie z.b. Schleifen Beispiele für die Code-Optimierung: Entfernen von redundanten Aufrufen (z.b. durch Ersetzen mit einer lokalen Variable) Copy Propagation (Beispiel: Ersetzen von z=x+y und y=f durch z=x+f) Entfernen vom toten Code (Code, der nie aufgerufen wird oder dessen Ergebnis nie benutzt wird) Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

21 System.out.println("Hello World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Wie ändere ich die Ausgabe? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

22 System.out.println("Hello World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Wie ändere ich die Ausgabe? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

23 System.out.println("Hello!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Wie ändere ich die Ausgabe? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

24 System.out.println("Hello!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Wie ändere ich die Ausgabe? Muss ich das Programm wieder kompilieren? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

25 System.out.println("Hello!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Wie ändere ich die Ausgabe? Muss ich das Programm wieder kompilieren? Ja Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

26 System.out.println("Hello!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$javac SimpleProgram.java...$java SimpleProgram Hello! Wie ändere ich die Ausgabe? Muss ich das Programm wieder kompilieren? Ja Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

27 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$javac SimpleProgram.java...$java SimpleProgram Hello! Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

28 System.out.println("Hello"); System.out.println("World!");...$ Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

29 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

30 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World! Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

31 System.out.println("1+1");...$ Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

32 System.out.println("1+1");...$javac SimpleProgram.java Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

33 System.out.println("1+1");...$javac SimpleProgram.java...$java SimpleProgram 1+1 Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

34 Ein Beispiel für eine Klasse Klassenname Methodenname System.out.println("Hello"); System.out.println("World!"); main-methode...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ Woraus besteht das einfache Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

35 int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$ Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

36 int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$javac SimpleProgram.java...$java SimpleProgram 3 Welche Ausgabe erwarte ich? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

37 int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$javac SimpleProgram.java...$java SimpleProgram 3 Woraus besteht das modifizierte Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

38 Variablendeklaration int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$javac SimpleProgram.java...$java SimpleProgram 3 Woraus besteht das modifizierte Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

39 Variablendeklaration Wert int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$javac SimpleProgram.java...$java SimpleProgram 3 Woraus besteht das modifizierte Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

40 Variablenname Variablendeklaration Wert int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$javac SimpleProgram.java...$java SimpleProgram 3 Woraus besteht das modifizierte Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

41 Variablentyp Variablenname Variablendeklaration Wert int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber);...$javac SimpleProgram.java...$java SimpleProgram 3 Woraus besteht das modifizierte Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

42 Variablentyp Variablenname Variablendeklaration Wert int firstnumber = 1; int secondnumber = 2; System.out.println(firstNumber+secondNumber); Initialisierung...$javac SimpleProgram.java...$java SimpleProgram 3 Woraus besteht das modifizierte Beispiel? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

43 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ In welcher Reihenfolge wird mein Programm ausgeführt? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

44 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ In welcher Reihenfolge wird mein Programm ausgeführt? Die Ausführung beginnt mit der main-methode Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

45 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ In welcher Reihenfolge wird mein Programm ausgeführt? Die Ausführung beginnt mit der main-methode Die Ausführung beginnt mit der ersten Zeile der main-methode Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

46 System.out.println("Hello"); System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World!...$ In welcher Reihenfolge wird mein Programm ausgeführt? Die Ausführung beginnt mit der main-methode Die Ausführung beginnt mit der ersten Zeile der main-methode Die Ausführung endet mit der letzten Zeile der main-methode Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

47 System.out.println("Hello"); static void printworld(){ System.out.println("World!");...$ Welche Ausgabe erwarten wir? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

48 System.out.println("Hello"); static void printworld(){ System.out.println("World!");...$ Welche Ausgabe erwarten wir? Wird die Methode printworld ausgeführt? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

49 System.out.println("Hello"); static void printworld(){ System.out.println("World!");...$ Welche Ausgabe erwarten wir? Wird die Methode printworld ausgeführt? Nein Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

50 System.out.println("Hello"); static void printworld(){ System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello Welche Ausgabe erwarten wir? Wird die Methode printworld ausgeführt? Nein Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

51 System.out.println("Hello"); static void printworld(){ System.out.println("World!");...$ Wie kann ich die Methode printworld ausführen? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

52 System.out.println("Hello"); printworld(); static void printworld(){ System.out.println("World!");...$ Wie kann ich die Methode printworld ausführen? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

53 System.out.println("Hello"); printworld(); static void printworld(){ System.out.println("World!");...$javac SimpleProgram.java...$java SimpleProgram Hello World Wie kann ich die Methode printworld ausführen? Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

54 Billard-Spiel Programmieren ist nicht nur die Definition von Befehlen und deren Ausführungsreihenfolge. Datenmodellierung y (px,py) (vx,vy) x Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

55 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

56 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

57 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 Ball blueball Ball redball diameter Ball whiteball 57,2 mm diameter 57,2 mm weightdiameter 170 g 57,2 mm weight 170 g color weight 170 gred color RED xpos color 30 cmred xpos 30 cm ypos xpos 50 cm30 cm ypos 50 cm ypos 50 cm simulationstep(...) simulationstep(...) simulationstep(...) Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

58 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

59 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 Grady Booch, Object Oriented Analysis and Design Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

60 Ursprung Objektorientierter Programmierung 1960er Jahre: Ole-Johan Dahl ( ) und Kristen Nygaard ( ) 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

61 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

62 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

63 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

64 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

65 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) Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

66 Wir modellieren die Mensa! name: String postleitzahl: int strasse: String Mensa 1 1 Speiseplan getgericht(name): Gericht * 1..* name: String preis: double Gericht getspeiseplan(): Speiseplan bezahlen(gericht: Gericht, geld: int): int * * Mensabesucher vorname: String nachname: String hunger: boolean geld: int essen(gericht: Gericht) besuchen(mensa: Mensa) Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

67 Jetzt sind Sie gefragt! Schreiben Sie eine main-methode für die Klasse Vector2D, die die Koordinaten eines Vektors ausgibt. 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); Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

68 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 Vorlesung Programmieren: Objekte und Klassen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements

Vorlesung Programmieren

Vorlesung Programmieren 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),

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 1. Objekte und Klassen 21.10.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 11 Rekursion Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 04.10.2017 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello World 04.10.2017 Dr. Werner Struckmann

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Einführung Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 04.10.2016 Technische Universität Braunschweig, IPS Überblick Organisatorisches Hello! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke Java 1 Markus Reschke 06.10.2014 Überblick Einführung in die Programmierung zur Vereinfachung des Einstiegs ins Studium Erstellung von ausführbaren Programmen für den Computer Denk- und Vorgehensweisen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 6. Arrays 23.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Einführung 26.10.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

Programmiervorkurs. Wintersemester 2013/2014

Programmiervorkurs. Wintersemester 2013/2014 Programmiervorkurs Wintersemester 2013/2014 Programmiervorkurs Wintersemester 2013/2014 Organisation: Tutoren: Steffen Gebert, Alexander Wolff Johannes Grohmann, Anna Seufert, Anna Aumann, Nicolas Färber,

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

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

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 5. Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), KIT-FAKULTÄT

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

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

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus. 1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software

Mehr

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

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Programme erstellen in Java

Programme erstellen in Java Programmieren mit Java Modul 0 Programme erstellen in Java Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Schreiben von Computerprogrammen 3 2.1 Computerprogramme bestehen aus Daten und Instruktionen.......

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

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

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März

Mehr

Java-Programmierung mit NetBeans

Java-Programmierung mit NetBeans Java-Programmierung mit NetBeans Klassen, Objekte, Alternativen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Grundlegende Definitionen - Objekt Ein Objekt ist allgemein ein Gegenstand

Mehr

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

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

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013. Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VIII Einstieg in Java II Michael Roth (h_da) Informatik

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

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

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Programmiersprache. Emily & rica

Programmiersprache. Emily & rica Programmiersprache Emily & rica inhaltsangabe Programmiersprache Def inition/funktion Arten Gängige Algorithmus/Syntax Compiler, Interpreter Def inition Unterscheidung Vor- und Nachteile Compiler/ Interpreter

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 5. Arrays 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

Mehr

Die einfachsten Anweisungen

Die einfachsten Anweisungen 2 Die einfachsten Anweisungen 2-1 Inhalt Die einfachsten Anweisungen Einführung Datentypen Arithmetische Operatoren Mathematische Funktionen Mehrfache Zuweisungen Übungsaufgaben Einführung Wir wollen unser

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Übungen zur Vorlesung Wissenschaftliches Rechnen I Übungen zur Vorlesung Wissenschaftliches Rechnen I Nicolas Gauger, René Lamour, Hella Rabus Wintersemester 2007/2008 Programmierung - Einführung Programmierung - Einführung Berechnung einer Formel y =

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 6. Konvertierung, Datenkapselung, Sichtbarkeit Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Praxis der Programmierung

Praxis der Programmierung Template-Funktionen und -Klassen Einführung in Java Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Template-Funktionen 2 Minimumfunktion und offene Typen Aufruf

Mehr

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1 Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi Grundlagen der Programmierung 1 WS 2012/2013 Prof. Dr. Stefan Böttcher Aufgabenblatt 1: - Präsenzübung für die Übungen Do. 11.10.- Mi. 17.10.2012 Ausgabe Mi. 10.10.2012 1.1. Zahlen vertauschen mit wenigen

Mehr

Gliederung der Folien

Gliederung der Folien 1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Einführung in die Programmierung. (K-)II/Wb17

Einführung in die Programmierung. (K-)II/Wb17 Probeklausur Hochschule Zittau/Görlitz, Prüfer: Prof. Dr. Georg Ringwelski Einführung in die Programmierung (K-)II/Wb17 Matrikelnummer: Punkte: 1 2 3 4 5 6 Gesamt /21 /19 /20 /20 /20 /20 /120 Spielregeln:

Mehr

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden Teil 3 - Java Grundlagen Klassen, Attribute Methoden 1 Java 2 - Geschichte Ursprung: Green -Project bei der Firma Sun Microsystems 1991 Entwicklung eines Systems mit folgenden Eigenschaften: hardwareunabhängig

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Einführung 20.10.2014 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT

Mehr

Praktische Informatik 1

Praktische Informatik 1 Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Session 2 Programmierung Begriffe C/C++ Compiler: übersetzt Quellcode

Mehr

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung

Mehr

Kapitel

Kapitel 10.11.005 Kapitel 4-10.11.005 Lehrbeispiel: Sortieralgorithmus " Bubble Sort" Sortieren von Primitivtypen Der "Abstrakte Datentyp" Grundlagen der Objektorientierung: Abstraktion, Kapselung, Modularität,

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Grundlagen von C# - 1

Grundlagen von C# - 1 Grundlagen von C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Über diesen Kurs 2. Benötigte Software 3. Exkurs: Architektur von.net und C# 4. Erstes Programm: Hello World Grundlegende Eigenschaften

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Programmierkurs. Manfred Jackel

Programmierkurs. Manfred Jackel Java für Anfänger Teil 1: Intro Programmierkurs 12.-16.10.2009 10 2009 Manfred Jackel 1 1. Handwerkszeug Notwendige Software Java Runtime Environment JRE 6 von http://java.sun.com/javase/downloads/index.js

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License.

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. Studentische Initiative voller Studenten Gesamte Fak IV: ET, TI, Info Organisiert: Kurse, Kickerturniere, Gremienarbeit

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Java-Grundkurs für Wirtschaftsinformatiker

Java-Grundkurs für Wirtschaftsinformatiker Klaus-Georg Deck Herbert Neuendorf Java-Grundkurs für Wirtschaftsinformatiker Die Grundlagen verstehen - Objektorientierte Programmierung - Fortgeschrittene Konzepte kennenlernen - Betriebswirtschaftlich

Mehr

Abschnitt 1: Einführung

Abschnitt 1: Einführung Abschnitt 1: Einführung 1. Einführung 1.1 Historischer Überblick: Objektorientierte Programmiersprachen 1.2 Java Erste Schritte 1.3 Kommentare in Java 1 Einführung Informatik 2 (SS 07) 10 Überblick 1.

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer

Mehr

Überblick. R.Grossmann / P. Sobe 1

Überblick. R.Grossmann / P. Sobe 1 Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 3. Grundlagen des Typkonzepts von C++ 4. Ziele der Objektorientierung 5. Objekt und Klasse, Elementfunktionen

Mehr

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

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

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Einführung in Java. Ausgewählte Quellen zu Java

Einführung in Java. Ausgewählte Quellen zu Java Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 Einführung

Mehr

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend

Mehr

10. Programmierungs-Phase: Objektorientierung Software Engineering

10. Programmierungs-Phase: Objektorientierung Software Engineering 10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext

Mehr

Programmierung für Mathematik HS11

Programmierung für Mathematik HS11 software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Informatik I - Einstiegskurs

Informatik I - Einstiegskurs Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13

Mehr