+ All Categories
Home > Documents > Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to...

Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to...

Date post: 17-Mar-2018
Category:
Upload: donhi
View: 230 times
Download: 0 times
Share this document with a friend
42
9 Object-Oriented Programming: Inheritance OBJECTIVES In this chapter you will learn: How inheritance promotes software reusability. The notions of superclasses and subclasses. To use keyword extends to create a class that inherits attributes and behaviors from another class. To use access modifier protected to give subclass methods access to superclass members. To access superclass members with super. How constructors are used in inheritance hierarchies. The methods of class Object, the direct or indirect superclass of all classes in Java.
Transcript
Page 1: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

9Object-Oriented Programming: Inheritance

O B J E C T I V E SIn this chapter you will learn:

■ How inheritance promotes software reusability.

■ The notions of superclasses and subclasses.

■ To use keyword extends to create a class that inherits attributes and behaviors from another class.

■ To use access modifier protected to give subclass methods access to superclass members.

■ To access superclass members with super.

■ How constructors are used in inheritance hierarchies.

■ The methods of class Object, the direct or indirect superclass of all classes in Java.

Page 2: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 3: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Chapter 9 Object-Oriented Programming: Inheritance 3

Name: Date:

Section:

Assignment Checklist

Exercises Assigned: Circle assignments Date Due

Prelab Activities

Matching YES NO

Fill in the Blank 12, 13, 14, 15, 16, 17, 18, 19, 20,21

Short Answer 22, 23, 24, 25, 26

Correct the Code 27, 28, 29

Lab Exercise

Exercise 1 — Employee Hierarchy YES NO

Follow-Up Question and Activity 1

Postlab Activities

Coding Exercises 1, 2, 3

Programming Challenge 1

Page 4: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 5: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Chapter 9 Object-Oriented Programming: Inheritance 5

Prelab Activities

Name: Date:

Section:

Matching

After reading Chapter 9 of Java How to Program: 8/e, answer the given questions. The questions are intended totest and reinforce your understanding of key concepts. You may answer the questions before or during the lab.

For each term in the left column, write the letter for the description from the right column that best matches theterm.

Term Description

D

K

G

J

H

C

A

I

B

F

E

1. extends

2. Object class

3. class hierarchy

4. protected

5. inheritance

6. super

7. direct superclass

8. brittle software

9. override

10. clone method

11. indirect superclass

a) A subclass’s immediate superclass extends.

b) Term used to describe the case when a subclass method is de-fined with the same signature as a superclass method.

c) Keyword used to refer to an object’s superclass members.

d) Indicates that a subclass will inherit from a particular superclass.

e) A class that a subclass does not directly extend; however, the sub-class still has an is-a relationship with the class.

f) A protected method that takes no arguments. It returns a copyof the object on which it is called.

g) A set of classes related by inheritance.

h) Is-a relationship.

i) A small change in the superclass can “break” subclass implemen-tations.

j) Such members can be accessed in the class in which they are de-fined, and in all subclasses of that class.

k) Superclass of all Java classes.

Page 6: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 7: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Fill in the Blank

Chapter 9 Object-Oriented Programming: Inheritance 7

Name: Date:

Section:

Fill in the Blank

Fill in the blanks for each of the following statements:

12. A subclass can explicitly invoke a constructor of its superclass by using the superclass constructor call syn-tax—keyword super followed by a set of parentheses containing the superclass constructor’s arguments.

13. Every object of a subclass is also an object of that class’s superclass . However, a superclass object is notan object of any of its subclasses .

14. In a(n) has-a relationship, an object has a reference to an object of another class as a member.

15. In a(n) is-a relationship, an object of a subclass type may also be treated as an object of the superclass type.

16. Some day, most new software likely will be constructed from standardized reusable components , just asautomobiles and most computer hardware are constructed today.

17. A subclass cannot directly access private members of its superclass.

18. The direct superclass of a subclass is the superclass from which the subclass inherits.

19. With single inheritance, a class is derived from one superclass. Java does not support multiple inheritance.

20. A subclass inherits the members of its superclass that are declared with the access specifiers public andprotected .

21. The toString method of class Object is normally overridden by a subclass.

Page 8: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 9: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Short Answer

Chapter 9 Object-Oriented Programming: Inheritance 9

Name: Date:

Section:

Short Answer

In the space provided, answer each of the given questions. Your answers should be concise; aim for two or threesentences.

22. How does inheritance promote software reusability?

Inheritance enables programmers to create new classes from existing classes by absorbing their attributes and be-haviors, and adding capabilities the new classes require. Inheritance also takes advantage of class relationshipswhere objects of a certain class have the same characteristics.

23. Explain protected member access.

The protected members of a class are accessible to the class in which they are defined, all subclasses of that classand other classes that are part of the same package.

24. Explain the difference between composition (i.e., the has-a relationship) and inheritance (i.e., the is-a rela-tionship).

With inheritance, a class inherits attributes and behaviors from another class. All objects of the new class can betreated as their own type and as their direct and indirect superclass types. With composition, a new class is com-posed of objects of existing classes. In this relationship, the new class normally cannot be treated as an object ofany of its component classes.

25. When an object of a subclass is created, the constructor for that subclass object is invoked to initialize thesubclass object. Explain the complete details of initializing an object of class BasePlusCommissionEmployeewith six arguments. Assume the CommissionEmployee-BasePlusCommissionEmployee hierarchy discussed inthis chapter.

When a program creates a BasePlusCommissionEmployee object, the BasePlusCommissionEmployee constructoris called. That constructor calls CommissionEmployee’s constructor, which in turn calls Object’s constructor.Class Object’s constructor has an empty body, so it immediately returns control to CommissionEmployee’s con-structor, which then sets the values of the first name, last name, social security number, gross sales and commis-sion rate. When CommissionEmployee’s constructor completes execution, it returns control toBasePlusCommissionEmployee’s constructor, which sets the base salary.

26. Explain how to invoke a superclass method from a subclass method for the case in which the subclass methodoverrides a superclass method and the case in which the subclass method does not override a superclassmethod.

