03.01.2013 Aufrufe

Objektinteraktion Quiz Eine Digitaluhr Abstraktion und ... - BlueJ

Objektinteraktion Quiz Eine Digitaluhr Abstraktion und ... - BlueJ

Objektinteraktion Quiz Eine Digitaluhr Abstraktion und ... - BlueJ

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Objektinteraktion</strong><br />

Kooperation zwischen Objekten<br />

<strong>Eine</strong> <strong>Digitaluhr</strong><br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Modularisierung der<br />

Uhrenanzeige<br />

Oder zwei<br />

zweistellige<br />

Anzeigen?<br />

<strong>Eine</strong> vierstellige Anzeige?<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

4.0<br />

<strong>Quiz</strong><br />

• Schreiben Sie die Signatur eines<br />

Konstruktors, der zu folgendem<br />

Objektkreationsausdruck passt:<br />

new Editor("readme.txt", –1)<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

<strong>Abstraktion</strong> <strong>und</strong><br />

Modularisierung<br />

• <strong>Abstraktion</strong> ist die Fähigkeit, Details der<br />

Teile zu ignorieren, um sich auf eine<br />

höhere Ebene eine Problems zu<br />

konzentrieren.<br />

• Modularisierung ist der Prozess, ein<br />

Ganzes in wohldefinierte Teile zu<br />

zerlegen, die unabhängig voneinander<br />

konstruiert <strong>und</strong> verstanden werden<br />

können, <strong>und</strong> die in wohldefinierter Weise<br />

interagieren.<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Implementierung -<br />

NumberDisplay<br />

public class NumberDisplay<br />

{<br />

private int limit;<br />

private int value;<br />

}<br />

Constructor and<br />

methods omitted.<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling


Implementierung -<br />

ClockDisplay<br />

public class ClockDisplay<br />

{<br />

private NumberDisplay hours;<br />

private NumberDisplay minutes;<br />

}<br />

Constructor and<br />

methods omitted.<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Klassendiagramm<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Der Modulo-Operator<br />

• Der Divisionsoperator (/) liefert, wenn er auf<br />

int-Operanden angewandt wird, das Ergebnis<br />

einer Integerdivision.<br />

• Der Modulo-Operator (%) liefert den Rest der<br />

Integerdivision.<br />

• Z.B.:<br />

17 / 5 = Ergebnis 3, Rest 2<br />

• In Java:<br />

17 / 5 = 3<br />

17 % 5 = 2<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Objektdiagramm<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Quelltext: NumberDisplay<br />

public NumberDisplay(int rollOverLimit)<br />

{<br />

limit = rollOverLimit;<br />

value = 0;<br />

}<br />

public void increment()<br />

{<br />

value = (value + 1) % limit;<br />

}<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

<strong>Quiz</strong><br />

• Was ist das Ergebnis des Ausdrucks<br />

(8 % 3)<br />

• Was sind alle möglichen Ergebnisse<br />

des Ausdrucks (n % 5)?<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling


<strong>Quiz</strong><br />

• Was sind alle möglichen Ergebnisse<br />

des Ausdrucks (n % m)?<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Quelltext: NumberDisplay<br />

public String getDisplayValue()<br />

{<br />

if(value < 10) {<br />

return "0" + value;<br />

}<br />

else {<br />

return "" + value;<br />

}<br />

}<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

ClockDisplay Objektdiagramm<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Aufgabe<br />

public void increment()<br />

{<br />

value = (value + 1) % limit;<br />

}<br />

• Schreiben Sie die increment-<br />

Methode um, so dass sie ein if-<br />

Statement benutzt, statt des<br />

Modulo-Operators.<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Objekte erzeugen Objekte<br />

public class ClockDisplay<br />

{<br />

private NumberDisplay hours;<br />

private NumberDisplay minutes;<br />

private String displayString;<br />

}<br />

public ClockDisplay()<br />

{<br />

hours = new NumberDisplay(24);<br />

minutes = new NumberDisplay(60);<br />

updateDisplay();<br />

}<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

null<br />

• null ist ein besonderer Wert in<br />

Java<br />

• Alle Objektvariablen werden auf<br />

null initialisiert.<br />

• Man kann null zuweisen, <strong>und</strong> für<br />

null testen:<br />

private NumberDisplay hours;<br />

if(hours == null) { ... }<br />

hours = null;<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling


Objekte erzeugen Objekte<br />

in Klasse NumberDisplay:<br />

public NumberDisplay(int rollOverLimit);<br />

in Klasse ClockDisplay:<br />

Formaler Parameter<br />

hours = new NumberDisplay(24);<br />

Aktueller Parameter<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Interne Methode<br />

/**<br />

* Update the internal string that<br />

* represents the display.<br />

*/<br />

private void updateDisplay()<br />

{<br />

displayString =<br />

hours.getDisplayValue() + ":" +<br />

minutes.getDisplayValue();<br />

}<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

Methodenaufruf<br />

public void timeTick()<br />

{<br />

minutes.increment();<br />

if(minutes.getValue() == 0) {<br />

// it just rolled over!<br />

hours.increment();<br />

}<br />

updateDisplay();<br />

}<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling<br />

• <strong>Abstraktion</strong><br />

• Modularisierung<br />

• Klassen definieren<br />

Typen<br />

• Klassendiagramm<br />

• Objektdiagramm<br />

• Objektreferenzen<br />

Konzepte<br />

•! Primitive Typen<br />

•! Objekttypen<br />

•! Objekterzeugung<br />

•! ‘Overloading’<br />

•! Interne <strong>und</strong> externe<br />

Methodenaufrufe<br />

•! Debugger<br />

ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!