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 :

Créer des exceptions personnalisées dans ma classe.


Sujet :

VB.NET

  1. #1
    En attente de confirmation mail
    Inscrit en
    Février 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 28
    Points : 31
    Points
    31
    Par défaut Créer des exceptions personnalisées dans ma classe.
    Salut les amis,
    j'ai un souci dont je désire soliciter votre coup de pouce. je suis entrain d'écrire une librairie (dll) réutilisable.c'est-à-dire qu'elle ne sera pas forcement seulement utilisée dans ma propre application.je voudrais enfin la partager à qui la veut.Mais en ce moment je rencontre quelques difficultés.elles
    sont de deux ordres:
    je veux en premier lieu pouvoir mettre en place des exceptions personnalisées afin
    que quiconque utilise ma librairie puisse faire appel à mes exceptions en vue d'éviter quelque anormalies.
    Exemple d'utilisation de quelques classes de ma dll:

    Code Visual Basic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Try
     'ici l'appel des instruction de ma librairie et d'autres choses...
     catch ex_personal as mytype
     
    'ici message ou autres
    End Try

    En deuxième lieu:
    je dispose d'une classe nommée "joypak" dans ma librairie qui possède deux constructeurs et des membres. Un aperçu de cette classe est:

    Code Visual Basic :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Public Class joypak
     Private _A,_B as string
     Private _X,_Y as double
     Private _K as double
     
     Sub new (ByVal x as double,ByVal y as double) ' Constructeur1
      _X = x: _Y = y
     End sub
     
     Sub new (ByVal a as string,ByVal b as string,ByVal k as Double) ' Constructeur2
      _A = a: _B = b
      _K=k
     End sub
     
     Public Sub proc1()
     
     End sub
     
     Public Sub proc2()
     
     End sub
     
     Public Sub proc3()
     
     End sub
     
    End Class
    Ma préoccupation est ceci: je voudrais que lorsque je crée une instance Var1 de la classe joypak avec le constructeur 1, que je ne puisse qu'avoir accès uniquement aux méthodes Proc1 et Proc2.donc l'appel de la methode proc3 avec cette variable devrait généré une erreur et ensuite lorsque j'instancie Var2 avec le constructeur 2, que je ne puisse avoir accès uniquement qu'à la méthode public Proc3.

    Illustration:
    Code Visual Basic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Var1 as new joypak(12.5, 15.0)
     Messagebox.show (var1.proc1)
     Messagebox.show (var1.proc2)
     Messagebox.show (var1.proc3) 'si tout va bien 'une erreur doit etre générée.
    Messagebox.show (var2.proc3) 'par contre cette 'instruction doit marcher.

    Merci d'avance pour les essais de solutions.
    Best Regards.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    pour les exceptions personnalisées, il suffit d'en créer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class MonException
      inherits Exception
       ' à compléter, avec un sub new qui demande le message par exemple et qui appalle mybase.new(message)
    end class
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Throw New MonException
    par contre si le but c'est d'interdire l'accès d'un membre, autant ne pas le rendre disponible !

    pour ca tu peux par exemple faire une interface qui sera utilisé par le constructure à deux variables et une autre interface qui hérite de la 1ère pour l'utilisation du constructeur avec la 3ème variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public interface I1
      sub1
      sub2
    end interface
     
    public interface I2
      inherits I1
      sub3
    end interface
     
    public class joypak
      implements I2
    après tu rends les 2 sub new private (et aussi le sub new sans paramètre qui est implicitement public) et tu crées 2 factory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public shared function Create(param1,param2) as I1
      dim j as new joypak(param1,param2)
      return j
    end function
    public shared function Create(param1,param2,param3) as I2
      dim j as new joypak(param1,param2,param3)
      return j
    end function
    remplacer I1 et I2 par IjoypakMachin et IJoypakBidule

    tu peux aussi faire de l'héritage de classe

  3. #3
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    D'après l'énoncé de son problème I2 ne doit pas hériter de I1 vu qu'il dit :
    lorsque j'instancie Var2 avec le constructeur 2, que je ne puisse avoir accès uniquement qu'à la méthode public Proc3.
    Sinon je remarque que les deux constructeurs n'affectent rien en commun, tu es sur qu'il est judicieux d'avoir une seule et unique classe ? Ça ressemble fortement à un héritage cette histoire.

    Personnellement j'aurais écris un héritage classique plutôt que de passer par des interfaces, mais ca fonctionne tout autant.

    Avec cette méthode l'erreur survient au moment de la compilation, tu ne pourra pas compiler ton projet car il va te dire que proc3 n'existe pas sur les objets de type I1.

    Il existe une autre façon d'écrire tout ca si tu veux que l'erreur se produise au moment de l'exécution sous forme d'exception (les cas où c'est utile sont plutôt rare, mais on sait jamais, dès fois que tu en aurais besoin) :

    Code vb : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    Public MustInherit Class JoyPak
        Protected _A, _B As String
        Protected _X, _Y As Double
        Protected _K As Double
     
        Public Overridable Sub Proc1()
            Throw New NotImplementedException("Cette procédure n'est pas implémentée")
        End Sub
     
        Public Overridable Sub Proc2()
            Throw New NotImplementedException("Cette procédure n'est pas implémentée")
        End Sub
     
        Public Overridable Sub Proc3()
            Throw New NotImplementedException("Cette procédure n'est pas implémentée")
        End Sub
    End Class
     
    Public Class JoyPak1
        Inherits JoyPak
     
        Public Overrides Sub Proc1()
            ' Mon Code
        End Sub
     
        Public Overrides Sub Proc2()
            ' Mon Code
        End Sub
     
        Sub New(ByVal x As Double, ByVal y As Double)
            _X = x : _Y = y
        End Sub
    End Class
     
    Public Class JoyPak2
        Inherits JoyPak
     
        Public Overrides Sub Proc3()
            ' Mon Code
        End Sub
     
        Sub New(ByVal a As String, ByVal b As String, ByVal k As Double)
            _A = a : _B = b
            _K = k
        End Sub
    End Class
     
     
    ' Utilisation
    Dim Var1 As JoyPak = New JoyPak1(12.5, 15.0)
    Dim Var2 As JoyPak = New JoyPak2("truc", "bidule", 76.325)
    Messagebox.show (var1.proc1) ' OK
    Messagebox.show (var1.proc2) ' OK
    Messagebox.show (var1.proc3) ' NotImplementedException
     
    Messagebox.show (var2.proc1) ' NotImplementedException
    Messagebox.show (var2.proc2) ' NotImplementedException
    Messagebox.show (var2.proc3) ' OK

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/02/2007, 15h44
  2. Créer des context-param dans web.xml
    Par c-ve dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 13/02/2007, 20h39
  3. Creér des Clip dynamiquement dans la scène
    Par jpboogie dans le forum Flash
    Réponses: 2
    Dernier message: 04/10/2006, 16h47
  4. créer des exceptions
    Par *alexandre* dans le forum Langage
    Réponses: 3
    Dernier message: 01/09/2006, 14h46
  5. [Exception]Gestion des exceptions, capture sur la classe.
    Par @lantis dans le forum Général Java
    Réponses: 9
    Dernier message: 22/07/2005, 19h43

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