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

Ähnliche Dokumente
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Programmieren in Java

Objektorientierung (OO)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik)

JAVA für Nichtinformatiker - Probeklausur -

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Repetitorium Informatik (Java)

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Einstieg in die Informatik mit Java

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einstieg in die Informatik mit Java

1 Klassen und Objekte

Martin Unold INFORMATIK. Geoinformatik und Vermessung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

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

Philipp Güttler Objektorientierung und komplexe Datentypen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

JAVA - Methoden

Vererbung, Polymorphie

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Einstieg in die Informatik mit Java

Anweisungen zur Ablaufsteuerung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

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

Implementieren von Klassen

Einführung in das Programmieren Probeklausur Lösungen

Prozeduren vs. Funktionen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Datenbankanwendungsprogrammierung Crashkurs Java

Methoden und Wrapperklassen

Klassenvariablen, Klassenmethoden

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

AuD-Tafelübung T-B5b

Elementare Konzepte von

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Universität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08

Theorie zu Übung 8 Implementierung in Java

Geschachtelte Klassen

Arten von Klassen-Beziehungen

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

Algorithmen und Datenstrukturen II

JAVA - Methoden - Rekursion

Allgemeines - Prinzipien

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Java: Eine kurze Einführung an Beispielen

2. Unterprogramme und Methoden

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung

Einstieg in die Informatik mit Java

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

3 Objektorientierte Konzepte in Java

PROGRAMMIERUNG IN JAVA

Java Einführung Methoden in Klassen

Objektorientierte Programmierung Studiengang Medieninformatik

Kapitel 6. Kontrollstrukturen im Kontext von Klassen und Objekten

Kapitel 6. Kontrollstrukturen im Kontext von Klassen und Objekten

2 Eine einfache Programmiersprache

Erreichbarkeit von Klassenelementen. Daten verstecken und kapseln

Java I Vorlesung Imperatives Programmieren

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

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

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Tafelübung 07 Algorithmen und Datenstrukturen

1. Abstrakte Klassen

3. Anweisungen und Kontrollstrukturen

Konzepte der Programmiersprachen

Was sind Klassen?

Vererbung. Martin Wirsing. Ziele. Vererbung

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Probeklausur: Programmierung WS04/05

Einfache Datentypen in JAVA

Vorlesung Programmieren

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

II.1.1. Erste Schritte - 1 -

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

5. Tutorium zu Programmieren

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

Tag 7 Repetitorium Informatik (Java)

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Primitive Datentypen

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung und Klassen

Programmieren I. Kapitel 5. Kontrollfluss

Vorlesung Programmieren

Java für Bauingenieure

Vererbung, Polymorphismus

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

Die Programmiersprache C Eine Einführung

