Jump to content

Data encapsulation

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by BenAveling (talk | contribs) at 10:19, 6 March 2007 (In various languages...). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Most programming languages allow the programmer to encapsulate data. Encapsulation protects data from inappropriate access by other parts of the same program, in order to encourage certain good programing practices.


Example

public class PrivateTest {
    private int x = 10; // we want to protect x
    public int y = 11;  // we don't mind exposing y

    public int getX() {
        return x;
    }
}

public class NoseyNeighbour {
    public int f(PrivateTest p) {
        print(p.x);      // Error, cannot access x
        print(p.getX()); // This is OK
        print(p.y);      // This is OK
        p.y=12;          // Even this is OK.
    }
}

The variable x can not be accessed outside of the class PrivateTest. In other words only an instance of PrivateTest may modify or look at the variable x.

Encapsulation in various languages

In object oriented languages such as C++ and Java, encapsulation is handled through classes and the programmer can choose which variables are public, private, or something in-between. Even non-OO languages such as C support encapsulation, expressed through local variables, visible only to a single function, file-scope variables, visible to all the functions in a given file and global variables, visible throught the entire program. Fortran has a similar mechanism called common blocks which allows different parts of the program to control how much or how little data is shared.