In the case where the subclass method overrides the superclass method, it is necessary to explicitly use the key-word super, to invoke the method of the superclass. When the subclass method does not override the superclassmethod, the superclass method can be invoked simply by using its name and appropriate arguments.

Page 10: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 11: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Correct the Code

Chapter 9 Object-Oriented Programming: Inheritance 11

Name: Date:

Section:

Correct the Code

Determine if there is an error in each of the following program segments. If there is an error, specify whether itis a logic error or a compilation error, circle the error in the program and write the corrected code in the spaceprovided after each problem. If the code does not contain an error, write “no error.” [Note: There may be morethan one error in a program segment.]

For questions 27–29 assume the definitions of classes CommissionEmployee and BasePlusCommissionEmployee inFig. L 9.1 and Fig. L 9.2.

1 // Fig. 9.15: CommissionEmployee.java2 // CommissionEmployee class represents a commission employee.34 public class CommissionEmployee5 {6 private String firstName;7 private String lastName;8 private String socialSecurityNumber;9 private double grossSales; // gross weekly sales

10 private double commissionRate; // commission percentage1112 // five-argument constructor13 public CommissionEmployee( String first, String last, String ssn, 14 double sales, double rate )15 {16 // implicit call to Object constructor occurs here17 firstName = first;18 lastName = last;19 socialSecurityNumber = ssn;20 setGrossSales( sales ); // validate and store gross sales21 setCommissionRate( rate ); // validate and store commission rate2223 System.out.printf( 24 "\nCommissionEmployee constructor:\n%s\n", this );25 } // end five-argument CommissionEmployee constructor2627 // set first name28 public void setFirstName( String first )29 {30 firstName = first;31 } // end method setFirstName3233 // return first name34 public String getFirstName()35 {36 return firstName;37 } // end method getFirstName38

Fig. L 9.1 | CommissionEmployee.java. (Part 1 of 3.)

Page 12: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Correct the Code

12 Object-Oriented Programming: Inheritance Chapter 9

39 // set last name40 public void setLastName( String last )41 {42 lastName = last;43 } // end method setLastName4445 // return last name46 public String getLastName()47 {48 return lastName;49 } // end method getLastName5051 // set social security number52 public void setSocialSecurityNumber( String ssn )53 {54 socialSecurityNumber = ssn; // should validate55 } // end method setSocialSecurityNumber5657 // return social security number58 public String getSocialSecurityNumber()59 {60 return socialSecurityNumber;61 } // end method getSocialSecurityNumber6263 // set gross sales amount64 public void setGrossSales( double sales )65 {66 grossSales = ( sales < 0.0 ) ? 0.0 : sales;67 } // end method setGrossSales6869 // return gross sales amount70 public double getGrossSales()71 {72 return grossSales;73 } // end method getGrossSales74 75 // set commission rate76 public void setCommissionRate( double rate )77 {78 commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;79 } // end method setCommissionRate8081 // return commission rate82 public double getCommissionRate()83 {84 return commissionRate;85 } // end method getCommissionRate8687 // calculate earnings88 public double earnings()89 {90 return getCommissionRate() * getGrossSales();91 } // end method earnings9293 // return String representation of CommissionEmployee object94 public String toString()95 {

Fig. L 9.1 | CommissionEmployee.java. (Part 2 of 3.)

Page 13: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Correct the Code

Chapter 9 Object-Oriented Programming: Inheritance 13

96 return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f", 97 "commission employee", getFirstName(), getLastName(), 98 "social security number", getSocialSecurityNumber(), 99 "gross sales", getGrossSales(), 100 "commission rate", getCommissionRate() );101 } // end method toString102 } // end class CommissionEmployee

1 // Fig. 9.16: BasePlusCommissionEmployee.java2 // BasePlusCommissionEmployee class declaration.34 public class BasePlusCommissionEmployee extends CommissionEmployee5 {6 private double baseSalary; // base salary per week78 // six-argument constructor9 public BasePlusCommissionEmployee( String first, String last,

