Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Ceci est un post traduit par IA.

제이온

[Objet] Chapitre 1. Objets, conception

Choisir la langue

  • Français
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

Texte résumé par l'IA durumis

  • Dans le développement logiciel, la pratique est plus importante que la théorie, et un programme simple permet de comprendre l'importance de la conception orientée objet.
  • Prenant l'exemple d'une application de vente de billets, il explique comment écrire un code flexible aux changements en réduisant les dépendances et le couplage entre les objets, et compare les différences entre la programmation procédurale et la programmation orientée objet.
  • La conception orientée objet permet de créer un code modifiable, et les objets sont des entités autonomes qui sont responsables de leurs propres données et dont les dépendances doivent être gérées correctement entre les objets qui collaborent.

Introduction

Robert L. Glass a soutenu que la pratique précède la théorie. En particulier, le développement logiciel est l'un des domaines où la pratique est en avance sur la théorie, et les développeurs apprennent le plus en se salissant les mains avec du code concret. Par conséquent, nous allons mettre la théorie et les concepts de côté pour le moment et examiner un simple programme.


Implémentation d'une application de billetterie

  • Nous prévoyons d'organiser un petit événement pour promouvoir un petit théâtre.
    • Contenu de l'événement : envoyer des invitations gratuites à un spectacle aux spectateurs sélectionnés par tirage au sort.
  • Nous devons séparer les spectateurs qui ont gagné l'événement de ceux qui ne l'ont pas fait.
    • Spectateurs gagnants de l'événement : échangez les invitations contre des billets.
    • Spectateurs perdants de l'événement : achetez des billets avec de l'argent.



Quel est le problème ?

Robert Martin explique les trois fonctionnalités qu'un module logiciel (un élément quelconque d'un programme, quelle que soit sa taille, comme une classe, un package ou une bibliothèque) doit avoir.


  • Fonctionne correctement pendant l'exécution.
  • Existe pour être modifié.
    • La modification doit être possible avec un minimum de travail.
  • Communique avec la personne qui lit le code.
    • Les développeurs doivent pouvoir le lire et le comprendre facilement.


L'application de billetterie précédente satisfait la première contrainte, à savoir qu'elle s'exécute correctement, mais elle ne satisfait pas les objectifs de modifiabilité et de communication.


Code qui sort de ses gonds

Examinons pourquoi l'objectif de communication n'est pas atteint.


  • Ce que fait la méthode enter() de la classe Theater
    • Le théâtre examine le sac du spectateur pour voir s'il contient une invitation.
    • Si le sac contient une invitation, il demande au vendeur de déplacer le billet qui se trouve à la billetterie dans le sac du spectateur.
    • Si le sac ne contient pas d'invitation, il retire du sac du spectateur le montant en espèces correspondant au prix du billet, achète le billet et le place dans le sac.
  • Du point de vue du spectateur, il doit regarder le théâtre, une tierce partie, fouiller dans son sac, prendre de l'argent et y mettre un billet.
  • Du point de vue du vendeur, il doit regarder le théâtre, une tierce partie, manipuler les billets et l'argent à la billetterie sans autorisation.
  • Un code compréhensible est un code dont le fonctionnement ne diffère pas trop de nos attentes, et le théâtre ci-dessus ne répond pas à nos attentes.
    • Le spectateur doit retirer l'argent de son sac et le payer au vendeur pour obtenir un billet.
    • Le vendeur doit retirer le billet de la billetterie et le remettre au spectateur, puis recevoir l'argent et le placer à la billetterie.
  • En outre, pour comprendre la méthode enter(), il faut se rappeler tous les détails.
    • Audience a un Bag.
    • Le Bag contient de l'argent et des billets.
    • TiketSellet vend des billets au TicketOffice, et le TicketOffice contient de l'argent et des billets.


Code vulnérable aux changements

La méthode enter() suppose deux choses.

  • Le spectateur porte toujours un sac pour ranger l'argent et les invitations.
  • Le vendeur vend des billets uniquement à la billetterie.


