The reason I am asking this question is I want to know how to properly call an architecture where classes have either data or logic but not both. I know this goes against object orientation and encapsulation. I want to use the proper terms for discussing this architecture.
EDIT: By reading the answers I have received, I can see my question wasn't clear. I also feel the edit that was made didn't push the question in the direction I was going for.
I will restate the question in other terms.
Suppose you are working in C#, Java or some other OO language.
You have 2 designs:
DESIGN A:
class Car
{
// data
int numberOfWheels;
Engine carEngine;
// methods
public void StartCar();
}
DESIGN B:
class Car
{
// this class contains only data (be it entity, DTO, whatever)
int numberOfWheels;
Engine carEngine;
}
class CarStarter
{
public void StartCar(Car aCar);
}
In DESIGN B, some classes are used as data structures/DTO/entities (they contain only data and should not contain methods). Other classes contains logic and work with the data classes.
Now suppose you have a design/architecture where DESIGN B, should be applied throughout rather than design A.
I was looking either for a term that described DESIGN B, or the OOP term/notion that consist of DESIGN A. Preferably both.
For the OOP term I guess encapsulation could be it. From Wikipedia Encapsulation
A language construct that facilitates the bundling of data with the methods (or other functions) operating on that data.
I still don't know how to call DESIGN B though.
Best Answer
Do you see how many different answers you're getting here?
You know what the conclusion is?
There are no standard, well-known and actually-common names for this kind of thing.
If you want people to understand you, simply call them as they are: data structures and classes (or business rules). If you want to make a clear distinction somewhere, explain it - verbosely.
Sticking to extra-formal terms always seems so unpragmatic to me.