pCloud Premium

Programmation orientée objet

Discussion à propos de tout ce qui n'entre pas dans le cadre des autres forums.
[ce forum est modéré par les modérateurs globaux du site]
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.

Programmation orientée objet

Messagepar François D. » Dimanche 04 Octobre 2009, 16:55

Dans ce sujet logiciels-mathematiques-f7/quel-s-langage-s-utiliserez-vous-pour-l-algo-au-lycee-t9156.html , un début de discussion s'est engagé autour de la Programmation Orientée Objet.

Pour aller vite : jusqu'à présent, je n'ai jamais réussi à franchir ce cap, le percevant confusément comme un faux progrès, un truc qui donne l'impression d'un pas en avant mais qui va en fait dans une direction qui ne me dit rien.

Séparer les données statiques de fonctions/méthodes universelles de traitement me semble plutôt aller dans le sens de l'abstraction et me convient mieux que de charger des données de méthodes de traitement et autres fonctions à usage interne où on risque de réinventer la roue à chaque fois, de se répéter, etc.

Pour reprendre un exemple : si on se place dans le domaine pseudo-mathématique, MB proposait un objet Triangle contenant à la fois les coordonnées des sommets (là, aucun souci), mais aussi une fonction Périmètre, aire si besoin, etc. : on aurait autant de déclinaisons de cette fonctions qu'il y a de types de polygones (3, 4, 5, ... côtés).

Là je dis : le triangle, ce sont les données.

La fonction Périmètre est à définir universellement, pour pouvoir être appliquée à un triangle (ou un rectangle, etc.) ; son résultat appliqué à un triangle donné n'a même pas besoin d'être annexé aux données de celui-ci : on l'appelle en cas de besoin.

C'est parti : feu à volonté :mrgreen: .

PS : me dire que je n'ai rien compris ne fera pas avancer la chose : je le sais, que je ne comprends apparemment pas ce concept comme il est censé être compris ;) .
François D.
Téra-utilisateur
 
Messages: 1370
Inscription: Dimanche 30 Juillet 2006, 09:04
Localisation: Alsace
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Programmation orientée objet

Messagepar Arnaud » Dimanche 04 Octobre 2009, 17:29

En fait, tout dépend de la façon dont tu écris tes classes.

Tu peux écrire une "super"-classe polygone, dans laquelle tu définis une fonction "périmètre", puis définir des "sous"-classes ( vocabulaire non-officiel ) triangle, quadrilatère, etc...dans lesquelles cette fonction "périmètre" serait automatiquement définie.

Après tu vas me dire que le cercle n'est pas un polygone....Certes, il faudra définir une fonction "périmètre" dans la classe cercle, et cette fonction peut porter le même nom qu'ailleurs.
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7116
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Re: Programmation orientée objet

Messagepar abaddon » Dimanche 04 Octobre 2009, 19:47

François D. a écrit:La fonction Périmètre est à définir universellement, pour pouvoir être appliquée à un triangle (ou un rectangle, etc.) ; son résultat appliqué à un triangle donné n'a même pas besoin d'être annexé aux données de celui-ci : on l'appelle en cas de besoin.


Arnaud a écrit:Tu peux écrire une "super"-classe polygone, dans laquelle tu définis une fonction "périmètre", puis définir des "sous"-classes ( vocabulaire non-officiel ) triangle, quadrilatère, etc...dans lesquelles cette fonction "périmètre" serait automatiquement définie.

Après tu vas me dire que le cercle n'est pas un polygone....Certes, il faudra définir une fonction "périmètre" dans la classe cercle, et cette fonction peut porter le même nom qu'ailleurs.


ça s'appelle l'héritage.. Et on pourrait très bien définir un objet encore plus abstrait : forme géométriques. Desquelles hériteraient les classes filles comme Cercle ou encore Hyperboloïde, ... , ou des classes purement virtuelles comme polygones dont hériterait Triangle p.ex.

Les propriétés les plus communes se trouvent dans les classes les plus hautes et après on raffine..

C'est ça la programmation orientée objet. Les mathématiques s'y prêtent bien pour illustrer ce concept. Mais attention ! Les mathématiques ne sont pas de l'informatique. Et aujourd'hui on a tendance à voir de plus en plus de langage permettre de faire de l'OO. C'est dangereux.

