What's the Criteria for Promoting a "Thing" to a Class



I'm an OOAD noob, and I'm thinking that "State" (as in the "S" of the
U.S.A.) qualifies as a class, and should be represented as a Class in
my Class Diagram, with its two properties: name and abbreviation.

Similarly, I think that any type of lookup (in DB ERD terms) should be
modeled as a Class in the class diagram.

My colleague is of the opposite opinion, and thinks that there
shouldn't be classes for these "lookups." I'm not sufficiently
following her logic well enough to represent her viewpoint, but here's
a thread:

her: to me [State] would just be an element of the "conference" class.

me: an element of what type?
her: ah
her: let me think on that for a minute
her: a record type
her: a generic reference table type that has a code and description
her: so, for example, we'll have something similar for ethnicity, i'm
guessing
her: a code and description
her: i wouldn't see an ethnicity class - i would just see that as an
element of target population
her: and it's type would also be the generic record class
me: sounds weird to me, but i'm not enough of an OOAD guru to be
confident of my "weirdness" determination

Can anyone help me settle this matter specifically, and more
importantly, settle the general matter of what gets modeled as a class
and what doesn't?

Thanks!
Jamie

.