23 points par alstjr7375 2021-12-14 | 6 commentaires | Partager sur WhatsApp
  • La plus grande différence entre les classes et les prototypes réside dans la manière de créer les objets [classe -> instance vs objet -> objet copié].

  • Leur point commun le plus important est l’orientation objet : découper un programme en unités appelées objets et les faire interagir.

  • La manière la plus simple de bien réaliser l’encapsulation, qui est au cœur de l’orientation objet, est de bien faire l’abstraction.

    • On peut envisager l’abstraction en la divisant selon des propriétés centrées sur les données — caractéristiques (OOP classique), forme (type), état (conception orientée données) — et selon des éléments centrés sur les relations comme le temps (programmation procédurale), le comportement (programmation fonctionnelle), la définition (programmation logique), la situation (domain-driven design, AOP), etc.

    • Pour bien classer et concevoir, il est utile de comprendre diverses catégories qui amènent à reconnaître des formes de pensée [ex. les 12 catégories en 4 groupes chez Kant].

  • Philosophie et paradigmes

    • Procédural : le temps influence la plupart des abstractions, et une syntaxe comme Goto, qui mélange les contextes, n’est pas souhaitable.

    • Fonctionnel : comme il cherche à s’exprimer sous forme de comportements, il entretient un lien profond avec les types (formes).

    • Logique : on construit la logique à partir de faits et de règles, et l’on peut obtenir le résultat de la logique des prédicats en effectuant des requêtes.

    • OOP traditionnel : intuitif. Mais il est impossible d’identifier des propriétés parfaitement complètes.

    • Conception orientée données : contrairement à la programmation fonctionnelle, qui cherche à traiter l’état de la logique, elle tente de réduire l’état au niveau même de l’ordinateur. Cela améliore les performances en augmentant le taux de cache hit.

    • Domain-driven design : contrairement à l’OOP traditionnel, la conception varie selon le domaine et le contexte (proche de la théorie de l’image et de la sémantique de l’usage). L’implémentation devient plus simple si l’on utilise l’AOP pour l’injection de dépendances des sous-domaines.

  • MVP

    • Création de prototype : il faut inclure les fonctionnalités importantes, mais cela peut varier selon le point de vue du designer, du développeur, des finances, etc. Il s’agit d’exigences typiques fondées sur le degré de similarité avec le produit que beaucoup considèrent comme important.

    • MVP : il doit garantir un niveau minimal d’achèvement permettant l’usage, et être conçu de manière proche du produit imaginé comme étape finale.

  • Orientation objet et existence

    • Platon : les propriétés universelles sont immuables et réelles, tandis que les existences individuelles existent sans posséder pleinement ces caractéristiques universelles.

    • Aristote : seuls les individus particuliers sont des substances fondamentales, et les universaux sont des représentations apparaissant dans des relations de hiérarchie ou d’inclusion.

    • Le modèle classe-instance ressemble à la théorie des Idées de Platon, tandis que le modèle prototype-objet copié est proche de la théorie aristotélicienne de la substance.

L’objectif initial de ce que je voulais écrire était :

  • l’OOP traditionnel est proche de la théorie de l’image, et le domain-driven design de la sémantique de l’usage.

  • le modèle classe-instance ressemble à la théorie des Idées de Platon, tandis que le modèle prototype-objet copié est proche de la théorie aristotélicienne de la substance.

Mais c’est devenu bien plus long que prévu.

Sans aucune connaissance préalable, cela peut paraître légèrement difficile.

6 commentaires

 
alstjr7375 2021-12-14

Pourquoi JavaScript a-t-il choisi les prototypes ?

https://fr.news.hada.io/topic?id=5532

C’est un texte que j’ai écrit après y avoir repensé en lisant cela.

 
laeyoung 2021-12-14

Je vous propose de le lire en le comparant à cet article !

 
alstjr7375 2021-12-14

Merci !!

 
alstjr7375 2021-12-14

Hein ? On dirait qu’on ne peut pas mettre plusieurs espaces, snif snif

 
xguru 2021-12-14

Ah, il y a parfois des cas où cela occupe volontairement de l’espace..

J’ai donc fait en sorte de réduire les lignes vides et les espaces multiples, snif.

 
alstjr7375 2021-12-14

J’ai compris.

Il faudra y penser la prochaine fois que je publierai.