Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer objet à partir de données utilisateur

Sujet résolu
    23 juin 2011 à 20:24:53

    Bonjour, j'essaye de mieux comprendre la POO (je fais de petits tests en VB.net) et j'aimerais votre avis sur la bonne manière de vérifier la saisie des utilisateurs quand celle-ci permet de crée un objet. Pour mon exemple, j'essaye de créer un Agent(nom as string, prenom as string) à partir de deux Textbox

    Actuellement je ne sais pas du tout qu'elle approche je dois utiliser à part utiliser un try/catch systématiquement mais du coup lorsqu'il y a une erreur, le cas n'est pas du tout gérée a l’intérieur de la classe elle-même et je trouve cela curieux. De plus avec cette approche, je ne crois pas qu'il soit nécessaire de rendre mon constructeur privée en passant pour une fonction partagée qui instancie la classe.

    J'utilise la classe suivante :
    Public Class Agent
        Private _nom As String
        Private _prenom As String
    
        Private Sub New(ByVal nom As String, ByVal prenom As String)
            _nom = nom
            _prenom = prenom
        End Sub
    
        Shared Function Creer(ByVal nom As String, ByVal prenom As String) As Agent
            If nom = "A" Then 'Je simule un nom mal saisie 
                Return Nothing
            Else
                Dim n, p As String
                n = nom.ToUpper
                p = prenom
                Return New Agent(n, p)
            End If
        End Function
    
    End Class
    


    Et je teste mon code avec
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Dim Untel As Agent = Agent.Creer(TextBox1.Text.ToString, TextBox2.Text.ToString)
                MessageBox.Show(Untel.Nom & " " & Untel.Prenom)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    


    Je suis à l'écoute de toutes vos suggestions. D'avance merci.


    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2011 à 16:56:59

      Alors, tout d'abord :

      - Pourquoi avoir différencier le constructeur de la méthode "créer" et ne pas réunir en une seule méthode? Comme tu le sais sans doute, un constructeur est une méthode qui initialise les propriétés d'une classe.

      Donc tu fais tes saisies et tes contrôles dans le constructeur, et ensuite tu aura une ligne du style :

      Dim Untel As Agent = new Agent(TextBox1.Text.ToString, TextBox2.Text.ToString)
      


      - Le try/catch peut être très utile, même si je ne sais pas le gérer en VB (je fais du C#, le VB j'en ai fait il y a 2ans), c'est une bonne chose que tu utilise ça. Tu as deux choix pour contrôler la saisie :


      Soit tu contrôle les champs avant d'instancier l'objet. Donc cela reste assez simple, et après tu fais une condition : si c'est bon tu crée ton agent, sinon tu fais l'action que tu veux.
      Une autre méthode consisterait à faire les conditions dans le constructeur : si les paramètres sont incorrects, tu génère une exception (avec un new), que tu renvoie (avec un throw). Le try/catch de l'appelant va l'intercepter, et le gérer.

      Je ne sais pas si les autres membres ont d'autres idées concernant ta question, je n'ai pas réfléchi à d'autres possibilités. Si je n'ai pas été clair ou si tu veux un exemple, n'hésite pas à me le dire :)
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2011 à 18:38:52

        Je cherchais à effectuer les contrôles via la classe ce qui me semblait plus propre, mais je n'avais pas pensé au renvoi d'erreur, ne l'ayant encore jamais utilisé. Cela me semble une bonne idée.
        J'ai séparé le constructeur de la méthode car j'ai vu que certains pratiquait comme cela, mais ne sachant pas expliquer pourquoi pour le moment, je crois qu'il va falloir que je me passe de cette utilisation pour le moment.

        Merci pour tes conseils.
        • Partager sur Facebook
        • Partager sur Twitter

        Créer objet à partir de données utilisateur

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown