Polymorphism technique Shape Classes

Dependencies:   mbed C12832

Files at this revision

API Documentation at this revision

Comitter:
ciaranom
Date:
Sat Dec 05 15:48:33 2020 +0000
Parent:
0:5c1338f5f742
Commit message:
Oops! (object oriented programming) classes, polymorphism.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Dec 03 20:59:09 2020 +0000
+++ b/main.cpp	Sat Dec 05 15:48:33 2020 +0000
@@ -6,11 +6,11 @@
 class Shape //Creating class called Shape
 {
    protected:
-      int width, height, radius; //Creating protcted variables within class Shape
+      float width, height, radius; //Creating protcted variables within class Shape
     
     
     public: 
-        Shape (int a=0, int b=0, int c=0, int d=0) //assigning values to protected variables in public domain 
+        Shape (float a=0, float b=0, float c=0, float d=0) //assigning values to protected variables in public domain 
         {
         width = a;
         height = b;
@@ -31,7 +31,7 @@
 class Rectangle: public Shape //Creating class rectangle within the class of shape 
     {
         public:
-            Rectangle (int a=0, int b=0):Shape(a,b,0) {} 
+            Rectangle (float a=0, float b=0):Shape(a,b,0) {} 
             int area ()
             {
                 return (width*height); //Calculation for rectangle area
@@ -45,21 +45,22 @@
 class Triangle: public Shape //Creating class triangle within the class of shape 
     {
         public: 
-            Triangle(int a=0, int b=0): Shape (a,b,0) {}
+            Triangle(float a=0, float b=0): Shape (a,b,0) {}
             int area ()
                 {   
                 return (width*height/2); //Calculation for Triangle area
                 }
-            //int perimeter ()
-            //    {
-            //    return (width+(2*(sqrt((width/2)^2)+(height^2))); //Calculation for Triangle perimeter
-            //    } 
+            int perimeter ()
+                {
+                return width+(2*(sqrt((width/2)*(width/2)+(height*height)))); //Calculation for Triangle perimeter
+                //                      2      *    2     +   6   *   6  
+                } 
     };
 
 class Circle: public Shape  //Creating class circle within the class of shape 
     {
         public:
-            Circle (int c=0): Shape (0,0,c) {} // c is the third calue in the constructor
+            Circle (float c=0): Shape (0,0,c) {} // c is the third calue in the constructor
             int area ()
                 {
                 return ((radius)*2*3.14); //Calculation for circle area
@@ -75,7 +76,7 @@
 {
     Shape *Vshape; //Vshape is the pointer towards Shape. shape is how we will draw from the class shape 
     Rectangle rec(3,4); //Assign x and y values for Rectangle
-    Triangle  tri(4,6); //Assign x and y values for Triangle
+    Triangle  tri(8,3); //Assign x and y values for Triangle
     Circle    cir(5);   //Assign radius values for Circle
     
     
@@ -84,11 +85,11 @@
     
     //Call rectangle and print area 
     Vshape->area(); //Calling Cshapes area function 
-    int Rval = Vshape->area(); //Assigning return value to Rval
-    printf("Rectangle area is: %d\n\r",Rval);  //print value
+    float Rval = Vshape->area(); //Assigning return value to Rval
+    printf("Rectangle area is: %.1f\n\r",Rval);  //print value
     Vshape->perimeter();
-    int RvalP = Vshape->perimeter();
-    printf("Rectangle perimeter is: %d\n\n\r",RvalP);
+    float RvalP = Vshape->perimeter();
+    printf("Rectangle perimeter is: %.1f\n\n\r",RvalP);
 
 
     //Store address if triangle
@@ -96,11 +97,11 @@
     
     //Call triangle and print area
     Vshape->area(); 
-    int Tval = Vshape->area();
-    printf("Triangle area is: %d\n\n\r",Tval);
-    //Vshape->perimeter();
-    //int TvalP = Vshape->perimeter(); 
-    //printf("Triangle area is: %d\n\n\r",TvalP);
+    float Tval = Vshape->area();
+    printf("Triangle area is: %.1f\n\r",Tval);
+    Vshape->perimeter();
+    float TvalP = Vshape->perimeter(); 
+    printf("Triangle perimeter is: %.1f\n\n\r",TvalP);
 
 
     //Store address if Circle
@@ -109,11 +110,11 @@
     
     //Call Circle area
     Vshape->area();
-    int Cval = Vshape->area();
-    printf("Circle area is: %d\n\r",Cval);
+    float Cval = Vshape->area();
+    printf("Circle area is: %.1f\n\r",Cval);
     Vshape->perimeter();
-    int CvalP = Vshape->perimeter(); 
-    printf("Circle perimeter is: %d\n\n\n\n\r",CvalP);
+    float CvalP = Vshape->perimeter(); 
+    printf("Circle perimeter is: %.1f\n\n\n\n\r",CvalP);
     
     return 0;