Re:Alan Kay on the Meaning of “Object-Oriented Programming” ...
by derefr on Sunday November 30, 2014 @11:48PM
(#8679549)
Something like...
Person HAS A IEmploymentRelationship
ContractEmployment IMPLEMENTS IEmploymentRelationship
FullTimeEmployment IMPLEMENTS IEmploymentRelationship
FullTimeEmployment HAS A IDirectReport
Manager HAS A Person
Manager IMPLEMENTS IDirectReport
And then salary() is a polymorphic function declared by the IEmploymentRelationship interface, where FullTimeEmployment instances use the manager somehow, and ContractEmployment doesn't.You can even put some sugar on that by having a salary() function on Person that calls the salary() function on its IEmploymentRelationship—but I wouldn't, for the same reason I wouldn't denormalize a relational database.
Re:Alan Kay on the Meaning of “Object-Oriented Programming” ...
by thewarrior on Monday December 01, 2014 @12:04AM
(#8679592)
Got it. Thank you.
Person --> Full Time Employee --> Manager
Person --> Contract Employee
Without inheritance assuming that salary calculation is the only thing which differentiates them.