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

avec Java Discussion :

EN POO, en Java, comment adopter l'approche "Bottom-up" (vs "Top-down du procédural")?


Sujet :

avec Java

  1. #1
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 52
    Par défaut EN POO, en Java, comment adopter l'approche "Bottom-up" (vs "Top-down du procédural")?
    Bonjour,

    J'ai compris que la différence entre la programmation procédurale, comme avec le langage C, et la POO, comme avec Java est le fait que dans le premier cas on part d'une approche "top down" (du haut vers le bas -> on casse le problème général en plus petites parties)?.Mais en POO, comme avec Java, c'est l'inverse-> on part des éléments individuels (les classes je suppose) qui une fois mises les unes avec les autres forment le programme complet. Donc on parle de modules en POO.

    Problème ,je suis fortement influencé par le procédural, et j'ai un cerveau plutôt de logique "top-down" (déductif?). En POO, j'arrive à voir comment ça fonctionne, mais pas forcément à bien organiser les différentes classes et méthodes entre elles pour former le programme final.
    Plus précisément j'ai l'habitude de mettre mes méthodes principales dans une classe chapeau/classe de gestion ou sont situées les listes d'objets/tableaux pour être plus proche des données, mais est-ce forcément recommandable?
    Avez-vous une méthodologie à me conseiller au niveau logique pour bien concevoir mes programmes en langage POO Java?

    Merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Pfiou, vaste question...

    J'ai pas l'impression qu'on fasse du bottom-up en Java... En fait, on continue souvent à réfléchir comme en procédural, tout en ayant une couche d'encapsulation supplémentaire: l'objet, qui permet de rassembler à un même endroit les données et les traitements qui manipulent ces données.

    Par contre, là où la réflexion est un peu plus poussée, c'est dans l'identification de ces objets: quand et quoi créer. Comment les objets doivent-il dialoguer entre eux pour que 1) ils fassent ce que l'on veut et 2) ils soient suffisament flexibles pour résister (un peu...) aux changements inévitables qu'il faudra mettre en place lors des évolutions. Pour nous aider, l'OO ajoute quelques concepts très intéressants et puissant:

    1) l'encapsultation. Les objets doivent cacher tout ce qui n'est pas légitimement accessible. Ils doivent se protéger contre les "attaques" du monde extérieur (en mode paranoïa, tout le monde me veut du mal donc je prévois l'imprévisible), vérifier la validité des mutations que les consommateurs tentent de lui soumettre, et garantir quelles que soient les conditions les invariants propres à l'abstraction courante (eg. un objet qui stocke une date de début et une date de fin, est responsable de garantir que la date de début soit toujours inférieure à la date de fin, et si quelqu'un tente de violer cette règle, alors l'objet doit générer une exception)
    2) l'héritage. La capacité de "réutiliser" une base commune dans un objet fils, tout en permettant la personnalisation de ce qui doit l'être ainsi que l'ajout de fonctionnalités.
    3) le polymorphisme. Le fait de permettre des traitements communs sur des objets différents, mais qui partagent une certaine mécanique - classe de base ou interface - (ex. tout traitement applicable à un "Fruit" sera applicable sans problème à une Pomme et à une Orange, même si "manger" une Orange implique de l'éplucher au préalable - même appel + type différent = comportement différent en fonction du type réel et pas du type référencé)

    Ces 3 concepts de base sont les seules vraies différences avec le procédural. Après cela, les têtes pensantes (GoF, etc.) nous ont produits tout un tas de "Design Pattern", c'est à dire des manières d'agencer nos objets pour remplir des buts précis: notifier le monde de certains événements, garantir l'usage d'instances uniques, "décorer" les appels à des méthodes avec des comportements supplémentaires, créer des graphes d'objets cohérents facilement, etc.

    Les patterns devraient souvent être étudiés dans le cadre de l'apprentissage de la POO. On les retrouve sous une forme ou une autre dans à peu près toutes les API Java qui sont à notre disposition, il est intéressant d'apprendre à les reconnaître.


  3. #3
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 52
    Par défaut
    Merci Pill_S.

    J'avais lu cet article très intéressant...Qu'en penses-tu?

    http://durofy.com/10-major-differenc...en-c-and-java/

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Moui, à part cette histoire de bottom-up vs top-bottom qui ne me plait pas tout à fait, c'est une introduction correcte.

  5. #5
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    Moui, à part cette histoire de bottom-up vs top-bottom qui ne me plait pas tout à fait, c'est une introduction correcte.
    Je suis assez d'accord avec Pill_S. Je ne vois pas ce que Java a de "bottom-up". Je trouve même que cela peut prêter à confusion et donner une mauvaise vision de Java.

    Lorsque l'on développe en Java, on pense aux concepts manipulés qui nous servent ainsi à définir les classes, les packages. Puis on réfléchit à comment interagissent ces concepts entre eux ce qui nous sert ainsi à définir les opérations nécessaires et donc les interfaces, les squelettes de méthode. Et seulement enfin on écrit au sein des méthodes la mécanique pour le faire. Avec le résumé que je viens de faire de l'approche d'un développeur Java, je ne vois pas ce qu'il y a de "bottom-up".
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    en réalité je pense que l'approche pratique est sinusoïdale (ou en spirale).
    On essaye de cerner les concepts plus précisément et quand on expérimente on s'aperçoit que la réalisation concrète remet en partie en cause notre modèle ... et c'est reparti dans l'autre sens ... jusqu'à que ces tressaillements soient négligeables.
    (bon je trouve la comparaison C/java citée assez pipeau désolé)

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    en réalité je pense que l'approche pratique est sinusoïdale (ou en spirale).
    Quel beau mot. Moi j'appelle ça faire de la soupe et j'en fait tous les jours

Discussions similaires

  1. [Java] Comment mettre un tabelModel dans un Report ?
    Par oursblanc dans le forum Jasper
    Réponses: 6
    Dernier message: 02/05/2009, 19h37
  2. [FOP][Java] comment utiliser une police
    Par elzedo dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/12/2006, 18h40
  3. Lecture d'un bitmap en Java. Comment ?
    Par Jean++ dans le forum Multimédia
    Réponses: 10
    Dernier message: 17/01/2006, 10h03
  4. [Ireport][Java] Comment lancer l'etat ?
    Par nsanabi dans le forum iReport
    Réponses: 6
    Dernier message: 11/10/2005, 16h33
  5. [DOM] En java comment charger un XML en dynamique via un filtre
    Par fbertoux dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/12/2004, 18h35

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