User interface language: English | Español

Date May 2019 Marks available 2 Reference code 19M.2.SL.TZ0.11
Level SL Paper 2 Time zone no time zone
Command term Outline Question number 11 Adapted from N/A

Question

A generic Event class is defined as follows:

class Event
{
private String eventID;
private int numberOfRaces;
private Race[] races;
private Race finals;

public
Event(String ID, int numberOfRaces)
{
eventID = ID;
races = new Race[numberOfRaces];
for(int i = 0; i < numberOfRaces; i++)
{
races[i] = new Race();
}
finals = new Race();
}

public void
addSwimmers()
{
// fills the qualifying heats with swimmers
}

public void
fillFinals()
{
// fills the finals race with the best 8 from the qualifying heats
}
// more methods()
}

The Event class above assumes that the event has more than 8 swimmers and requires qualifying heats. However, an event with less than 9 swimmers has no qualifying heats, so the original Event class was inherited by a new class FinalsOnlyEvent.

The same method identifier addSwimmers is used in both classes Race and Event.

Explain why this does not cause a conflict.

[3]
a.

Outline two advantages of the OOP feature “inheritance”.

[4]
b.

Outline how method overriding can help to create the new class FinalsOnlyEvent.

[2]
c.

Markscheme

Award [3 max].
Each method is defined within its own class.
Each method is called within an object of that class.
Therefore the compiler knows which method to use.

a.

Award [4 max].
Award [1] for an advantage and [1] for an elaboration up to [2 max].
Mark as [2] and [2].

It promotes code reuse;
Because the parent object holds common data and action;

It reduces maintenance overhead;
Because you only have to update the parent;

b.

Award [2 max].
Award [1] for a clear understanding of method overriding and [1] for relating it to this situation up to [2 max].

Method overriding redefines/replaces a method from the inherited class;
The constructor could only instantiate the finals object;
The method addSwimmers() could fill finals directly;
The method fillFinals() could do nothing;

c.

Examiners report

Many candidates wanted this to be about polymorphism and overriding, but the two occurrences of this methods were quite simply in different classes and would be called and distinguished between by their respective objects.

a.

A variety of reasons were accepted with most candidates going for code-reuse and the extensibility features.

b.

This wasn't well-answered, probably because candidates were unsure of the exact structure of the FinalsOnlyEvent class.

c.

Syllabus sections

Option D: Object-oriented programming » D.2 Features of OOP
Option D: Object-oriented programming

View options