Question

Quelle est cette caractéristique selon vous qui a fait la programmation orientée objet tant de succès?

  1. Message Passing
  2. L'héritage
  3. Polymorphisme
  4. Encapsulation

Ou une autre caractéristique que vous pouvez vous présenter.

Je voudrais aussi savoir que ce qui est le lien entre Résumé Type de données et programmation orientée objet?

Était-ce utile?

La solution

Je vous suggère que la caractéristique la plus importante de la programmation orientée objet est celle de la gestion de la complexité .

Le cerveau humain ne peut contenir tant de concepts à un moment donné - la limite souvent cité de se rappeler 7 +/- 2 articles indépendants vient à l'esprit

.

Quand je travaille sur un système de 600kloc au travail, je ne peux pas tenir le tout dans ma tête à la fois. Si je devais le faire, je serais limité à travailler sur beaucoup systèmes plus petits.

Heureusement, je n'ai pas. Les différents modèles de conception et d'autres structures que nous avons utilisé ce moyen de projets que je n'ai pas traiter l'ensemble du système à la fois - je peux ramasser des morceaux individuels et le travail sur eux, sachant qu'ils entrent dans l'application plus large de manière bien définies.

Tous les importants concepts OO offrent des moyens de gérer la complexité.

Encapsulation -. Laissez-moi faire face à une API externe qui me fournit divers services, sans se soucier comment ces services sont mis en œuvre

Abstraction -. Laissez-moi se concentrer sur les caractéristiques essentielles et ignorer ce qui est pas pertinent

Composition - laissez-moi réutiliser des composants qui ont déjà été construits dans de nouvelles combinaisons

Polymorphisme -. Laissez-moi vous demande un service sans se soucier de la façon dont différents objets pourrait lui fournir de différentes manières

L'héritage -. Laissez-moi réutiliser une interface ou une mise en œuvre, ne fournissant que les pièces qui sont différentes de ce qui précède

Un seul principe Responsabilité - permet de garder le but pour chaque objet clair et concis, il est donc facile de raisonner sur

Liskov Remplacement Prinicple - Ne nous laissons pas les pièges laïcs pour l'autre en introduisant des dépendances impaires

Ouvert / Fermé Principe - Permettons l'extension et la modification d'une manière qui ne nous obligent à un risque de rupture du code existant

injection de dépendances -. La composition de prendre let au niveau suivant et assembler les composants ensemble beaucoup plus tard

Interface développement orienté -. L'abstraction de prendre let au niveau suivant et ne dépendent que de l'abstraction, jamais sur une mise en œuvre concrète

Autres conseils

interfaces utilisateur graphique. Dans la fin des années, au début des années nonante, quand Mac, Amigas, Atari ST, Windows et GEM ont commencé à remplacer les interfaces utilisateur à base de caractères, il est devenu évident que des langages comme C ne sont pas bien adapté pour écrire des programmes GUI. Alors que le traitement de données traditionnel est considéré comme un « données d'entrée -> traitement -> données de sortie ». Schéma, ce qui pourrait être fait dans un langage procédural aussi bien, produits de l'Organisation fonctionnalités vient à portée de main pour gérer la complexité inhérente à une interface graphique

Le Hiding Données fournies par Encapsulation.

Une caractéristique qui n'a pas été encore mentionné par l'une des autres réponses: modélisation domaine . Parce que les gens ont tendance à penser à faire les choses avec ou à des objets et sur les objets ayant des propriétés intrinsèques, il est très facile de modéliser un problème ou flux de travail en utilisant un logiciel orienté objet. Pour l'essentiel, il nous permet d'utiliser notre capacité actuelle de traiter les noms, verbes et adjectifs dans le code.

Je pense que l'héritage est le point le plus important de la POO.

[du développement du jeu] Vous pouvez créer quelque chose comme une classe Drawable, avec des méthodes de rendu et les attributs, et de créer une Spaceship et la planète classe qui hérite de Drawable. Prenez tous les objets de ceux [et d'autres enfants Sprite], jeter dans un drawableObjArray et il suffit d'appeler la méthode de tirage au sort pour chaque objet. Vous avez juste besoin de savoir que c'est un Drawable.

Abstraction

Fournir les services nécessaires cacher les choses inutiles. Voir mon explication ici- Quelle est l'abstraction?

Il est un peu de succès, car il encourage l'utilisation de l'organisation de l'esprit humain des choses en objets. Les gens sont généralement bonnes de voir les relations des choses - des choses comme les différences, les similitudes et les comportements. OO encourage le développement de logiciels à la conceptualisation humaine mimétique du monde.

Faire du développement logiciel similaire à la façon dont nous voyons le monde, il est plus facile pour nos esprits pour gérer la complexité.

" ADT vs objets " Il a été demandé à plusieurs reprises ici. La réponse d'une ligne est « sont l'inverse ADTs et des objets les uns des autres - ce que l'on fait abstraction d'une manière ordonnée l'autre ne peut pas,. Chacun permet une flexibilité de différentes manières »

Pour une réponse plus longue, voir William Cook, sur la compréhension d'abstraction de données, revisité . En bref, les objets vous permettent d'utiliser facilement plusieurs implémentations / représentations de certaines données (quelque chose qui ressemble à une liste pourrait être un tableau ou un arbre auto-équilibrage, ou ...) mais font qu'il est difficile d'ajouter de nouvelles opérations (parce que vous doivent ajouter cette nouvelle opération à chacune de vos représentations), tout en ADTs, il est facile d'ajouter de nouvelles opérations sur votre type de données, mais assurez-vous qu'il est difficile d'avoir plusieurs implémentations.

Edit: je avais dit que le passage de messages est ce qui a fait OO succès. Basé sur le commentaire de Jonas, ce qui ne va pas, parce que la plupart des langues que les gens considèrent OO ne pas utiliser le passage de messages. Comme il est pas juste, je Cueilli à partir de ma réponse.

Mes trois caractéristiques. Composition d'objets - permettant des objets de collaboration. Polymorphisme - prend en charge les comportements dynamiques lors de l'exécution. Héritage -. En réutilisant le code et la modification du comportement au moyen de méthodes remplaçant

ADT - vous pouvez avoir que même dans des langues non orientées objet comme Pascal. Une pile ou une file d'attente sont des exemples de ADT.

en simples mots POO est la clé pour la réutilisabilité et l'encapsulation que les résultats dans la production de grands cadres qui rend la vie plus facile pour les programmeurs à cette époque comme peut simplement appeler de l'API et faire ce jour veulent le plus souvent.

ur question porte sur les 4 caractéristiques de la POO afin que vous puissiez dire

  1. L'héritage et 4. Encapsulation sont les caractéristiques les plus importantes et deux autres sont très nécessaires pour atteindre les deux premiers

1. Message Passing et 3. Polymorphisme soutiennent réellement 2. Héritage et 4. Encapsulation.

  1. L'héritage et 4. Encapsulation sont la clé du succès pour POO

A mon avis, les trois dernières caractéristiques sont les plus importants une fois que l'utilisation impacté large diffusion de la POO:

2. Inheritance
3. Polymorphism
4. Encapsulation

Modifier Un autre point serait IDE et environnements de développement d'interface graphique comme Visual Studio et Eclipse. Comme ils embrassent les langues POO, donc de plus en plus de modèles de tendance vers POO.

Et bien sûr Principes SOLIDES sont les fois que rendre les produits logiciels ROCK livrable solide:)

Licencié sous: CC-BY-SA avec attribution
scroll top