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 :

POO VB.net conseil / aide [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Par défaut POO VB.net conseil / aide
    Bonjour Forum,

    Je débute en programmation orienté objet (POO), j'aurai voulu votre aide sur des questions que je me pose:

    J'ai une classe que j'utilise pour convertir une date, quand je loop sur ma liste de données, est ce que je dois faire un NEW à chaque fois ou pas?

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    While Not MyReader.EndOfData
    ...
    Dim dConvert = New DataConverter()
    currentRow(0) = dConvert.convertDate(currentRow(0))
    dConvert = Nothing
    ...
    End While
    ou alors je peux déplacer le New DataConverter en dehors de mon While et utiliser donc plusieurs fois la méthode .convertDate?

    comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim dConvert = New DataConverter()
    While Not MyReader.EndOfData
    ...
    currentRow(0) = dConvert.convertDate(currentRow(0))
    ...
    End While
    dConvert = Nothing
    Quelle est la façon de travailler que vous me conseillez?


    Deuxième petite question, j'ai crée une classe SQL Helper, j'ai dans mon fichier .config un array avec mes différentes requêtes SQL à exécuter.

    J'hésite entre travailler avec des Property ou avec une méthode Private Sub SetQuery

    ex avec méthode SetQuery et variable privé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Public Class SQLHelper
    Private _SqlQuery as String
    ...
    Public Sub SetQuery (ByVal SqlQuery As String)
        Me._SqlQuery= SqlQuery
    EndSub
    ...
    End Class
     
    'Code de mon Button_Click
    ...
    Dim SQLHelper = New SQLHelper()
    SQLHelper.SetQuery("select * from matable")
    SQLHelper.ExecuteQuery()
    ...
    SQLHelper = Nothing
    Ou alors c'est mieux de travailler ainsi: (avec Property)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class SQLHelper
    Property strQuery as String = vbEmpty
    ...
    End Class
     
    'Code de mon Button_Click
    ...
    Dim SQLHelper = New SQLHelper() With {.strQuery = "select * from matable"}
    SQLHelper.ExecuteQuery()
    ...
    SQLHelper = Nothing
    A nouveau, si j'ai plusieurs requêtes SQL et que je boucle, vous me conseiller comment?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    'Code de mon Button_Click
    ...
    Dim SQLHelper = New SQLHelper() With {.strQuery = "select * from matable"}
    SQLHelper.ExecuteQuery()
     
    SQLHelper.strQuery = "select * from matable2"
    SQLHelper.ExecuteQuery()
     
    SQLHelper.strQuery = "select * from matable3"
    SQLHelper.ExecuteQuery()
    ...
    SQLHelper = Nothing
    ou plutôt de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim SQLHelper = New SQLHelper() With {.strQuery = "select * from matable"}
    SQLHelper.ExecuteQuery()
    SQLHelper = Nothing
     
    Dim SQLHelper = New SQLHelper() With {.strQuery = "select * from matable2"}
    SQLHelper.ExecuteQuery()
    SQLHelper = Nothing
     
    Dim SQLHelper = New SQLHelper() With {.strQuery = "select * from matable3"}
    SQLHelper.ExecuteQuery()
    SQLHelper = Nothing
    Merci d'avance pour votre aide précieuse.

    Chris

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    avoir une classe qui ne sert qu'à faire de la conversion n'est pas utile
    il faut faire des membres shared, comme ca pas de new

    sinon un seul new est mieux si tu n'as pas besoin de plusieurs instances
    pour ton sqlHelper, si tu peux tout faire avec un seul, autant tout faire avec un seul en changeant les propriétés, bien que les performances gagnées soient plus que minimes

    pour le sub set/property, c'est un peu au choix, mais le property me semble plus convenir
    d'une part parce que c'est juste pour setter une variable privée alors qu'une sub sert plus à faire un traitement ; bien qu'on peut avoir du traitement dans le set d'une property
    et d'autre part parce que tu peux faire une variable writeonly ou avec un getter de portée inférieure


    pour en revenir au shared, si une méthode d'une classe ne travaille pas avec des variables de la classe c'est qu'elle n'est pas dépendante de celle ci donc elle peut etre partagée pour toutes les instances
    ca revient donc au même qu'une méthode de module
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    avoir une classe qui ne sert qu'à faire de la conversion n'est pas utile
    il faut faire des membres shared, comme ca pas de new

    sinon un seul new est mieux si tu n'as pas besoin de plusieurs instances
    pour ton sqlHelper, si tu peux tout faire avec un seul, autant tout faire avec un seul en changeant les propriétés, bien que les performances gagnées soient plus que minimes

    pour le sub set/property, c'est un peu au choix, mais le property me semble plus convenir
    d'une part parce que c'est juste pour setter une variable privée alors qu'une sub sert plus à faire un traitement ; bien qu'on peut avoir du traitement dans le set d'une property
    et d'autre part parce que tu peux faire une variable writeonly ou avec un getter de portée inférieure


    pour en revenir au shared, si une méthode d'une classe ne travaille pas avec des variables de la classe c'est qu'elle n'est pas dépendante de celle ci donc elle peut etre partagée pour toutes les instances
    ca revient donc au même qu'une méthode de module
    Un grand merci Pol63 pour ton aide précieuse!

    Bon weekend

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

Discussions similaires

  1. C++ net send (Aide)
    Par viboss dans le forum C++
    Réponses: 1
    Dernier message: 23/07/2006, 12h05
  2. [POO] [Classe/Objet] Conseils à un débutant en POO
    Par nicocolt dans le forum Langage
    Réponses: 9
    Dernier message: 08/03/2006, 10h06
  3. [VB.NET] Conseils pour types de fichiers
    Par Invité dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/02/2005, 11h06
  4. [VB.NET] Conseil migration d'ADO vers ADO.NET
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/12/2004, 08h57
  5. [sqlbaseserver]demande de conseils/aides pour requêtes
    Par GéniuS77 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 18/03/2004, 17h27

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