CSC139 Chapter 10 Lab Assignment

CSC139 Chapter 10 Lab Assignment
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 system and perform polymorphism in a tester program. The following is the simplified UML for the hierarchy:

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.

Here is the sample output window, your program should be performed similarly as this:

Here are the components and structure of the project:

Templates of all files:

Public Interface IShape
‘write your code here
End Interface
Public MustInherit Class TwoDShape
Implements IShape

Private xValue As Integer
Private yValue As Integer

Public Sub New(ByVal x As Integer, ByVal y As Integer)
‘write your code here

End Sub

Public Property X() As Integer
‘write your code here

End Property

Public Property Y() As Integer
‘write your code here

End Property

Public MustOverride Function CalculateArea()’write your code here

Public Overrides Function ToString() As String Implements IShape.ToString
Return (“X-coordinate: ” & vbTab & xValue & vbCrLf & “Y-coordinate: ” & vbTab & yValue)
End Function
End Class
Public Class Square
Inherits TwoDShape

Private sideValue As Double

Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal side As Double)
‘write your code here
End Sub

Property Side() As Double
‘write your code here

End Property

Public Overrides Function ToString() As String
Return (Convert.ToString(Me.GetType()) & vbCrLf & MyBase.ToString() & vbCrLf & _
“Side: ” & vbTab & String.Format(“{0:N2}”, sideValue))
End Function

Public Overrides Function CalculateArea() As Double
‘write your code here
End Function
End Class
Public Class Circle
Inherits TwoDShape

Private radiusValue As Double

Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal radius As Double)
‘write your code here
End Sub

Property Radius() As Double
‘write your code here

End Property

Public Overrides Function ToString() As String
Return (Convert.ToString(Me.GetType()) & vbCrLf & MyBase.ToString() & vbCrLf & _
“Radius: ” & vbTab & String.Format(“{0:N2}”, radiusValue))
End Function

Public Overrides Function CalculateArea() As Double
‘write your code here
End Function
End Class
Module IshapeTester

Sub Main()
Dim s1 As New Circle(2, 4, 3.0)
Dim s2 As New Square(1, 5, 4.0)
Dim s3 As New Circle(3, 6, 3.5)
Dim s4 As New Square(6, 3, 6.0)
‘write your code here

End Sub
End Module

find the cost of your paper