10 String ssn, double sales, double rate, double salary )11 {12 // implicit call to CommissionEmployee constructor occurs here13 } // end six-argument BasePlusCommissionEmployee constructor14 15 // set base salary16 public void setBaseSalary( double salary )17 {18 baseSalary = ( salary < 0.0 ) ? 0.0 : salary;19 } // end method setBaseSalary2021 // return base salary22 public double getBaseSalary()23 {24 return baseSalary;25 } // end method getBaseSalary2627 // calculate earnings28 public double earnings()29 {30 return getBaseSalary() + super.earnings();31 } // end method earnings32 } // end class BasePlusCommissionEmployee

Fig. L 9.2 | BasePlusCommissionEmployee.java

Fig. L 9.1 | CommissionEmployee.java. (Part 3 of 3.)

Page 14: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Correct the Code

14 Object-Oriented Programming: Inheritance Chapter 9

27. The following constructor, when inserted into class BasePlusCommissionEmployee, should invoke a Com-missionEmployee constructor to initialize the CommissionEmployee part of a BasePlusCommissionEmploy-ee object.

Your answer:

• Line 5, missing parameter to CommissionEmployee constructor. Compilation error.

28. The following toString method, when inserted into class BasePlusCommissionEmployee, should return astring consisting of CommissionEmployee’s output string along with the base salary of this object.

Your answer:

• Method toString calls itself. Must use super to invoke the superclass toString method. Logic error.

1 // constructor2 public BasePlusCommissionEmployee( String first, String last, 3 String ssn, double sales, double rate, double salary )4 {5 super( first, last, ssn, sales );6 setBaseSalary( salary ); // validate and store base salary7 }

1 // constructor2 public BasePlusCommissionEmployee( String first, String last, 3 String ssn, double sales, double rate, double salary )4 {5 super( first, last, ssn, sales );6 setBaseSalary( salary ); // validate and store base salary7 }

1 // return String representation of BasePlusCommissionEmployee2 public String toString()3 {4 return String.format( "%s %s\n%s: %.2f", "base-salaried", 5 toString(), "base salary", getBaseSalary() );6 }

1 // return String representation of BasePlusCommissionEmployee2 public String toString()3 {4 return String.format( "%s %s\n%s: %.2f", "base-salaried", 5 toString(), "base salary", getBaseSalary() );6 }

, rate

super.

Page 15: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Prelab Activities Name:

Correct the Code

Chapter 9 Object-Oriented Programming: Inheritance 15

29. The following earnings method, when inserted into class BasePlusCommissionEmployee, should use Com-missionEmployee’s earnings method to help calculate the earnings for this object.

Your answer:

• Method earnings calls itself. Must use super to invoke the superclass earnings method. Logic error.

1 // calculate earnings2 public double earnings()3 {4 return getBaseSalary() + earnings();5 } // end method earnings

1 // calculate earnings2 public double earnings()3 {4 return getBaseSalary() + earnings();5 } // end method earnings

super.

Page 16: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 17: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Chapter 9 Object-Oriented Programming: Inheritance 17

Lab Exercise

Name: Date:

Section:

Lab Exercise 1 — Employee Hierarchy

This problem is intended to be solved in a closed-lab session with a teaching assistant or instructor present. Theproblem is divided into six parts:

1. Lab Objectives

2. Description of the Problem

3. Sample Output

4. Program Template (Fig. L 9.3)

5. Problem-Solving Tips

6. Follow-Up Question and Activity

The program template represents a complete working Java program, with one or more key lines of code replacedwith comments. Read the problem description and examine the sample output; then study the template code.Using the problem-solving tips as a guide, replace the /* */ comments with Java code. Compile and execute theprogram. Compare your output with the sample output provided. Then answer the follow-up question. Thesource code for the template is available at www.pearsonhighered.com/deitel.

Lab ObjectivesThis lab was designed to reinforce programming concepts from Chapter 9 of Java How to Program: 8/e. In thislab, you will practice:

• Using a has-a relationship.

The follow-up question and activity also will give you practice:

• Comparing the is-a relationship to the has-a relationship.

Description of the ProblemMany programs written with inheritance could be written with composition instead, and vice versa. Rewrite classBasePlusCommissionEmployee of the CommissionEmployee–BasePlusCommissionEmployee hierarchy (Section9.4.5) to use composition rather than inheritance.

Template

1 // Exercise 9.3 solution: BasePlusCommissionEmployee.java2 // BasePlusCommissionEmployee using composition.34 public class BasePlusCommissionEmployee5 {6 /* declare instance variable to satisfy the has-a relationship */7 private double baseSalary; // base salary per week89 // six-argument constructor

10 public BasePlusCommissionEmployee( String first, String last, 11 String ssn, double sales, double rate, double salary )12 {13 /* construct the CommissionEmployee portion of this object */14 setBaseSalary( salary ); // validate and store base salary15 } // end six-argument BasePlusCommissionEmployee constructor

Fig. L 9.3 | BasePlusCommissionEmployee.java. (Part 1 of 3.)

Page 18: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Lab Exercise Name:

Lab Exercise 1 — Employee Hierarchy

18 Object-Oriented Programming: Inheritance Chapter 9

16 17 // set first name18 public void setFirstName( String first )19 {20 /* set the first name of the composed CommissionEmployee object */21 } // end method setFirstName2223 // return first name24 public String getFirstName()25 {26 /* return the first name of the composed CommissionEmployee object */27 } // end method getFirstName2829 // set last name30 public void setLastName( String last )31 {32 /* set the last name of the composed CommissionEmployee object */33 } // end method setLastName3435 // return last name36 public String getLastName()37 {38 /* return the last name of the composed CommissionEmployee object */39 } // end method getLastName4041 // set social security number42 public void setSocialSecurityNumber( String ssn )43 {44 /* set the social security number of the composed CommissionEmployee object */45 } // end method setSocialSecurityNumber4647 // return social security number48 public String getSocialSecurityNumber()49 {50 /* return the social security number of the composed CommissionEmployee51 object */52 } // end method getSocialSecurityNumber5354 // set commission employee's gross sales amount55 public void setGrossSales( double sales )56 {57 /* set the gross sales of the composed CommissionEmployee object */58 } // end method setGrossSales5960 // return commission employee's gross sales amount61 public double getGrossSales()62 {63 /* return the gross sales of the composed CommissionEmployee object */64 } // end method getGrossSales65 66 // set commission employee's rate67 public void setCommissionRate( double rate )68 {69 /* Set the commission rate of the composed CommissionEmployee object */70 } // end method setCommissionRate71

Fig. L 9.3 | BasePlusCommissionEmployee.java. (Part 2 of 3.)

Page 19: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Lab Exercise Name:

Lab Exercise 1 — Employee Hierarchy

Chapter 9 Object-Oriented Programming: Inheritance 19

Problem-Solving Tips1. Look at the CommissionEmployee class to determine which functionality to use in each of the Base-

PlusCommissionEmployee class’s constructor and methods.

2. If you have any questions as you proceed, ask your lab instructor for assistance.

Solution

72 // return commission employee's rate73 public double getCommissionRate()74 {75 /* Return the commission rate of the composed CommissionEmployee object */76 } // end method getCommissionRate7778 // set base-salaried commission employee's base salary79 public void setBaseSalary( double salary )80 {81 baseSalary = ( salary < 0.0 ) ? 0.0 : salary;82 } // end method setBaseSalary8384 // return base-salaried commission employee's base salary85 public double getBaseSalary()86 {87 return baseSalary;88 } // end method getBaseSalary8990 // calculate base-salaried commission employee's earnings91 public double earnings()92 {93 /* Calculate the earnings of this object using the earnings of the composed 94 CommissionEmployee object */95 } // end method earnings9697 // return String representation of BasePlusCommissionEmployee98 public String toString()99 {100 /* Return a string consisting of the string representation of the composed 101 CommissionEmployee object along with the base salary */102 } // end method toString103 } // end class BasePlusCommissionEmployee

1 // Exercise 9.3 solution: BasePlusCommissionEmployee.java2 // BasePlusCommissionEmployee using composition.34 public class BasePlusCommissionEmployee5 {6 private CommissionEmployee commissionEmployee; // composition7 private double baseSalary; // base salary per week89 // six-argument constructor

10 public BasePlusCommissionEmployee( String first, String last, 11 String ssn, double sales, double rate, double salary )12 {

Fig. L 9.3 | BasePlusCommissionEmployee.java. (Part 3 of 3.)

Page 20: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Lab Exercise Name:

Lab Exercise 1 — Employee Hierarchy

20 Object-Oriented Programming: Inheritance Chapter 9

13 commissionEmployee = 14 new CommissionEmployee( first, last, ssn, sales, rate );15 setBaseSalary( salary ); // validate and store base salary16 } // end six-argument BasePlusCommissionEmployee constructor17 18 // set first name19 public void setFirstName( String first )20 {21 commissionEmployee.setFirstName( first );22 } // end method setFirstName2324 // return first name25 public String getFirstName()26 {27 return commissionEmployee.getFirstName();28 } // end method getFirstName2930 // set last name31 public void setLastName( String last )32 {33 commissionEmployee.setLastName( last );34 } // end method setLastName3536 // return last name37 public String getLastName()38 {39 return commissionEmployee.getLastName();40 } // end method getLastName4142 // set social security number43 public void setSocialSecurityNumber( String ssn )44 {45 commissionEmployee.setSocialSecurityNumber( ssn );46 } // end method setSocialSecurityNumber4748 // return social security number49 public String getSocialSecurityNumber()50 {51 return commissionEmployee.getSocialSecurityNumber();52 } // end method getSocialSecurityNumber5354 // set commission employee's gross sales amount55 public void setGrossSales( double sales )56 {57 commissionEmployee.setGrossSales( sales );58 } // end method setGrossSales5960 // return commission employee's gross sales amount61 public double getGrossSales()62 {63 return commissionEmployee.getGrossSales();64 } // end method getGrossSales65 66 // set commission employee's rate67 public void setCommissionRate( double rate )68 {69 commissionEmployee.setCommissionRate( rate );70 } // end method setCommissionRate

Page 21: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Lab Exercise Name:

Lab Exercise 1 — Employee Hierarchy

Chapter 9 Object-Oriented Programming: Inheritance 21

Follow-Up Question and Activity1. Assess the relative merits of the two approaches for the CommissionEmployee and BasePlusCommission-

Employee problems, as well as for object-oriented programs in general. Which approach is more natural?Why?

For a relatively short program like this one, either approach is acceptable. But as programs become largerwith more and more objects being instantiated, inheritance becomes preferable because it makes the programeasier to modify and promotes the reuse of code. The inheritance approach is more natural because a base-salariedcommission employee is a commission employee. Composition is defined by the has-a relationship, and clearlyit would be strange to say that “a base-salaried commission employee has a commission employee.”

7172 // return commission employee's rate73 public double getCommissionRate()74 {75 return commissionEmployee.getCommissionRate();76 } // end method getCommissionRate7778 // set base-salaried commission employee's base salary79 public void setBaseSalary( double salary )80 {81 baseSalary = ( salary < 0.0 ) ? 0.0 : salary;82 } // end method setBaseSalary8384 // return base-salaried commission employee's base salary85 public double getBaseSalary()86 {87 return baseSalary;88 } // end method getBaseSalary8990 // calculate base-salaried commission employee's earnings91 public double earnings()92 {93 return getBaseSalary() + commissionEmployee.earnings();94 } // end method earnings9596 // return String representation of BasePlusCommissionEmployee97 public String toString()98 {99 return String.format( "%s %s\n%s: %.2f", "base-salaried", 100 commissionEmployee.toString(), "base salary", getBaseSalary() );101 } // end method toString102 } // end class BasePlusCommissionEmployee

Page 22: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 23: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Chapter 9 Object-Oriented Programming: Inheritance 23

Postlab Activities

Name: Date:

Section:

Coding Exercises

These coding exercises reinforce the lessons learned in the lab and provide additional programming experienceoutside the classroom and laboratory environment. They serve as a review after you have successfully completedthe Prelab Activities and Lab Exercises.

For each of the following problems, write a program or a program segment that performs the specified action.

1. Declare the headers for the classes in the class diagram of Fig. L 9.4.

Fig. L 9.4 | Inheritance hierarchy for Shapes.

1 // Exercise 9.6 Solution: Shape.java2 // Definition of class Shape.34 public abstract class Shape5 {6 private int x, y; // coordinates of shape78 // constructor9 public Shape( int x, int y )

10 {11 this.x = x;12 this.y = y;13 }1415 // set x coordinate16 public void setX( int x )17 {18 this.x = x;19 }2021 // set y coordinate22 public void setY( int y )23 {24 this.y = y;25 }26

ThreeDimensionalShape

CubeSphereSquareCircle

Shape

TwoDimensionalShape

Page 24: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

24 Object-Oriented Programming: Inheritance Chapter 9

27 // get x coordinate28 public int getX()29 {30 return x;31 }3233 // get y coordinate34 public int getY()35 {36 return y;37 }3839 // abstract methods40 public abstract String getName();41 } // end class Shape

1 // Exercise 9.6 Solution: TwoDimensionalShape.java2 // Definition of class TwoDimensionalShape.34 public abstract class TwoDimensionalShape extends Shape5 {6 private double dimension1, dimension2;78 // constructor9 public TwoDimensionalShape( int x, int y, double d1, double d2 )

10 {11 super( x, y );12 dimension1 = d1;13 dimension2 = d2;14 }1516 // set methods17 public void setDimension1( double d )18 {19 dimension1 = d;20 }2122 public void setDimension2( double d )23 {24 dimension2 = d;25 }2627 // get methods28 public double getDimension1()29 {30 return dimension1;31 }3233 public double getDimension2()34 {35 return dimension2;36 }3738 // abstract method39 public abstract double area();40 } // end class TwoDimensionalShape

Page 25: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

Chapter 9 Object-Oriented Programming: Inheritance 25

1 // Exercise 9.6 Solution: ThreeDimensionalShape.java2 // Defition of class ThreeDimensionalShape34 public abstract class ThreeDimensionalShape extends Shape5 {6 private double dimension1, dimension2, dimension3;78 // constructor9 public ThreeDimensionalShape( int x, int y, double d1, double d2, double d3 )

10 {11 super( x, y );12 dimension1 = d1;13 dimension2 = d2;14 dimension3 = d3;15 }1617 // set methods18 public void setDimension1( double d )19 {20 dimension1 = d;21 }2223 public void setDimension2( double d )24 {25 dimension2 = d;26 }2728 public void setDimension3( double d )29 {30 dimension3 = d;31 }3233 // get methods34 public double getDimension1() 35 {36 return dimension1;37 }3839 public double getDimension2()40 {41 return dimension2;42 }4344 public double getDimension3()45 {46 return dimension3;47 }4849 // abstract methods50 public abstract double area();51 public abstract double volume();52 } // end class ThreeDimensionalShape

Page 26: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

26 Object-Oriented Programming: Inheritance Chapter 9

1 // Exercise 9.6 Solution: Circle.java2 // Definition of class Circle.34 public class Circle extends TwoDimensionalShape5 {6 // constructor7 public Circle( int x, int y, double radius )8 {9 super( x, y, radius, radius );

10 }1112 // overridden methods13 public String getName()14 {15 return "Circle";16 }1718 public double area()19 {20 return Math.PI * super.getDimension1() * super.getDimension1();21 }2223 // set method24 public void setRadius( double radius )25 {26 super.setDimension1( radius );27 }2829 // get method30 public double getRadius()31 {32 return super.getDimension1();33 }34 } // end class Circle

1 // Exercise 9.6 Solution: Square.java2 // Definition of class Square.34 public class Square extends TwoDimensionalShape5 {6 // constructor7 public Square( int x, int y, double side )8 {9 super( x, y, side, side );

10 }1112 // overridden methods13 public String getName()14 {15 return "Square";16 }1718 public double area()19 {20 return super.getDimension1() * super.getDimension1();21 }22

Page 27: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

Chapter 9 Object-Oriented Programming: Inheritance 27

23 // set method24 public void setSide( double side )25 {26 super.setDimension1( side );27 }2829 // get method30 public double getSide()31 {32 return super.getDimension1();33 }34 } // end class Square

1 // Exercise 9.6 Solution: Sphere.java2 // Definition of class Sphere.34 public class Sphere extends ThreeDimensionalShape5 {6 // constructor7 public Sphere( int x, int y, double radius )8 {9 super( x, y, radius, radius, radius );

10 }1112 // overridden methods13 public String getName()14 {15 return "Sphere";16 }1718 public double area()19 {20 return 4 * Math.PI * super.getDimension1() * super.getDimension1();21 }2223 public double volume()24 {25 return 4.0 / 3.0 * Math.PI * super.getDimension1() *26 super.getDimension1() * super.getDimension1();27 }2829 // set method30 public void setRadius( double radius )31 {32 super.setDimension1( radius );33 }3435 // get method36 public double getRadius()37 {38 return super.getDimension1();39 }40 } // end class Sphere

