Quelltextanalyse Java: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
[[Kategorie:Informatik]]
[[Kategorie:Informatik]]
[[Kategorie:Informatik-Abitur]]
[[Kategorie:Informatik-Abitur]]
<font color = "red">'''Diese Seite ist für Abitur 17 (und folgende) angepasst.'''</font>


'''Ziel''' der Quelltextanalyse ist es, die Funktionsweise einer Methode mithilfe geeigneter <u>Fachbegriffe</u> möglichst <u>kurz</u> und <u>präzise</u> zu beschreiben. Dabei sind <u>Standardformulierungen</u> hilfreich.
'''Ziel''' der Quelltextanalyse ist es, die Funktionsweise einer Methode mithilfe geeigneter <u>Fachbegriffe</u> möglichst <u>kurz</u> und <u>präzise</u> zu beschreiben. Dabei sind <u>Standardformulierungen</u> hilfreich.

Version vom 3. April 2022, 15:20 Uhr


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 Parameter pQueue (vom Typ Queue) und pKunde vom Typ Kunde. Die Methode gibt nichts zurück.
  • Z. 02-03: Die lokalen Variablen hilfs (vom Typ Queue von Kunde-Objekten) und zzz (vom Typ boolean) werden deklariert; hilfs wird als leere Queue initialisiert und zzz mit dem Wert false.
  • Z. 04-12: Eine while-Schleife wird geöffnet, die so lange läuft, wie pQueue noch Elemente enthält. Innerhalb der Schleife passiert folgendes:
    • Z. 05: Das vorderste Element von pQueue wird in der lokalen Variable erster (vom Typ Kunde) gespeichert.
    • Z. 06-09: Wenn zzz den Wert false hat und das Guthaben von pKunde größer ist als das Guthaben von erster, dann passiert folgendes:
      • pKunde wird hinten an hilfs angehängt.
      • zzz wird auf true gesetzt.
    • Z. 10-11: erster wird von pQueue gelöscht und hinten an hilfs angehängt.
  • Z. 13-15: Wenn zzz den Wert false hat, dann wird pKunde an hilfs angehängt.
    • Das geschieht, wenn pKunde in der while-Schleife noch nicht an hilfs angehängt wurde; so wird gewährleistet, dass pKunde auf jeden Fall an hilfs angehängt wird, auch wenn niemand ärmer ist als pKunde.
  • Z. 16-19: Alle Elemente von hilfs werden wieder auf pQueue 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 Parameter pQueue (vom Typ Queue) und pKunde vom Typ Kunde. Die Methode gibt nichts zurück.
  • Zu Beginn (Z. 2-3) werden die lokalen Variablen hilfs und zzz deklariert; hilfs wird als leere Queue initialisiert und zzz mit dem Wert false.
  • In der while-Schleife (Z.4-12) wird pQueue nach und nach geleert und hinten hilfs angehängt.
    • Wenn dabei pKunde ein größeres Einkommen als der vorderste Kunde aus pQueue hat und zusätzlich zzz noch false ist, dann wird pKunde an hilfs hinten angehängt und zzz auf true gesetzt.
  • Z. 13-15: Wenn zzz den Wert false hat, dann wird pKunde jetzt an hilfs hinten angehängt; das geschieht, wenn pKunde in der while-Schleife noch nicht an hilfs angehängt wurde.
  • Z. 16-19: Alle Elemente von hilfs werden wieder auf pQueue 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.