복소수 클래스 정의 – 캡슐화 실습 [C++]

안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 캡슐화 실습으로 복소수 클래스를 정의할 거예요. 실수부와 허수부를 멤버 필드로 갖고 있습니다. 그리고 실수부와 허수부의 값을 접근하는 접근자 메서드와 설정하는 설정자 메서드를 갖습니다. 마지막으로 복소수 개체 정보를 문자열로 반환하는 메서드를 멤버로 갖습니다.
복소수 클래스 다이어그램
복소수 클래스 다이어그램
#include 
#include 
using namespace std;

class Complex
{
    double image;
    double real;
public:
    Complex(double real = 0, double image = 0)
    {
        SetReal(real);
        SetImage(image);
    }
    void SetReal(double value)
    {
        real = value;
    }
    void SetImage(double value)
    {
        image = value;
    }
    double GetReal()const
    {
        return real;
    }
    double GetImage()const
    {
        return image;
    }
    string ToString()const
    {
        char buf[256] = "";
        if ((real != 0) && (image != 0))
        {
            if (image > 0)
            {
                sprintf_s(buf, sizeof(buf), "%g+%gi", real, image);
            }
            else
            {
                sprintf_s(buf, sizeof(buf), "%g%gi", real, image);
            }
            return buf;
        }
        if (real != 0)
        {
            sprintf_s(buf, sizeof(buf), "%g", real);
            return buf;
        }
        if (image != 0)
        {
            sprintf_s(buf, sizeof(buf), "%gi", image);
            return buf;
        }
        return "0";
    }
};

int main(void)
{
    Complex c1;
    Complex c2(2.1);
    Complex c3(2.1,3.3);
    Complex c4(0, 3.3);
    Complex c5(2.1, 0);
    Complex c6(2.1, -3.3);

    cout << "c1:" << c1.ToString() <<endl;
    cout << "c2:" << c2.ToString() << endl;
    cout << "c3:" << c3.ToString() << endl;
    cout << "c4:" << c4.ToString() << endl;
    cout << "c5:" << c5.ToString() << endl;
    cout << "c6:" << c6.ToString() << endl;
    return 0;
}
다음은 실행 결과입니다.
c1:0
c2:2.1
c3:2.1+3.3i
c4:3.3i
c5:2.1
c6:2.1-3.3i