4.4 Imperative Algorithmen Prozeduren

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Java Einführung Methoden. Kapitel 6

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Transkript:

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 [<Sichtbarkeit>] [static] <Typ> <Name 1 > [= <Init 1 >] [, <Name 2 > [= <Init 2 >], ] Beispiele: int i = 10; public static String Hello = Hello World! ; boolean flag = true; int i, j=10,k, l=2*j; 62 63 Der imperative Kern Imperativer Kern - Kontrollstrukturen Zuweisungen Blöcke <Variable> = <Ausdruck>; Sequenzen von Anweisungen und Deklarationen in Beispiele: { x = 1; y = 2; Zuweisungen sind auch Ausdrücke: x = y = 1; entspricht x = (y = 1); Beispiel { int i = 10; i = 2*i; int j; j = i+i; 64 65

Imperativer Kern - Kontrollstrukturen Imperativer Kern - Kontrollstrukturen Bedingte Anweisungen Endliche Fallunterscheidung (Switch) Sequenzen von Anweisungen und Deklarationen in if (<Bedingung>) { <Konsequenz> [ else { <Alternative> ] Beispiel switch (<Ausdruck>) { case c 1 : <Anweisung 1 >... c n : <Anweisung n > [ default : <Anweisung> ] if ( a < b ) { x = a; else { x = b; Spezielle Anweisung: break; 66 67 Imperativer Kern - Kontrollstrukturen Imperativer Kern - Kontrollstrukturen Endliche Fallunterscheidung (Switch) Beispiel: int x = 2, j; switch (x) { case 1: j=10; case 2: j=20; case 3: { j=25; break; case 4: j=0; default: j++; Schleifen (while, do, for) while (<Bedingung>) { <Anweisungen> do { <Anweisungen> while (<Bedingung>) for (<Init>; [<Bedingung>;] <Abschluss>) <Anweisungen> Beispiel for (i=0; i<10; i++) { x = x+i; 68 69

Imperativer Kern Java als Programmiersprache Die Fakultät in Java public class Fakultaet { static int fac (int n) { if (n==0) return 1; else return n*fac(n-1); Objektorientierung (Klassen, Objekte, Methoden, Vererbung) public static void main (String[] argv) { System.out.println ( fac(6) ); 70 71 Java als Programmiersprache Klassen und Objekte Klassen sind Datentypen(zeigerreferenzierte Recordtypen) Objektorientierung (Klassen, Objekte, Methoden, Vererbung) Kapselung(engl. encapsulation) Vererbung(engl. inheritance, Struktursicht, Typsicht) Nachrichtenaustausch(engl. message passing) entsprechen etwa zeigerreferenzierten Records in Modula 2 legen die Struktur (Instanzvariablen, erlaubte Operationen) ihrer Instanzen (Objekte) fest können Komponenten einer anderen Klasse erben kapseln Funktionalität etwa durch Deklaration von Sichtbarkeiten class Circle { float x, y, r; // Mittelpunkt (x,y) und Radius 72 73

Klassen und Objekte Objekte (Instanzen) Objekte sind Daten(Instanzen einer Klasse) Objekte sind Daten(zeigerreferenzierte Records) Speicher entsprechen etwa zeigerreferenzierten Records in Modula 2 werden i.a. dynamisch erzeugt (zur Laufzeit) new Circle(); Haben eine Identität (Unterschied zu Tabellen in Datenbanken) new Circle()erzeugt 0104 0108 Circle x = 0.0 y = 0.0 class Circle { float x, y, r; // Mittelpunkt (x,y) und Radius r nocheinmal new Circle() 010C 0114 0118 r = 0.0 Circle X = 0.0 Y = 0.0 Circle c; c = new Circle(); // erzeugt ein Objekt der Klasse Circle // und weist es der Variablen c zu 011C Z = 0.0 74 75 Methoden Methoden Methoden entsprechen Prozeduren / Funktionen werden durch Nachrichten aufgerufen: Methodendeklarationen (in Klassen) objekt.methodenname(arg 1,, arg n ) [<Sichtbarkeit>] [static] <Typ> <Name> (<Parameter>) { <Rumpf> entspricht methodenname(objekt, arg 1,, arg n ) Methoden heissen auch (Objekt)Methoden Statische Methoden (static) heissen auch Klassenmethoden Beispiel: public class Circle { public double umfang () { return 2*3.14159 * this.r; Das Empfängerobjekt einer Nachricht (objekt) wird im Rumpf der Methode als this bezeichnet 76 77

Methodenaufruf (Nachricht) Objekterzeugung (Konstruktoren) (Objekt-) Methoden werden durch Nachrichten aufgerufen: Instanzen von Klassen (Objekte) werden durch Konstruktoraufrufe erzeugt, z.b. durch new Circle(2.0, 3.0, 1.0); Beispiel: c.x = 2.0; c.y = 3.0; c.r = 1.0; double x = c.umfang(); Methoden, die keinen Resultattyp und denselben Namen haben wie die Klasse, sind Konstruktormethoden Beispiel: public Circle ( float x, y, r ) { this.x = x; this.y = y; this.r = r; 78 79 Objekte (Instanzen) Überladung Objekte sind Daten(zeigerreferenzierte Records) Speicher new Circle(2.0,3.0,1.0)erzeugt 0104 Circle float x = 2.0 In Java sind zwei Methoden verschieden, wenn sie verschiedene Namen oder gleiche Namen und verschiedene Signaturen haben, d.h. Anzahl, Reihenfolge oder Typen der Parameter verschieden sind 0108 010C float y = 3.0 float r = 1.0 Beispiel: (hier: Konstruktormethoden): 0114 0118 public Circle ( float r ) { this.x = 0.0; this.y = 0.0; this.r = r; 011C public Circle ( Circle c ) { this.x = c.x; this.y = c.y; this.r = c.r; 80 81

Überladung Statische Komponenten In Java sind zwei Methoden gleich, wenn sie den gleichen Namen und die gleiche Signatur haben, d.h. Anzahl, Reihenfolge und Typen der Parameter gleich sind Statische Methoden sind gewöhnliche Funktionen oder Prozeduren (Schlüsselwort static) Statische Instanzvariablensind globale Variablen. Sind sie zusätzlich final deklariert, wirken sie wie Konstanten Beispiel: (hier: Konstruktormethoden): Beispiele: public double umfang () { return 2 * Math.PI * r; public double umfang () { return Math.PI * ((r + s) * 3 / 2 - Math.sqrt(r * s)); public static int fac ( int n ) { public final static double PI = 3.14159; 82 83 Statische Variablen (Beispiel) Vererbung public class Circle { A static int num_circles = 0; float x,y,r; public Circle (float x, float y, float z) { this.x = x; this.y = y; this.r = z; num_circles++ // zählt Anzahl der Instanziierungen public Circle () { this (0.0, 0.0, 1.0); Zugriff auf statische Variablen (Klassenvariablen): class B extends A { B erweitert(spezialisiert) A B heisstsubklassevon A, A heisstsuperklassevon B Klasse B erbt alle Komponenten (Attribute, Methoden) von A jedes B ist auch ein A, B ist Subtypvon A B Circle.num_circles 84 85

Vererbung (Struktursicht, Typsicht) Vererbung (Typsicht, Typ-/Subtyp-Beziehung) A A class B extends A { B class B extends A { B Struktursicht: B erbt alle Komponenten (Attribute, Methoden) von A Typsicht: B ist Subtypvon A, jedes B ist auch ein A jedes B ist auch ein A, B ist Subtypvon A überall dort, wo Instanzen des TypsA erwartet werden, dürfen auch Instanzen des Typs B auftauchen 86 87 Vererbung - Beispiel Objekte (Instanzen), Vererbung von Attributen public class GraphicCircle extends Circle { Objekte sind Daten(zeigerreferenzierte Records) Klasse GraphicsCircle erbt die Komponenten von Circle Color fill, outline; public void draw (Graphics g) { g.setcolor(outline); g.drawoval(x-r, y-r, 2*r, 2*r); g.setcolor(fill); g.filloval(x-r, y-r, 2*r, 2*r); Die Methoden drawoval( ) und filloval( ) in Java 1.5 erwarten Integer-Argumente (Anzahl Pixel) anstatt float. new GraphicsCircle() erzeugt 0104 0108 010C 0114 0118 Speicher GraphicsCircle float x = 0.0 float y = 0.0 float r = 0.0 Color fill = Color outline = Beteiligte Packages: java.awt.color, java.awt.graphics 011C 88 89

Vererbung Überdecken von Attributen Objekte (Instanzen), Überdecken von Attributen public class Circle extends Ellipse { double r; public double umfang () { return 2 * Math.PI * r; Objekte sind Daten(zeigerreferenzierte Records) Klasse Circle erbt alle Komponenten von Ellipse new Circle()erzeugt 0104 0108 010C Circle Speicher float x = 0.0 float y = 0.0 float r = 0.0 float r2 = 0.0 Kreise haben sowohl ein double r als auch das float r aus Ellipse 0114 0118 011C double r = 0.0 90 91