The concept of attribute and property raises many questions for those working with object-oriented programming, because conceptually they would be equal to one another.
According to Fowler (2005), a property is a structural characteristic of a class, i.e, it effectively determines what the object is. But the other attribute can also represent what the class can do.
To make it clear to understand, let’s go to a practical example: the class ’employee’ has the property ‘name’ and the attribute ‘card’, which is represented in this case by a second class that saves the employee’s card information.
$ Name = “”;
$ Card = new Card();
The property ‘Name’ is represented by a string, as the ‘Card’ attribute is represented by an object and that’s the main difference between them.
Whenever a piece of information is handled in a straightforward manner, for example, an integer value or string, it may be considered as a property. However, when it is represented by an object that has properties, attributes and methods, then it will be treated as an attribute.
This difference sometimes subtle, goes unnoticed in many analyzes. When performing the description of a process, it is necessary to assess whether the nomenclature used is correct, within the common knowledge of the team.
Finally, we can say that the property identifies the characteristics that determine what actually is the object, and the attribute can define what it is and also its features, which in turn are inherited from a secondary object that rules that attribute.