• Keine Ergebnisse gefunden

Praktische Informatik 1 Praktische Informatik 1

N/A
N/A
Protected

Academic year: 2021

Aktie "Praktische Informatik 1 Praktische Informatik 1"

Copied!
29
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische Informatik 1 Praktische Informatik 1

Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska

Wintersemester 2011/2012

(2)

Was bisher geschah ...

Konzepte:

Klassen und ihre ...

... Instanzen, die Objekte

Methoden und ihre Parameter

Eine erste Programmierübung in Java:

Ausfüllen von Methoden mit ...

Zuweisungen

if-else-Anweisungen

for-Schleifen

return-Anweisung

Operatoren +,-,<<,>>,>>> ...

(3)

Was bisher geschah ...

Tutorieneinschreibe-Chaos

Sorry!

Unklarheit bzgl. Aufgabenblatt 1

nochmal Sorry!

(4)

Was nun geschieht ...

ABER alles wird besser

Abgabe Blatt 1

Donnerstag, 17. November 2011

Abgaben generell

Ausgabe Dienstag

Abgabe Donnerstag der Folgewoche

(5)

Welche Systematik steckt dahinter - Aufbau von Programmiersprachen

Strukturmechanismen: Wie kann “sehr viel Code”

in verständliche Komponenten zerlegt werden ?

Primitive Datentypen: Welche Basis-Datentypen stellt die Programmiersprache zur Verfügung, um Variablen dieser Typen einzuführen?

Typerzeugungsmechanismen: Wie kann man aus vorhandenen Datentypen neue, komplexere,

bilden?

Deklaration und dynamische

Erzeugung/Vernichtung: Wie können Variablen eingeführt werden -- wie können Objekte zur

Laufzeit dynamisch neu erzeugt oder vernichtet werden?

(6)

Aufbau von

Programmiersprachen

Kausalordnung von Anweisungen: Wie kann beschrieben werden, ob Anweisungen

nacheinander oder nebenläufig (“parallel zu einander”) ausgeführt werden ?

Zuweisungen (“Zuweisungs-Anweisung”): Wie

lassen sich Werte zwischen Variablen übertragen?

Zuweisungen sind typisch für imperative Programmiersprachen; funktionale

Programmiersprachen (z.B. Lisp) kommen ohne Zuweisungsbefehle aus

(7)

Aufbau von

Programmiersprachen

Kontrollstrukturen: Wie kann die sequenzielle oder nebenläufige Abarbeitung von Anweisungen unterbrochen werden, um die Programmausführung an anderer Stelle fortzusetzen?

Ausdrücke und Operatoren: Wie lassen sich

Variablen und Konstanten unter Zuhilfenahme von Operatoren zu komplexeren Ausdrücken

zusammensetzen, um beispielsweise

Berechnungen, verknüpfte logische Bedingungen oder das Zusammensetzen von Texten zu

beschreiben?

(8)

Aufbau von Programmiersprachen

Sprachmerkmal Wir haben in Java bereits

dazu gesehen Es gibt in Java dazu

noch (werden wir später kennenlernen)

Strukturmechanismen Dateien, Klassen,

Methoden, Blöcke Packages

Primitive Datentypen int, float, boolean, char, ....

Typerzeugungs- mechanismen

Klassen Arrays, Enumerations

(Aufzählungstypen)

Kausalordnung von Anweisungen

Sequenzielle Folge von Anweisungen “;”

Thread-Aktivierung

(nebenläufig ausgeführte Folge von Anweisungen)

(9)

Aufbau von Programmiersprachen

Sprachmerkmal Wir haben in Java bereits

dazu gesehen Es gibt in Java dazu

noch (werden wir später kennenlernen)

Zuweisungen <variable> = <Ausdruck>

Kontrollstrukturen if, for, return while, do-while, goto, switch

Ausdrücke und Operatoren

+,-,<<,>>,>>>, ~.... %,/,*,!,^, ...

Deklaration und dynamische

Erzeugung/Vernichtung

<Typ> <Variablenname>;

<Klasse> <Var> = new

<Klasse>();

(10)

naiver Ticketautomat

zu modellieren:

Ticketautomat mit einer Ticketart

Kunde kann Geld einwerfen

Automat summiert eingeworfenes Geld

Kunde kann Ticket anfordern, sobald korrekter Betrag erreicht ist

(11)

Klassenaufbau

äußerer Teil

Zugriffsmodifikator

Schlüsselwort

Klassenname

Klammern

