Gold University of Minnesota M. Skip to main content.University of Minnesota. Home page.
 
 
 

What's inside.

Ta Email

Download Compiler

Final Project

Lab Notes

Office Hours

Schedule

Syllabus

Announcements

Check Grades

 

CSci 1113 Home

 
 

Printer-friendly version

 
Circle Class - Version 3

version 2:  ostream& in showdata(), accessor and mutator functions, and separate compilation.
version 3:  static data member, setCircle, area, circumference and equal functions

Definition Part

% cat circle.h
#ifndef CIRCLE_H
#define CIRCLE_H
// Circle class definition - file circle.h

class Circle
{
   public:
     Circle();               // default constructor
     Circle(int x, int y, double r); // constructor
     void showdata(ostream& out);
     double get_radius();            // accessor
     void set_radius( double r );    // mutator
  
     void setCircle(int x, int y, double r);
     double area();
     double circumference();
     bool equal( Circle& c2 );


   private:
     int xcenter;
     int ycenter;
     double radius;
     static double PI; // static data member
};
#endif // CIRCLE_H


Implementation Part

% cat circle.cpp
#include <iostream>
#include <iomanip>
using namespace std;

#include "circle.h" // header file

double Circle::PI = 3.14159; // static data member

// default constructor
Circle::Circle(): xcenter(0), ycenter(0), radius(1.0)           
{
  // empty body when initialization
  // section is used
}

// constructer with parameters for initialization
Circle::Circle(int x, int y, double r): xcenter(x),
               ycenter(y),radius(r)
{
  // empty body when initialization
  // section is used
}

void Circle::showdata( ostream& out)
{

  out << setiosflags(ios::fixed | ios::showpoint ) << setprecision(2);
 
 
out << "The circle is centered at (" << xcenter << ", "
      <<  ycenter << ")" << endl;

  out << "Radius = " << radius << endl;


  return;
}

// accessor function
double Circle::get_radius()
{
   return radius;
}

// mutator function
void Circle::set_radius(double r)
{
  if( r < 0.0 )
  {
    cout << "The radius cannot be less than zero." << endl;
    exit(1);
  }

  else

    radius = r;
}

// setCircle() mutator function
void Circle::setCircle(int x, int y, double r)
{
   xcenter = x;
   ycenter = y;
   radius  = r;
}

// area
double Circle::area()
{
   return PI*radius*radius;
}

// circumference
double Circle::circumference()
{
    return 2.0 * PI * radius;
}

// test equality of Circle objects
bool Circle::equal( Circle& c2 )
{
   bool eq;

   eq = (radius==c2.radius) && (xcenter==c2.xcenter)
        && (ycenter==c2.ycenter);

   return eq;
}


Driver Program


% cat circ3.cpp
// driver program for Circle class example

#include<iostream>
using namespace std;
#include<fstream>

#include "circle.h" // header file

int main()
{
   int new_x, new_y;
   double new_r;

   // declare Circle objects a and b

   Circle a(3, 4, 4.0), b;
 
   cout << "Circle a: " << endl;
   a.showdata( cout ); 
 
   cout << "Circle b: " << endl;
   b.showdata( cout );

  // set new values for b

  cout << "\n\nEnter new values for xcenter, ycenter, and radius: ";
  cin >> new_x >> new_y >> new_r;

  b.setCircle(new_x, new_y, new_r);

  cout << "New values for Circle b: " << endl;
  b.showdata( cout );

  // area and circumference for b

  cout << "\nArea of b = " << b.area() << endl;
  cout << "Circumference of b = " << b.circumference() << endl;

  // check equality

  if ( a.equal(b) )
    cout << "\nThe circle objects are equal" << endl;
  else
    cout << "\nThe circle objects are NOT equal" << endl;
   
   return 0;
}


Compile and Execute

% g++ circ3.cpp circle.cpp
cswanson@mega (~/summer05/circlass3) % a.out
Circle a:
The circle is centered at (3, 4)
Radius = 4.00
Circle b:
The circle is centered at (0, 0)
Radius = 1.00


Enter new values for xcenter, ycenter, and radius: 4 4 8.0
New values for Circle b:
The circle is centered at (4, 4)
Radius = 8.00

Area of b = 201.06
Circumference of b = 50.27

The circle objects are NOT equal


Run it again!

% a.out
Circle a:
The circle is centered at (3, 4)
Radius = 4.00
Circle b:
The circle is centered at (0, 0)
Radius = 1.00


Enter new values for xcenter, ycenter, and radius: 3 4 4.0
New values for Circle b:
The circle is centered at (3, 4)
Radius = 4.00

Area of b = 50.27
Circumference of b = 25.13

The circle objects are equal



 
The University of Minnesota is an equal opportunity educator and employer.
CSci 1113: C++ Programming