1
edit
Changes
→The Big Picture: Update
= The Big Picture =
This assignment is about creating a basic commandline GUI system. It is meant to show the student how OOP can be used effectively to create design a system. The basic setup for this system are the 6 classes iFrame, CFrame, CField, CLabel, CLine, CButton and the supplemental class CDialog provided already implemented as a part of the spec. Let's look at the role of each of these. == iFrame ==iFrame is an interface class that describes a widget that has a frame. We can easily spot interface classes by looking for the "i" at the beginning of their name. A widget is basically a window component such as a label, a button, a field, or even a full window. Since it is an interface, iFrame's job is to declare a set of functionality that every framed object can publicly perform. We call this type of design '''design by contract''' because we can think of any class inheriting from iFrame to be '''contractually obligated to fulfill what iFrame has promised'''. In this case, iFrame declares that any object instanced from a class derived from iFrame can draw itself, hide itself, and move. == CFrame ==CFrame is iFrame's child and implements iFrame's core responsibilities. The "C" in CFrame stands for "concrete" (even though it is technically abstract! More on this later).