Je serai impliqué dans un projet Java sur le site auquel je participe actuellement. Cependant, malgré ma 15e année en tant qu'ingénieur, je n'ai traité que des technologies autour de .NET, c'est donc mon premier projet Java. Par conséquent, afin d'apprendre les connaissances de base de Java sur une base zéro, j'ai décidé de commencer à apprendre dans le but d'acquérir Java SE 11 Silver / Gold.
Pour commencer à apprendre, j'ai d'abord acheté Thorough Strategy Java SE 11 Silver Problem Collection (appelé "Kuromoto".
Étant donné que l'explication de la réponse est écrite très soigneusement, j'ai senti que c'était le meilleur matériel pédagogique non seulement pour la préparation aux examens, mais aussi pour l'apprentissage des connaissances de base, mais dans le livre, j'ai dit "Référence (pas directement liée à la préparation aux examens) Cependant, j'ai fait attention à la partie qui dit "C'est une information utile à savoir)".
Même dans la section "référence", il y a des descriptions qui sont très importantes, surtout si vous allez creuser plus profondément dans "orienté objet" à l'avenir, je vais donc les résumer dans cet article.
Ceci provient de l'explication du problème lié à l'objet String dans le "Chapitre 2 Types de données Java de base et opérations sur les chaînes". Un exemple d'implémentation d'un "objet immuable" est fourni pour empêcher une modification incorrecte des données. Ce sont des connaissances essentielles pour implémenter "Value Object" dans DDD (Domain Driven Design).
De la réponse à la question sur le nombre d'arguments définis dans la méthode appelante et la déclaration de méthode au "Chapitre 6 Instances et méthodes".
Informations de référence telles que décrites.
Un exemple concret que j'ai vu récemment Introduction à la conception basée sur le domaine de bas en haut! Principes de base de la conception basée sur le domaine Je pense que la stratégie "objet de commande", qui définit l'objet "~ Commande" qui a un argument dans le champ dans l'exemple de code de, est un exemple très facile à comprendre.
https://github.com/nrslib/itddd/blob/master/Layered/SnsApplication/Users/Get/UserGetCommand.cs
https://github.com/nrslib/itddd/blob/master/Layered/WebApplication/Controllers/UserController.cs#L36
Dans cet exemple de code, la valeur de retour est également résumée en tant qu'objet «~ Result», de sorte que la conception est simple et résistante aux modifications, ce qui est également utile.
De l'explication du problème concernant le concept d'encapsulation dans "Chapitre 6 Instances et méthodes". Le problème ici est: "Le code est présenté et je souhaite lui appliquer une encapsulation. Choisissez le meilleur code parmi les suivants." Par conséquent, la connaissance de «l'encapsulation» est indispensable pour la préparation aux examens, mais elle semble être la même connaissance pour l'orientation objet. L'encapsulation est expliquée comme suit.
L'encapsulation est une «classe pour quoi» en combinant les données liées et le traitement qui nécessite ces données en une seule lors de la division du logiciel, et en excluant de la classe celles qui ne sont pas pertinentes et non pertinentes. Il est fait pour clarifier le but de la classe "Est-ce que c'est?", Et vise un état où il n'y a pas de données en double ou de traitement dans d'autres classes.
L'objet de valeur mentionné ci-dessus n'est qu'une des méthodes pour réaliser «l'encapsulation». Ensuite, pour implémenter l'objet "encapsulé", "masquage de données", en Java, les champs de l'objet sont qualifiés (masqués) par private, et la méthode utilisant la valeur du champ est rendue publique (publique). , Etc. sont également décrits.
De l'explication du problème lié à l'héritage de classe dans "Chapitre 7 Héritage de classe, interface, classe abstraite". L'héritage de classe est une connaissance essentielle des langages orientés objet
Récemment, il a été souligné que l'utilisation de l'héritage est plus susceptible de réduire la maintenabilité.
Il est décrit comme. Le post suivant explique de manière facile à comprendre ce qui se passe si vous essayez d'hériter facilement.
Votre héritage n'est pas utilisé correctement
Le système que vous maintenez a-t-il également une "classe dieu / base" qui implémente de nombreux processus courants tels que "AbstractController" et "AbstractService"?
La méthode d'implémentation peut être plus difficile que l'héritage, mais si vous souhaitez utiliser l'héritage, il peut être la meilleure pratique de la conception moderne orientée objet d'envisager un «transfert» ou une «synthèse».
[Ce que j'ai appris après avoir combattu l'orientation objet pendant 10 ans] (https://qiita.com/tutinoco/items/6952b01e5fc38914ec4e)
De l'explication du problème de la substitution de méthode dans "Chapitre 7 Héritage de classe, interface, classe abstraite". Pour référence, le principe selon lequel «les sous-classes doivent être remplaçables par des superclasses» et le «principe de substitution de Liskov (LSV)» sont introduits. Il existe de nombreux autres principes dans l'orientation objet, et il est recommandé de bien étudier ces principes pour une meilleure conception. Des exemples typiques de ces principes sont les cinq principes, le soi-disant «principe SOLID», y compris le «principe de remplacement Riskov».
Le post suivant explique le principe SOLID d'une manière facile à comprendre avec un exemple de code.
Écrivez simplement sur le principe SOLID
Ceci provient de l'explication du problème concernant la méthode de déclaration de base des expressions lambda dans "Chapitre 8 Interface fonctionnelle, Expressions Lambda". Le code lui-même de cette question est une réalisation du modèle de stratégie à l'aide d'une expression lambda, à partir de laquelle le modèle de conception du GoF est introduit et le modèle de stratégie est expliqué.
En parlant de Java et des modèles de conception, c'est déjà une publication vieille de 15 ans. Introduction aux modèles de conception appris en langage Java Je me suis souvenu. À ce moment-là, je n'avais pas affaire à Java, mais les exemples d'implémentation de modèles de conception étaient publiés avec des exemples de code, ce qui était une excellente expérience d'apprentissage. Des critiques bien notées ont été publiées sur les critiques d'Amazon au cours des 1 à 2 dernières années, il semble donc qu'elles soient toujours considérées comme des chefs-d'œuvre.
Comme mentionné ci-dessus, je l'ai résumé sous une forme qui sera un supplément pour en apprendre plus sur la conception orientée objet à partir des informations de «référence» de «Thorough Strategy Java SE 11 Silver Problem Collection». Nous espérons que les débutants en Java et en programmation (ou même les vétérans?) Qui ont lu ce recueil de questions pourront venir à cet article et en savoir plus sur l'orientation objet.
Recommended Posts