Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Welcome to All Test Answers

Pure Abstract Base Class Project to test the Basic Shape Circle and Rectangle using C++

Pure Abstract Base Class Project
Define a pure abstract base class called BasicShape. The Baaicshape class should
have the following members:
Private Member Variable:
area, a double used to hold the shape’s area.
Public Member Functions:
getArea. This function should return the value in the member variable area.
calcArea. This function should be a pure virtual function.
Next, define a class named Circle. It should be derived from the Basicshape class.
It should have the following members:
Private Member Variables:
centerX, a long integer used to hold the x coordinate of the circle’s center.
centerY, a long integer used to hold the y coordinate of the circle’s center.
radius, a double used to hold the circle’s radius.
Public Member Functions:
constructor-accepts values for centerX, centerY, and radius. Should call the
overridden calcArea function described below.
getCenterx-returns the value in centerX.
getCenterY-rerurns the value in centerY.
calcArea—calculates the area of the circle (area = 3.14159 …. radius …. radius)
and stores the result in the inherited member area.
Next, define a class named Rectangle. Ir should be derived from the BasicShape
class. It should have the following members:
Private Member Variables:
width, a long integer used to hold the width of the rectangle.
length, a long integer used to hold the length of the rectangle.
Public Member Functions:
constructor-accepts values for width and length. Should call the overridden
calCArea function described below.

get’Width-returns the value in width.
getLength– returns the value in length.
calCArea-calculates the area of the rectangle (area = length ” width) and stores
the result in the inherited member area.
After you have created these classes, create a driver program that defines a Circle
object and a Rectangle object. Demonstrate that each object properly calculates and
reports its area.

Answer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//  Pure Abstract Base Class Project 
//  Driver program is used to test the BasicShape (Abstract Base Class), Circle
//  (Derived Class) and Rectangle (Derived class).
//  The program asks for needed information for both a circle and rectangle and
//  returns the area.
#include <iostream>
#include "Circle.h"
#include "Rectangle.h"
using namespace std;
 
int main()
{
    long x, y, length, width;
    double rad;
 
    // Demonstrate a Circle.
    cout << "Please enter the x coordinate of the circle's center: "; cin >> x;
    cout << "Please enter the y coordinate of the circle's center: "; cin >> y;
    cout << "Please enter the radius of the circle: "; cin >> rad;
    Circle c(x,y,rad);
    cout << "The area of the circle is " << c.getArea() << ".";
 
    // Demonstrate a Rectangle.
    cout << "\n\nPlease enter the length of the rectangle: "; cin >> length;
    cout << "Please enter the width of the rectangle: "; cin >> width;
    Rectangle r(width, length);
    cout << "The area of the rectangle is " << r.getArea() << ".\n";
 
    return 0;
}

 

Specification file for BasicShape base class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef BASICSHAPE_H
#define BASICSHAPE_H
 
class BasicShape
{
private:
    double area;
 
public:
    double getArea()
        {return area;}
 
    virtual void calcArea() = 0;
 
    void setArea(double a)
        { area = a; }
};
 
#endif

 

Specification file for Circle derived class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef CIRCLE_H
#define CIRCLE_H
#include "BasicShape.h"
 
class Circle : public BasicShape
{
private:
    long centerX;
    long centerY;
    double radius;
public:
    Circle(long x, long y, double rad)
        { centerX = x; centerY = y; radius = rad; calcArea(); }
 
    long getCenterX()
        {   return centerX; }
 
    long getCenterY()
        { return centerY; }
 
    void calcArea()
        { double temp = 3.14159 * radius * radius;
          BasicShape::setArea(temp);
        }
 
    double getArea()
        { return BasicShape::getArea();}
};
 
#endif

 

Specification file for Rectangle derived class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef RECTANGLE_H
#define RECTANGLE_H
#include "BasicShape.h"
 
class Rectangle : public BasicShape
{
private:
    long width;
    long length;
 
public:
    Rectangle(long w, long l)
        { width = w; length = l; calcArea(); }
 
    long getWidth()
        { return width; }
 
    long getLength()
        { return length; }
 
    void calcArea()
        { double temp = length * width; BasicShape::setArea(temp); }
};
 
#endif

About

Leave a reply

Captcha Click on image to update the captcha .

error: Content is protected !!