Stack frames and objects (like the Idea Lab activity): Correct Solution


Given the code below, this method call:

Dolri.oshos();

...will eventually reach the point marked HERE. Draw a diagram of the stack and the heap at that point.

(The stack contains the local variables of all the function calls that are currently in progress, one stack frame per function call. The heap contains all of the objects that currently exist.)

In your diagram:

The code:

public class Dolri {
    private int codce;
    private Dolri te;
    private Fidi asae;
    private Dolri miun;
    private Fidi irb;

    Dolri(int codce) {
        this.codce = codce;
    }

    public void setTe(Dolri te) {
        this.te = te;
    }

    public void setAsae(Fidi asae) {
        this.asae = asae;
    }

    public void setMiun(Dolri miun) {
        this.miun = miun;
    }

    public void setIrb(Fidi irb) {
        this.irb = irb;
    }

    public void nelpra(Fidi buon, Fidi ico) {
        Fidi iok = new Fidi(377);
        Dolri peha = new Dolri(240);
    }

    public static void oshos() {
        Fidi hus = new Fidi(485);
        Fidi sko = new Fidi(591);
        new Dolri(694).guats(sko);
        new Fidi(747).efttes(new Fidi(753), sko);
    }

    public void guats(Fidi wo) {
        Dolri.chiss(this, wo, new Fidi(990));
    }

    public static void chiss(Dolri sehe, Fidi dein, Fidi lu) {
        Fidi ea = new Fidi(371);
    }
}
public class Fidi {
    private int peve;

    Fidi(int peve) {
        this.peve = peve;
    }

    public static void caaTerd(Fidi tre, int ero) {
        tre.limi(ero);
    }

    public static void hario() {
        int go = 51;
        int scro = 38;
        int oo = 59;
        int iw = 61;
    }

    public void efttes(Fidi pi, Fidi hise) {
        int mawi = 6;
        Dolri iss = new Dolri(929);
        iss.nelpra(pi, hise);
        Fidi.caaTerd(new Fidi(148), mawi);
        this.brudoc(mawi, this);
    }

    public void limi(int hu) {
        int ath = 17;
        int ulsu = 1;
        int gir = 59;
        this.scros();
        Fidi.hario();
    }

    public void scros() {
        int mef = 28;
        int hesm = 38;
        int hasi = 39;
        HERE;
    }

    public void brudoc(int ecir, Fidi imnu) {
    }
}

Solution

Hints for practicing this puzzle:


Related puzzles: