Quelltextanalyse Java: Unterschied zwischen den Versionen
Zeile 16: | Zeile 16: | ||
'''Beispiel:''' | '''Beispiel:''' | ||
Gegeben ist die Methode <code>tueWas</code> | Gegeben ist die Methode <code>tueWas</code>. <br/><code>pQueue</code> enthält lauter Kunden, die nach Einkommen absteigend sortiert sind, d.h. der Kunde mit dem höchsten Einkommen ist vorne. | ||
<code> | <code> | ||
Zeile 43: | Zeile 43: | ||
'''Aufgabe:''' | '''Aufgabe:''' | ||
Unterteile die Methode in geeignete Abschnitte und erläutere, was in den einzelnen Abschnitten passiert. Verwende dabei geeignete Fachbegriffe. | * Unterteile die Methode in geeignete Abschnitte und erläutere, was in den einzelnen Abschnitten passiert. Verwende dabei geeignete Fachbegriffe. | ||
Erläutere, welchen Zweck die lokale Variable <code>zzz</code> erfüllt und gib ihr einen geeigneten Namen. | * Erläutere, welchen Zweck die lokale Variable <code>zzz</code> erfüllt und gib ihr einen geeigneten Namen. | ||
* Benenne den Zweck, den die Methode erfüllt. | |||
==Mögliche <u>ausführliche</u> Lösung== | |||
'''Fachbegriffe''' sind '''fett'''; die Lösung enthält möglichst viele Standardformulierungen. | '''Fachbegriffe''' sind '''fett'''; die Lösung enthält möglichst viele Standardformulierungen. | ||
* Z. 01: '''Methodenkopf''': Die Methode <code>tueWas</code> erwartet die '''Parameter''' <code>pQueue</code> (vom Typ <code>Queue</code>) und <code>pKunde</code> vom '''Typ''' <code>Kunde</code>. Die Methode gibt nichts zurück. | * Z. 01: '''Methodenkopf''': Die Methode <code>tueWas</code> erwartet die '''Parameter''' <code>pQueue</code> (vom Typ <code>Queue</code>) und <code>pKunde</code> vom '''Typ''' <code>Kunde</code>. Die Methode gibt nichts zurück. | ||
* Z. 02-03: Die '''lokalen Variablen''' <code>hilfs</code> (vom Typ ''<code>Queue</code> von <code>Kunde</code>-Objekten'') und <code>zzz</code> (vom Typ <code>boolean</code>) werden '''deklariert'''; <code> | * Z. 02-03: Die '''lokalen Variablen''' <code>hilfs</code> (vom Typ ''<code>Queue</code> von <code>Kunde</code>-Objekten'') und <code>zzz</code> (vom Typ <code>boolean</code>) werden '''deklariert'''; <code>hilfs</code> wird als leere Queue '''initialisiert''' und <code>zzz</code> mit dem Wert <code>false</code>. | ||
* Z. 04-12: Eine <code>while</code>-'''Schleife''' wird geöffnet, die so lange läuft, wie <code>pQueue</code> noch Elemente enthält. Innerhalb der Schleife passiert folgendes: | * Z. 04-12: Eine <code>while</code>-'''Schleife''' wird geöffnet, die so lange läuft, wie <code>pQueue</code> noch Elemente enthält. Innerhalb der Schleife passiert folgendes: | ||
** Z. 05: Das vorderste Element von <code>pQueue</code> wird in der '''lokalen Variable''' <code>erster</code> (vom Typ <code>Kunde</code>) gespeichert. | ** Z. 05: Das vorderste Element von <code>pQueue</code> wird in der '''lokalen Variable''' <code>erster</code> (vom Typ <code>Kunde</code>) gespeichert. | ||
Zeile 66: | Zeile 67: | ||
<code>zzz</code> heißt deswegen am besten <code>schonEingefuegt</code>. | <code>zzz</code> heißt deswegen am besten <code>schonEingefuegt</code>. | ||
Die Methode fügt <code>pKunde</code> gemäß seinem Einkommen an der richtigen Stelle in <code>pQueue</code> ein.<br/> | |||
Wenn <code>pKunde</code> ärmer ist als alle in <code>pQueue</code>, dann wird er hinten angehängt. | |||
==Mögliche <u>kurze</u> Lösung== | |||
'''Fachbegriffe''' sind '''fett'''; die Lösung enthält möglichst viele Standardformulierungen. | |||
* Die Methode <code>tueWas</code> erwartet die '''Parameter''' <code>pQueue</code> (vom Typ <code>Queue</code>) und <code>pKunde</code> vom '''Typ''' <code>Kunde</code>. Die Methode gibt nichts zurück. | |||
* Zu Beginn (Z. 2-3) werden die '''lokalen Variablen''' <code>hilfs</code> und <code>zzz</code> '''deklariert'''; <code>hilfs</code> wird als leere Queue '''initialisiert''' und <code>zzz</code> mit dem Wert <code>false</code>. | |||
* In der <code>while</code>-'''Schleife''' (Z.4-12) wird <code>pQueue</code> nach und nach geleert und hinten <code>hilfs</code> angehängt. | |||
** Wenn dabei <code>pKunde</code> ein größeres Einkommen als der vorderste Kunde aus <code>pQueue</code> hat und zusätzlich <code>zzz</code> noch <code>false</code> ist, dann wird <code>pKunde</code> hinten an <code>hilfs</code> '''angehängt''' und <code>zzz</code> auf <code>true</code> gesetzt. | |||
* Z. 13-15: Wenn <code>zzz</code> den Wert <code>false</code> hat, dann wird <code>pKunde</code> jetzt an <code>hilfs</code> angehängt; das geschieht, wenn <code>pKunde</code> in der <code>while</code>-Schleife noch nicht an <code>hilfs</code> angehängt wurde. | |||
* Z. 16-19: Alle Elemente von <code>hilfs</code> werden wieder auf <code>pQueue</code> zurückübertragen. | |||
In der Variablen <code>zzz</code> wird festgehalten, ob <code>pKunde</code> schon in <code>hilfs</code> eingefügt wurde. | |||
<code>zzz</code> heißt deswegen am besten <code>schonEingefuegt</code>. | |||
Die Methode fügt <code>pKunde</code> gemäß seinem Einkommen an der richtigen Stelle in <code>pQueue</code> ein.<br/> | |||
Wenn <code>pKunde</code> ärmer ist als alle in <code>pQueue</code>, dann wird er hinten angehängt. |
Version vom 29. September 2016, 16:46 Uhr
Diese Seite ist für Abitur 17 (und folgende) angepasst.
Ziel der Quelltextanalyse ist es, die Funktionsweise einer Methode mithilfe geeigneter Fachbegriffe möglichst kurz und präzise zu beschreiben. Dabei sind Standardformulierungen hilfreich.
- Fachbegriffe dienen der Präzision.
- kurz ist deswegen wichtig, weil man bei der Klausur möglichst wenig Zeit auf das Schreiben verwenden sollte.
- Auf Standardformulierungen sollte man zurückgreifen können - denn die Beschreibung für das Durchlaufen eines Queues oder einer Liste muss man nicht für jede Klausur neu erfinden.
- Beispiele für Standardformulierungen finden sich unten.
- Auf Ästhetik muss nicht geachtet werden, so sind z.B. Wiederholungen am Satzanfang kein Problem.
Standardformulierungen
Mögliche Standardformulierungen werden hier an einem Beispiel aufgezeigt.
Beispiel:
Gegeben ist die Methode tueWas
. pQueue
enthält lauter Kunden, die nach Einkommen absteigend sortiert sind, d.h. der Kunde mit dem höchsten Einkommen ist vorne.
01 private void tueWas(Queue<Kunde> pQueue, Kunde pKunde) {
Queue<Kunde> hilfs = new Queue<Kunde>();
boolean zzz = false;
while (!pQueue.isEmpty()) {
05 Kunde erster = pQueue.front();
if (zzz == false && pKunde.getGuthaben() > erster.getGuthaben()) {
hilfs.enqueue(pKunde);
zzz = true;
}
10 hilfs.enqueue(erster);
pQueue.dequeue();
}
if(!zzz){
hilfs.enqueue(pKunde);
15 }
while (!hilfs.isEmpty()) {
pQueue.enqueue(hilfs.front());
hilfs.dequeue();
}
20 }
Aufgabe:
- Unterteile die Methode in geeignete Abschnitte und erläutere, was in den einzelnen Abschnitten passiert. Verwende dabei geeignete Fachbegriffe.
- Erläutere, welchen Zweck die lokale Variable
zzz
erfüllt und gib ihr einen geeigneten Namen. - Benenne den Zweck, den die Methode erfüllt.
Mögliche ausführliche Lösung
Fachbegriffe sind fett; die Lösung enthält möglichst viele Standardformulierungen.
- Z. 01: Methodenkopf: Die Methode
tueWas
erwartet die ParameterpQueue
(vom TypQueue
) undpKunde
vom TypKunde
. Die Methode gibt nichts zurück. - Z. 02-03: Die lokalen Variablen
hilfs
(vom TypQueue
vonKunde
-Objekten) undzzz
(vom Typboolean
) werden deklariert;hilfs
wird als leere Queue initialisiert undzzz
mit dem Wertfalse
. - Z. 04-12: Eine
while
-Schleife wird geöffnet, die so lange läuft, wiepQueue
noch Elemente enthält. Innerhalb der Schleife passiert folgendes:- Z. 05: Das vorderste Element von
pQueue
wird in der lokalen Variableerster
(vom TypKunde
) gespeichert. - Z. 06-09: Wenn
zzz
den Wertfalse
hat und das Guthaben vonpKunde
größer ist als das Guthaben vonerster
, dann passiert folgendes:pKunde
wird hinten anhilfs
angehängt.zzz
wird auftrue
gesetzt.
- Z. 10-11:
erster
wird vonpQueue
gelöscht und hinten anhilfs
angehängt.
- Z. 05: Das vorderste Element von
- Z. 13-15: Wenn
zzz
den Wertfalse
hat, dann wirdpKunde
anhilfs
angehängt.- Das geschieht, wenn
pKunde
in derwhile
-Schleife noch nicht anhilfs
angehängt wurde; so wird gewährleistet, dasspKunde
auf jeden Fall anhilfs
angehängt wird, auch wenn niemand ärmer ist alspKunde
.
- Das geschieht, wenn
- Z. 16-19: Alle Elemente von
hilfs
werden wieder aufpQueue
zurückübertragen.
In der Variablen zzz
wird festgehalten, ob pKunde
schon in hilfs
eingefügt wurde.
zzz
heißt deswegen am besten schonEingefuegt
.
Die Methode fügt pKunde
gemäß seinem Einkommen an der richtigen Stelle in pQueue
ein.
Wenn pKunde
ärmer ist als alle in pQueue
, dann wird er hinten angehängt.
Mögliche kurze Lösung
Fachbegriffe sind fett; die Lösung enthält möglichst viele Standardformulierungen.
- Die Methode
tueWas
erwartet die ParameterpQueue
(vom TypQueue
) undpKunde
vom TypKunde
. Die Methode gibt nichts zurück. - Zu Beginn (Z. 2-3) werden die lokalen Variablen
hilfs
undzzz
deklariert;hilfs
wird als leere Queue initialisiert undzzz
mit dem Wertfalse
. - In der
while
-Schleife (Z.4-12) wirdpQueue
nach und nach geleert und hintenhilfs
angehängt.- Wenn dabei
pKunde
ein größeres Einkommen als der vorderste Kunde auspQueue
hat und zusätzlichzzz
nochfalse
ist, dann wirdpKunde
hinten anhilfs
angehängt undzzz
auftrue
gesetzt.
- Wenn dabei
- Z. 13-15: Wenn
zzz
den Wertfalse
hat, dann wirdpKunde
jetzt anhilfs
angehängt; das geschieht, wennpKunde
in derwhile
-Schleife noch nicht anhilfs
angehängt wurde. - Z. 16-19: Alle Elemente von
hilfs
werden wieder aufpQueue
zurückübertragen.
In der Variablen zzz
wird festgehalten, ob pKunde
schon in hilfs
eingefügt wurde.
zzz
heißt deswegen am besten schonEingefuegt
.
Die Methode fügt pKunde
gemäß seinem Einkommen an der richtigen Stelle in pQueue
ein.
Wenn pKunde
ärmer ist als alle in pQueue
, dann wird er hinten angehängt.