Page 28: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

28 Object-Oriented Programming: Inheritance Chapter 9

2. Declare toString methods for all the classes in Coding Exercise 1. Class Shape’s toString method shouldreturn the string "Shape". The toString method of each of the subclasses in the hierarchy should return astring containing the class’s name, the string " is a " and the result of a call to the superclass’s toStringmethod.

1 // Exercise 9.6 Solution: Cube.java2 // Definition of class Cube.34 public class Cube extends ThreeDimensionalShape5 {6 // constructor7 public Cube( int x, int y, double side )8 {9 super( x, y, side, side, side );

10 }1112 // overridden methods13 public String getName()14 {15 return "Cube";16 }1718 public double area()19 {20 return 6 * super.getDimension1() * super.getDimension1();21 }2223 public double volume()24 {25 return super.getDimension1() * super.getDimension1() * super.getDimension1();26 }2728 // set method29 public void setSide( double side )30 {31 super.setDimension1( side );32 }3334 // get method35 public double getSide()36 {37 return super.getDimension1();38 }39 } // end class Cube

1 // Exercise 9.6 Solution: Shape.java2 // Definition of class Shape.34 public abstract class Shape5 {6 private int x, y; // coordinates of shape78 // constructor9 public Shape( int x, int y )

10 {

Page 29: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

Chapter 9 Object-Oriented Programming: Inheritance 29

11 this.x = x;12 this.y = y;13 }1415 // set x coordinate16 public void setX( int x )17 {18 this.x = x;19 }2021 // set y coordinate22 public void setY( int y )23 {24 this.y = y;25 }2627 // get x coordinate28 public int getX()29 {30 return x;31 }3233 // get y coordinate34 public int getY()35 {36 return y;37 }3839 // abstract methods40 public abstract String getName();4142 public String toString()43 {44 return "Shape";45 }46 } // end class Shape

