[HELP][Programmation_langage]
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

[HELP][Programmation_langage]



  1. #1
    invite3d77b205

    [HELP][Programmation_langage]


    ------

    Bonjour à toutes et à tous ,

    J'ai un petit grand problème en ce qui concerne la programmation orientée objet , je vous demande de bien vouloir m'aider à comprendre un peu.
    Voila :
    D'abord je suis débutant en langage C++ et java , jusqu'à maintenant tout semble comme la programmation normale (pas orientée!!)
    1- je trouve des difficultés avec les indicateur (protected , private ...) faut il apprendre leur utilisation ou bien y a une méthode plus facile ?????
    2- Dès qu'on passe à la notion d'objet !!! tous semble incomprenable pour moi !! c'est quoi un objet ? comment dans une classe on peut faire appel à un objet d'une autre classe ??????
    c'est quoi l'interet ??? comment un objet d'une classe A peut utiliser des methodes de la classe B dans une classe A ou B ou C ??????

    Désolé pour ces question un peu "débiles " mais j'essaie de comprendre .

    Je vous remercie pour toute aide utile .

    Informatiquement

    -----

  2. #2
    whoami

    Re : [HELP][Programmation_langage]

    Bonjour,

    1 - Il faut apprendre, et, bien entendu, comprendre.

    2 - pour appeler une autre classe, il faut créer une instance de cette autre classe (en clair : une variable du type de cette autre classe), et appeler ses fonctions.

    L'intérêt de la POO est de regrouper les données et les fonctions qui les manipulent, avec des règles plus ou moins restrictives (d'où les private, ...). Ça s'appelle l'encapsulation.

  3. #3
    invite3d77b205

    Re : [HELP][Programmation_langage]

    Bonjour , est il possible d'utiluser une instanxe d'une classe avec les methodes dautre classe?? Que doit etre letat de l'encapsulation au niveau des methodes???

  4. #4
    Jack
    Modérateur

    Re : [HELP][Programmation_langage]

    Je pense qu'il faut commencer par lire quelques articles de présentation de la POO afin d'avoir une vision globale de celle-ci. Les articles ne manquent pas. En voici un:
    http://hdd34.developpez.com/cours/artpoo/#L1.3.1

    A+

  5. A voir en vidéo sur Futura
  6. #5
    invite3d77b205

    Re : [HELP][Programmation_langage]

    Bonjour
    Merci pour votre aide , cependant j'ai un petit problème en ce qui concerne les objets graphiques !!!!! lors de la création par exemple d'une interface ! je ne comprend pas encore comment ca marche le fait d'appeler des objets dans des classes ......
    comment il peuvent hériter ?
    C'est un peu flou pour moi .

    Merci pour toute aide utile .

  7. #6
    Tryph

    Re : [HELP][Programmation_langage]

    Salut,

    comme dit Jack, je pense que le mieux est de lire un maximum de choses sur le sujet.
    la programmation orientée objet est très différente de la programmation procédurale, que tu appelles "normale"

    déjà voir la relation qui existe entre une classe et un objet, j'ai l'impression que c'est pas clair...

    ensuite faut que tu aies un minimum de connaissances du vocabulaire employé parce que sinon tu vas poser des question qu'on comprendra mal et on te donnera des réponses que tu ne comprendras pas non plus et on perdra tous notre temps.

    tu pensera peut être qu'on pourrait t'expliquer tout ça ici, mais le sujet est bien trop vaste et des tuto et des articles très bien faits existent déjà pour expliquer tout ça. autant en profiter.

    a+ et bon courage

  8. #7
    Jack
    Modérateur

    Re : [HELP][Programmation_langage]

    Quand on voit qu'il existe des bouquins entiers consacrés à la "philosophie" objet, je ne vois pas comment répondre en quelques lignes à un problème aussi général.

    Attention aussi à la terminologie: on appelle pas des objets dans des classes. Les objets sont des instances de classes. Un objet a une existence physique (en mémoire) alors qu'une classe est un modèle.

    comment il peuvent hériter ?
    C'est un peu comme si tu demandais comment 2 nombres peuvent s'additionner. Je répondrais que c'est parce que la réprésentation des nombres et les règles de l'arithmétique le permettent. Pour l'héritage, c'est pareil, c'est parce ça a été prévu pour cela.

    Il faudrait que tu poses des questions plus précises, sinon il faut te replonger dans les bases de la programmation objet.

    A+

    Edit : grillé par Tryph
    Dernière modification par Jack ; 18/01/2012 à 14h25.

  9. #8
    invite3d77b205

    Re : [HELP][Programmation_langage]

    Bonjour et Merci pour vos réponses
    je vais essayer d’être plus correcte en posant les questions vu que je suis toujours débutant !
    Ce que je ne comprend pas par exemple : au sein d'une classe une classe X on retrouve des objets o d'une autre classe ,

    Aussi la signification un peu philosophique!! : a quoi servent le fait d'instancier des objets d'une autre classe Y dans une classe X ?? vu que à la fin de la déclaration de la classe X , il faut absolument créer un objet de cette classe X ?????

  10. #9
    Tryph

    Re : [HELP][Programmation_langage]

    je vais essayer de répondre avec un exemple bien imagé:

    un chat mange des croquettes. pour modéliser ça en orienté objet, on peut faire une classe Croquette et une classe Chat avec une méthode manger().

    le truc qu'il faut comprendre c'est que les classes ne sont que des modèles de données et de comportements mais qu'elles n'ont pas "d'existence" en tant que telle. toujours pour imager, avec tes classes Chat et Croquette, tu as les recettes qui permettent de créer des chats et des croquettes, mais tu n'a pas de vrai chat ni de vraie croquette.

    admettons maintenant que tu "crées" un chat, qu'on appellera "mon_chat" en instanciant la classe classe Chat.
    tu t'attends donc à pouvoir faire manger le chat avec une instruction du genre mon_chat.manger().
    mais ton chat va se nourrir de vraies croquettes et pas seulement de la recette de la croquette.

    on va donc créer des objets croquettes dans la méthode manger de la classe Chat pour indiquer que notre chat se nourrit de "vraies" croquettes.
    par contre le fait qu'un chat se nourrisse de vraie croquette ne suffit pas à en créer un, et il faudra toujours créer une instance de Chat pour pouvoir interagir avec...

    bon je suis pas certain d'être super clair, ni même que l'exemple est excellent.
    mais c'est aussi pour ça qu'on te conseille de lire des tuto, ils regorgent d'exemple concrets pour mieux appréhender les concepts de la POO.
    et si un tuto sur la POO te semble trop abstrait, tu peux éventuellement regarder des tutos sur le java, ça ira peut être mieux en pratiquant et en vérifiant toi même les exemple donnés.

    a+

  11. #10
    Jack
    Modérateur

    Re : [HELP][Programmation_langage]

    Ce que je ne comprend pas par exemple : au sein d'une classe une classe X on retrouve des objets o d'une autre classe ,
    Pour compléter la réponse de Tryph avec un exemple concret:
    Dans Windows par exemple, il existe une classe pour représenter une fenêtre. Une fenêtre sur ton écran est donc un objet qui a des propriétés (hauteur, largeur, couleur, etc), un comportement (déplacement, réduction, agrandissement, etc.) mais qui peut comporter d'autres objet comme un bouton par exemple.
    Lorsque tu définiras la classe qui représentera ta fenêtre, celle-ci pourra donc inclure des objets d'autres classes comme des boutons, combo boxes, list boxes, etc.

    A+

  12. #11
    invite3d77b205

    Re : [HELP][Programmation_langage]

    Bonjour et merci pour vos réponses ,
    Quand tu dis qu'une classe fenetre par exemple class F et contient des objets o1 o2 o3 ...(boutons....) , lors de la création de l'objet relatif a la classe F par exemple F objet_f= .... , comment cet objet peut il modifier les objets o1 o2 qui sont déja inclut dans la classe F ?? Peut on accéder par exemple : objet_f.o1.METHODE ?????? , ou bien les objets (bouttons ... ) peuvent etre modifier à l'intérieur de la classe OBLIGATOIREMENT : exepmle : o1.FONCTION1 ??

    Merci pour vos belles réponses

  13. #12
    Tryph

    Re : [HELP][Programmation_langage]

    Salut,

    Peut on accéder par exemple : objet_f.o1.METHODE ??????
    pour que ça soit possible, l'objet o1 doit être déclaré comme public dans la classe F, et la METHODE doit être déclarée publique dans la classe qui défini le type de l'objet o1. donc en pratique, il n'y a rien d'impossible.
    en théorie par contre, enfin disons par convention ou par soucis de rigueur, on évite de laisser un accès public direct sur les objets instanciés dans une classe. on préfère passer par des méthodes. la philosophie objet est un peu de cacher tout le fonctionnement interne d'une classe et ne fournir que les méthodes utiles.

    imaginons que tu aies à réaliser une fenêtre avec un simple bouton de validation que tu puisses activer ou désactiver:
    tu pourrais créer une classe Fenetre dans laquelle tu déclares une variable bouton, de type Bouton. la classe Bouton aurait des méthodes publiques du genre activer() et desactiver().
    si ta classe Fenetre déclare sa variable bouton en public, tu pourras faire ça:
    Code:
    fenetre = new Fenetre();
    fenetre.bouton.activer();
    mais on préférera en général cacher le bouton de la classe Fenetre en le déclarant en privé et ajouter 2 méthodes publiques à la classe Fenetre: activerBouton() et desactiverBouton() par exemple (méthode qui activent ou désactivent le bouton depuis l'intérieur de la classe Fenetre avec une simple instruction du genre bouton.activer(); ).
    on pourra alors faire la même chose que précédemment de cette façon:
    Code:
    fenetre = new Fenetre();
    fenetre.activerBouton();
    bon l'intérêt n'est pas flagrant sur un exemple aussi simple.
    sur des classes plus complexes ça permet de s'assurer que l'utilisateur de la classe ne peux pas accéder à tout, faire ce qu'il veut et potentiellement provoquer une instabilité. et en plus ça rend l'utilisation de la classe bien plus simple.

    a+
    Dernière modification par Tryph ; 19/01/2012 à 15h45.

  14. #13
    invite3d77b205

    Re : [HELP][Programmation_langage]

    Bonjour et Merci pour ta réponse
    voila ca que j'ai compris , si on déclare l'objet à l'intérieure de la classe fenêtre (objet bouton) , c'est que l'objet crée Fenetre obj, graphiquement représente une fenetre ( dans laquelle il y a un boutton ) .
    pour modifier la nature du bouton a travers l'objet boutton les methodes doivent etre public .
    pour modifier la nature du bouton a travers l'objet fenetre , il faut accéder par une fonction public qui contient (bouton.modifier)
    En tous cas tout reste public ??????

    la difference lors de la création public , privée , protected elle se voit au niveau de l'objet ? ou des methodes ??
    je veux dire , si une methode est déclarée privée , en gros le perdant c'est l'objet de la classe dont cette methode a été déclarée , car il ne peut pas faire par exemple : objet O.
    private fonction()
    o.fonction() est impossible ???

    Aussi quelle sont les autres cas ??
    merci pour vos réponses