Follow the DESIGN RECIPE for data definitions:
Is the information simple enough to be represented by a primitive data type?
Are there several pieces of information that represent one entity? — if yes, design a class of data with a field for each piece of information.
Is any of the fields itself a complex piece of data? — if yes, deal with designing classes for that field as a separate task.
Are there several variants of data that should be known by a common name? — if yes, define an interface and have each variant implement this interface.
Make sure you write down a comment explaining what each class of data (or each interface) represents.
Make sure you make examples of every class you design.
Design the following methods for the classes that represent pets:
Method weighsLessThan that determines whether the pet weighs less than the given weight limit for flying in the passenger cabin of an airplane. (Each airline has their own limit.)
Method sameOwner that tells us whether the owner of the pet is the given person. Do this for first two variants of the Pet class.
Method changeOwner that produces a new Pet same as the original one, but with the owner changed to the given one. Do this for first two variants of the Pet class.