1 // Exercise 9.6 Solution: TwoDimensionalShape.java2 // Definition of class TwoDimensionalShape.34 public abstract class TwoDimensionalShape extends Shape5 {6 private double dimension1, dimension2;78 // constructor9 public TwoDimensionalShape( int x, int y, double d1, double d2 )

10 {11 super( x, y );12 dimension1 = d1;13 dimension2 = d2;14 }1516 // set methods17 public void setDimension1( double d )18 {19 dimension1 = d;20 }

Page 30: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

30 Object-Oriented Programming: Inheritance Chapter 9

2122 public void setDimension2( double d )23 {24 dimension2 = d;25 }2627 // get methods28 public double getDimension1()29 {30 return dimension1;31 }3233 public double getDimension2()34 {35 return dimension2;36 }3738 // abstract method39 public abstract double area();4041 public String toString()42 {43 return String.format( "TwoDimensionalShape is a %s", super.toString() );44 }45 } // end class TwoDimensionalShape

1 // Exercise 9.6 Solution: ThreeDimensionalShape.java2 // Defition of class ThreeDimensionalShape34 public abstract class ThreeDimensionalShape extends Shape5 {6 private double dimension1, dimension2, dimension3;78 // constructor9 public ThreeDimensionalShape( int x, int y, double d1, double d2, double d3 )

