Je fais une présentation qui montre les différences entre la programmation structurelle et la programmation orientée objet et je veux illustrer pourquoi les gens ont besoin de POO avec un exemple où l'application des concepts de POO rendra le codage beaucoup plus facile afin que le public ait vraiment le sentiment qu'il a besoin de POO.
Des idées ??
java
c++
object-oriented
Ahmed
la source
la source
Réponses:
Vous voudrez peut-être aller voir ce petit blog vidéo . Le résultat est que la différence entre la programmation structurée et la programmation OO est une question de ce qu'ils retirent de la programmation, pas de ce qu'ils ajoutent. Les disciplines logicielles telles que la programmation structurée et la programmation orientée objet sont contraignantes et non activantes. Voici quelques définitions. Attention: vous n'allez pas les aimer.
La programmation structurée est une discipline imposée à goto (transfert direct de contrôle)
La programmation OO est une discipline imposée aux pointeurs vers les fonctions (transfert indirect de contrôle)
La programmation fonctionnelle est une discipline imposée lors de l'affectation.
Le premier n'est pas trop difficile à comprendre. Dijkstra a constaté qu'il était impossible de créer des preuves générales de correction lorsque goto était autorisé dans les algorithmes. Cependant, si les structures de contrôle étaient limitées à la séquence, la sélection et l'itération, des preuves de correction étaient possibles. Bien sûr, nous n'essayons même pas de prouver que les choses sont correctes de nos jours, mais nous aimons la simplicité et l'élégance d'une programmation structurée.
C'est un peu plus difficile à comprendre OO. Nous définissons souvent OO comme l'encapsulation, l'héritage et le polymorphisme. Ce qui est moins connu, c'est que ces trois attributs sont réalisables, et ont souvent été obtenus en C. En effet, C ++ a commencé comme juste un préprocesseur qui s'est compilé en C. Ce n'est pas vraiment difficile à encapsuler en C. Ni difficile à construire structures de données qui sont des sous-ensembles les uns des autres, simulant l'héritage. Le polymorphisme, cependant, est un peu plus difficile. Elle nécessite des pointeurs vers des fonctions qui, en C, sont difficiles à bien gérer. Ce que les langages comme C ++ nous ont donné, c'est une discipline imposée à ces pointeurs de fonctions. Le compilateur C ++ a construit les vtables pour nous et a initialisé les pointeurs en leur sein selon un formalisme strict. Donc, dans un sens très réel, OO est simplement une discipline imposéetransfert indirect de contrôle, c'est-à-dire pointeurs vers des fonctions.
La programmation structurée consiste à savoir comment ne pas utiliser goto. OO consiste à ne pas utiliser de pointeurs vers des fonctions. Et la programmation fonctionnelle est aussi une question de ne pas faire. En programmation fonctionnelle, nous n'affectons pas de variables, sauf dans les cas les plus rigoureusement contrôlés.
Donc, au final, toutes ces «technologies» de programmation sont en fait des disciplines contraignantes plutôt que des technologies habilitantes. Ils nous disent ce pas faire plus que ce qu'ils nous disent ce à faire. Et cela signifie que le développement de logiciels n'a pas augmenté au cours des 40 dernières années. Il a plutôt diminué. Il est de plus en plus contraint car nous avons appris toutes les choses que nous ne devrions pas faire.
Apprendre ce qu'il ne faut pas faire est bien; mais voici la question troublante: quelles nouvelles choses avons-nous appris à faire?
la source
Il existe 3 méthodes de base pour programmer un ordinateur:
goto
s, comme dans les anciens interprètes BASIC, ou en langage assembleur. Peu de gens programment de cette façon.À mon avis, la programmation orientée objet est quelque chose de différent. Il s'agit de savoir comment organiser votre programme à plus grande échelle. Il ne remplace ni ne rend obsolète aucun des 3 paradigmes que j'ai mentionnés ci-dessus - dans un corps de méthode, vous devez toujours choisir l'un des 3 paradigmes de la liste pour écrire.
la source
Tout dépend de la façon dont vous prévoyez le changement.
Les deux concepts se prêtent à la réutilisabilité, mais la POO ouvre la porte à des changements plus faciles. La POO a toute la réutilisabilité de la programmation structurelle, mais vous pouvez également l'utiliser pour créer de nouvelles fonctionnalités avec moins d'effort.
On pourrait dire que la POO hérite de toutes les fonctionnalités de la programmation structurelle avec les fonctionnalités supplémentaires de l'héritage! :-RÉ
la source
Les concepts sont orthogonaux. La programmation structurée consiste à structurer le code dans les procédures / fonctions / méthodes. Il est parfaitement possible (et souhaitable) de suivre les principes de la programmation structurée au sein des méthodes de classe lors de l'exécution de la POO.
la source
C'est une sorte de formulation subjective - la programmation structurée et la POO sont des styles de résolution de problèmes, et l'un n'est pas toujours meilleur que l'autre. L'écriture d'une bibliothèque de méthodes numériques a beaucoup de sens si elle est effectuée dans un style structuré, où vous effectuez des transformations sur les données d'entrée. Un simple agent piloté par une machine à états, cependant, peut être facilement exprimé comme une classe autonome en Java ou C ++. La POO peut être un moyen naturel d'exprimer des conteneurs de stockage pour des structures de données.
Parler de la dissimulation et de la modularité des informations est un bon moyen de motiver naturellement OOP en tant que style.
Steve Yegge a rédigé une version intéressante de cette question - à certains égards, l'une des meilleures descriptions des différences d'approche entre les deux styles.
la source
La POO est plus facile à comprendre lorsque vous créez un modèle commercial. Lorsque vous pensez à des éléments d'application, vous utilisez certains OBJETS et RELATIONS entre eux, par exemple le livre a un (des) auteur (s), un titre, un ISBN. Le livre est à laisser à la bibliothèque et pourrait être emprunté par l'étudiant. La programmation structurelle impose la réflexion sur des processus spécifiques, des implémentations qui ne sont pas en abstraction.
La POO est conçue pour faciliter les changements. La modification du programme structurel est possible mais doit être décrite par code. Le changement dans le programme OO pourrait être décrit par un changement de modèle abstrait.
la source
Portée variable:
Je pense qu'un principe des langages pour assurer une bonne programmation est de restreindre la portée des variables. Dans les langages structurés comme C, la portée est principalement de deux types -
Nous savons tous que la portée mondiale est nuisible. Mais parfois, les étendues locales ne suffisent pas pour exécuter le programme. Éviter les étendues globales tend alors à une utilisation plus large des pointeurs, ce qui permet d'utiliser des variables hors de la portée. Mais les pointeurs sont difficiles à comprendre et à utiliser.
Les langages POO comme C ++ ajoutent un nouveau type de portée - portée de classe / objet par encapsulation. Cette portée est encore renforcée par les variations privées / publiques. Et cela résout de nombreux problèmes de portée variable. Les étendues sont plus définies dans la POO. Et les pointeurs sont moins nécessaires.
C'est l'une des grandes fonctionnalités de la POO.
la source