oopencapsulationabstraction

# difference between encapsulation and abstraction concepts

Can somebody explain to me the main differences between the principles of encapsulation and abstraction in objected-oriented programming (if possible with examples).

Solution

• Sample:

``````// NO ABSTRACTION, NO ENCAPSULATION
const int catLegs = 4;
const int spiderLegs = 8;

Leg[] catLegs;
Leg[] spiderLegs;

void MakeCatRun(Distance b) { for (int i=0; i<catLegs; ++i) catLegs[i] += b; }
void MakeSpiderRun(Distance b) { for (int i=0; i<spiderLegs; ++i) spiderLegs[i] += b; }
``````

Encapsulation:

``````// ENCAPSULATION
class Cat
{
Leg[] legs;
int nLegs;

public void Run(Distance b) { for (int i=0; i < nLegs; ++i) leg[i] += b; }
}

class Spider
{
Leg[] legs;
int nLegs;

public void Run(Distance b) { for (int i=0; i < nLegs; ++i) leg[i] += b; }
}
``````

Abstraction:

`````` // ABSTRACTION
class LivingBeing
{
Leg[] legs;
int nLegs;

public void Run(Distance b) { for (int i=0; i < nLegs; ++i) leg[i] += b; }
}

class Cat: LivingBeing       {        }

class Spider: LivingBeing   {    }
``````