10 {11 super( x, y );12 dimension1 = d1;13 dimension2 = d2;14 dimension3 = d3;15 }1617 // set methods18 public void setDimension1( double d )19 {20 dimension1 = d;21 }2223 public void setDimension2( double d )24 {25 dimension2 = d;26 }2728 public void setDimension3( double d )29 {30 dimension3 = d;31 }

Page 31: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

Chapter 9 Object-Oriented Programming: Inheritance 31

3233 // get methods34 public double getDimension1() 35 {36 return dimension1;37 }3839 public double getDimension2()40 {41 return dimension2;42 }4344 public double getDimension3()45 {46 return dimension3;47 }4849 // abstract methods50 public abstract double area();51 public abstract double volume();5253 public String toString()54 {55 return String.format( "ThreeDimensionalShape is a %s", super.toString() );56 }57 } // end class ThreeDimensionalShape

1 // Exercise 9.6 Solution: Circle.java2 // Definition of class Circle.34 public class Circle extends TwoDimensionalShape5 {6 // constructor7 public Circle( int x, int y, double radius )8 {9 super( x, y, radius, radius );

10 }1112 // overridden methods13 public String getName()14 {15 return "Circle";16 }1718 public double area()19 {20 return Math.PI * super.getDimension1() * super.getDimension1();21 }2223 // set method24 public void setRadius( double radius )25 {26 super.setDimension1( radius );27 }28

Page 32: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

32 Object-Oriented Programming: Inheritance Chapter 9

29 // get method30 public double getRadius()31 {32 return super.getDimension1();33 }3435 public String toString()36 {37 return String.format( "Circle is a %s", super.toString() );38 }39 } // end class Circle

1 // Exercise 9.6 Solution: Square.java2 // Definition of class Square.34 public class Square extends TwoDimensionalShape5 {6 // constructor7 public Square( int x, int y, double side )8 {9 super( x, y, side, side );

10 }1112 // overridden methods13 public String getName()14 {15 return "Square";16 }1718 public double area()19 {20 return super.getDimension1() * super.getDimension1();21 }2223 // set method24 public void setSide( double side )25 {26 super.setDimension1( side );27 }2829 // get method30 public double getSide()31 {32 return super.getDimension1();33 }3435 public String toString()36 {37 return String.format( "Square is a %s", super.toString() );38 }39 } // end class Square

Page 33: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

Chapter 9 Object-Oriented Programming: Inheritance 33

1 // Exercise 9.6 Solution: Sphere.java2 // Definition of class Sphere.34 public class Sphere extends ThreeDimensionalShape5 {6 // constructor7 public Sphere( int x, int y, double radius )8 {9 super( x, y, radius, radius, radius );

10 }1112 // overridden methods13 public String getName()14 {15 return "Sphere";16 }1718 public double area()19 {20 return 4 * Math.PI * super.getDimension1() * super.getDimension1();21 }2223 public double volume()24 {25 return 4.0 / 3.0 * Math.PI * super.getDimension1() *26 super.getDimension1() * super.getDimension1();27 }2829 // set method30 public void setRadius( double radius )31 {32 super.setDimension1( radius );33 }3435 // get method36 public double getRadius()37 {38 return super.getDimension1();39 }4041 public String toString()42 {43 return String.format( "Sphere is a %s", super.toString() );44 }45 } // end class Sphere

1 // Exercise 9.6 Solution: Cube.java2 // Definition of class Cube.34 public class Cube extends ThreeDimensionalShape5 {6 // constructor7 public Cube( int x, int y, double side )8 {9 super( x, y, side, side, side );

10 }

Fig. L 9.5 | Cube.java (Part 1 of 2.)

Page 34: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

34 Object-Oriented Programming: Inheritance Chapter 9

3. Write an application that creates one object of each of the classes Circle, Square, Sphere and Cube, andinvokes their toString methods. The output for each object should show the is-a relationships between thatobject’s class and its superclasses.

1112 // overridden methods13 public String getName()14 {15 return "Cube";16 }1718 public double area()19 {20 return 6 * super.getDimension1() * super.getDimension1();21 }2223 public double volume()24 {25 return super.getDimension1() * super.getDimension1() * super.getDimension1();26 }2728 // set method29 public void setSide( double side )30 {31 super.setDimension1( side );32 }3334 // get method35 public double getSide()36 {37 return super.getDimension1();38 }3940 public String toString()41 {42 return String.format( "Cube is a %s", super.toString() );43 }44 } // end class Cube

1 // Exercise 9.8 Solution: ShapeTest.java2 // Program tests the Shape hierarchy.34 public class ShapeTest5 {6 private Shape shapeArray[];78 // create shapes9 public ShapeTest()

