Octave is principally a batch or command-line language. However, it does offer some limited features for constructing graphical interfaces for interacting with users.
The GUI elements available are I/O dialogs and a progress bar. For example, rather than hardcoding a filename for output results a script can open a dialog box and allow the user to choose a file. Similarly, if a calculation is expected to take a long time a script can display a progress bar.
Several utility functions make it possible to store private data for use with a GUI which will not pollute the user's variable space.
Finally, a program written in Octave might want to have long term storage of preferences or state variables. This can be done with user-defined preferences.