### Lesson

#### OOP More On Classes

### Exercise

#### Complex numbers

### Objetive

#### A complex number has two parts: the real part and the imaginary part. In a number such as a+bi (2-3i, for example) the real part would be "a" (2) and the imaginary part would be "b" (-3).

Create a class ComplexNumber with:

A constructor to set the values for the real part and the imaginary part.

Setters and getters for both.

A method "ToString", which would return "(2,-3)"

A method "GetMagnitude" to return the magnitude of the complex number (square root of a2+b2)

A method "Add", to sum two complex numbers (the real part will be the sum of both real parts, and the imaginary part will be the sum of both imaginary parts)

Create a test program, to try these capabilities.

### Code

```
Imports System
Class ComplexNumber
Protected a, b As Double
Public Sub New(ByVal realPart As Double, ByVal imaginaryPart As Double)
a = realPart
b = imaginaryPart
End Sub
Public Function GetReal() As Double
Return a
End Function
Public Sub SetReal(ByVal a As Double)
Me.a = a
End Sub
Public Function GetImaginary() As Double
Return b
End Function
Public Sub SetImaginary(ByVal b As Double)
Me.b = b
End Sub
Public Overloads Function ToString() As String
Return "(" & a & "," & b & ")"
End Function
Public Function GetMagnitude() As Double
Return Math.Sqrt((a * a) + (b * b))
End Function
Public Sub Add(ByVal c2 As ComplexNumber)
a += c2.GetReal()
b += c2.GetImaginary()
End Sub
End Class
Class ComplexTest
Private Shared Sub Main()
Dim debug As Boolean = False
Dim number As ComplexNumber = New ComplexNumber(5, 2)
Console.WriteLine("Number is: " & number.ToString())
number.SetImaginary(-3)
Console.WriteLine("Number is: " & number.ToString())
Console.Write("Magnitude is: ")
Console.WriteLine(number.GetMagnitude())
Dim number2 As ComplexNumber = New ComplexNumber(-1, 1)
number.Add(number2)
Console.Write("After adding: ")
Console.WriteLine(number.ToString())
If debug Then Console.ReadLine()
End Sub
End Class
```