10 {11 shapeArray = new Shape[ 4 ];1213 shapeArray[ 0 ] = new Circle( 22, 88, 1.25 );14 shapeArray[ 1 ] = new Square( 71, 96, 2.5 );

Fig. L 9.5 | Cube.java (Part 2 of 2.)

Page 35: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Coding Exercises

Chapter 9 Object-Oriented Programming: Inheritance 35

15 shapeArray[ 2 ] = new Sphere( 8, 89, 3.75 );16 shapeArray[ 3 ] = new Cube( 79, 61, 5.0 );17 } // end ShapeTest constructor1819 // display shape info20 public void displayShapeInfo()21 {22 // call method toString on all shapes23 for ( int i = 0; i < shapeArray.length; i++ )24 {25 System.out.printf( "%s: %s\n", shapeArray[ i ].getName(), shapeArray[ i ] );2627 if ( shapeArray[ i ] instanceof TwoDimensionalShape )28 {29 TwoDimensionalShape current = ( TwoDimensionalShape ) shapeArray[ i ];30 System.out.printf( "%s's area is %.2f\n", current.getName(), 31 current.area() );32 } // end if3334 if ( shapeArray[ i ] instanceof ThreeDimensionalShape )35 {36 ThreeDimensionalShape current = ( ThreeDimensionalShape ) shapeArray[ i ];3738 System.out.printf( "%s's area is %.2f\n%s's volume is %.2f\n", 39 current.getName(), current.area(), current.getName(), 40 current.volume() );41 } // end if42 } // end for43 } // end method displayShapeInfo4445 // create ShapeTest object and display info46 public static void main( String args[] )47 {48 ShapeTest driver = new ShapeTest();49 driver.displayShapeInfo();50 } // end main51 } // end class ShapeTest

Circle: Circle is a TwoDimensionalShape is a ShapeCircle's area is 4.91Square: Square is a TwoDimensionalShape is a ShapeSquare's area is 6.25Sphere: Sphere is a ThreeDimensionalShape is a ShapeSphere's area is 176.71Sphere's volume is 220.89Cube: Cube is a ThreeDimensionalShape is a ShapeCube's area is 150.00Cube's volume is 125.00

Page 36: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete
Page 37: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Programming Challenges

Chapter 9 Object-Oriented Programming: Inheritance 37

Name: Date:

Section:

Programming Challenges

The Programming Challenges are more involved than the Coding Exercises and may require a significant amountof time to complete. Write a Java program for each of the problems in this section. The answers to these problemsare available at www.pearsonhighered.com/deitel. Pseudocode, hints or sample outputs are provided for eachproblem to aid you in your programming.

1. Write an inheritance hierarchy for classes Quadrilateral, Trapezoid, Parallelogram, Rectangle andSquare. Use Quadrilateral as the superclass of the hierarchy. Specify the instance variables and methodsfor each class. The private instance variables of Quadrilateral should be the x-y coordinate pairs for thefour endpoints of the Quadrilateral. Write a program that instantiates objects of your classes and outputseach object’s area (except Quadrilateral).

Hints:• Create and use a Point class to represent the corners of the shapes.

• Your output should appear as follows:

Coordinates of Quadrilateral are:( 1.1, 1.2 ), ( 6.6, 2.8 ), ( 6.2, 9.9 ), ( 2.2, 7.4 )

Coordinates of Trapezoid are:( 0.0, 0.0 ), ( 10.0, 0.0 ), ( 8.0, 5.0 ), ( 3.3, 5.0 )Height is: 5.0Area is: 36.75

Coordinates of Parallelogram are:( 5.0, 5.0 ), ( 11.0, 5.0 ), ( 12.0, 20.0 ), ( 6.0, 20.0 )Width is: 6.0Height is: 15.0Area is: 90.0

Coordinates of Rectangle are:( 17.0, 14.0 ), ( 30.0, 14.0 ), ( 30.0, 28.0 ), ( 17.0, 28.0 )Width is: 13.0Height is: 14.0Area is: 182.0

Coordinates of Square are:( 4.0, 0.0 ), ( 8.0, 0.0 ), ( 8.0, 4.0 ), ( 4.0, 4.0 )Side is: 4.0Area is: 16.0

Page 38: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Programming Challenges

38 Object-Oriented Programming: Inheritance Chapter 9

Solution

1 // Exercise 9.8 Solution: QuadrilateralTest.java2 // Driver for Exercise 9.834 public class QuadrilateralTest 5 {6 public static void main( String args[] )7 {8 // NOTE: All coordinates are assumed to form the proper shapes9 // A quadrilateral is a four-sided polygon

10 Quadrilateral quadrilateral = new Quadrilateral( new Point( 1.1, 1.2 ), 11 new Point( 6.6, 2.8 ), new Point( 6.2, 9.9 ), new Point( 2.2, 7.4 ) );1213 // A trapezoid is a quadrilateral having exactly two parallel sides14 Trapezoid trapezoid = new Trapezoid( new Point( 0.0, 0.0 ), 15 new Point( 10.0, 0.0 ), new Point( 8.0, 5.0 ), new Point( 3.3, 5.0 ) );16 17 // A parallelogram is a quadrilateral with opposite sides parallel18 Parallelogram parallelogram = new Parallelogram( new Point( 5.0, 5.0 ), 19 new Point( 11.0, 5.0 ), new Point( 12.0, 20.0 ), new Point( 6.0, 20.0 ) );2021 // A rectangle is an equiangular parallelogram22 Rectangle rectangle = new Rectangle( new Point( 17.0, 14.0 ), 23 new Point( 30.0, 14.0 ), new Point( 30.0, 28.0 ), new Point( 17.0, 28.0 ) );2425 // A square is an equiangular and equilateral parallelogram26 Square square = new Square( new Point( 4.0, 0.0 ), 27 new Point( 8.0, 0.0 ), new Point( 8.0, 4.0 ), new Point( 4.0, 4.0 ) );2829 System.out.printf( 30 "%s %s %s %s %s\n", quadrilateral, trapezoid, parallelogram, 31 rectangle, square );32 } // end main33 } // end class QuadrilateralTest

1 // Exercise 9.8 solution: Point.java2 // Class Point definition34 public class Point 5 {6 private double x; // x coordinate7 private double y; // y coordinate8 9 // two-argument constructor

