Principaux concepts de la programmation orientée objet
J'ai été une fois demandé dans une interview: "Quels sont les 3 principaux concepts de la programmation orientée objet?'.
J'ai répondu en disant que, à mon avis, il y avait 4 qui sont comme suit:
- Héritage
- Encapsulation
- Abstraction
- Polymorphisme
Étais-je corriger?
- Comment ont-ils répondre à votre réponse?
- s'il vous Plaît voir aussi: "Jargon sans comparaison OOP vs Procédurale": stackoverflow.com/questions/1530868
- Abstraction == Héritage
Vous devez vous connecter pour publier un commentaire.
Il y a 3 exigences pour un langage orienté-objet:
REMARQUE: Abstraction est beaucoup plus général, concept d'encapsulation et al sont sortes de l'abstraction, tout comme une sous-routine est une sorte d'abstraction. Voir L'Abstraction
Je dirais que l'abstraction n'est pas uniquement un concept de la programmation orientée objet, que vous pouvez résumé dans une large mesure, dans de nombreux non-OOP langues.
Les quatre piliers sont correctement votre état
Encapsulation traite contenant des données, rien de plus, rien de moins.
Abstraction traite de l'abstraction de données, c'est à dire toutes ces données réellement pertinentes. Pensez à une banque qui contient des informations sur le nom, l'âge, l'adresse, la couleur des yeux, le favori de la cravate, etc. Sont de la couleur des yeux et favori de la cravate vraiment pertinent pour les banques des exigences? Pas de. C'est l'abstraction.
Héritage traite de la généralisation. Des informations qui peuvent s'appliquer à plus d'une chose. Si quelque chose hérite de quelque chose, alors il peut être dit d'être plus spécifique de cette chose. Par exemple, un Animal. Un Chien est un type d'Animal, de sorte que le Chien hérite de l'Animal. Le Jack Russell est un type de Chien, Jack Russell hérite de Chien.
Polymorphisme s'intéresse à des choses ayant de multiples formes, (poly - morph).
Deux types de programmation,
Vous référer à quelque chose comme il est de type général et donc le compilateur ne sait pas ce qui se lient au moment de la compilation. Pensez à la redéfinition de méthode.
La Liaison Anticipée
int add(int a, int b) vs double add(double a, double b)
Ce sont essentiellement les principes de base de l'Orientation de l'Objet. Il y a beaucoup de chevauchement entre ces derniers et donc, il est très important de parvenir à une compréhension claire de ce que chacun de ces moyenne.
Le problème avec la POO, c'est que personne n'a pris la peine de donner un bon, concis, convenu d'une définition. En particulier, je tiens à souligner que tous les aspects que vous avez cités peuvent ainsi être mis en action sans l'utilisation de l'orientation de l'objet!
Deux systèmes de type qui ne ce sont le Haskell type de système, qui, par consense, n'est généralement pas considéré être orientée objet, et les modèles C++ avec le modèle de sous-classement. Toutefois, il pourrait peut-être faire valoir que le modèle sous-classement émule de la programmation orientée objet.
Depuis le modèle de sous-classement n'est pas connue mécanisme, permettez-moi de donner un exemple de la SeqAn bibliothèque où il a été inventé.
Ici,
String<Char>
etString<Dna, Packed<> >
sont hérité de la “résumé classe”String<>
. Ils encapsuler le concept d'une chaîne de caractères, en utilisant des méthodes complètement différentes. Ils partagent la polymorpheslength
méthode, mise en œuvre de manière différente pour les deux types de béton.Sont les Quatre Cavaliers que je les connais. Ils ont peut-être tort forfaitaire de l'Héritage et le Polymorphisme de l'ensemble.
Oui, ceux qui sont la norme à quatre.
Certaines personnes combiner l'abstraction et d'encapsulation. Je ne sais pas pourquoi... ils ne sont pas complètement orthogonale, mais peut-être qu'il y a assez de chevauchement? Il y a certainement de chevauchement entre l'héritage et le polymorphisme, mais il serait difficile de les combiner, dans mon esprit.
La plupart des gens considèrent que correct, je suppose que si ils demandaient trois il serait l'Héritage, l'Encapsulation et le Polymorphisme.
Personnellement, je trouve que ces trois concepts sont la vraie "viande" si vous derrière la définition de la programmation orientée objet. Et la plupart des gens prennent l'abstraction pour acquis et uml avec les autres, que vraiment il pourrait être considéré comme faisant partie de l'un des trois autres.
Quand je parle de la POO mais je le mentionne toujours l'4.
Probablement la dernière de trois est ce qu'ils étaient à la recherche pour - l'héritage pourrait être considéré comme plus d'un mécanisme pour aider à atteindre les autres, qui sont plus élevés au niveau des objectifs.
Il n'est pas vraiment une réponse correcte de toute façon, surtout si elle est limitée à 'top 3'.
C'est correct.
Si vous avez eu à fournir un seul, cependant, l'Abstraction, il faut, pour, d'une manière ou l'autre, le reste trois est simplement Abstraction en action.
3 principaux concepts de la programmation orientée objet:
Une bonne réponse à la question est: "s'il vous Plaît préciser ce que vous dire par la Programmation Orientée Objet." Oups, ça serait à raconter, parce que la vraie question est: "Quand je dis que la programmation orientée objet, ce que je veux dire?"
Il n'y a pas de bonne réponse.
Cet article] [[1] fait référence aux trois piliers du bon code. Je l'ai trouvé un excellent article à poser en principe que l'encapsulation est le "premier principe" de la conception orientée objet.
"Première" principes fondamentaux, les principes sous-jacents à partir de laquelle tout le reste springs. L'auteur utilise l'exemple de la Règle d'Or. Il est difficile d'enseigner aux enfants de toutes les subtilités de comportement civilisé, mais si vous pouvez les amener à comprendre et, surtout, de la pratique) de la Règle d'Or de traiter les autres comme vous aimeriez être traité, puis ils sont plus susceptibles de "prendre" toutes les juridique et les normes morales nous sommes tenus à sur une base quotidienne.
Donc, il s'ensuit que si un développeur comprend encapsulation comme un "Premier Principe" de développement orienté objet, tous les autres principes suivront en temps voulu.
Je ne suis pas l'auteur du contenu de la justice, mais je n'hésiterais pas à encourager les gens à le lire.
Pour une raison que je ne suis pas en montrant le lien hypertexte comme à venir à travers, donc voici l'URL: http://www.netobjectives.com/files/Encapsulation_First_Principle_Object_Oriented_Design.pdf
Il aurait pu être un truc de question pour l'interview, mais en Informatique des classes de ces jours, ils enseignent les 4 Piliers de la Programmation Orientée Objet.
Il est généralement admis que ce sont les principaux principes cependant, ils avaient très peu à voir avec pourquoi OO a été créé.
L'un des principes directeurs a été la manipulation directe de la métaphore. C'est la création d'un objet dans le programme, qui a représenté un objet de la part des utilisateurs du modèle mental. La plupart de la motivation pour la création OO a été fondée en psychologie pas math/CS comme c'est souvent croyons être le cas ces jours-ci.
Si doubtfull de ce prendre un coup d'oeil à certains des travaux par Trygve Renskauge. Le père de la MVC et la DCI ou James Coplien accomplir, auteur et conférencier.
Donc je dirais que vous avez probablement donné une réponse proche de ce que l'on attend de savoir si elle est correcte dépend de l'endroit où vous vous tenez.