đ Architecture & Paradigmes
đ Voir ma vidĂ©o Object Oriented - DĂ©finition ? Ma vision ?
Programmation Orienté Objet
En ce qui me concerne, jâĂ©tudie sĂ©rieusement les racines et la sĂ©mantique des langages OO depuis deux ans et jâai le sentiment dâĂȘtre un alien đœ quand jâentends les autres parler du sujet.
Pour commencer, il nâexiste aucun consensus sur une dĂ©finition exacte de lâOO (donc prenez avec des pincettes ceux qui vendent des dĂ©finitions exactes đ). Il est donc trĂšs risquĂ© de prendre position car cela vous demandera dâavoir une comprĂ©hension et des arguments que 99,9% des dĂ©veloppeurs nâont pas (moi y compris pour le moment).
Ci-dessous deux liens quâil est plutĂŽt important de lire pour commencer Ă se faire une bonne idĂ©e des principes fondamentaux de lâOO :
- Les dĂ©finitions dâAlan Kays (celui que beaucoup considĂšrent comme Ă©tant le pĂšre fondateur de lâOO avec Smalltalk).
- A Proposal for Simplified, Modern Definitions of âObjectâ and âObject Orientedâ (la dĂ©finition que je trouve la plus sĂ©rieuse Ă lâheure actuelle et que jâai dĂ©couverte par le biais de Wirfs-brock).
Il existe bien dâautres dĂ©finitions et spĂ©culations que vous pouvez retrouver ici. Jâai pour ma part aussi lu une bonne partie de Theory of objects ce qui mâa permis dâouvrir les yeux sur pas mal de notions Ă un niveau sĂ©mantique.
En second, je vous recommande vraiment de creuser la notion de Data abstraction. Câest tellement la fondation de ce qui constitue les langages de programmation que je ne comprends mĂȘme pas comment la majoritĂ© des dĂ©veloppeurs passent Ă cĂŽtĂ© .
Quelques ressources Ă lire / Ă©couter :
-
[How Data Abstraction changed Computing forever Barbara Liskov TEDxMIT](https://www.youtube.com/watch?v=_jTc1BTFdIo) - On Understanding Data Abstraction, Revisited
- Object-Oriented Programming Versus Abstract Data Types
Je vous recommande aussi Programming Paradigms for Dummies qui permet de faire un pont avec dâautres notions (et pas uniquement lâOO car câest important de sâouvrir aussi au reste).
Ressources complémentaires
Bref si vous avez commencĂ© Ă lire câest que vous avez compris que je ne suis pas adepte des explications bateau en mode âCâest un chat qui Ă©tend dâun animal pour faire miaouâ đ.
Je nâai jamais Ă©tĂ© un grand fan de ces articles haut niveau car jâai toujours eu le sentiment quâil manquait une rĂ©flexion fondamentale dans le processus. Abstraire les Ă©lĂ©ments techniques pour mieux les communiquer est une chose importante mais je pense quâil ne faut pas non plus trop sâĂ©loigner dâune rĂ©alitĂ© plus scientifique.
Si vous souhaitez continuer Ă rĂ©ellement creuser la programmation orientĂ©e objet voici diverses rĂ©fĂ©rences que jâai moi-mĂȘme lues (attention elles sont souvent difficile dâaccĂšs) :
đ Les rĂ©fĂ©rences ci-dessus peuvent aussi vous permettre de mieux comprendre certaines racines de Javascript. J'Ă©tais personnellement vraiment choquĂ© de dĂ©couvrir que beaucoup de ce qu'on critique comme Ă©tant des fonctionnalitĂ©s qui ont Ă©tĂ© faites au hasard en 10 jours sont finalement des notions sĂ©mantiques rĂ©flĂ©chies depuis des dizaines d'annĂ©es.
- Inheritance Is Not Subtyping
- A Behavioral Notion of Subtyping
- A Denotational Semantics of Inheritance
- Representing Type Information in Dynamically Typed Languages
- Concurrent Object-Oriented Programming in Act 1
- The Power of Interoperability: Why Objects Are Inevitable
- Law of demeter
- Object Design - Rebecca Wirfs-Brock and Alan McKean
Ă partir de tout cela vous aurez moyen de retrouver plusieurs centaines de rĂ©fĂ©rences. Jâai lu dâautres ouvrages mais je ne pense pas quâils aient une place ici (nĂ©anmoins je reste ouvert Ă la discussion si vous souhaitez vous-mĂȘme approfondir cela avec mes recommandations).
âŹ ïž đ Architecture & Paradigmes: Clean code | âĄïž đ Architecture & Paradigmes: Design patterns