1 | Specify simple abstract data types and design implementations, using abstraction functions to document them. |
2 | Recognise features of object-oriented design such as encapsulation, polymorphism, inheritance, and composition of systems based on object identity. |
3 | Name and apply some common object-oriented design patterns and give examples of their use. |
4 | Design applications with an event-driven graphical user interface. |