Programmation objet
4 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Programmation objet
Bonjour,
Cela fait déjà un moment que j'ai entendu parler de programmation objet. Mais j'aimerai savoir ce que c'est. J'ai déjà cherché, il y a une très longue page sur Wikipédia, mais qui contient des termes qui me sont totalement inconnus et qui sont expliqués, dans une autre longue page.
Pourriez-vous m"expliquer ceci assez brievement, sachant que je ne connais presque rien en C/C++.
Cela fait déjà un moment que j'ai entendu parler de programmation objet. Mais j'aimerai savoir ce que c'est. J'ai déjà cherché, il y a une très longue page sur Wikipédia, mais qui contient des termes qui me sont totalement inconnus et qui sont expliqués, dans une autre longue page.
Pourriez-vous m"expliquer ceci assez brievement, sachant que je ne connais presque rien en C/C++.
Invité- Invité
Re: Programmation objet
ça fait longtemps que j'ai posé la même question mais personne m'a répondu
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 39
Localisation : tunisie
Réputation : 5
Points : 6321
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Programmation objet
mosa a écrit:ça fait longtemps que j'ai posé la même question mais personne m'a répondu
parfois la question s'oublie et se perd parmi les autres messages. Il faut insister et rappeler pour que ça sort lorsqu'on clique sur 'Nouveaux messages'.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Programmation objet
ProgVal a écrit:Bonjour,
Cela fait déjà un moment que j'ai entendu parler de programmation objet. Mais j'aimerai savoir ce que c'est. J'ai déjà cherché, il y a une très longue page sur Wikipédia, mais qui contient des termes qui me sont totalement inconnus et qui sont expliqués, dans une autre longue page.
Pourriez-vous m"expliquer ceci assez brievement, sachant que je ne connais presque rien en C/C++.
Pour comprendre la programmation Objet, il faut d'abord critiquer un peu la programmation classique dite modulaire ou procédurale.
Prenons par exemple le langage PASCAL. Il est procédural.
Un programme donné apporte une solution à un problème donné. Prenons par exemple le problème suivant:
Stockage d'un ou plusieurs nombres entiers dans un tableau, avec la possibilité de:
- modifier un nombre connaissant sa position "pos", la nouvelle valeur est "Y"
- et vérifier l'existence d'un nombre "Z" dans le tableau
En PASCAL, on doit déclarer les variables suivantes pour la manipulation du tableau:
- le tableau "T"
- la taille "N" du tableau
- la position "pos"
- l'entier "Y" et "Z"
- et l'indice de parcours "i"
On peut implémenter un sous-programme (procédure ou fonction) pour chaque opération sur le tableau:
- procédure pour saisir le tableau : Saisir(T,N)
- procédure pour modification : Modifier(T,N,POS,Y)
- fonction de test d'existence : Existe(T,N,Z)
Ca se complique d'avantage lorsqu'on décide un jour d'utiliser ces fonctionnalités pour remplir le tableau avec des Chaines de caractères au lieu des Entiers ...
Ca se complique plus lorsqu'on veut manipuler un tableau de Structures de données telles que:
- tableau de Fichier
- tableau de Personne
- tableau de de fonctions !!!! (chaque case du tableau est une fonction qui fait un traitement donné)
Pour cela, il faut toujours refaire tout le programme (TOUT !!!)
Alors que les opérations faites sur les données sont les mêmes:
- Saisie ou stockage dans un tableau
- Modification d'un élément
- Test d'existence d'un élément
La Conception Orientée Objet propose une solution à ce problème!
Il s'agit de définir les structures génériques suivantes:
1) ELEMENT: classe qui va jouer le rôle des types entiers, chaines, ... (tout type)
2) TAB_ELEMENT: tableau d'éléments ELEMENT
un objet ELEMENT doit être capable de :
- retourner son contenu: donc il doit disposer par exemple d'une fonction (méthode) GetVal()
- modifier son contenu (sa valeur): méthode SetVal(newElement: ELEMENT).
- se comparer à un autre élément: méthode CompareTo(element: ELEMENT) --> true ou false
un objet TAB_ELEMENT doit être capable de:
- ajouter un élément: méthode AddElement(newElement: ELEMENT)
- vérifier l'existence d'un élément Existe(element: ELEMENT) --> true ou false
Avec cette philosophie, on peut gagner beaucoup de temps, et surtout, on devient plus proche de la logique des choses! Ca nécessite beaucoup plus d'effort de conception par rapport à la programmation procédurale.
... à suivre
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Programmation objet
Merci pour cette explication. Mais il me reste quelques questions:
1. Qu'est-ce qu'une classe?
2. Qu'est-ce qu'une méthode?
3. Pourquoi peut-on appeller une méthode à partir d'un objet, et pas à partir d'une fonction?
Et puis un p'tit truc au passage: en TI-Basic, les types entier, flottant, long, double, short sont confondus.
De plus, on fonction peut servir à plusieurs choses: left(X,Y).
-si X est une liste, left() retourne les Y premiers éléments
-si X est une chaîne de caractère, left() retourne les Y premiers caractères
1. Qu'est-ce qu'une classe?
2. Qu'est-ce qu'une méthode?
3. Pourquoi peut-on appeller une méthode à partir d'un objet, et pas à partir d'une fonction?
Et puis un p'tit truc au passage: en TI-Basic, les types entier, flottant, long, double, short sont confondus.
De plus, on fonction peut servir à plusieurs choses: left(X,Y).
-si X est une liste, left() retourne les Y premiers éléments
-si X est une chaîne de caractère, left() retourne les Y premiers caractères
Invité- Invité
Re: Programmation objet
La réponse existe déjà dans le texte: une classe peut être assimilée à
un ensemble de paramètres et des fonctions manipulant ces paramètres.
Par exemple: une classe appelée RECTANGLE doit contenir des paramètres
LONGUEUR et LARGEUR. Elle doit avoir des méthodes telles que
SetLongueur(ln), SetLargeur(lg), CalculAire(), CalculPerim() ...
Ces paramètres sont appelés Attributs de la classe RECTANGLE.
Ces fonctions sont appelées Méthodes de la classe RECTANGLE.
Dans un programme, on doit créer un objet RECTANGLE et bénéficier de
ses méthodes publiques (posez la question c'est quoi Publique?)
Les instructions Java suivante créent un rectangle (2,5) et calcule son aire:
@+
un ensemble de paramètres et des fonctions manipulant ces paramètres.
Par exemple: une classe appelée RECTANGLE doit contenir des paramètres
LONGUEUR et LARGEUR. Elle doit avoir des méthodes telles que
SetLongueur(ln), SetLargeur(lg), CalculAire(), CalculPerim() ...
Ces paramètres sont appelés Attributs de la classe RECTANGLE.
Ces fonctions sont appelées Méthodes de la classe RECTANGLE.
Dans un programme, on doit créer un objet RECTANGLE et bénéficier de
ses méthodes publiques (posez la question c'est quoi Publique?)
Les instructions Java suivante créent un rectangle (2,5) et calcule son aire:
- Code:
RECTANGLE rect = new RECTANGLE();
rect.SetLongueur(5);
rect.SetLargeur(2);
double aire = rect.getAire();
@+
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Programmation objet
Effectivement,
Qu'est-ce que public? J'ai entendu parler d'une histoire de code que l'on peut voir, ...
Qu'est-ce que public? J'ai entendu parler d'une histoire de code que l'on peut voir, ...
Invité- Invité
Re: Programmation objet
Si tu t'adresses à une calculatrice et tu appuies sur le bouton: RACINE CARREE, qu'est-ce qui se passe?
La racine carré du nombre entré est calculée automatiquement.
Est-ce que tu sais comment a été calculée cette racine carrée?
euhh, pas forcément!
Par analogie, s'il y avait une classe appelée CALCULATRICE, elle devrait disposer d'une méthode PUBLIQUE appelée CALCUL_RACINE_CARREE(..)
Elle est dite publique cette méthode parce tout le monde (tout le publique) peut l'appeler et l'utiliser. Cette méthode peut par exemple appeler une autre méthode interne qui calcule la racine carrée en utilisantr une suite mathématique assez comliquée. Cette méthode "interne" est dite PRIVEE. On ne peut pas l'appeler directement pour plusieurs raisons ... on en parlera plutard (à la demande)
a+
La racine carré du nombre entré est calculée automatiquement.
Est-ce que tu sais comment a été calculée cette racine carrée?
euhh, pas forcément!
Par analogie, s'il y avait une classe appelée CALCULATRICE, elle devrait disposer d'une méthode PUBLIQUE appelée CALCUL_RACINE_CARREE(..)
Elle est dite publique cette méthode parce tout le monde (tout le publique) peut l'appeler et l'utiliser. Cette méthode peut par exemple appeler une autre méthode interne qui calcule la racine carrée en utilisantr une suite mathématique assez comliquée. Cette méthode "interne" est dite PRIVEE. On ne peut pas l'appeler directement pour plusieurs raisons ... on en parlera plutard (à la demande)
a+
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Programmation objet
ProgVal a écrit:Je comprend toujours rien...
c'est le plus mauvais commentaire qu'on peut trouver après une explication aussi claire que celle là !
Rien rien ????
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Programmation objet
Je viens de remarquer:
Parce qu'il y a des trucs que l'on ne peut pas appeller?nabiL a écrit:tout le monde (tout le publique) peut l'appeler et l'utiliser.
Invité- Invité
Re: Programmation objet
Oui Exactement! C'est tout à fait logique d'ailleurs ...
Tu peux dire à un architecte construis moi un plan pour une maison.
Mais tu ne peux en aucun cas lui imposer de suivre des étapes bien précises, parce que c'est son métier, ce n'est pas le tien.
Donc, tout ce qui est "publique" est visible par tout le monde.
Tout ce qui est "privé" est "de la cuisine interne"
a+
Tu peux dire à un architecte construis moi un plan pour une maison.
Mais tu ne peux en aucun cas lui imposer de suivre des étapes bien précises, parce que c'est son métier, ce n'est pas le tien.
Donc, tout ce qui est "publique" est visible par tout le monde.
Tout ce qui est "privé" est "de la cuisine interne"
a+
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Programmation objet
Bon... Je vais pas chercher à comprendre, de toute façon, c'est comme ça.
Invité- Invité
Re: Programmation objet
ProgVal
Les méthodes publiques d'un objet sont "les procédures" et "fonction" que l'utilisateur (développeur) peut appeler.
Les méthodes privées sont utilisées généralement par les méthodes publiques. Elles sont locales à l'objet lui même ... et non visible en dehors de ce dernier.
Les méthodes publiques d'un objet sont "les procédures" et "fonction" que l'utilisateur (développeur) peut appeler.
Les méthodes privées sont utilisées généralement par les méthodes publiques. Elles sont locales à l'objet lui même ... et non visible en dehors de ce dernier.
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Programmation objet
Je crois que vous avez omis de bien expliquer ce qu'est un objet car l'idée que je trouve ici est un peu vague.
Le paradigme Objet est toute une vision du monde le monde est visualisé et manipulé comme étant un ensemble d'objets. Par exemple le paradigme objet défini une voiture comme étant un objet cet objet est lui aussi composé d'autres objets (un moteur, des roues, des essuies glasses,,,) pour conduire une voiture l'utilisateur n'a pas besoin de connaitre la composition de la voiture ce que manipule l'utilisateur est appelé interface qui peut être présentée par le tableau de bord et les pédales de gaz, l'embrayage et le frein et la boite de transmission de vitesses.
Un objet présente des méthodes qui permettent de modifier son état appelé les méthodes par exemple accélérer(), freiner(), changerVitesse() et il présente aussi des attributs/propriétés qui indiquent son état quantiteEssence, vitesseVehicule, niveauBatterie...
Certaines des méthodes et des attributs sont cachées ou encapsulés car l'utilisateur ne doit pas les manipuler directement mais elles doivent être manipulés à travers l'interface dite publique. C'est à dire l'interface qui permet à tout le monde de manipuler l'objet.
Les éléments non publiques sont des éléments privés qui changent d'un objet à l'autre par exemple le bloc moteur peut être à l'arrière du véhicule, les roues arrières sont les roues motrices, voiture double pont. La connaissance de ces détails n'influe pas sur la manipulation de l'objet car ils constituent la mécanique interne (ou cuisine interne) de l'objet.
Le paradigme Objet est toute une vision du monde le monde est visualisé et manipulé comme étant un ensemble d'objets. Par exemple le paradigme objet défini une voiture comme étant un objet cet objet est lui aussi composé d'autres objets (un moteur, des roues, des essuies glasses,,,) pour conduire une voiture l'utilisateur n'a pas besoin de connaitre la composition de la voiture ce que manipule l'utilisateur est appelé interface qui peut être présentée par le tableau de bord et les pédales de gaz, l'embrayage et le frein et la boite de transmission de vitesses.
Un objet présente des méthodes qui permettent de modifier son état appelé les méthodes par exemple accélérer(), freiner(), changerVitesse() et il présente aussi des attributs/propriétés qui indiquent son état quantiteEssence, vitesseVehicule, niveauBatterie...
Certaines des méthodes et des attributs sont cachées ou encapsulés car l'utilisateur ne doit pas les manipuler directement mais elles doivent être manipulés à travers l'interface dite publique. C'est à dire l'interface qui permet à tout le monde de manipuler l'objet.
Les éléments non publiques sont des éléments privés qui changent d'un objet à l'autre par exemple le bloc moteur peut être à l'arrière du véhicule, les roues arrières sont les roues motrices, voiture double pont. La connaissance de ces détails n'influe pas sur la manipulation de l'objet car ils constituent la mécanique interne (ou cuisine interne) de l'objet.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Programmation objet
wow! Pour comprendre la PO on n'a pas besoin de tout comprendre en même temps: interface, publique, privé ...
la meilleure façon, à mon avis, c'est de commencer là où s'est arrêtée la programmation procédurale! Sinon, ça va être parachutée!
la meilleure façon, à mon avis, c'est de commencer là où s'est arrêtée la programmation procédurale! Sinon, ça va être parachutée!
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Programmation objet
Etablir un lien entre la programmation procédurale et la programmation orientée objet n'est pas si évident dans la mesure ou la première technique décompose les problèmes en des sous problèmes que le programmeur est sensé résoudre indépendemment du problème principal la deuxième technique observe le problème comme étant un ensemble d'objets dont l'interaction permet de résoudre un problème. Donc à mon avis et celui des experts auquels je fais référence il est incorrect de penser procédural tout en implémentant objet.
Je m'excuse çà parait compliqué... Mais, il sera mieux de s'adresser à la littérature spécialisée.
Je m'excuse çà parait compliqué... Mais, il sera mieux de s'adresser à la littérature spécialisée.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Enregistrer un objet
» programmation du jeu
» programmation html
» Cours de programmation: .NET
» Programmation dynamique et C++
» programmation du jeu
» programmation html
» Cours de programmation: .NET
» Programmation dynamique et C++
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum