IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

initiation à la poo en VB.net


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut initiation à la poo en VB.net
    Bonsoir.
    Je vous sollicite ce soir car j'ai du mal à utiliser cette maudite poo.
    Nom : poovbnet [50%].JPG
Affichages : 147
Taille : 8,4 Ko

    En cliquant sur le bouton, le panel rouge doit se déplacer vers la droite dune distance = sa largeur.
    avec la programmation procédurale c'est très facile. Mais comme je veux apprendre la poo, j'ai fais ce code, mais mon panel ne bouge pas. je ne sais pas comment s'y prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Class Coureur
        Public position As Point
        Public taille As Size
        Public Sub New(ByVal p As Point, ByVal s As Size)
            Me.position = p
            Me.taille = s
        End Sub
        Public Sub avance()
            Me.position.X = Me.position.X + Me.taille.Width
        End Sub
     
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class Form1
        Dim coureur1 As Coureur
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            coureur1 = New Coureur(Me.Panel1.Location, Me.Panel1.Size)
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            coureur1 = New Coureur(Me.Panel1.Location, Me.Panel1.Size)
            coureur1.position.X = Me.Panel1.Location.X
            coureur1.taille.Width = Me.Panel1.Width
            coureur1.avance()
        End Sub
    End Class
    Merci à vous
    J'apprends la programmation pour le plaisir

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Le panel n'est qu'une représentation graphique du coureur.
    Après le new qui permet de déterminer la position du coureur vis à vis du panel, le panel ne doit plus servir pour déterminer des positions.
    Il faut appeler la méthode qui permet au coureur d'avancer (de calculer), puis de positionner le panel avec la nouvelle position du coureur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            coureur1.avance()
            Me.Panel1.Location = coureur1.position
        End Sub
    C'est la classe qui fait les calculs et traitements. L'interface graphique (la form) l'affichage des résultats.

    [Edit]
    D'ailleur pour être bien POO la classe peut s'écrire ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Class Coureur
        Private position As Point
        Private taille As Size
        Public Sub New(ByVal p As Point, ByVal s As Size)
            Me.position = p
            Me.taille = s
        End Sub
        Public Function avance() As Point
            Me.position.X = Me.position.X + Me.taille.Width
            Return position
        End Function
    End Class
    Et l'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Panel1.Location = coureur1.avance()
        End Sub
    End Class
    ainsi les données ne sont pas accessible de l'extérieur. (il n'y a ici aucune raison pour que les données soient modifiées depuis l'extérieur de la classe)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Merci pour votre réponse.
    Le panel n'est qu'une représentation graphique du coureur.
    cette phrase résume tout, c'est ce qui m'échappait avant.
    Et pour être tout à fait vrai:
    Après le new qui permet de déterminer la position du coureur vis à vis du panel
    je préfère que tout vienne de l'objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class Form1
        Dim Salim As Coureuer
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Panel1.BackColor = Color.Red
            Salim = New Coureuer(New Point(0, 20), New Size(40, 40))
            Me.Panel1.Size = Salim.taille
            Me.Panel1.Location = Salim.position
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Panel1.Location = Salim.avance()
        End Sub
    End Class
    à part la couleur
    J'apprends la programmation pour le plaisir

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    De rien,
    Citation Envoyé par stracoma Voir le message
    je préfère que tout vienne de l'objet:
    Vous avez très bien compris
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] Initiation à la POO
    Par okoweb dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2015, 19h51
  2. [Débutant] poo avec ado.net
    Par koloban dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/05/2012, 17h18
  3. La POO avec ASP.NET (c# - VB)
    Par Subteranea dans le forum ASP.NET
    Réponses: 7
    Dernier message: 14/01/2012, 18h29
  4. Réponses: 5
    Dernier message: 20/08/2008, 22h19
  5. Réponses: 8
    Dernier message: 06/03/2006, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo