Ik heb een vraag betreffende een class definieëren op een driehoek.
De oefening gaat als volgt:
Maak een klasse waarvan objecten een voorstelling zijn van een rechthoekige driehoek.
Een rechthoekige driehoek heeft twee rechthoekzijden waarvan je de lengte kan instellen en opvragen.
Het moet ook mogelijk zijn van deze driehoeken de lengte van de schuine zijde, de omtrek en de oppervlakte op te vragen.
Voor het bepalen van de lengte van de schuine zijde heb je een vierkantswortel berekening nodig, dit kan je doen aan de hand van de Math.Sqrt functie, een voorbeeld :
Module RechthoekigeDriehoekTestFixture
Sub Main()
Dim target As New RechthoekigeDriehoek
Assert.AreEqual(0.0R, target.GetLengteRechthoekzijde1())
Assert.AreEqual(0.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(0.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(0.0R, target.GetOmtrek())
Assert.AreEqual(0.0R, target.GetOppervlakte())
'
target.SetLengteRechthoekzijde1(3.0R)
target.SetLengteRechthoekzijde2(4.0R)
Assert.AreEqual(3.0R, target.GetLengteRechthoekzijde1())
Assert.AreEqual(4.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(5.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(12.0R, target.GetOmtrek())
Assert.AreEqual(6.0R, target.GetOppervlakte())
'
Console.ReadLine()
End Sub
End Module
Module Assert
Sub AreEqual(ByVal expected As Double, ByVal actual As Double)
If expected = actual Then
Console.WriteLine("Assertion correct.")
Else
Console.WriteLine("Assertion failed, expected " & expected & ", actual " & actual & ".")
End If
End Sub
End Module
Class RechthoekigeDriehoek
Function GetLengthRechthoekZijde1() As Integer
End Function
Function GetLengteSchuineZijde() As Decimal
Math.Sqrt(25)
End Function
Function GetOmtrek() As Decimal
GetOmtrek() = GetLengteRechthoekzijde1() + GetLengteRechthoekzijde2() + GetLengteSchuineZijde()
End Function
Function GetOppervlakte() As Decimal
End Function
End Class
Module MathSqrtExample
Sub Main()
Console.WriteLine(Math.Sqrt(25.0R) = 5.0R) ' True
End Sub
End Module
Module RechthoekigeDriehoekTestFixture
Sub Main()
Dim target As New RechthoekigeDriehoek
Assert.AreEqual(0.0R, target.GetLengteRechthoekzijde1())
Assert.AreEqual(0.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(0.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(0.0R, target.GetOmtrek())
Assert.AreEqual(0.0R, target.GetOppervlakte())
'
target.SetLengteRechthoekzijde1(3.0R)
target.SetLengteRechthoekzijde2(4.0R)
Assert.AreEqual(3.0R, target.GetLengteRechthoekzijde1())
Assert.AreEqual(4.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(5.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(12.0R, target.GetOmtrek())
Assert.AreEqual(6.0R, target.GetOppervlakte())
'
Console.ReadLine()
End Sub
End Module
Module Assert
Sub AreEqual(ByVal expected As Double, ByVal actual As Double)
If expected = actual Then
Console.WriteLine("Assertion correct.")
Else
Console.WriteLine("Assertion failed, expected " & expected & ", actual " & actual & ".")
End If
End Sub
End Module
Public Class RechthoekigeDriehoek
Private mOmtrek As Decimal
Private mLengteRechthoekzijde1 As Decimal
Private mLengteRechthoekzijde2 As Decimal
Private mLengteSchuineZijde As Decimal
Private Property GetLengthRechthoekZijde1() As Decimal
Set(ByVal value As Decimal)
mLengteRechthoekzijde1 = value
End Set
Get
Return mLengteRechthoekzijde1
End Get
End Property
Private Property GetLengthRechthoekZijde2() As Decimal
Set(ByVal value As Decimal)
mLengteRechthoekzijde2 = value
End Set
Get
Return mLengteRechthoekzijde2
End Get
End Property
Private Property GetLengteSchuineZijde() As Decimal
Set(ByVal value As Decimal)
mLengteSchuineZijde = CDec(Math.Sqrt(value))
End Set
Get
Return mLengteSchuineZijde
End Get
End Property
Private ReadOnly Property GetOmtrek() As Decimal
Get
Return mLengteRechthoekzijde1 + mLengteRechthoekzijde2 + GetLengteSchuineZijde()
End Get
End Property
End Class
Module RechthoekigeDriehoekTestFixture
Sub Main()
Dim target As New RechthoekigeDriehoek
Assert.AreEqual(0.0R, target.GetLengteRechthoekzijde1())
Assert.AreEqual(0.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(0.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(0.0R, target.GetOmtrek())
Assert.AreEqual(0.0R, target.GetOppervlakte())
'
target.SetLengteRechthoekzijde1(3.0R)
target.SetLengteRechthoekzijde2(4.0R)
Assert.AreEqual(3.0R, target.GetLengteRechthoekzijde1())
Assert.AreEqual(4.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(5.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(12.0R, target.GetOmtrek())
Assert.AreEqual(6.0R, target.GetOppervlakte())
'
Console.ReadLine()
End Sub
End Module
Module Assert
Sub AreEqual(ByVal expected As Double, ByVal actual As Double)
If expected = actual Then
Console.WriteLine("Assertion correct.")
Else
Console.WriteLine("Assertion failed, expected " & expected & ", actual " & actual & ".")
End If
End Sub
End Module
Public Class RechthoekigeDriehoek
Public mOmtrek As Decimal
Public mLengteRechthoekzijde1 As Decimal
Public mLengteRechthoekzijde2 As Decimal
Public mLengteSchuineZijde As Decimal
Public mOppervlakte As Decimal
Public Property GetLengteRechthoekZijde1() As Decimal
Set(ByVal value As Decimal)
mLengteRechthoekzijde1 = value
End Set
Get
Return mLengteRechthoekzijde1
End Get
End Property
Public Property GetLengteRechthoekZijde2() As Decimal
Set(ByVal value As Decimal)
mLengteRechthoekzijde2 = value
End Set
Get
Return mLengteRechthoekzijde2
End Get
End Property
Public Property GetLengteSchuineZijde() As Decimal
Set(ByVal value As Decimal)
mLengteSchuineZijde = CDec(Math.Sqrt(value))
End Set
Get
Return mLengteSchuineZijde
End Get
End Property
Public ReadOnly Property GetOmtrek() As Decimal
Get
Return mLengteRechthoekzijde1 + mLengteRechthoekzijde2 + GetLengteSchuineZijde()
End Get
End Property
Public ReadOnly Property GetOppervlakte() As Decimal
Get
Return mLengteRechthoekzijde1 + mLengteRechthoekzijde2 + GetLengteSchuineZijde()
End Get
End Property
End Class
Module RechthoekigeDriehoekTestFixture
Sub Main()
Dim target As New RechthoekigeDriehoek
Assert.AreEqual(0.0R, target.GetLengteRechthoekZijde1())
Assert.AreEqual(0.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(0.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(0.0R, target.GetOmtrek())
Assert.AreEqual(0.0R, target.GetOppervlakte())
'
target.SetLengteRechthoekzijde1(3.0R)
target.SetLengteRechthoekzijde2(4.0R)
Assert.AreEqual(3.0R, target.GetLengteRechthoekZijde1())
Assert.AreEqual(4.0R, target.GetLengteRechthoekZijde2())
Assert.AreEqual(5.0R, target.GetLengteSchuineZijde())
Assert.AreEqual(12.0R, target.GetOmtrek())
Assert.AreEqual(6.0R, target.GetOppervlakte())
'
Console.ReadLine()
End Sub
End Module
Module Assert
Sub AreEqual(ByVal expected As Double, ByVal actual As Double)
If expected = actual Then
Console.WriteLine("Assertion correct.")
Else
Console.WriteLine("Assertion failed, expected " & expected & ", actual " & actual & ".")
End If
End Sub
End Module