Basics of C/C++ Programming Practice 7 Code

From ICO wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Shape
shape.h
 #pragma once
 
 class Shape
 {
 protected:
   int numAngles;
 
 public:
   Shape(int angles);
   virtual ~Shape();
 
   int getNumAngles();
 
   virtual double area() = 0;
 };
shape.cpp
 #include "Shape.h"
 
 Shape::Shape(int angles) : numAngles(angles)
 {
 }
 
 Shape::~Shape()
 {
 }
 
 int Shape::getNumAngles()
 {
   return numAngles;
 }
Circle
circle.h
 #pragma once
 #include "Shape.h"
 
 class Circle : public Shape
 {
   double radius;
 public:
   Circle(double newRadius);  
   ~Circle();
 
   virtual double area() override;
 };
circle.cpp
 #include "Circle.h"
 #include <cmath>
 
 Circle::Circle(double newRadius) : Shape(0), radius(newRadius)
 {
 }
 
 Circle::~Circle()
 {
 }
 
 double Circle::area()
 {
   return 3.1415 * pow(radius, 2);
 }
Rectangle
rectangle.h
 #pragma once
 #include "Shape.h"
 
 class Rectangle : public Shape
 {
   double width;
   double height;
 public:
   Rectangle(double newWidth, double newHeight);
   ~Rectangle();
 
   virtual double area() override;
 };
rectangle.cpp
 #include "Rectangle.h"
 
 Rectangle::Rectangle(double newWidth, double newHeight)
   : Shape(4)
   , width(newWidth)
   , height(newHeight)
 {
 }
 
 Rectangle::~Rectangle()
 {
 }
 
 double Rectangle::area()
 {
   return width * height;
 }
main
main.cpp
 #include <memory>
 #include <vector>
 #include <iostream>
 #include "Circle.h"
 #include "Rectangle.h"
 
 int main()
 {
   std::vector<std::unique_ptr<Shape>> shapes;
   shapes.push_back(std::make_unique<Rectangle>(2, 3));
   shapes.push_back(std::make_unique<Circle>(2));
 
   double totalArea = 0;
   for (std::unique_ptr<Shape>& shape : shapes)
   {
     std::cout << shape->getNumAngles() << std::endl;
   }
 
   return 0;
 }