How object-oriented programming moves from a single class (SL) to several related classes (HL), what each subtopic covers, and how OOP links to programming, databases and abstract data types.
From the subject guide: what you need to know and be able to do.
Designing classes and objects, and building programs from several classes.
Each one has its own page once something is published for it.
Object-oriented programming (OOP) organises a program around objects, each combining data with the methods that act on that data. Every object is created from a class, a template that fixes which attributes its objects hold and which methods they can perform. The topic covers how to design, write and use one class at SL, and how several classes work together at HL.
Large programs, such as games, banking systems and apps with graphical interfaces, model many kinds of thing at once. Keeping each kind's data and behaviour together in one class makes the code easier to test, reuse and change, because a change inside a class need not affect the code that uses it. OOP also has costs: more planning before coding, and more structure than a short script needs.
The two subtopics move from one class to many. Subtopic B3.1, Fundamentals of OOP for a single class, introduces programming paradigms, classes and objects, constructors, static and instance members, encapsulation with access modifiers, and UML class diagrams. It also explains inheritance and polymorphism as ideas, so that SL students can weigh up the strengths and weaknesses of OOP without writing code for them.

Subtopic B3.2, Fundamentals of OOP for multiple classes, is HL only. It writes the code for inheritance (superclasses, subclasses and calls to the superclass constructor) and polymorphism (method overriding and overloading), then adds abstract classes and interfaces, composition and aggregation between classes, and the singleton, factory and observer design patterns.
The split between the levels falls between the two subtopics, and neither contains statements of the other level.
Subtopic | Level | HL-only statements inside it |
|---|---|---|
B3.1 Fundamentals of OOP for a single class | SL and HL | None |
B3.2 Fundamentals of OOP for multiple classes | HL only | The whole subtopic: inheritance, polymorphism, abstraction, composition and aggregation, and design patterns |
Inheritance and polymorphism therefore appear at both levels in different depth. SL students explain what they are and evaluate them; HL students also construct subclasses, override and overload methods, and trace which version of a method runs. The two course languages differ here: Java enforces access modifiers such as private, while Python relies on naming conventions, and Python has no method overloading.
OOP grows out of topic B2, Programming. A method is a subprogram that belongs to a class, an attribute is a variable that belongs to an object, and modularisation becomes the division of a program into classes. In topic B4 (HL), each abstract data type is built as a class, such as a linked list made of node objects joined by references.
UML class diagrams resemble the entity–relationship diagrams of subtopic A3.2, and many classes map onto database tables. The match is not exact: an entity–relationship diagram has no methods, and a class diagram has no foreign keys.
The official decks for this part of the syllabus.
With a free account, Augment remembers where you stopped and what you have practiced.