Interfaces Should Reveal Intention
Kristen Nygaard, father of object oriented programming and the Simula programming language focused in his lectures on how to use objects to model the behavior of the real world and on how objects interacted to get a piece of work done. His favorite example was Cafe Objecta, where waiter objects served the need of hungry customer objects by allocating seating at table objects and interchanging menu and order objects to fulfill each others needs.
In this type of model we will find a restaurant object with a public interface methods such as
reserveTable(numberOfSeats,customer,timePoint), availableTables(numberOfSeats,timePoint), object interfaces reviling each objects intent and responsibility in terms of the domain of a restaurant. So, where are the setters and getters so often found dominating our object models?
To be continued