Que se passerait-il alors dans les situations suivantes ?

  • Le spectateur pourrait ne pas avoir de sac.
  • Le spectateur pourrait utiliser une carte de crédit au lieu d'espèces.
  • Le vendeur pourrait vendre des billets en dehors de la billetterie.


Par exemple, pour satisfaire la première exigence, il faut supprimer l'objet Bag de Audience et modifier la méthode enter() de la classe Theater. En effet, la classe Theater dépend trop du fait que le spectateur porte un sac et que le vendeur vend des billets uniquement à la billetterie. Si l'un de ces détails est modifié, il faut modifier à la fois cette classe et les classes dépendantes (par exemple, Theater).


Il s'agit d'un problème lié à la dépendance entre les objets, et la dépendance implique un impact sur les changements. Toutefois, la conception orientée objet vise à construire une communauté d'objets qui collaborent les uns avec les autres, de sorte qu'il ne faut pas supprimer les dépendances de manière aveugle, mais il fautmaintenir un minimum de dépendancesnécessaires pour implémenter les fonctionnalités de l'application et supprimer les dépendances inutiles.


Le cas où les dépendances entre les objets sont trop importantes est appeléun niveau de couplage élevé, et plus le niveau de couplage entre deux objets est élevé, plus la probabilité qu'ils soient modifiés ensemble est élevée. Par conséquent, l'objectif de la conception est de réduire le niveau de couplage entre les objets afin de créer une conception facile à modifier.


Améliorer la conception

Le théâtre n'a pas besoin de savoir que le spectateur a un sac et que le vendeur vend des billets à la billetterie. Le théâtre veut simplement que le spectateur entre dans le théâtre. Par conséquent, il faut faire en sorte que le spectateur traite lui-même l'argent et l'invitation dans son sac, et que le vendeur traite lui-même les billets et les frais de vente à la billetterie.


Augmenter l'autonomie

Un objet qui ne réalise que des tâches étroitement liées et qui délègue les tâches non liées à d'autres objets est dit avoir un niveau de cohésion élevé. La création d'objets autonomes qui gèrent eux-mêmes leurs données permet de réduire le niveau de couplage et d'augmenter le niveau de cohésion.


Orienté processus et orienté objet

  • Orienté processus
    • La méthode enter() de Theater est un processus, et Audience, TicketSeller, Bag et TicketOffice sont des données.
    • La méthode de placement des processus et des données dans des modules séparés est appelée programmation orientée processus.
    • Il y a beaucoup de code qui va à l'encontre de notre intuition. (par exemple, le spectateur gère lui-même l'argent et l'invitation).
    • Il est difficile de limiter l'impact des modifications des données.
    • La responsabilité est gérée de manière centralisée. (Theater gère tout).
  • Orienté objet
    • La méthode de placement des données et des processus dans le même module est appelée programmation orientée objet.
    • Il est possible d'écrire du code qui correspond à notre intuition.
    • L'impact des modifications des données peut être efficacement réduit grâce à l'encapsulation.
    • Chaque objet est responsable de lui-même.


Il peut être encore amélioré.

  • La classe Bag de la classe Audience est toujours un objet passif qui est entraîné par la classe Audience, il faut donc faire de la classe Bag un objet autonome.
  • Le TicketOffice de la classe TicketSeller est également géré à volonté par TicketSeller. Il faut faire de TicketOffice un objet autonome.
    • Toutefois, après la modification, TicketOffice a un couplage supplémentaire avec Audience.
    • Comme la conception implique un compromis, il est possible de s'entendre pour créer un objet TicketOffice relativement passif afin de réduire le couplage avec Audience.



Oui, c'est un mensonge !

  • Même si quelque chose est passif dans la vie réelle, il devient un être actif et autonome lorsqu'il entre dans le monde de la programmation orientée objet.
  • Il est bon d'utiliser la personnification pour considérer les objets passifs comme des objets qui rient, parlent et se fâchent.


