Option+D+OOP

**SL **
**D.1 Objects as a programming concept (6 hours)** The paradigm of object-oriented programming should be introduced through discussion and example.

D.1.1 Outline the general nature of an object D.1.2 Distinguish between an object (definition, template or class) and instantiation D.1.3 Construct unified modelling language (UML) diagrams to represent object designs D.1.4 Interpret UML diagrams D.1.5 Describe the process of decomposition into several related objects D.1.6 Describe the relationships between objects for a given problem D.1.7 Outline the need to reduce dependencies between objects in a given problem D.1.8 Construct related objects for a given problem D.1.9 Explain the need for different data types to represent data items D.1.10 Describe how data items can be passed to and from actions as parameters

D.2 Features of OOP (4 hours)
Students should be able to describe the features of OOP that distinguish it from other approaches to computer programming.

D.2.1 Define the term encapsulation D.2.2 Define the term inheritance D.2.3 Define the term polymorphism D.2.4 Explain the advantages of encapsulation D.2.5 Explain the advantages of inheritance D.2.6 Explain the advantages of polymorphism D.2.7 Describe the advantages of libraries of objects D.2.8 Describe the disadvantages of OOP D.2.9 Discuss the use of programming teams D.2.10 Explain the advantages of modularity in program development

D.3 Program development (20 hours)
D.3.1 Define the terms: class, identifier, primitive, instance variable, parameter variable, local variable. D.3.2 Define the terms: private, protected, public, extends, static. D.3.3 Describe the uses of the primitive data types and the reference class string. D.3.4 Construct code to implement assessment statements D.3.1–D.3.4. D.3.5 Construct code examples related to selection statements D.3.6 Construct code examples related to repetition statements. D.3.7 Construct code examples related to static arrays. D.3.8 Discuss the features of modern programming languages that enable internationalization. D.3.9 Discuss the ethical and moral obligations of programmers

HL Extension
**D.4 Advanced program development (15 hours)** D.4.1 Define the term recursion. D.4.2 Describe the application of recursive algorithms D.4.3 Construct algorithms that use recursion. D.4.4 Trace recursive algorithms D.4.5 Define the term object reference. D.4.6 Construct algorithms that use reference mechanisms. D.4.7 Identify the features of the abstract data type (ADT) list. D.4.8 Describe applications of lists. D.4.9 Construct algorithms using a static implementation of a list. D.4.10 Construct list algorithms using object references. D.4.11 Construct algorithms using the standard library collections included in JETS. D.4.12 Trace algorithms using the implementations described in assessment statements D.4.9–D.4.11. D.4.13 Explain the advantages of using library collections. D.4.14 Outline the features of ADT’s stack, queue and binary tree. D.4.15 Explain the importance of style and naming conventions in code.