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

Turbo Pascal Discussion :

[Débutante] Exercice sur l'héritage


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut [Débutante] Exercice sur l'héritage
    Bonjour, bonsoir :
    je suis nouvelle dans ce forum et débutante avec la programmation d'informatique, alors j'ai un exercice pour mon devoir et je n'ai pas pu l'ouvrir.
    SVP j'aimerais que quelqu'un m'aide à trouver la solution !!

    * Il est un peu long *
    TEXTE D'EXERCICE :
    Les échecs fournissent un exemple classique d’application de l’héritage qui est riche. Cet exercice aborde seulement une partie du sujet.

    1- Créer la classe PieceEchec qui s’intéresse au déplacement d’une pièce. Elle prend comme champs : la position des cases de départ et d’arrivée lors d’un déplacement, ainsi que le nom de la pièce. La position d’une case est définie par deux entiers compris entre 1 et 8 : le numéro de la rangée et celui de la colonne.
    La classe PieceEchec possède les mèthodes suivantes :
    • Norme ()(norme du dèplacement ) retournant le carré de la distance entre les cases de départ et d’arrivée
    • EstValide() qui retourne 1 si la case d’arrivée est dans l’échiquier et 0 sinon (on peut aussi utiliser un booléen au lieu d’un nombre entier)
    • Tostring() et imprimer()

    Cette classe comporte également un constructeur pour initialiser les champs et un constructeur vide.

    2- Quand un cavalier se déplace, la norme du déplacement vaut 5. Créer une classe Cavalier étendant la classe PieceEchec. Dont le constructeur fait appel à celui de la super-classe. De même, la méthode estValide() de cavalier utilisera la méthode estValide() de la super-classe.

    N.B : pour traiter ces questions, il est nécessaire de recourir au if.

    SUGGESTION : On peut poursuivre l’étude de cette question en ajoutant d’autres pièces. Le fou se déplace en diagonale alors que la tour utilise les rangées et les colonnes. La reine a les capacités d’une tour et d’un fou. La classe Reine ne peut pas hériter des classes Fou et Tour, car l’héritage multiple est impossible. Le roi a les capacités de déplacement d’une reine mais il ne peut se transporter que sur une case contiguë (sauf au moment du roque). On peut donc concevoir la classe Roi comme une sous-classe de Reine, ou se contenter de qu’un roi est une pièce dont sa norme de déplacement vaut 1 ou 2 .

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Par défaut
    Ne compte pas sur ce forum pour faire ton exercice en entier. Montre nous où tu en es et explique nous ce qui te bloque pour avancer.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Joe,

    Tu as dû avoir des cours te permettant de traiter ton problème, d'autant plus que sans être hors de portée, cet exercice n'est pas destiné aux vrais débutants, ce que tu affirmes être.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    Salut à tous et bonne année. Je suis encore un bleu en informatique alors pardonnez-moi les erreurs.

    Bon, voilà, j'ai le meme exo et voici ce que j'ai pu trouver :
    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
    program jeuEchec;
     
    type
          PieceEchec = object
                             NomPiece:string;
                             rangeDepare:integer;
                             rangeArrive:integer;
                             coloneDepare:integer;
                             coloneArrive:integer;
                             function norme:integer;
                             procedure estValide;
                             tostring?
                             imprime?
                             end;
     
    function PieceEchec.norme:integer;
    begin
    norme:=(rangeArrive-rangeDepare)+(coloneArrive-coloneDepare);
    end;
    procedure PieceEchec.estValide;
    begin
    if 1<=rangeArrive>=8 and 1<=coloneArrive=>8 then
    write('1') else write('0');
    end;
    Mon problème est que quand j'arrive aux méthodes tostring et imprime, je ne connais ni leur fonction ni leur rôle dans cet algo.
    Merci d'avance pour votre soutien

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Hei,
    Citation Envoyé par darkslew Voir le message
    remarque je donne mon devoir la semain prochaine alors veuillez repondre le plus tot possible et desole pou le derangement
    1, 2, 3 soleil.

    Perdu.

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Citation Envoyé par wormful_sickfoot Voir le message
    Ne compte pas sur ce forum pour faire ton exercice en entier. Montre nous où tu en es et explique nous ce qui te bloque pour avancer.
    qui me bloque , je n'arrive même pas à commencer ou bien cmt . j'ai trouvé la solution de cette programmation mais avc le langage java , alors moi je devais le faire en Pascal .

  7. #7
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Citation Envoyé par sandra-n Voir le message
    qui me bloque , je n'arrive même pas à commencer ou bien cmt . j'ai trouvé la solution de cette programmation mais avc le langage java , alors moi je devais le faire en Pascal .
    -La bonne nouvelle: c'est que si tu comprend déjà le principe de l'Orienté Objet ça sera un bon début, ce qui fait que pour un langage dédié à l'OO comme Java un débutant devrait s'en sortir sans trop de mal
    -La mauvaise nouvelle: Pour un débutant en Pascal comme tu le dit et comme droggo l'a souligner c'est pas forcement donné car il faut d'abord comprendre le principe de l'OO et ensuite savoir comment ça marche en Pascal:
    • Savoir comment déclarer un objet en Pascal
    • Savoir comment utiliser un objet
    • Connaitre les mots clés comme :Object, Constructor, etc
    • Savoir modéliser les notions de classe
    • etc


    En gros il y a un minium à apprendre avant de se lancer la dedans

    @darkslewEn y regardant ce qui saute à l'œil pour la signification de méthodes c'est:
    • tostring?=>Permettre à définir le contenu d'un objet donc une fonction qui renverra un String
    • imprime?=>Permettre à afficher un objet par exemple donc une procédure


    Cordialement

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    merci boucau krachik sa enlève les point désclamations mais si tu me les donne dans un exemple je pourrait mieux les comprendre

    sondra_n ta dit que tu avait la solution en java tu pourrait me la poster je trouverais peut être sa traduction ou moins je saura se que je doit faire

  9. #9
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Citation Envoyé par darkslew Voir le message
    merci boucau krachik sa enlève les point désclamations mais si tu me les donne dans un exemple je pourrait mieux les comprendre

    sondra_n ta dit que tu avait la solution en java tu pourrait me la poster je trouverais peut être sa traduction ou moins je saura se que je doit faire
    Pour faire bien, le mieux c'est que tu structures en Unité avant de définir ton Objet:
    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
    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
     
    unit echec;
     
    INTERFACE
     
    uses crt;
     
    type
      pieceEchec=object
       private {private pour dire que les champs d'action des déclarations qui suivent sont limités à cette unité seulement}
           nomPiece:string;
           rangeDepare:integer;
           rangeArrive:integer;
           coloneDepare:integer;
           coloneArrive:integer;
     
       public
           { Tu as oubliés tes contructeurs ennoncés dans l'exercice 
       Exemple d'un constructeur vide
           constructor init;}
           function norme:integer;
           procedure estValide;
           function toString:String;
           procedure imprime;
      end;
     
    type piece=^pieceEchec; {Creer un pointeur sur l'objet, on pourra des lors utiliser le type piece dans un autre unité ou programme}
     
     IMPLEMENTATION
    {Ecrire tes constructeurs...........}
     
    {Definir tes fonctions ou procedure ...............}
    {Un exemple pour pas tout écrire}
    function pieceEchec.toString:String;
    var ch:String;
    begin
      Str(rangeDepare,ch);{Convertir l'entier en chaine de caractere}
      toString:=Concat(nomPiece,':',ch);{ a titre d'exemple }
    end;
     
    {Procedure imprime}
    procedure pieceEchec.imprime;
    begin
      {Je te laisse le soin d'ecrire ce qu'on peut mettre ici}
    end;
     
     
    begin
    end.
    Voila en gros :

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Citation Envoyé par krachik Voir le message
    Bonjour


    -La bonne nouvelle: c'est que si tu comprend déjà le principe de l'Orienté Objet ça sera un bon début, ce qui fait que pour un langage dédié à l'OO comme Java un débutant devrait s'en sortir sans trop de mal
    -La mauvaise nouvelle: Pour un débutant en Pascal comme tu le dit et comme droggo l'a souligner c'est pas forcement donné car il faut d'abord comprendre le principe de l'OO et ensuite savoir comment ça marche en Pascal:
    Bonsoir :
    Ben alors je ne suis même pas une informaticienne , j'ai seulement un module de l'informatique et pour la première Fois que je le prenne ... plutôt je l'ai pris l'année dernière mais ça ne se voit aucun contacte entre les deux ans !!!

  11. #11
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut class PiecEchec en java
    voici le programme en java si vous pouvez le transformer en pascal.
    d'avance
    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
    28
    29
    30
    31
    32
    33
    34
    Import java .util.* ;
    Class PieceEchec{
    Protected int xDep ;
    Protected int yDep ;
    Protected int xArr ;
    Protected int yArr ;
    Protected String nomPiece ;
     
    Public PiecEchec (int Xd, int Yd, int Xa, int Ya)
    {
     
             xDep = Xd ;
             yDep = Yd ;
             xArr = Xa ;
             yArr = Ya ;
    }
     
    public int estValide()
    {
              if ((xArr<=8) && (xArr>=1) && (yArr<=8) && ( yArr>=1))
                     return 1 ;
              else return 0 ;
    }
    public int norme ()
    {
              return ((xArr – xDep) * (xArr – xDep) + (yArr – yDep) * (yArr – yDep)) ;
    }
    public void imprimer() {
              system.out.println("nom :"+nom) ;
              system.out.println("debut : ("+pos_dep_x+","+pos_dep_y+")") ;
              system.out.println("fin : ("+pos_fin_x+","+pos_fin_y+")") ;
        }
    }
    }

Discussions similaires

  1. [Débutant] Exercice sur les nombres en précision arbitraire
    Par LeFredd dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 21/02/2015, 14h11
  2. Exercice sur l'héritage
    Par khaled_prg dans le forum Débuter avec Java
    Réponses: 42
    Dernier message: 01/02/2012, 19h59
  3. [Débutant] exercice sur la récursivité
    Par neufrdb dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 03/03/2011, 17h59
  4. Question sur l'héritage (débutant en C++)
    Par beegees dans le forum C++
    Réponses: 19
    Dernier message: 30/03/2008, 14h45
  5. [POO] Problème dans un exercice sur l'héritage
    Par FabaCoeur dans le forum C++
    Réponses: 2
    Dernier message: 05/05/2007, 17h09

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