When I moved to OO from 2GL choose my objects as follows:
Each screen or database table got a class.
But it still reeks of the heavily normalized 2GL that I learned in the 80s.
E.G
I have classes for Persons, Users, Roles, Features, RoleFeatures, UserRoles, Passengers, Routes, Stages, RouteStages, Tickets, RouteTickets and so on.
In a proper OO world the Person can sit at the top of a tree, Passenger and User can inherit from it as they have the "Is a" criterium. But User also needs to draw from roles who inherit from Features.
Similarly the RouteStage class draws inherits aspects from both Route and Stage, and thats before we factor in Ticket Attributes.
Then for good measure Passenger and Ticket 'collide' when the user makes a purchase.
I am reading up on Interfaces - is this the path to take or is this a classic case of its not broken... ???