Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I have this code and the test driver to run the code, but it will not compile, what is the issue? These are the remarks

I have this code and the test driver to run the code, but it will not compile, what is the issue?

These are the remarks left on the assignment. "This is so far from compiling I do not know where to begin. Just a few points: Why is override used so much? - that wasn't specified. Where did you get that? Way too much was specified as protected in the Shape class. The derived classes were not modified as specified. I specifically said to not use the member injection method for the functions."

// Shape.h

#include

class Shape {

public:

Shape();

virtual ~Shape() {}

void SetFillColor(std::string fill_color);

std::string GetFillColor();

void SetBorderColor(std::string border_color);

std::string GetBorderColor();

virtual float Area() = 0;

virtual float Perimeter() = 0;

protected:

std::string shape_type_;

int num_sides_;

std::string fill_color_;

std::string border_color_;

void SetShapeType(std::string shape_type);

void SetNumSides(int num_sides);

};

// Shape.cpp

#include "Shape.h"

Shape::Shape() : shape_type_("Shape"), num_sides_(0), fill_color_("White"), border_color_("Black") {}

void Shape::SetFillColor(std::string fill_color) {

fill_color_ = fill_color;

}

std::string Shape::GetFillColor() {

return fill_color_;

}

void Shape::SetBorderColor(std::string border_color) {

border_color_ = border_color;

}

std::string Shape::GetBorderColor() {

return border_color_;

}

void Shape::SetShapeType(std::string shape_type) {

shape_type_ = shape_type;

}

void Shape::SetNumSides(int num_sides) {

num_sides_ = num_sides;

}

// Triangle.h

#include "Shape.h"

class Triangle : public Shape {

public:

Triangle();

Triangle(int side1, int side2, int side3);

void SetSide1(int side);

int GetSide1();

void SetSide2(int side);

int GetSide2();

void SetSide3(int side);

int GetSide3();

float Area() override;

float Perimeter() override;

private:

int side1_;

int side2_;

int side3_;

};

// Triangle.cpp

#include "Triangle.h"

#include

Triangle::Triangle() : Shape(), side1_(0), side2_(0), side3_(0) {

SetShapeType("Triangle");

SetNumSides(3);

}

Triangle::Triangle(int side1, int side2, int side3) : Shape(), side1_(side1), side2_(side2), side3_(side3) {

SetShapeType("Triangle");

SetNumSides(3);

}

void Triangle::SetSide1(int side) {

side1_ = side;

}

int Triangle::GetSide1() {

return side1_;

}

void Triangle::SetSide2(int side) {

side2_ = side;

}

int Triangle::GetSide2() {

return side2_;

}

void Triangle::SetSide3(int side) {

side3_ = side;

}

int Triangle::GetSide3() {

return side3_;

}

float Triangle::Area() {

float s = (side1_ + side2_ + side3_) / 2.0f;

return sqrt(s * (s - side1_) * (s - side2_) * (s - side3_));

}

float Triangle::Perimeter() {

return side1_ + side2_ + side3_;

}

// Circle.h

#include "Shape.h"

class Circle : public Shape {

public:

Circle();

Circle(int radius, std::string fill_color, std::string border_color);

void SetRadius(int radius);

int GetRadius();

void SetFillColor(std::string fill_color) override;

std::string GetFillColor() override;

void SetBorderColor(std::string border_color) override;

std::string GetBorderColor() override;

float Area() override;

float Perimeter() override;

private:

int radius_;

};

// Circle.cpp

#include "Circle.h"

#include

Circle::Circle() : Shape(), radius_(0), fill_color_(""), border_color_("") {

SetShapeType("Circle");

SetNumSides(0);

}

Circle::Circle(int radius, std::string fill_color, std::string border_color) : Shape(), radius_(radius), fill_color_(fill_color), border_color_(border_color) {

SetShapeType("Circle");

SetNumSides(0);

}

void Circle::SetRadius(int radius) {

radius_ = radius;

}

int Circle::GetRadius() {

return radius_;

}

void Circle::SetFillColor(std::string fill_color) {

fill_color_ = fill_color;

}

std::string Circle::GetFillColor() {

return fill_color_;

}

void Circle::SetBorderColor(std::string border_color) {

border_color_ = border_color;

}

std::string Circle::GetBorderColor() {

return border_color_;

}

float Circle::Area() {

return M_PI * radius_ * radius_;

}

float Circle::Perimeter() {

return 2 * M_PI * radius_;

}

Test driver

#include "Shape.h"

#include "Triangle.h"

#include "Circle.h"

#include

#include

int main() {

Triangle t;

t.SetSide1(3);

t.SetSide2(4);

t.SetSide3(5);

assert(t.Area() == 6.0);

assert(t.Perimeter() == 12.0);

Circle c;

c.SetRadius(5);

assert(c.Area() == 25 * M_PI);

assert(c.Perimeter() == 10 * M_PI);

std::cout << "All tests passed." << std::endl;

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Intelligent Information And Database Systems 6th Asian Conference Aciids 2014 Bangkok Thailand April 7 9 2014 Proceedings Part I 9 2014 Proceedings Part 1 Lnai 8397

Authors: Ngoc-Thanh Nguyen ,Boonwat Attachoo ,Bogdan Trawinski ,Kulwadee Somboonviwat

2014th Edition

3319054759, 978-3319054759

More Books

Students also viewed these Databases questions

Question

a. How do you think these stereotypes developed?

Answered: 1 week ago

Question

7. Describe phases of multicultural identity development.

Answered: 1 week ago