What is encapsulation?

  • Encapsulation refers to the practice of grouping data (attributes) and methods (functions) within a class
  • Using encapsulation ensures that data remains secure and is not accidentally modified or misused by controlling access to them using access modifiers (e.g., public, private)
  • It also helps to organise code by keeping related data and methods together within an object
  • Encapsulation promotes code reusability, which means the same object or class can be used in different parts of a program without rewriting the code
  • Encapsulation uses a concept called “Abstraction” which reduces complexity by hiding the implementation details of the object, making it easier to understand and work with
  • Programmers can use methods and classes from other parts of the program without having to understand how that it has been constructed internally

Encapsulation in classes

  • Private variables are only accessible within the class itself, and external code cannot access them directly.
  • Encapsulation hides how things work inside a class from the outside. External code can interact with the class using public methods without needing to understand its internal details

Encapsulation in classes Encapsulation in classes

Encapsulation in methods

Encapsulation in methods Encapsulation in methods

Examiner Tips and Tricks

  • When determining whether a method or attribute is public or private, if neither keyword appears, then assume it is public

Worked Example

A taxi firm is investigating replacing its drivers with self-driving cars.

The code for the self-driving system has been written using an object-oriented programming language.

It recognises obstacles in the road and then classifies them.

The class for Obstacle is shown below.

public class Obstacle
   private moving //Boolean value
   private distance //Real number given in metres
   private direction //Integer given as between 1 and 360 degrees

   public procedure new(givenMoving, givenDistance, givenDirection)
      moving = givenMoving
      distance = givenDistance
      direction = givenDirection
   endprocedure

   public procedure updateDistance(givenDistance)
      distance = givenDistance
   endprocedure
endclass

Describe an example of encapsulation in the class definition code above.

[2]

How to answer the question:

  • Stating that distance is set to private [1 mark]
  • To update the value the method updateDistance must be used [1 mark]

Answer:

Example answer that gets full marks: An example of encapsulation in the class definition code above is demonstrated through the attribute “distance” being declared as private. [1].

The “updateDistance()” method serves as a public interface to modify the “distance” attribute. [1]