Hallo,
ich soll so eine Art Objektbehälter programmieren. Das habe ich auch gemacht und würde gerne wissen, ob alles soweit richtig ist.
1. In der Musterlösung ist die tatsächliche Menge der Objekte nicht als private Objektvariable enthalten.
2. Was macht dieses return in der remove Methode?
3. Warum kann ich tmp an behaelter zuweisen, obwohl behaelter kleiner als tmp ist?
4. Stimmt mein Code soweit (ist ähnlich, wie in der Musterlösung)?
ich soll so eine Art Objektbehälter programmieren. Das habe ich auch gemacht und würde gerne wissen, ob alles soweit richtig ist.
Java:
public class Bag {
private int kapazitaet = 1;
private int kardinalitaet;
Object[] behaelter;
public Bag() {
behaelter = new Object[kapazitaet];
}
public Bag(int n) { // Oberen Konstruktor aufrufen? Nein
if(n<1) n=1;
this.kapazitaet = n;
behaelter = new Object[kapazitaet];
}
public void add(Object o) {
if (o != null) {
if (kapazitaet == kardinalitaet) {
Object[] tmp = new Object[2 * kapazitaet];
for (int i = 0; i < kardinalitaet; i++) {
tmp[i] = behaelter[i];
}
behaelter=tmp;
behaelter[kardinalitaet] = o;
kardinalitaet++;
}
}
}
public int find(Object o) {
for (int i = 0; i < kardinalitaet; i++) {
if (o.equals(behaelter[i]))
return i + 1;
}
return 0;
}
public int size() {
return kardinalitaet;
}
public Object elem(int i) {
if (i > 0 && i <= kardinalitaet)
return behaelter[i - 1];
else
return null;
}
public void remove(Object o) {
int i=find(o);
if(i==0) return; //Was macht dieses return?
behaelter[i-1]=behaelter[kardinalitaet];
behaelter[kardinalitaet]=null; //Nicht nötig
kardinalitaet--;
}
}
1. In der Musterlösung ist die tatsächliche Menge der Objekte nicht als private Objektvariable enthalten.
2. Was macht dieses return in der remove Methode?
3. Warum kann ich tmp an behaelter zuweisen, obwohl behaelter kleiner als tmp ist?
4. Stimmt mein Code soweit (ist ähnlich, wie in der Musterlösung)?