Computer science

profileasheyk1

 

 CSC139 Chapter 10 Lab Assignment (2) 

Polymorphism 

Objectives 

In this lab assignment, students will learn: 

- How to design and define interface 

- How to implement methods declared in interface 

- How to implement polymorphism 

Goals 

In this lab assignment, students will demonstrate the abilities to: 

- Design and define interface 

- Implement methods declared in interface 

- Implement polymorphism 

Grading 

- Define interface (30 pts) 

- Define base / derived classes (40 pts) 

- Define tester program to implement polymorphism (30 pts) 

In this lab you will create an interface inheritance hierarchy and perform polymorphism in a tester program. The following is the simplified UML for the hierarchy: 

<<Interface>> 

IShape 

+ Function ToString() As String 

+ Function CalculateArea(): Double 

TwoDShape 

- xValue: Integer 

- yValue: Integer 

+ Sub New(Integer, Integer) 

+ Property X():Integer 

+ Property Y():Integer 

+ Function CalculateArea():Double 

+ Function ToString():Strinbg 

Square 

- sideValue: Double 

 

+ Sub New(Integer, Integer,Double) 

+ Property Side():Double 

+ Function CalculateArea():Double 

+ Function ToString():Strinbg 

Circle 

- radiusValue: Double 

 

+ Sub New(Integer, Integer,Double) 

+ Property Radius():Double 

+ Function CalculateArea():Double 

+ Function ToString():Strinbg 

1. Create a Console Application Project called “InterfaceApp”. 

 

2. Rename the “Module1.vb” as “IShapeTester.vb” 

 

3. Add a class definition, modify it to an Interface named “IShape” which has two members: 

a. Function ToString() : String 

b. Function CalculateArea() :Double 

 

4. Add a class definition named “TwoDShape”, which is an abstract base class, the following members should be included: 

a. xValue: Integer ---- instance variable 

b. yValue: Integer ---- instance variable 

c. Sub New(Integer, Integer) ---- constructor 

d. Property X():Integer ---- get and set xValue 

e. Property Y():Integer ---- get and set yValue 

f. Function CalculateArea():Double ---- “MustOverride” function and implements IShape’s CalculateArea() function 

g. Function ToString() ---- Overrides ToString() function in Object and implements IShape’s method, display x and y coordinate on the console window (use the following definition) 

 

Public Overrides Function ToString() As String Implements IShape.ToString 

Return ("X-coordinate: " & vbTab & xValue & vbCrLf & "Y-coordinate: " & vbTab & yValue) 

End Function 

5. Add a class definition named “Circle”, which inherits from “TwoDShape” class and includes the following members: 

a. radiusValue: Double --- instance variable, radius of a circle 

b. Sub New(Integer, Integer, Double) --- constructor 

c. Property Radius():Double --- get and set radiusValue 

d. Function CalculateArea():Double ---- override and implement the abstract method in base class Shape, calculate area of a circle using: 

 

radiusValue * radiusValue * 3.14 

e. Function ToString() ----- use Convert.ToString(Me.GetType()) to display the type of shape, then display X and Y coordinates by calling base class’s ToString() function, finally, display radius value on console window (use the following definition) 

 

Public Overrides Function ToString() As String 

Return (Convert.ToString(Me.GetType()) & vbCrLf & MyBase.ToString() & vbCrLf & "Radius: " & vbTab & String.Format("{0:N2}", radiusValue)) 

End Function 

6. Add a class definition named “Square”, which inherit from “TwoDShape” class and include the following members: 

a. sideValue: Double --- instance variable, side of a square 

b. Sub New(Integer, Integer, Double) --- constructor 

c. Property Side():Double --- get and set sideValue 

d. Function CalculateArea():Double ---- override and implement the abstract method in base class Shape, calculate area of a square using: 

 

sideValue * sideValue 

e. Function ToString() ----- use Convert.ToString(Me.GetType()) to display the type of shape, then display X and Y coordinates by calling base class’s ToString() function, finally, display side value on console window (use the following definition) 

 

Public Overrides Function ToString() As String 

Return (Convert.ToString(Me.GetType()) & vbCrLf & MyBase.ToString() & vbCrLf & "Side: " & vbTab & String.Format("{0:N2}", sideValue)) 

End Function 

7. Perform polymorphism in the Module “IShapeTester.vb”: 

a. Declare 4 objects: 

 

s1: a circle object ( center at (2, 4) and radius = 3.0) 

s2: a square object (center at (1, 5) and side = 4.0) 

s3: a circle object (center at(3, 6) and radius = 3.5) 

s4: a square object (center at(6, 3) and side = 6.0) 

b. Put these 4 objects into an IShape array 

c. Use a “For” loop to traverse the array and let each object do the following: 

i. Call ToString() and let it display shape type, x and y coordinates, radius or side value 

ii. Call CalculateArea() and let it calculate area of a shape, display the area on console window. 

 

 

8. Here is the sample output window, your program should be performed similarly like this: 

 

  • 12 years ago
  • 3
Answer(1)

Purchase the answer to view it

blurred-text
NOT RATED
  • attachment
    interfaceapp.zip
  • attachment
    polmorphism.cpp