// file: circleComposition.cpp
// CircleComposition class member-function definitions.
#include <iostream>  

using std::cout;

#include "circleComposition.h"   // CircleComposition class definition

// default constructor
CircleComposition::CircleComposition( double xValue, double yValue, double radiusValue )
   : center( xValue, yValue )  // initialize data member center
{
   setRadius( radiusValue );

} // end CircleComposition constructor


void CircleComposition::setX( double xValue){    // set x in coordinate pair
	center.setX(xValue);
}
double CircleComposition::getX() const{    // return x from coordinate pair
	return center.getX();
}
void CircleComposition::setY( double yValue){    // set y in coordinate pair
	center.setY(yValue);
}
double CircleComposition::getY() const{    // return y from coordinate pair
	return center.getY();
}

// set radius 
void CircleComposition::setRadius( double radiusValue )
{
   radius = ( radiusValue < 0.0 ? 0.0 : radiusValue );

} // end function setRadius

// return radius 
double CircleComposition::getRadius() const
{
   return radius;

} // end function getRadius

// calculate and return diameter
double CircleComposition::getDiameter() const
{
   return 2 * getRadius();

} // end function getDiameter

// calculate and return circumference
double CircleComposition::getCircumference() const
{
   return 3.14159 * getDiameter();

} // end function getCircumference

// calculate and return area
double CircleComposition::getArea() const
{
   return 3.14159 * getRadius() * getRadius();

} // end function getArea

// output CircleComposition object
void CircleComposition::print() const
{
   cout << "Center = ";
   center.print();      // call print with private data member center
   cout << "; Radius = " << this->radius;//getRadius();


} // end function print

/* to complement the example from Chapter 9, Deitel & Deitel: C++ How to Program. Fourth edition.
 * Prentice Hall, 2003. 
 */