/* * First example: shapes * OOP and C++ * Note how the main program calls to draw and area become cleaner * * RunStuff:: g++ THISFILE */ #include <stdio.h> /* * Definition of class Rect */ class Rect { //*1 Class definitions public: //*1 int x, y, wid, ht; //*1 void draw(); //*1 float area(); //*1 }; /* * Definition of class Circle */ class Circle { //*1 public: //*1 int x, y, rad; //*1 void draw(); //*1 float area(); //*1 }; int main () { /* * Data definitions */ Rect *r1, *r2; //*2 Declare and instantiate objects Circle *c1; //*2 r1 = new Rect(); //*2 r2 = new Rect(); //*2 c1 = new Circle; //*2 /* * Set the locations of the 3 objects */ r1->x = 10; r1->y = 10; //*3 Set the data r1->wid = 50; r1->ht = 50; //*3 r2->x = 80; r2->y = 10; //*3 r2->wid = 10; r2->ht = 100; //*3 c1->x = 35; c1->y = 90; //*3 c1->rad = 10; //*3 /* * "Draw" them */ r1->draw(); //*4 Call the methods r2->draw(); //*4 c1->draw(); //*4 /* * Compute and print total area */ printf ("Total area = %f\n", r1->area() + r2->area() + c1->area()); //*4 return 0; } /* * Methods for class Rect */ void Rect::draw () { //*5 Procedure definitions printf ("Drawing rectangle at %d, %d, %d, %d\n", x, y, wid, ht); //*5 } float Rect::area () { //*5 return (float) (wid * ht); } /* * Methods for class Circle */ void Circle::draw () { //*5 printf ("Drawing circle at %d, %d, radius = %d\n", x, y, rad); } float Circle::area () { //*5 return (float) (rad * rad * 3.14159); }