Many add / change methods and the constructor overloads the consequences of DDD?
No, many upgrade methods are not a consequence of DDD.
code
Your Person class can be rewritten to have only 2 update methods:
class Person public function Rename(FirstName as Name, LastName as Name) as Person public function ChangeContacts( Address as Maybe(of Address), Phone as Maybe(of Phone), Mail as Maybe(of MailAddress)) as Person end class
Rename method accepts two required parameters of the special type Name . Name verification checks occur when names are created, and not when they are passed to the Person class.
ChangeContacts method accepts three optional parameters, any of which may be absent. The special Maybe type indicates that they are optional. The special types Address , Phone and MailAddress indicate that these parameters are already valid and there is no need to check them again in the Person class.
Use case
A person marries and changes his last name
Person = Person. Rename(Person.FirstName, LastNameAfterMarriage)
User buys a new phone number
Person = Person. ChangeContacts(Person.Address, NewPhoneNumber, Person.Mail)
Personal telephone number
Dim NewPhoneNumber = Maybe.Create(Nothing) Person = Person. ChangeContacts(Person.Address, NewPhoneNumber, Person.Mail)
The template should call the update method with the old values ββ+ some new values.