imperative, OO / Java
Representation
Collected by Matthias Hauswirth — Own practice
Makes explicit the notion of a stack frame (activation record), that groups together all the temporary variables needed during a method execution.
PL | NM |
---|---|
stack | one side of the drawing (labeled stack), containing zero or more stacked 'stack frame' rectangles |
stack frame | grey rectangle, with method name, containing local variables and parameters of the method |
local variable | box inside stack frame, with name, type, value |
parameter | box inside stack frame, with name, type, value |
A method's state (variables that have a lifetime as long as the execution of the method).
Introducing the concept of methods, and method calls.
Straightforward; just draw a rectangle around some variables.
We use this notional machine in instruction as well as assessments (e.g., clicker questions, mastery checks, exams). For instruction, the instructor draws the representation. For assessment, the student draws the representation.
The name of this notional machine is inspired by two of the three regions that make up the memory of the runtime environment of imperative programming languages:
The third area, “globals”, could be added to the diagram, but it is less important when using an object-oriented style where static members are less prevalent.
While we primarily use this notional machine for Java, it could easily be adapted for other imperative object-oriented programming languages, such as C# or Python.
The notation for this notional machine is based on how the BlueJ IDE represents objects, with a few differences:
final
variables.The Informa Clicker tool, a software-based classroom response system, provides a question type with an integrated editor for stack and heap diagrams.
Davide Ciulla developed a prototype of a web based stack and heap diagram editor:
Do you have feedback on this notional machine? Did you find a mistake, or do you have a request for improvement? You can create an Issue on GitHub, where the description is hosted. This way we can see your feedback and address it.
For this, you need a GitHub account. Then follow this link to see the source file of this page. In there, click the ... left of the highlighted line, then pick "Reference in a new issue".