It may be simplistic, but I find people try to model the problem in oo terms, and when designing the code they keep the same model.
Something like if there are persons and cars you make two classes, Person and Car, and use them in code almost unchanged, but they are _problem_ entities, not necessarily code entities. In code it may be simpler to just use maps of some sort.