10 public Point( double xCoordinate, double yCoordinate )11 {12 x = xCoordinate; // set x13 y = yCoordinate; // set y14 } // end two-argument Point constructor1516 // return x17 public double getX()18 {19 return x;20 } // end method getX

Page 39: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Programming Challenges

Chapter 9 Object-Oriented Programming: Inheritance 39

21 22 // return y23 public double getY()24 {25 return y;26 } // end method getY2728 // return string representation of Point object29 public String toString()30 {31 return String.format( "( %.1f, %.1f )", getX(), getY() );32 } // end method toString33 } // end class Point

1 // Exercise 9.8 solution: Quadrilateral.java2 // Class Quadrilateral definition34 public class Quadrilateral 5 {6 private Point point1; // first endpoint7 private Point point2; // second endpoint8 private Point point3; // third endpoint9 private Point point4; // fourth endpoint

1011 // eight-argument constructor12 public Quadrilateral( Point first, Point second, Point third, Point fourth )13 {14 point1 = first;15 point2 = second;16 point3 = third;17 point4 = fourth;18 } // end eight-argument Quadrilateral constructor1920 // return point121 public Point getPoint1()22 {23 return point1;24 } // end method getPoint12526 // return point227 public Point getPoint2()28 {29 return point2;30 } // end method getPoint23132 // return point333 public Point getPoint3()34 {35 return point3;36 } // end method getPoint33738 // return point439 public Point getPoint4()40 {41 return point4;42 } // end method getPoint443

Page 40: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Programming Challenges

40 Object-Oriented Programming: Inheritance Chapter 9

44 // return string representation of a Quadrilateral object45 public String toString()46 {47 return String.format( "%s:\n%s", 48 "Coordinates of Quadrilateral are", getCoordinatesAsString() ); 49 } // end method toString5051 // return string containing coordinates as strings52 public String getCoordinatesAsString()53 {54 return String.format( 55 "%s, %s, %s, %s\n", point1, point2, point3, point4 );56 } // end method getCoordinatesAsString57 } // end class Quadrilateral

1 // Exercise 9.8 solution: Trapezoid.java2 // Class Trapezoid definition34 public class Trapezoid extends Quadrilateral 5 {6 private double height; // height of trapezoid78 // eight-argument constructor9 public Trapezoid( Point first, Point second, Point third, Point fourth )

10 {11 super( first, second, third, fourth );12 } // end of eight-argument Trapezoid constructor 1314 // return height15 public double getHeight()16 {17 if ( getPoint1().getY() == getPoint2().getY() )18 return Math.abs( getPoint2().getY() - getPoint3().getY() );19 else20 return Math.abs( getPoint1().getY() - getPoint2().getY() );21 } // end method getHeight2223 // return area24 public double getArea()25 {26 return getSumOfTwoSides() * getHeight() / 2.0;27 } // end method getArea2829 // return the sum of the trapezoid's two sides30 public double getSumOfTwoSides()31 {32 if ( getPoint1().getY() == getPoint2().getY() )33 return Math.abs( getPoint1().getX() - getPoint2().getX() ) + 34 Math.abs( getPoint3().getX() - getPoint4().getX() );35 else36 return Math.abs( getPoint2().getX() - getPoint3().getX() ) +37 Math.abs( getPoint4().getX() - getPoint1().getX() );38 } // end method getSumOfTwoSides3940 // return string representation of Trapezoid object41 public String toString()42 {

Page 41: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Programming Challenges

Chapter 9 Object-Oriented Programming: Inheritance 41

43 return String.format( "\n%s:\n%s%s: %s\n%s: %s\n", 44 "Coordinates of Trapezoid are", getCoordinatesAsString(), 45 "Height is", getHeight(), "Area is", getArea() );46 } // end method toString47 } // end class Trapezoid

1 // Exercise 9.8 solution: Parallelogram.java2 // Class Parallelogram definition34 public class Parallelogram extends Trapezoid 5 {6 // eight-argument constructor7 public Parallelogram( Point first, Point second, Point third, Point fourth )8 {9 super( first, second, third, fourth );

10 } // end eight-argument Parallelogram constructor1112 // return width of parallelogram13 public double getWidth()14 {15 if ( getPoint1().getY() == getPoint2().getY() )16 return Math.abs( getPoint1().getX() - getPoint2().getX() );17 else18 return Math.abs( getPoint2().getX() - getPoint3().getX() );19 } // end method getWidth2021 // return string representation of Parallelogram object22 public String toString()23 {24 return String.format( "\n%s:\n%s%s: %s\n%s: %s\n%s: %s\n", 25 "Coordinates of Parallelogram are", getCoordinatesAsString(), 26 "Width is", getWidth(), "Height is", getHeight(), 27 "Area is", getArea() );28 } // end method toString29 } // end class Parallelogram

1 // Exercise 9.8 solution: Rectangle.java2 // Class Rectangle definition34 public class Rectangle extends Parallelogram 5 {6 // eight-argument constructor7 public Rectangle( Point first, Point second, Point third, Point fourth )8 {9 super( first, second, third, fourth );

10 } // end eight-argument Rectangle constructor1112 // return string representation of Rectangle object13 public String toString()14 {15 return String.format( "\n%s:\n%s%s: %s\n%s: %s\n%s: %s\n", 16 "Coordinates of Rectangle are", getCoordinatesAsString(),17 "Width is", getWidth(), "Height is", getHeight(), 18 "Area is", getArea() );19 } // end method toString20 } // end class Rectangle

Page 42: Object-Oriented Programming: Inheritance · PDF fileAfter reading Chapter 9 of Java How to Program: ... Chapter 9 Object-Oriented Programming: Inheritance 9 ... Explain the complete

Postlab Activities Name:

Programming Challenges

42 Object-Oriented Programming: Inheritance Chapter 9

1 // Exercise 9.8 solution: Square.java2 // Class Square definition34 public class Square extends Parallelogram 5 {6 // eight-argument constructor7 public Square( Point first, Point second, Point third, Point fourth )8 {9 super( first, second, third, fourth );

10 } // end eight-argument Square constructor1112 // return string representation of Square object13 public String toString()14 {15 return String.format( "\n%s:\n%s%s: %s\n%s: %s\n",16 "Coordinates of Square are", getCoordinatesAsString(), 17 "Side is", getHeight(), "Area is", getArea() );18 } // end method toString 19 } // end class Square


Recommended