S'affranchir du code.

CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014 - Modifié par CoDubai le 30/09/2014 à 07:49
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014 - 1 oct. 2014 à 05:10
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

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
Modifié par Whismeril le 30/09/2014 à 09:41
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.
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
30 sept. 2014 à 14:50
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...
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
30 sept. 2014 à 16:32
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
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
30 sept. 2014 à 16:39
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 ^^ )
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
30 sept. 2014 à 16:39
@Jordanne, oui j'ai mis un bout d'exemple, pas une classe entière.
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
30 sept. 2014 à 20:25
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é)
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
Modifié par CoDubai le 30/09/2014 à 13:52
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 sept. 2014 à 21:00
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à.
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
1 oct. 2014 à 05:10
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 ?
0
Rejoignez-nous