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

Windows Forms Discussion :

Classe Array et héritage


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Par défaut Classe Array et héritage
    Salut

    Je plante en essayant de créer une classe dérivée de la classe Array. apparement la classe Array est NotInheritable (j'en suis pas sure, ce n'est pas dit explicitement dans msdn).

    j'ai la possibilité d'utiliser les méthodes d'extension mais cette solution ne m'enchante pas.

    Pourriez vous me confirmer que la classe Array ne peut être héritée, et éventuellement quelles sont les alternatives qui s'offrent à moi.

  2. #2
    Membre éclairé Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Par défaut
    j'explicite ici pourquoi je veux une classe hérité de Array.

    En fait je souhaite utiliser des triangles de données (stockés dans des tableaux) et auxquels certains paramètres sont associés (par exemple importance relative à accorder à la dernière diagonale).

    j'ai ainsi besoin de propriétés bien spécifiques pour mes triangles d'où la nécessité d'une classe bien particulière.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Par défaut
    Bonjour,
    Je ne suis pas sur d'avoir entièrement compris ton problème mais en faite, tu veux faire une collection de ton ta classe triangle soit une collection de triangle ?
    Confirme moi si c'est ca, ce n'est pas la peine de dériver la classe Array.
    Il y a de nombreux exemples tout fait.

    A bientôt

  4. #4
    Membre éclairé Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Par défaut
    Merci wakan.

    En fait je veux une classe triangle hérité de Array, avec ajout de propriétés, méthodes, évênements.

    hérité de Array pour profiter de la facilité de manipulation et des nombreuses fonctions des tableaux.

    mais ayant ces propres propriétés, méthodes et évênement.

    exemple avec un objet triangle nommé ObjTri

    propriété : importance à accorder à la dernière diagonale
    ObjTri.ImportanceDernDiag

    Méthode : Liquidé le triangle "méthode métier"
    ObjTri.Run

    évênement : déclenché si somme de toutes les cellules = 0
    ObjTri.SiSommeNull

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Par défaut
    Re,
    Une classe qui implement Inumerable ne te conviendrais pas ?
    http://msdn.microsoft.com/fr-fr/libr...numerable.aspx

    Après tu peux toujours ajouter des fonctionnalitées comme les évèments le foreach etc...

    A bientôt

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Tu peux faire une classe contenant un tableau pour gérer la liste interne. Par exemple
    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
    public class MyClass
    {
        ...
    }
     
    public class MyClassArray
    {
        private MyClass[] _array;
     
        public MyClass this[int index]
        {
            get { return _array[index]; }
            set { _array[index] = value; }
        }
     
        public MyClassArray(int length)
        {
            _array = new MyClass[length];
        }
     
        ...
    }
    Tu peux ajouter ce que tu veux ainsi.

    Ou faire une classe dérivée de Collection<T>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class CollectionMyClass : Collection<MyClass>
    {
        ...
    }
    C'est la même chose qu'avec le tableau, une List<T> en interne sert à stocker les données. De base tu auras accès aux méthodes d'ajout, de suppression ainsi que la possibilité d'agir sur l'insertion, la modification, la suppression ou le vidage de la collection (il y a des méthodes à overrider à cet effet). Tu pourras ensuite ajouter ce que tu veux autour.

    P.S. : le code est en C#, mais le principe est là

  7. #7
    Membre éclairé Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Par défaut
    Merci à vous pour les réponses.

    Je connaît pas c# mais voilà ce que j'ai fait en vb avec ta première idée.(j'espère l'avoir bien perçu)

    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
    Public Class Triangle
     
    dim tab(,) as double 
     
    Public Property cells(byval i as long, byval j as long) as double
     
            get
                return tab(i,j)
            end get
     
            set(byval value as double)
                 tab(i,j) = value
            end set
     
    end property
    .
    .
    .
    end class
    et maintenant j'accède à tab(i,j) par ObjTri.cells(i,j) où
    ObjTri = new triangle

    Mais là je serai obligé de réecrire toutes les méthodes et propriétés de Array qui m'intéressent. par exemple pour ObjTri.length il faut écrire la propriété qui accède à tab.length

  8. #8
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    C'est bien pour ça que j'ai mentionné Collection<T> ensuite, car tu auras accès à ce genre de choses sans rien faire

  9. #9
    Membre éclairé Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Par défaut
    Excuse moi d'insister mais franchement je vois pas le rapport. c'est pas une collection de triangle que je veux gérer mais un triangle à la fois.

  10. #10
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Un tableau et une collection c'est la même chose (si on met de côté certains aspects) : une liste d'éléments. Sauf que je viens de voir que tu utilises un tableau à 2 dimensions, donc on peut oublier la liste à ce moment.

    Tu n'es pas obligé de refaire toutes les méthodes, tu peux donner un accès au tableau interne. Mais ce n'est pas forcément l'idéal car tu ne contrôle plus ce que l'utilisateur peut en faire.

Discussions similaires

  1. Classes amies et héritage simple
    Par nicolas66 dans le forum C++
    Réponses: 1
    Dernier message: 27/02/2008, 08h27
  2. [POO] dérivation / classe Array pour IE
    Par Herode dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/11/2007, 21h52
  3. Comment hériter de deux classes ? (que signifie héritage multiple ?)
    Par adil_vpb dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 23/10/2007, 19h27
  4. Réponses: 17
    Dernier message: 27/08/2007, 18h35
  5. Foncteur, classes templates et héritage
    Par Floréal dans le forum C++
    Réponses: 8
    Dernier message: 17/06/2007, 21h56

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