object PersonRecord components: Name and Age and Address and Office; description: (* The PersonRecord class contains components that are common to all personnel in the database. *); end PersonRecord; object StaffEmployee extends PersonRecord components: HourlyWage and EmploymentStatus; where: Office=none; operations: ; description: (* A StaffEmployee is distinguished by HourlyWage and EmploymentStatus components. *); end StaffEmployee; object SalariedEmployee extends PersonRecord components: Salary and Step; end SalariedEmployee; object Programmer extends SalariedEmployee components: Office: SharedOffice; description: (* A Programmer is now just an extends SalariedEmployee, from which in inherits Salary and Step components. *); end Programmer; object Manager extends SalariedEmployee components: Supervisees; description: (* A Manager inherits Supervisees components. *); end Manager; object SharedOffice components: OfficeNumber and Desk*; end SharedOffice; object PrivateOffice components: OfficeNumber and Desk and Window; end PrivateOffice;