• Homework
  • Thirds
  • Upper Thirds
  • Fourth
  • Divisions
    • ICT
    • Computer Science
  • Fifth
  • Lower Sixth
  • Upper Sixth
    • Upper Sixth Theory
  • Blog
  • Careers
  • Unity
  • Networking
computinglesson.com

Encapsulation in Delphi

A note about encapsulation

The idea of encapsulation is literally ‘wrapping things up’

In this case we wrap up the complex workings of our code, the workings that we don’t want to be directly manipulated or read.  Instead we provide an interface to the outside world.  If someone wants to use our code they have to use the interface.

The interface is public, the workings are private and are not visible to anyone but us.  The interface is, in fact, a series of functions that we’ve written to do precisely this job – to translate between incoming requests and the real mechanics of the program.

It’s our responsibility to make sure that the interface works.  Provided that we do that, what we do in the private part is up to us.  This means we can change it without worrying about breaking other people’s work, provided we keep the interface functional – they don’t even have to know.

For example, the Windows operating system includes a public function to create a window on the screen.  That function takes parameters such as the width, height etc.  How exactly windows draws the screen, and even what the resulting window looks like (think of the difference between XP and Vista and Windows 7) we don’t know.  That bit’s private.  What matters is that whenever we call the function, we get a window – as wide and high as we specified.  As a result we shouldn’t need to re-write all of our programs for every new version of Windows.

It’s an important idea -  particularly when we are writing pieces of code that need to co-operate, perhaps in a project or in a shared environment.  It preserves flexibility for the programmer whilst maintaining a reliable and consistent approach to others.

type
   randombar = class
     strict private   // use strict private for usual visibility rules
       flength : integer;
     public
       procedure setlength(value:integer);
       function getlength() : integer;
   end;

// getters and setters


procedure randombar.setlength(value: Integer);
begin
    flength := value;
end;

function randombar.getlength;
begin
    Result := flength;
end;

var
   bar : randombar;

begin
   bar := randombar.create;
   bar.setlength(4);
   writeln(bar.getlength);
   readln;

end.

Powered by Create your own unique website with customizable templates.