This question is related to How should an `Employee` class be designed?
In the above question, to uniquely identify an employee, each Employee object has an id field as shown below
class Employee
{
private int id // id is given by the database
// Employee data (let's say, dozens of properties).
//methods.....
}
The id of an employee object is given by the database.
So if I use the object for describing a new employee, there will be no id to store yet. But an object representing an existing employee will have an id. So I have a property that sometimes describes the object and sometimes doesn't.
Also, id = null makes the Employee object's state invalid but
[A] properly encapsulated object cannot be brought into an invalid state via the public interface [...]
https://softwareengineering.stackexchange.com/a/258281/234665
Does this design violate encapsulation because id = null at the start?