En effet, la programmation orientée objet est plus avantageuse pour plein de domaines tel celui évoqué ci-dessus. Mais elle ne se prête absolument pas à tous les domaines de programmation. En effet, je vois mal un informaticien coder des trames USB en langage orienté objet ?? Là ça complique beaucoup. Alors qu'utiliser des langages beaucoup plus simples à comprendre - comme le C p.ex. - car beaucoup plus proche du matériel, aident vraiment à produire du code propre en se basant sur des notions d'algo qui sont parfois poussées, mais très difficiles à implémenter proprement en OO.
abaddon
Déca-utilisateur
 
Messages: 33
Inscription: Vendredi 02 Octobre 2009, 21:01
Statut actuel: Post-bac | Master

Re: Programmation orientée objet

Messagepar Arnaud » Dimanche 04 Octobre 2009, 19:52

abaddon a écrit:ça s'appelle l'héritage.. Et on pourrait très bien définir un objet encore plus abstrait : forme géométriques. Desquelles hériteraient les classes filles comme Cercle ou encore Hyperboloïde, ... , ou des classes purement virtuelles comme polygones dont hériterait Triangle p.ex.

Les propriétés les plus communes se trouvent dans les classes les plus hautes et après on raffine..


Heu oui merci, je suis au courant... ;)
Je ne voyais pas l'intérêt de rapatrier le vocabulaire pour quelqu'un qui ne s'y connait pas, enfin sauf si on veut l'embrouiller.
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7116
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Re: Programmation orientée objet

Messagepar abaddon » Dimanche 04 Octobre 2009, 20:04

à mon avis je ne pense pas que ça embrouille, mais si on veut parler d'OO, il y a un minimum de termes à connaitre. Sans quoi il est difficile d'avoir quelque chose de pertinant.

Voici les principaux, dites moi si je ne suis pas tout à fait correct :

attribut : variable d'un objet, autrement dit ce qui compose l'objet (attributs d'un homme : son cerveau, ses bras, son coeur, etc.)
méthode : fonction d'un objet, autrement dit détaille la façon dont se comporte l'objet

Objet : instance d'une classe

Classe : ensemble définissant les attributs et méthodes d'un objet.

Héritage : notion qui permet à un objet de récupérer les propriétés d'un autre objet. Ex: une classe BMW peut hériter d'une classe Voiture, qui elle peut hériter d'une classe Véhicule, etc..

Interface ou classe virtuelle : Défini une classe qui ne peut pas être instanciée. I.e. une classe dont on ne peut pas créer d'objet à proprement parler. En effet, si une classe forme géométrique existe et qu'elle comporte une méthode Périmètre, cette méthode ne pourra être définie clairement car le calcul n'est pas le même pour chaque objet..

voilà.. Ce sont les principales notions à comprendre il me semble..
abaddon
Déca-utilisateur
 
Messages: 33
Inscription: Vendredi 02 Octobre 2009, 21:01
Statut actuel: Post-bac | Master

Re: Programmation orientée objet

Messagepar MB » Lundi 05 Octobre 2009, 00:04

abaddon a écrit:Voici les principaux, dites moi si je ne suis pas tout à fait correct :

attribut : variable d'un objet, autrement dit ce qui compose l'objet (attributs d'un homme : son cerveau, ses bras, son coeur, etc.)
méthode : fonction d'un objet, autrement dit détaille la façon dont se comporte l'objet

Objet : instance d'une classe

Classe : ensemble définissant les attributs et méthodes d'un objet.

Héritage : notion qui permet à un objet de récupérer les propriétés d'un autre objet. Ex: une classe BMW peut hériter d'une classe Voiture, qui elle peut hériter d'une classe Véhicule, etc..

Interface ou classe virtuelle : Défini une classe qui ne peut pas être instanciée. I.e. une classe dont on ne peut pas créer d'objet à proprement parler. En effet, si une classe forme géométrique existe et qu'elle comporte une méthode Périmètre, cette méthode ne pourra être définie clairement car le calcul n'est pas le même pour chaque objet..


Je suis d'accord avec ces définitions (qui semblent assez nécessaires en effet) même si je ne connaissais pas la dernière notion.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6906
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant


Retourner vers Tribune libre

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

pCloud Premium