Object-Oriented Type Systems Classes Subtyping and Inheritance