Aufgabe 1.
public class ErwWarteschlange extends WarteschlangeListe { public int anzahl() { Knoten kn = juengster; int anz = 0; while (kn != null) { anz++; kn = kn.verbindung; } return anz; } }
Aufgabe 2:
public class FarbmengeMitSicherung { private FarbmengeImpl sicherung, menge = new FarbmengeImpl(); public void eintragen(Farbe farbe) { sicherung = (FarbmengeImpl)menge.clone(); menge.eintragen(farbe); } public void entfernen(Farbe farbe) { sicherung = (FarbmengeImpl)menge.clone(); menge.entfernen(farbe); } public boolean vorhanden(Farbe farbe) { return menge.vorhanden(farbe); } public void wiederherstellen() { menge = sicherung; } // boolean-Ergebnis kann besagen, ob wiederherstellen möglich war
Aufgabe 3:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class DreiBeschriftungen extends JApplet { private JButton knopf = new JButton("Click!"); private JLabel l1 = new JLabel("0"), l2 = new JLabel("A"), l3 = new JLabel("Color"); private int zaehler = 0; private char buchstabe = 'A';
public void init() { Container grundflaeche = getContentPane(); grundflaeche.setLayout(new FlowLayout()); grundflaeche.add(knopf); grundflaeche.add(l1); grundflaeche.add(l2); grundflaeche.add(l3); knopf.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ereignis) { zaehler++; l1.setText("" + zaehler); if (buchstabe == 'Z') buchstabe = 'A'; else buchstabe++; l2.setText("" + buchstabe); l3.setBackground(zaehler % 2 == 0 ? Color.red : Color.green); } }); } }
Aufgabe 4:
· Von einer Klasse kann ein Objekt nur dann erzeugt werden, wenn sie einen (impliziten oder expliziten) public-Konstruktor enthält.
Falsch: In der Klasse selbst oder in einer Unterklasse können Objekte auch ohne public-Konstruktor erzeugt werden
· In Java werden Parameterobjekte immer „call by reference“ übergeben, während in C++ nur, wenn der Programmierer dies explizit angibt.
Richtig: & in C++.
· C++-Objekte sind typischerweise größer als Java-Objekte. In Java werden dafür typischerweise mehr Objekte erzeugt.
Richtig: In C++ gibt es eingebettete Objekte.
· C++-Klassen können Operatoren enthalten, während Java-Klassen nie.
Falsch: String in Java enthält den Operator +
· Das dynamische Binden findet in Java zur Laufzeit, in C++ vor der Laufzeit statt.
Falsch: Ein .dll wird auch in C++ dynamisch gebunden
· Ein new-Aufruf in einem Destruktor produziert immer eine Speicherleiche.
Falsch: Nicht, wenn das Objekt anschließend mit delete gelöscht wird.
· Aus einem Sack können enthaltene Elemente in beliebiger Reihenfolge entfernt werden, während aus einem Stapel nicht.
Richtig: Sack.entfernen() hat einen Parameter, Stapel.entfernen() hat keinen Parameter
· Der Zugriff auf das length-te Element einer Reihung löst immer eine Ausnahme aus.
Richtig: in Java – Reihungen werden ab 0 indiziert
Falsch: in C++ – Reihungszugriffe lösen keine Ausnahmen aus.