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

Langages de programmation Discussion :

Comment pourriez-vous expliquer l'orienté objet?


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    1 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 089
    Par défaut Comment pourriez-vous expliquer l'orienté objet?
    Comment pourriez-vous expliquer l'orienté objet ?
    Steve Jobs a essayé d'expliquer ce concept avec des exemples simples

    La programmation orientée objet est un concept assez répandu dans l’environnement de programmation informatique. Plusieurs langages tels que Java, C#, VB.Net, Objective C, Python, Ruby, C++, PHP, Eiffel, Ada, Smaltalk, Ocaml, JavaScript, Perl, Self, ActionScript, Lua... pour ne citer que ceux-là en sont dérivés.

    Ce style de programmation trouve son aboutissement dans les travaux d’Alan Kay, un passionné du langage Simula. Dans les années 1970, Alan Kay qui était fortement influencé par le langage Simula a commencé à réfléchir sur la mise en œuvre d’un modèle de programmation facilitant le développement des applications.

    Pendant les travaux de recherche avec une équipe de chercheurs de Xerox pour la mise en œuvre de Dynabook, l’un des premiers prototypes d’ordinateur portable, Alan Kay développe Smaltalk, le langage orienté objet et basé sur Simula afin de faciliter la conception d’applications sur cet ordinateur. C’est à partir de ce nouveau langage que la programmation orientée objet se formalise et prend tout son sens.

    Dans les années 80 Bjorn Stroustrup intègre la programmation orientée objet dans le langage C. Cela donne naissance au langage C++ et devient par ailleurs le premier langage orienté objet à être largement utilisé.

    Dans les années 90, une équipe de Sun développe une version simplifiée du C++ baptisée Java. Dans cette même période, plusieurs autres langages prennent naissance à partir de ce paradigme et facilitent le développement des applications orientées objet. Aussi, vu l’effervescence que connait cette approche dans ces années 90, dans une interview accordée à Steve Jobs, il lui est demandé d’expliquer en des termes simples ce qu’est un logiciel orienté objet.

    Sans faire preuve de langage technique, Steve Jobs explique que « les objets sont comme les gens. Ce sont des choses qui vivent, respirent, ont des connaissances intrinsèques sur comment faire les choses et ont une mémoire à l’intérieur d’eux qui leur permet de se souvenir des choses. Et plutôt que d’interagir avec eux à un très bas niveau, on interagit avec eux à très haut niveau d’abstraction comme nous le faisons présentement ».

    « Voici un exemple : si je suis votre objet de blanchisserie, vous pouvez me donner vos vêtements sales et m’envoyer un message qui dit ‟Pouvez-vous faire laver mes vêtements, s’il vous plait ?”. Je sais où se trouve la meilleure blanchisserie. Je parle anglais et j’ai des dollars dans mes poches. Donc, je sors et j’appelle un taxi et dis au chauffeur de me conduire à cet endroit à San Francisco. Je vais faire laver vos vêtements, je saute à nouveau dans un taxi et je reviens ici. Je vous donne vos vêtements propres, ‟Voici vos vêtements propres” ».

    « Vous n’avez aucune idée de comment je l’ai fait. Vous n’avez aucune connaissance de l’endroit où se trouve la blanchisserie. Peut-être que vous parlez français, et vous n’êtes même pas en mesure d’appeler un taxi. Pourtant, je savais comment faire tout cela. Et vous n’avez pas besoin de savoir tout ça. Toute cette complexité était cachée à l’intérieur de moi et nous avons pu interagir à un niveau d’abstraction très élevé. C’est ce que sont les objets. Ils encapsulent la complexité et les interfaces pour cette complexité sont de haut niveau ».

    Ainsi défini, il serait aisé, même pour les non-techniciens de se représenter l’image des logiciels orientés objet.

    Source : Rolling Stones

    Et vous ?

    Comment trouvez-vous l’explication de la programmation orientée objet de Steve Jobs ?

    À l’instar de Steve Jobs, comment pourriez-vous simplement expliquer les objets ou la POO ?

    Voir aussi

    Forum langages de programmation

  2. #2
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    Une réponse de Steve Jobs permet de comprendre ce concept avec des exemples simples
    Steve Jobs le type qui n'as jamais codé 1 seule ligne de code de toute sa vie ? Comment il pouvait savoir ce qu'était la prog objet en ne sachant pas codé ?

    Par contre l'explication est plutôt bonne, je dois le reconnaitre.

  3. #3
    Invité de passage

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Steve Jobs le type qui n'as jamais codé 1 seule ligne de code de toute sa vie ? Comment il pouvait savoir ce qu'était la prog objet en ne sachant pas codé ?
    Je dois dire que je me suis posé la même question. Mais si l'explication est vraiment de lui, c'est plutôt bien trouvé. Même si ça explique surtout la finalité (modularisation par séparation des responsabilités) et pas ce qu'est la programmation orientée objet.

  4. #4
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Steve Jobs le type qui n'as jamais codé 1 seule ligne de code de toute sa vie ?
    Je trouve pourtant son explication tout à fait limpide et juste. Donc pour moi soit il savait coder, soit il avait une excellente connaissance théorique du sujet, soit on lui a soufflé la réponse.

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'ai du mal a voir ce qu'il y a d'actuel dans cette actualité.
    Sans être pro ou anti S.Jobs,
    C'est très simple de trouver des analogies au monde objet et personne n'a attendu Steve Jobs pour en faire.
    Etait-il le premier a vulgariser ce qu'est le langage objet ?
    Je ne comprend pas cette actualité. C'est ... banal ??? Mais parce que Steve Jobs l'a dit il y a des années, ça en fait une actualité ?
    J'ai l'impression qu'on en fait quelque chose d'extraordinaire ... "À l’instar de Steve Jobs, comment pourriez-vous simplement expliquer les objets ou la POO ?"

  6. #6
    Expert confirmé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 899
    Par défaut
    Citation Envoyé par EyZox Voir le message
    J'ai du mal a voir ce qu'il y a d'actuel dans cette actualité.
    Sans être pro ou anti S.Jobs,
    C'est très simple de trouver des analogies au monde objet et personne n'a attendu Steve Jobs pour en faire.
    Etait-il le premier a vulgariser ce qu'est le langage objet ?
    Je ne comprend pas cette actualité. C'est ... banal ??? Mais parce que Steve Jobs l'a dit il y a des années, ça en fait une actualité ?
    J'ai l'impression qu'on en fait quelque chose d'extraordinaire ... "À l’instar de Steve Jobs, comment pourriez-vous simplement expliquer les objets ou la POO ?"
    Il y à une icone débat, c'est certes pas une actualité , c'est un débat tout simplement, ou un troll si tu préfères .

  7. #7
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    La POO c'est avant tous une organisation du code en le groupant en objets, les objets sont des éléments comportant des informations et des fonctionnalités.

  8. #8
    Membre confirmé
    Avatar de mrqs2crbs
    Profil pro
    LEAD DEV
    Inscrit en
    Juin 2013
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : LEAD DEV

    Informations forums :
    Inscription : Juin 2013
    Messages : 105
    Billets dans le blog
    2
    Par défaut
    On peut retirer Ocaml de la liste,
    c'est quand même avant tout un langage destiné à la programmation fonctionnelle.

    Et puisque l'on est dans le discours illustré, je rajoute une petite citation de Joe Armstrong à propos des langages OO :
    Because the problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them.
    You wanted a banana but what you got was a gorilla holding the banana and the entire jungle

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 179
    Par défaut
    Citation Envoyé par mrqs2crbs Voir le message
    On peut retirer Ocaml de la liste,
    c'est quand même avant tout un langage destiné à la programmation fonctionnelle.

    Et puisque que l'on est dans le discours illustré, je rajoute une petite citation de Joe Armstrong à propos des langages OO :
    Tout ça me dépasse un peu. Je ne suis pas développeur pro, je fais juste quelques trucs simples en ayant appris sur le tas, mais personnellement, je pense avoir compris le principe en reprenant toujours les mêmes exemple du gâteau / moule à gâteau (pour expliquer l'objet / la classe) et de la voiture (avec ses caractéristiques physiques et ses méthodes : je lui demande simplement d'avancer, je n'ai pas besoin de connaître la mécanique interne).

  10. #10
    Membre éclairé
    Avatar de Voyvode
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 476
    Par défaut
    Citation Envoyé par Haseo86 Voir le message
    Je ne sais pas à quel point il est vrai que Steve Jobs n'a jamais codé.
    Le blog de Steve Wozniak : Does Steve Jobs know how to code?

    « Steve n’a jamais codé. Ce n’était pas un ingénieur et il n’a rien conçu vraiment lui-même, mais il était suffisamment technicien pour apporter des modifications au travail des autres. »

    Citation Envoyé par Olivier Famien Voir le message
    Sans faire preuve de langage technique, Steve Jobs explique [ce qu’est un objet].
    Sa vulgarisation montre une grosse ficelle de sa stratégie de communication : repérer un concept puissant et le vulgariser. Enseigner marque les esprits et flatter l’intelligence est vendeur.

  11. #11
    Membre éprouvé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 459
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 459
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Steve Jobs le type qui n'as jamais codé 1 seule ligne de code de toute sa vie ?
    Tu racontes n'importe quoi, Steve Jobs était meilleur codeur que toi ou moi, c'est en électronique qu'il se reposait massivement sur Wozniak (qui était aussi très bon en logiciel)
    L'exemple le plus simple de sa vie qui illustre mon propos est l'histoire du jeux Casse brique sur atari
    La borne d'arcade dessinée par Nolan Bushnell a été conçue à la base par Steve Jobs et Steve Wozniak, les fondateurs ultérieurs d'Apple. Jobs, alors employé par Atari, charge son ami Wozniak de réaliser le circuit électronique, tandis qu'il s'occupe de la partie logicielle. Le tout est réalisé en 4 jours et 4 nuits par les deux amis.
    Steve jobs est un connard mysanthrope perfectionniste mais il est quand même compétant à l'origine.

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 614
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Steve Jobs le type qui n'as jamais codé 1 seule ligne de code de toute sa vie ? Comment il pouvait savoir ce qu'était la prog objet en ne sachant pas codé ?

    Par contre l'explication est plutôt bonne, je dois le reconnaitre.
    À l'opposé, on peut aussi relever qu'il y a des plateaux de devs entiers qui codent à longueur de journée, voir pour certains avec des langages orientés objet et qui pourtant ne savent pas ce qu'est la "prog objet"...

  13. #13
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut
    Donc si on code en procédural et que nous avons cette approche objet, on peut dire que nous faisons alors de la programmation orienté objet (même si on utilise pas forcément les class, constructeurs et compagonie comme enseignés dans les tutos sur la POO en PHP ) ?

  14. #14
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut
    Je prend l exemple des tutos de POO de PHP puisque je n'est lu que ceux là, si il s agit plus d'u concept de programmation, au fond peu importe la manière d y parvenir procédural ou non.

  15. #15
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par Kevin-lourenco Voir le message
    Donc si on code en procédural et que nous avons cette approche objet, on peut dire que nous faisons alors de la programmation orienté objet (même si on utilise pas forcément les class, constructeurs et compagonie comme enseignés dans les tutos sur la POO en PHP ) ?
    Si je te comprends bien, tu te demandes si le fait de créer des objets en ajoutant des champs dynamiquement à une table peut être considéré comme de la POO ? Par opposition au fait de passer par les classes de php où le type est défini formellement ? Peut-être, ça dépend de ce que tu en fais, mais probablement pas sinon tu verrais des avantages à déclarer des classes.


    La POO c'est avant tout l'encapsulation : chaque objet doit être une boîte noire masquant ses détails internes pour que tu puisses ignorer ceux-ci lorsque tu utilises ton objet. Le but est de diviser ton code en petits problèmes indépendants, modulaires et bien organisés, n'exposant que le strict minimum au reste du monde.

    Lorsqu'on crée un type (classe ou non) on doit donc choisir quels attributs seront visibles à l'extérieur et lesquels seront internes, et quelles méthodes permettent de manipuler ces variables internes. Ta façon de faire répond t-elle à ce besoin, par exemple avec une convention de nommage spécifique pour les champs privés ? Ou bien tous tes objets ne sont-ils que des collections d'états publics que tous manipulent à leur gré ? Utiliser une classe permet de spécifier la visibilité de chaque membre et remplce avantageusement une une convention de nommage.

  16. #16
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Billets dans le blog
    9
    Par défaut
    La POO c'est avant tous une organisation du code en le groupant en objets, les objets sont des éléments comportant des informations et des fonctionnalités.

  17. #17
    Membre très actif
    Ingénieur de recherche
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur de recherche

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Je ne sais pas à quel point il est vrai que Steve Jobs n'a jamais codé.

    Cependant, il n'a pas besoin d'être développeur pour comprendre le concept et savoir l'expliquer. Son exemple est d'ailleurs très clair je pense.

  18. #18
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut
    C est cool, le sujet est simple: pour vous qu'elle est la représentation de l'object ? Et à la place on a un débat pour savoir si steave jobs savait coder..

    Passons, moi je n'utilise pas l'object à proprement parler avec toute sa puissance (d'ailleurs pour mes petits projets voir moyen je n'en est pas forcément eu besoin).

    Je ne réinvente cependant pas la roue en alliant un mélange de fonction et d'include avec variable pour répondre à des demandes différentes.

    Pour moi si le tout est bien organisé, cela ne change pas grand chose, mais c'est sûrement qu'il doit y avoir d'autre qualité à l'orienté object que je ne connais pas encore ne n'ayant pas exploré de fond en comble.

    Si quelqu'un veut bien m apporter des éléments de réponse, je suis preneur, trouvant que l'orienté complexifie le code, il y à sûrement une bonne raison à cela

  19. #19
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Les gars, vous êtes un petit peu psycho rigide. En gros la news vous demande comment vous expliqueriez la programmation orienté objet. Après, Steve Jobs n'est qu'un exemple.

    Vous avez deux heures...

  20. #20
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Citation Envoyé par Kevin-lourenco Voir le message
    C est cool, le sujet est simple: pour vous qu'elle est la représentation de l'object ? Et à la place on a un débat pour savoir si steave jobs savait coder..

    Passons, moi je n'utilise pas l'object à proprement parler avec toute sa puissance (d'ailleurs pour mes petits projets voir moyen je n'en est pas forcément eu besoin).

    Je ne réinvente cependant pas la roue en alliant un mélange de fonction et d'include avec variable pour répondre à des demandes différentes.

    Pour moi si le tout est bien organisé, cela ne change pas grand chose, mais c'est sûrement qu'il doit y avoir d'autre qualité à l'orienté object que je ne connais pas encore ne n'ayant pas exploré de fond en comble.

    Si quelqu'un veut bien m apporter des éléments de réponse, je suis preneur, trouvant que l'orienté complexifie le code, il y à sûrement une bonne raison à cela
    Je vais tenté d'être clair :
    Imagine que ton "mélange de fonction et d'include avec variable" et regroupé dans un ensemble logique qui te permet de créer un site Internet (que je suppose être tes "petits projets"). A chaque fois que tu réalises un site Internet, tu réutilises ton "mélange de fonction et d'include avec variable".

    Etant donné que ton "mélange de fonction et d'include avec variable" est regroupé dans un ensemble logique (on parle d'encapsulation) qui s'appellera "Website" et qui est donc un objet (et donc une classe), au lieu d'écrire en procédurale plein de lignes de codes, tu pourras faire par exemple : $website = new Website() => badaboum ! Tu viens de faire ton site Internet. Si ça c'est pas beau !

    Ensuite, tu veux changer le nom du site, tu n'as qu'à faire : $website->setTitle('Mon site Internet') => badaboum ! Tu viens de changer le title de la balise de tes pages web !

    Tu veux afficher ton site : $website->display() => badaboum ! Ton site s'affiche.

    Alors, certain l'ont expliqué, toute la machine représentant le "mélange de fonction et d'include avec variable" est caché dans l'objet "Website", et à un moment il faut le coder, et effectivement, c'est plus complexe que l'exemple que je te donne.

    L'avantage de la POO c'est que c'est une méthode de programmation qui te permet de créer des gros logiciels qui regroupent plein d'objets et de les organiser d'une façon logique. Parce que dans la vraie vie, il n'y a pas q'un seul objet dans l'univers, et pire ils interagissent entre eux... et là, tu prend les tutos de developpez.com.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2013, 21h56
  2. Réponses: 8
    Dernier message: 21/02/2012, 18h21
  3. Programmation orientée objet ? Comment ?
    Par ..::snake::.. dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 27/05/2007, 21h05
  4. [C#] Comment correctement programmer orienté objet ?
    Par ChristopheOce dans le forum C#
    Réponses: 5
    Dernier message: 06/02/2006, 13h22
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

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