S'affranchir du code.

Signaler
Messages postés
81
Date d'inscription
vendredi 19 septembre 2014
Statut
Membre
Dernière intervention
15 octobre 2014
-
Messages postés
81
Date d'inscription
vendredi 19 septembre 2014
Statut
Membre
Dernière intervention
15 octobre 2014
-
Sub toto() Handles tintin.Go
    End Sub
    WithEvents tintin As reporter
    Class reporter
        Event Go()
    End Class


Je voudrais mettre Sub toto dans un User Ctrl pour éviter d'écrire du code quand je m'en sers. Comment procéder ?

3 réponses

Messages postés
15153
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 novembre 2020
463
Bonjour, je pense que tu confonds objet et usercontrol.
Un usercontrol est un objet avec interface graphique.

Pour des opérations sans interface graphique, une classe suffit.
Par exemple, la classe Math permets tout un tas de calculs mathématiques.

Voici un exemple pour le calcule de l'hypoténuse, d'abord la classe:
Public Class Geometrie
    Public Function Hypthenuse(ByVal cote1 As Double, ByVal cote2 As Double) As Double
        Return Math.Sqrt(cote1 * cote1 + cote2 * cote2)
    End Function
End Class

et comment s'en servir ailleurs dans le code:
        Dim geo As Geometrie = New Geometrie()
        Dim hyp As Double = geo.Hypthenuse(8, 6)


Tu vas me dire, Ok mais math tu t'en sers direct sans faire un Dim, et tu auras raison.
Si c'est ce type d'utilisation dont tu as besoin, alors il faut rendre la méthode shared:
Public Class Geometrie
    Public Shared Function Hypthenuse(ByVal cote1 As Double, ByVal cote2 As Double) As Double
        Return Math.Sqrt(cote1 * cote1 + cote2 * cote2)
    End Function
End Class

et comment je l'appelle
Dim hyp As Double = Geometrie.Hypthenuse(8, 6)

Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
Messages postés
30358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
338
Par contre... Whism... là.. tu pars du principe qu'une class est une Bibliothèque de fonctions....
Hors.. une class est sensée représenter un "objet".

Par exemple ....

Une classe TRIANGLE qui contiendrait une méthode de calcul de son Hypoténuse..;
Public Class Triangle

    Private _cote1 As String
    Public Property cote1() As Double
        Get
            Return _cote1
        End Get
        Set(ByVal value As Double)
            _cote1 = value
        End Set
    End Property

    Private _cote2 As String
    Public Property cote2() As Double
        Get
            Return _cote2
        End Get
        Set(ByVal value As Double)
            _cote2 = value
        End Set
    End Property

    Private _Hypothenuse As String
    Public Property Hypothenuse() As Double
        Get
            Return _Hypothenuse
        End Get
        Set(ByVal value As Double)
            _Hypothenuse = value
        End Set
    End Property

    Sub New(ByVal CoteNumero1 As Double, ByVal CoteNumero2 As Double)
        _cote1 = CoteNumero1
        _cote2 = CoteNumero2
        Call CalculeHypothenuse()

    End Sub

    Private Sub CalculeHypothenuse()
        _Hypothenuse = Math.Sqrt(Me.cote1 * Me.cote1 + Me.cote2 * Me.cote2)
    End Sub



End Class



Et pour l'utiliser :
        Dim Tria As New Triangle(8, 6)
        MsgBox(Tria.Hypothenuse)


Nb : J'ai pris le parti de faire la calcul de l'hypoténuse dans le constructeur... mais ça aurait pu aussi être une méthode ( à part ) et dans ce cas faire comme tu l'a dit en Friend ou Shared...


Nb2 : On aurait pu aller plus loin.. en créant une class FORME de laquelle aurait pu hériter la classe TRIANGLE ... mais on en est pas là je pense...
Messages postés
81
Date d'inscription
vendredi 19 septembre 2014
Statut
Membre
Dernière intervention
15 octobre 2014

Et maintenant qu'on a les outils pour calculer les rotations, On pourrait trianguler... Rotations, Transitions,... Mobiles .

Class Coordonnees
        Private _Latitude As String 'Degres decimaux  modulo +- 90 
        Public Property Latitude() As Double
            Get
                Return _Latitude
            End Get
            Set(ByVal value As Double)
                _Latitude = value
            End Set
        End Property
        Private _Longitude As String 'secondes   modulo 60x60x24 
        Public Property Longitude() As Double
            Get
                Return _Longitude
            End Get
            Set(ByVal value As Double)
                _Longitude = value
            End Set
        End Property
        Private _Ascention As String 'Metres  Precision 0,01 de zero a ...
        Public Property Ascention() As Double
            Get
                Return _Ascention
            End Get
            Set(ByVal value As Double)
                _Ascention = value
            End Set
        End Property
        Private _Hypothenuse As String
    End Class
Messages postés
30358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
338
Là.. tu as tes PROPRIETES dans ta class ...
Il te manque un CONSTRUCTEUR (
Sub New() 
) et des Méthodes. (toute autre SUB.. par exemple pour calculer la rotation comme tu le dis si bien ^^ )
Messages postés
15153
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 novembre 2020
463
@Jordanne, oui j'ai mis un bout d'exemple, pas une classe entière.
Messages postés
81
Date d'inscription
vendredi 19 septembre 2014
Statut
Membre
Dernière intervention
15 octobre 2014

Les rotations dans ce système de coordonnées, c'est des additions. Faudrait voir ce qu'on veut en faire.
J'avais songe articuler des segments avec des rotations. Pour ca on a pas besoin de l'ascension.
Le lexique se traine. J'ai une idée a vérifier pour relier les modules sans écrire de code, et sans moteur d'inférence (Prolog... Le Robot qui a découvert que 95% des cas médicaux sont psychologiques... Il s'est retire tout seul du marché)
Messages postés
81
Date d'inscription
vendredi 19 septembre 2014
Statut
Membre
Dernière intervention
15 octobre 2014

Module Methaphysique

    Public Function Hypothenuse() As Double Handles Whismeril.Calculer
        With Whismeril
            Return Math.Sqrt(.cote1 * .cote1 + .cote2 * .cote2)
        End With
    End Function

    WithEvents Whismeril As Matheux
    Class Matheux
        Friend cote1 As Double = 8
        Friend cote2 As Double = 6
        Friend Resultat As Double
        Event Calculer()
    End Class

End Module


J'ai encapsulé de mon mieux.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
Je réponds, avec le même esprit, à ton message du 30 sept. 2014 à 20:25 ===>>>
Il suffit alors de considérer des translations orthogonales destinées à troubler les résultats d'homothéties transversales et infinies. On a alors plus de chances d'abnoutir à des courbes limbiscoïdales.
Planche là-dessus.
Reviens lorsque tes idées seront claires sur ce point-là.
Messages postés
81
Date d'inscription
vendredi 19 septembre 2014
Statut
Membre
Dernière intervention
15 octobre 2014

Bonjour ucfoutu,
Limiter les homothéties a l'infini ?
je deviendrais limbiscoide.
Mais si ca s'encapsule ...

J'en profite pour remercier

Whismeril Pour son Hypoténuse.
Shared y est lumineux.

Jordane45 pour le triangle
Call en Basic !!! J'aurais pas pense a essayer.

Tout ca ne réponds pas a ma question.
Je voudrais éviter l'Override. Il faudrait trier ce qui m'appartient.
Pourquoi ce rapport inverse dans la complication du code et des résultats ?