| Date | November 2017 | Marks available | 6 | Reference code | 17N.2.SL.TZ0.12 |
| Level | SL | Paper | 2 | Time zone | no time zone |
| Command term | Describe | Question number | 12 | Adapted from | N/A |
Question
Construct a diagram showing the relationships between the Payment, FoodItem, DrinkItem, and Item classes. You do not need to include the names of attributes or methods.
By making reference to any of the classes from 12(a), describe two benefits that a programming team would gain from the use of encapsulation.
The company that owns this restaurant also owns hotels, shops, and a car hire business. The programs that manage the finances of these different businesses include classes similar to the ones shown in this paper.
Explain how inheritance could be used as a tool to both improve the clarity of the design and to reduce the amount of code that needs to be written.
Markscheme
Award marks as follows, up to [3 max].
Award [1] for 4 classes connected with arrows/lines.
Award [1] for “has a” label or correct arrow from Payment to FoodItem and “has a” label or correct arrow from Payment to DrinkItem (with no additional arrows).
Award [1] for “uses” label or correct arrow going from Payment to Item (with no additional arrows).
Award [1] for identifying a feature, [1] for an example in the given context, and [1] for an elaboration, for two features up to [6 max].
Encapsulation places all attributes and methods that relate to a particular object/entity together;
For example, Payment class includes attributes such as the food and drink arrays and methods such as calculateBill();
This provides a clearer view/understanding of each section of the problem;
Which can lead to more efficient programming (faster, less errors etc.);
Encapsulation protects the values of the data stored within the object;
From (accidental) changes made by other classes;
For example, quantity in the FoodItem class cannot be altered through another variable called quantity in another class;
This allows programmers to select any variable names they wish/no restriction on choice of variable names;
Award up to [4 max].
A generic Payment class can be created;
This would contain data/variables/methods required by all units of the company;
Each of the different operations could then inherit this class;
Adding new variables/methods that relate only to them;
Overriding the superclass methods as necessary;
Note: Allow a similar answer that deals with the different items (FoodItem, DrinkItem etc.).