Conception orientée objet

Pourquoi la conception est-elle nécessaire ?

  • La conception consiste à placer le code.
  • Une bonne conception est une conception qui satisfait pleinement les besoins d'aujourd'hui tout en acceptant les changements de demain de manière transparente.


Conception orientée objet

  • Un code modifiable est un code facile à comprendre.
  • Le paradigme orienté objet permet d'écrire du code de la même manière que nous voyons le monde.
  • Les objets sont des entités autonomes qui sont responsables de leurs propres données.
  • Une excellente conception orientée objet est une conception qui gère correctement les dépendances entre les objets qui collaborent.


Source

  • Objets
제이온
제이온
제이온
제이온
[Objet] Chapitre 2. Programmation orientée objet Ce document décrit la méthodologie de programmation orientée objet pour la mise en œuvre d'un système de réservation de billets de cinéma. Il couvre des concepts tels que la collaboration, les objets, les classes, l'héritage, le polymorphisme, l'abstracti

28 avril 2024

[Effective Java] Évitez la création d'objets inutiles Ce guide vous explique comment réduire la création d'objets inutiles en Java. Pour les objets immuables comme String et Boolean, il est préférable d'utiliser des littéraux. Il est également conseillé de mettre en cache les instances Pattern pour les expre

28 avril 2024

[Efficace Java] Item 1. Envisager des méthodes d'usine statiques à la place des constructeurs Les méthodes d'usine statiques sont un moyen flexible et efficace de créer des instances à la place des constructeurs. Elles peuvent avoir un nom, renvoyer des instances répondant à des conditions spécifiques et améliorer les performances grâce à la mise

27 avril 2024

[Non-majors, Surviving as Developers] 14. Résumé des questions d'entrevue technique fréquemment posées aux développeurs débutants Guide de préparation aux entrevues techniques pour les développeurs débutants. Zone de mémoire principale, structures de données, RDBMS et NoSQL, programmation procédurale et orientée objet, surcharge et surcharge, algorithmes de remplacement de page, pro
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 avril 2024

Modélisation de données logiques pour le projet de tableau Kanban 2 Cet article explique étape par étape comment réaliser une modélisation de données logiques à partir d'un ERD de modélisation de données conceptuelles, en soulignant les difficultés rencontrées lors du processus de normalisation et en proposant des solutio
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

9 avril 2024

Pourquoi il faut aborder l'investissement avec un raisonnement probabiliste : on ne peut jamais connaître la cause exacte des résultats de l'investissement Les résultats des investissements dépendent largement du hasard et des compétences, et il est impossible de déterminer la cause exacte. Par conséquent, l'investissement doit être abordé avec un raisonnement probabiliste afin de maximiser les combats dans
고집스런가치투자
고집스런가치투자
고집스런가치투자
고집스런가치투자

3 avril 2024

Le phénomène humain, la nouvelle référence pour les décisions des entreprises - 2 Nous présentons une approche centrée sur les phénomènes, qui utilise le comportement humain comme critère de décision dans les entreprises. Cette approche vous aide à comprendre les besoins et les aspirations des clients et à découvrir des opportunités de
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

7 mai 2024

Faire semblant d'être gentil et répondre à côté : que donne-t-on ? Éviter de répondre correctement à une question en faisant semblant d'être gentil pour se sortir d'une situation nuit à l'authenticité du dialogue et brise la confiance mutuelle. Il en va de même dans le monde des affaires, où la communication honnête et c
Dream Atelier
Dream Atelier
Dream Atelier
Dream Atelier
Dream Atelier

2 mai 2024

Comment les entreprises technologiques peuvent-elles se préparer au « métavers » ? L’histoire héroïque du joueur « Let Me Solo Her » dans le jeu « Elden Ring » montre que la popularité se crée autour des joueurs et non des personnages du jeu, ce qui suggère que les entreprises technologiques doivent tenir compte de l’établissement de re
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

8 mai 2024