// file: circleProtected.cpp
// CircleProtected class member-function definitions.
#include <iostream>  

using std::cout;

#include "circleProtected.h"   // CircleProtected class definition

// default constructor
// note difference in accessing x,y as compared to Circle constructor
CircleProtected::CircleProtected( double  xValue, double  yValue, double radiusValue )
{
   x = xValue; //x is directly accessible in contrast to the Circle class 
   y = yValue; //y is directly accessible in contrast to the Circle class 
   setRadius( radiusValue );

} // end CircleProtected constructor

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

} // end function setRadius

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

} // end function getRadius

// calculate and return diameter
double CircleProtected::getDiameter() const
{
   return 2 * radius;

} // end function getDiameter

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

} // end function getCircumference

// calculate and return area
double CircleProtected::getArea() const
{
   return 3.14159 * radius * radius;

} // end function getArea

// output CircleProtected object
void CircleProtected::print() const
{
   cout << "Center = [" << x << ", " << y << ']'
        << "; Radius = " << radius;

} // end function print

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