Ce programme n'aurait pas vu le jour sans un demande de programme par MP. Je le poste ici car je le juge utile pour comprendre l'utilité de la surcharge d'opérateurs en VB.NET et l'utilisation des exceptions. Il n'utilise aucune fonction de VB6 et est par conséquent en "pur" dotnet.
Source / Exemple :
Option Explicit On
Public Class clsFraction
Protected V_Numerator As Integer
Protected V_Denominator As Integer
Public Property Numerator() As Integer
Get
Return V_Numerator
End Get
Set(ByVal value As Integer)
V_Numerator = value
End Set
End Property
Public Property Denominator() As Integer
Get
Return V_Denominator
End Get
Set(ByVal value As Integer)
If value = 0 Then Throw New Exception("Le dénominateur d'une fraction ne peut pas être nul !")
V_Denominator = value
End Set
End Property
Protected Function GCD(ByVal a As Integer, ByVal b As Integer) As Integer
If a = 0 Then Return b
While b <> 0
If a > b Then
a = a - b
Else
b = b - a
End If
End While
Return a
End Function
Public Sub Reduce()
Dim p As Integer
p = GCD(V_Numerator, V_Denominator)
V_Numerator \= p
V_Denominator \= p
End Sub
Public Sub New(Optional ByVal num As Integer = 0, Optional ByVal den As Integer = 1)
Numerator = num
Denominator = den
Reduce()
End Sub
Public Overrides Function ToString() As String
Return (V_Numerator.ToString() & "/" & V_Denominator.ToString())
End Function
Public Shared Operator +(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
Return New clsFraction(F1.Numerator * F2.Denominator + F2.Numerator * F1.Denominator, F1.Denominator * F2.Denominator)
End Operator
Public Shared Operator -(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
Return New clsFraction(F1.Numerator * F2.Denominator - F2.Numerator * F1.Denominator, F1.Denominator * F2.Denominator)
End Operator
Public Shared Operator *(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
Return New clsFraction(F1.Numerator * F2.Numerator, F1.Denominator * F2.Denominator)
End Operator
Public Shared Operator /(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
Return New clsFraction(F1.Numerator * F2.Denominator, F1.Denominator * F2.Numerator)
End Operator
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.