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 2
ostream& in showdata(), accessor and mutator functions, and separate compilation.

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

   
   private:
     int xcenter;
     int ycenter;
     double radius;
};
#endif // CIRCLE_H



Implementation Part

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

#include "circle.h" // header file

// 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;
}


Driver Program


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

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

#include "circle.h" // header file

int main()
{
   ofstream file_out;
   file_out.open( "circle_data" );

   double new_radius;

   // declare Circle object a

   Circle a(3, 4, 4.0);
   a.showdata( cout );      // display on screen
   a.showdata( file_out );  // write to a file

   // call member functions
   cout << "\n*** Call the accessor function" << endl;
   cout << "The radius is " << a.get_radius() << endl;

   // get a new radius
   cout << "\n*** Use the mutator function" << endl;
   cout << "Enter a new radius: ";
   cin >> new_radius;

   a.set_radius( new_radius );

   cout << "The new radius is " << a.get_radius() << endl;
  
   a.showdata( cout );
  
   return 0;
}


Compile and Execute

% g++ circ2.cpp circle.cpp
% a.out
The circle is centered at (3, 4)
Radius = 4.00

*** Call the accessor function
The radius is 4.00

*** Use the mutator function
Enter a new radius: 9.5
The new radius is 9.50
The circle is centered at (3, 4)
Radius = 9.50



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