[Java] 자바로 프로그래밍 입문하기: 3.2. 자료형 생성하기 (3)
복소수 복소수는 x + iy의 형태를 지닌 수입니다. x와 y는 실수이며, i는 -1의 제곱근이죠. x는 복소수의 실수부라고 하며, y는 복소수의 허수부라고 합니다. 복소수는 -1의 제곱근은 허수여야 한다는 생각으로부터 출발합니다. 실수에는 이러한 수가 없기 때문이죠. 복소수는 전형적인 수학적 추상화입니다: -1의 제곱근이 물리적으로 말이 되는지는 믿거나 말거나지만, 이는 자연 세계를 이해하는데 큰 도움이 됩니다. 복소수는 회로에서 음파, 전자기장에 이르기까지 물리 체계를 모델링하는데 쓰이고 있습니다. 이러한 모델들은 잘 정의된 수학적 연산을 기반으로 복소수를 다루기 때문에, 이러한 연산을 좀 더 쉽게 할 수 있도록 컴퓨터 프로그램을 작성해보려고 합니다. 곧, 새로운 자료형이 필요하겠네요. 복소수 자료형을 개발하는 것은 객체지향 프로그램의 모범 예제입니다. 어떤 프로그래밍 언어도 우리가 필요한 모든 수학적 추상화의 구현을 제공하지 않습니다. 하지만 자료형을 구현할 수 있는 능력은, 우리에게끔 복소수, 다항식, 벡터, 행렬 등 수많은 것들로부터 자유로워지게 됩니다. 필요한 복소수의 기본 연산들은 선형대수학의 덧셈, 곱셈과 교환법칙, 결합법칙, 분배법칙입니다. 크기(magnitude)를 계산하기 위해, 다음 등식에 따라 허수부와 실수부를 추출합니다. 다음 그림을 참고하세요. 예를 들어 a = 3 + 4i 이고 b = -2 + 3i 라면, a+b = 1 + 7i, a*b = -18 + i, Re(a) = 3, Im(a) = 4, |a| = 5입니다. 이러한 기초 정의로, 복소수 자료형을 구현하는 방법은 명쾌해졌습니다. 다음 API로 시작해봅시다. <Complex>의 API <Complex>는 위의 API를 구현하는 클래스입니다. <Charge>, 그리고 수많은 자료형 구현들과 동일한 구성을 지녔죠. 인스턴스 변수(re와 im), 생성자,...