[JAVA] Résumé des résultats de la recherche sur l'orientation des objets [mis à jour de temps à autre]

Résumé des résultats de la recherche sur l'orientation des objets [mis à jour de temps à autre]

Nous ajouterons et organiserons au besoin.

Qu'est-ce que l'orientation objet?

Il y a des choses comme le concept lui-même et aucune explication claire.

** "Style de programmation qui extrait les pièces fréquemment modifiées en classes, en se concentrant sur les parties qui ne changent pas" **

Bref, je comprends que c'est une façon de penser à programmer pour qu'il soit facile de changer les spécifications et d'étendre les fonctions par la suite.

Qu'est-ce que l'héritage est-a?

** L'essence de l'héritage est une interface qui rassemble des concepts abstraits **

Qu'est-ce que le polymorphisme?

** Programmation pour une interface (résumé) **

Qu'est-ce que l'encapsulation?

** Éliminez le gaspillage, affinez et faites quelque chose de facile à comprendre **

--La couche est différente de l'héritage et du polymorphisme

Comment nommer

Pour le moment, je ne protégerai que les éléments suivants.

--Affaire de chameau -La classe est le nez ou la nomenclature

5 principes (principe SOLID)

Principe de responsabilité unique

** Il ne doit pas y avoir plus d'une raison pour changer de classe (rôle = responsabilité = raison de changer) **

Principe ouvert-fermé

** ・ S'il y a un changement de spécification, vous pouvez gérer le changement en ajoutant un comportement. -Le comportement d'ajout n'affecte pas le code existant **

Principe de substitution de Liskov

Ce que l'on souhaite, c'est la propriété de substitution suivante:

Il existe un objet de type T o2 pour chaque objet de type S o1 Il existe un programme p défini en utilisant o2 À ce stade, même si o1 est utilisé au lieu de ** o2, le comportement de p ne change pas **

Principe de séparation des interfaces

** • Ne forcez pas le client à dépendre de méthodes que le client n'utilise pas **

-Si vous dépendez d'une méthode que vous n'utilisez pas, cela peut affecter les clients qui ne devraient pas être liés lorsque cette méthode est modifiée.

-Faire en sorte que chaque client s'appuie ** uniquement sur les méthodes qu'il utilise réellement **

** - Regrouper les interfaces liées et préparer une interface spécialisée pour chaque client ** Cela permet au client de rompre les dépendances sur les méthodes qu'il n'utilise pas.

Principe d'inversion de dépendance

-Les modules supérieurs ne doivent pas dépendre des modules inférieurs, ** Les deux modules doivent dépendre de "abstract" **

· "Abstract" ne doit pas dépendre des détails de l'implémentation, ** Les détails de l'implémentation doivent dépendre de "Abstract" **

-Si le module supérieur suit l'interface déclarée par le module inférieur, on peut dire que la propriété de l'interface appartient au module inférieur.

** • Faites en sorte que les relations au sein du programme se terminent par une classe ou une interface abstraite, indépendante de la classe spécifique ** Aucune classe dérivée d'une classe concrète N'écrasez pas les méthodes implémentées dans la classe de base

Méfiez-vous de la surabstraction

** ・ Il est tout aussi important de ne pas faire de "abstrait" prématuré et d'utiliser "abstrait" **

Il y avait une explication. Je voudrais identifier des abstractions significatives et efficaces.

Recommended Posts

Résumé des résultats de la recherche sur l'orientation des objets [mis à jour de temps à autre]
[Eclipse] Résumé des paramètres d'environnement * Mis à jour de temps en temps
[Mis à jour de temps en temps] Ruby on Rails Méthode pratique
Memorandum Poem (mis à jour de temps en temps)
Résumé des langues à apprendre à partir de maintenant
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
[Inverser] Spring Security (mis à jour de temps en temps)
Collection de sites utiles SpringBoot (mise à jour de temps en temps)
Résumé de la mousse lors de la mise à jour de JMockit 1.4 vers 1.30
[Mis à jour de temps à autre] Liens endettés
Appuyez sur tous les "Guides" de Spring (mis à jour de temps en temps)
Commande Git sur laquelle les nouveaux ingénieurs devraient se pencher [Mis à jour de temps en temps]
Introduction à la programmation pour les étudiants du collégial (mise à jour de temps à autre)
[Mémo personnel] Grammaire Java fréquemment utilisée mise à jour de temps en temps
Paramètres initiaux d'Intellij IDEA personnellement recommandés (mis à jour de temps en temps)
L'illusion de l'orientation objet
J'ai essayé d'approfondir ma compréhension de l'orientation des objets de n%
Remarques sur la migration de CircleCI 1.0 vers 2.0
De l'introduction à l'utilisation de byebug
[Swift] Résumé de la suppression des éléments d'un tableau (mémo personnel)
[Java] Flux de l'introduction de STS à la confirmation de la page dynamique sur l'hôte local (1/3)
Résumé des moyens lorsque vous souhaitez communiquer avec HTTP sur Android