public class Ticketautomat {

… // innerer Teil }

(12)

Klassenaufbau

innerer Teil

Attribute

Konstruktoren

Methoden

public class Klassenname {

Attribute

Konstruktoren Methoden

}

(13)

Attribute

jedes Objekt reserviert Platz für Attributwerte

Attribute sind Variablen

t1:Ticketautomat

preis

bisherGezahlt gesamtSumme

t2:Ticketautomat

preis

bisherGezahlt gesamtSumme

(14)

Kommentare

Erläuterungen für menschliche Leser

kein Einfluss auf Funktionalität

einzeilig

mehrzeilig

// Der Ticketpreis private int preis;

/* Diese Klasse modelliert

einen einfachen Ticketautomaten.

Der Preis für ...

*/

von hier bis zum Zeilenende!

(15)

Semikolon

Semikolon schließt Anweisungen ab

Attributdeklaration ist Anweisung:

Vereinbarung: Attribute vorerst immer private!

Zugriffsmodifikator Typ Attributname;

private int preis;

(16)

Konstruktor

Konstruktor dient der Initialisierung

d.h. Objekt wird in gültigen Zustand versetzt

Konstruktorkopf hat keinen Rückgabetyp:

genereller Aufbau:

Zugriffsmodifikator Klassenname( Parameterliste )

Konstruktorkopf {

// Anweisungen }

public Ticketautomat( int ticketpreis )

(17)

Konstruktor

Klasse kann mehrere Konstruktoren haben:

unterschiedliche Parameterlisten

Typreihenfolge!

kein Konstruktor definiert Standardkonstruktor:

public Klassenname() {}

public Kreis(int xkoor, int ykoor) public Kreis(int xkoor, int radius) public Kreis(int radius, String farbe)

=

(18)

Sichtbarkeit (engl. Scope)

wo im Quelltext ist Variable zugreifbar

Parameter sind Variablen!

Sichtbarkeit

formale Parameter

nur im Rumpf der Methode

Attribute

gesamte Klassendefinition

(19)

Lebensdauer

wie lange existiert Variable

Lebensdauer

formaler Parameter

auf Ausführungszeit der Methode beschränkt

nach Ausführung sind Werte verloren!

Attribute

Lebensdauer des Objekts

(20)

Zuweisung

Werte werden mittels Zuweisungen in Variablen gespeichert:

Wert des Ausdrucks rechts wird in Variable links gespeichert

Variablen speichern immer nur einen Wert vorheriger Wert geht verloren!

variable = ausdruck

preis = ticketpreis; Zuweisungsoperator

(21)

Zuweisung

Eine Zuweisung ist eine Anweisung Semikolon!

Typ des Ausdrucks rechts muss zum Typ der Variable links passen:

int preis = 500;

int preis = “hello”;

int preis = false;

(22)

Datenübergabe mit Parameter

(A) Parameterübergabe (B) Zuweisung

(23)

Methoden

Methoden implementieren das Verhalten von Objekten

Methoden bestehen aus Kopf und Rumpf

Kopf: Zugriffsmodifikator und Signatur

Rumpf: Deklarationen und Anweisungen

{

return preis;

}

public int gibPreis()

Block

(24)

“getter”-Methoden

sondieren den Objektstatus

d.h. liefern Informationen über den Zustand

Rückgabeanweisung:

Ausführung einer Methode endet mit Rückgabe!

Ergebnistyp muss mit Rückgabeanweisung übereinstimmen!

return preis;

public int gibs() { return “hello”;

}

public int gibs() { return 500;

}

(25)

“getter”-Methoden

sondieren den Objektstatus

d.h. liefern Informationen über den Zustand

Rückgabeanweisung:

Ausführung einer Methode endet mit Rückgabe!

Ergebnistyp muss mit Rückgabeanweisung übereinstimmen!

return preis;

public int gibs() { return “hello”;

}

public int gibs() { return 500;

}

(26)

“setter”-Methoden

ändern den Objektstatus

d.h. verändern den Wert von Attributen

typischerweise ohne Rückgabe

optional spezielle Anweisung

beendet Ausführung der Methode ohne Rückgabe

bisherGezahlt = bisherGezahlt + betrag;

public void geldEinwerfen(int betrag) {…}

return;

(27)

Operator

arithmetischer Operator

Operatoren sind Methoden in anderer Schreibweise

Operatoren haben einen Typ

bisherGezahlt = bisherGezahlt + betrag;

a + b entspricht int plus(int a, int b)

+ : int x int → int - : int x int → int

* : int x int → int / : int x int → int

% : int x int → int

(28)

Ausgabe

System.out.println() gibt Parameter auf Konsole aus

System.out.println(“hello world!”);

hello world!

gibt aus:

(29)

Stringkonkatenation

+ im Kontext von Zeichenketten bewirkt Konkatenation ( + ist überladen )

Quiz: Was ist die Ausgabe von

System.out.println(5 + “ cent”);

gibt aus:

System.out.println(5 + 6 + “ cent”);

5 cent

Referenzen

ÄHNLICHE DOKUMENTE

Ein Implikant M einer Boole'schen Funktion f heißt Primimplikant von f, wenn er durch Resolution mit anderen Implikanten von f nicht weiter vereinfacht werden kann... Damit gibt es

Sie sollen ein Schaltnetz entwerfen, das eine

Dabei soll der zweite Operand durch Zweierkomplementbildung vom ersten subtrahiert werden, wenn ein Steuerbit SUB gesetzt ist. Gehen Sie davon aus, daß Ihnen 4-Bit-Addiernetze

Dokumentieren Sie die einzelnen Schritte der Programmausführung wie folgt: Geben Sie jeweils nach Abarbeitung der Instruktion 1 den Wert von Re- gister A, nach Abarbeitung

[r]

○ Übungen und Test müssen positiv sein (je ab 50%). ○ 50% Übungen,

Institut für System Software (SSW) DI Eisl &amp; DI Leopoldseder.. abgegebenen Übung wird eine Note ausgestellt2. ■ LVA Evaluierung im

abgegebenen Übung wird eine Note