Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
LANGAGE OBJET
PASSÉ, PRÉSENT, FUTUR DU
SOPHIE BEAUPUIS
A MON PROPOS
• CTO chez « Ma résidence »
• @so_php_ie
• Je suis passé par:
VOUS ALLEZ BRILLER !
AVANT TOUT CHOSE
J’ai besoin de 4 volontaires pour une expérience hors du commun
avec du papier et un...
LES PRÉCURSEURS
LES RACINES DU LANGAGE OBJET
L’INFORMATIQUE PREND SON ESSOR
FIN DES ANNÉES 50
• ALGOL, Fortan, LISP
• Procédures, structures de données
• Aucune inter-...
SIMULA : NYGAARD ET DAHL 1962 À 1967
L’IDÉE DE GÉNIES
• Modélisation du réel
• Chaque unité de code est un processus indép...
SIMILITUDES ET LA VARIATIONS DE STRUCTURES DE DONNÉES
LES CLASSE D’ENREGISTREMENT DE HOARE
• Sir Tony Hoare en 1965 décrit...
SIMULA + CLASSES DE HOARE
SIMULA 67
• Classe
• Héritage
• Surcharge
LE « PÈRE » DU LANGAGE OBJET MODERNE
ALAN KAY
• Fait la synthèse d’idées dans le monde de
l’informatique des années 60 : A...
SIMULA +++
LANGAGE OBJET SELON ALAN KAY
• Tout est objet, classe, processus, etc..
• Encapsulation
• Les objets interagiss...
CONTRIBUTIONS CONTEMPORAINES
LE PRÉSENT
LA CONTRIBUTION DU GOF 1994
DESIGN PATTERNS
• Des motifs se répètent dans le code « objet » pour répondre à
des problèmes ...
ROBERT C MARTIN - 1995
PRINCIPES DE CONCEPTION OBJET
• Oncle Bob apport deux idées fondamentales :
• Les « Rotten design »...
TOUT ÇÀ POUR ÇÀ…
La diapo suivante peu choquer les plus fragiles…
FRAMEWORKS, ETC.
• On s’en fou, on fait du Symfony….
• Je te fais en cinq minutes avec Expressive…
• J’ai déjà tout dans L...
PROGRAMMATION ORIENTÉE À L’EST
UNE IDÉE POUR LE FUTUR : POE
NON, ORIENTÉ « RETOUR »
ON PROGRAMME À L’OUEST ?
DEMO avec des humains, stylo et papier
PRINCIPE DE BASE
TELL DON’T ASK
• Encapsulation : on ne doit pas connaitre l’état d’un autre objet
• L’objet qui agit est ...
TELL, DON’T ASK
ON REPRENDS….
DEMO avec des humains, stylo et papier
INTÉRÊTS / PROMESSES DE LA POE
• L’état des objets reste masqué un maximum
• On n’a pas à traiter les retours. Moins de bo...
RÉSERVER UNE CHAMBRE DANS UN HÔTEL
EXEMPLE EN PHP
provideRoomTo(sophie,’M’,3)
orderRoomTo(hotel)
101 / S / 1302 / M / 3 26...
L’IDÉE DE BASE
UN PEU DE CODE
$sophie = new Customer(Room::SIZE_M,3);
$ibis = new Hotel();
$sophie->orderRoomTo($ibis);
CUSTOMER
UN PEU DE CODE
class Customer
{
protected $roomSize;
protected $minFloor;
protected $hotel;
protected $roomNumber...
HOTEL
UN PEU DE CODE
class Hotel
{
protected $rooms = [];
protected $currentCustomer;
public function provideRoomTo(Custom...
ROOM
UN PEU DE CODE
class Room
{
const SIZE_S = 's'; const SIZE_M = ‘m'; const SIZE_L = ‘l';
protected $number; protected ...
POUR UNE VIE DE DÉVELOPPEUR MEILLEURE
CONCLUSIONS
• Revenez à l’essence de l’objet
• KISS
• Méditez sur les textes des fon...
MERCI !
ET TOUT DOIT FINIR PAR UN
QUESTIONS ?
AVEZ-VOUS DES
Prochain SlideShare
Chargement dans…5
×

Language objet : passé, présent et futur

402 vues

Publié le

Talk forum PHP 2017

Publié dans : Internet
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Language objet : passé, présent et futur

  1. 1. LANGAGE OBJET PASSÉ, PRÉSENT, FUTUR DU
  2. 2. SOPHIE BEAUPUIS A MON PROPOS • CTO chez « Ma résidence » • @so_php_ie • Je suis passé par:
  3. 3. VOUS ALLEZ BRILLER ! AVANT TOUT CHOSE J’ai besoin de 4 volontaires pour une expérience hors du commun avec du papier et un stylo.
  4. 4. LES PRÉCURSEURS LES RACINES DU LANGAGE OBJET
  5. 5. L’INFORMATIQUE PREND SON ESSOR FIN DES ANNÉES 50 • ALGOL, Fortan, LISP • Procédures, structures de données • Aucune inter-opérabilité entre machines • L’informatique quitte le laboratoire pour l’entreprise • Nouveaux problèmes: Simulations, intelligence artificielle, etc
  6. 6. SIMULA : NYGAARD ET DAHL 1962 À 1967 L’IDÉE DE GÉNIES • Modélisation du réel • Chaque unité de code est un processus indépendant • Donnée + comportement (règle d’opération)
  7. 7. SIMILITUDES ET LA VARIATIONS DE STRUCTURES DE DONNÉES LES CLASSE D’ENREGISTREMENT DE HOARE • Sir Tony Hoare en 1965 décrit un système de classement de structures de données basé sur des classes et des sous-classes • Invention de la notion d’héritage • Ne considère pas les comportements, uniquement les données
  8. 8. SIMULA + CLASSES DE HOARE SIMULA 67 • Classe • Héritage • Surcharge
  9. 9. LE « PÈRE » DU LANGAGE OBJET MODERNE ALAN KAY • Fait la synthèse d’idées dans le monde de l’informatique des années 60 : ARPANet, LOGO, SketchPad, Simula… • Il sera le premier à donner une définition du langage « objet » • Il est à l’origine du langage SMALLTALK en 1971
  10. 10. SIMULA +++ LANGAGE OBJET SELON ALAN KAY • Tout est objet, classe, processus, etc.. • Encapsulation • Les objets interagissent via des messages • Chaque message reçu par un objet correspondant à une « méthode » de son code
  11. 11. CONTRIBUTIONS CONTEMPORAINES LE PRÉSENT
  12. 12. LA CONTRIBUTION DU GOF 1994 DESIGN PATTERNS • Des motifs se répètent dans le code « objet » pour répondre à des problèmes eux-même récurrents • C’est un recueil de motifs rédigé par Erich Gamma,Richard Helm, Ralph Johnson et John Vlissides • Ces design patterns permettent de trouver rapidement une architecture adaptée à un problème courant
  13. 13. ROBERT C MARTIN - 1995 PRINCIPES DE CONCEPTION OBJET • Oncle Bob apport deux idées fondamentales : • Les « Rotten design » qui liste les principaux défauts des applications programmées en objet • Les principes « SOLID » qui sont une liste de bonnes pratiques à respecter pour limiter l’occurence des « Rotten design »
  14. 14. TOUT ÇÀ POUR ÇÀ… La diapo suivante peu choquer les plus fragiles…
  15. 15. FRAMEWORKS, ETC. • On s’en fou, on fait du Symfony…. • Je te fais en cinq minutes avec Expressive… • J’ai déjà tout dans Laravel… • Hop un petit composer update et roule ma poule…
  16. 16. PROGRAMMATION ORIENTÉE À L’EST UNE IDÉE POUR LE FUTUR : POE
  17. 17. NON, ORIENTÉ « RETOUR » ON PROGRAMME À L’OUEST ? DEMO avec des humains, stylo et papier
  18. 18. PRINCIPE DE BASE TELL DON’T ASK • Encapsulation : on ne doit pas connaitre l’état d’un autre objet • L’objet qui agit est celui qui possède les données • Les objets se commandent entre-eux. « Demander au balai de faire le ménage »
  19. 19. TELL, DON’T ASK ON REPRENDS…. DEMO avec des humains, stylo et papier
  20. 20. INTÉRÊTS / PROMESSES DE LA POE • L’état des objets reste masqué un maximum • On n’a pas à traiter les retours. Moins de boulot. • Moins d’erreur due au typage des retours de méthodes • Beaucoup plus facile à tester car les « mocks » ne retournent rien. • Moins de couplages. • Celui qui réalise l’action est celui qui possède les données.
  21. 21. RÉSERVER UNE CHAMBRE DANS UN HÔTEL EXEMPLE EN PHP provideRoomTo(sophie,’M’,3) orderRoomTo(hotel) 101 / S / 1302 / M / 3 267 / L / 2 setRoomNumber(302) bookIfSuitable(‘M’,3) bookIfSuitable(‘M’,3) bookIfSuitable(‘M’,3) bookRoom(302)
  22. 22. L’IDÉE DE BASE UN PEU DE CODE $sophie = new Customer(Room::SIZE_M,3); $ibis = new Hotel(); $sophie->orderRoomTo($ibis);
  23. 23. CUSTOMER UN PEU DE CODE class Customer { protected $roomSize; protected $minFloor; protected $hotel; protected $roomNumber; public function orderRoomTo(Hotel $hotel) { $this->hotel = $hotel; $hotel->provideRoomTo($this,$this->roomSize,$this->minFloor); return $this; } public function setRoomNumber(int $number) { $this->roomNumber = $number; return $this; } }
  24. 24. HOTEL UN PEU DE CODE class Hotel { protected $rooms = []; protected $currentCustomer; public function provideRoomTo(Customer $customer, string $roomSize, int $minFloor) { $this->currentCustomer = $customer; foreach ($this->rooms as $room) { $room->bookIfSuitable($roomSize,$minFloor); } return $this; } public function bookRoom(int $number) { $room = $this->rooms[$number]; $room->book(); $this->currentCustomer->setRoomNumber($number); return $this; } }
  25. 25. ROOM UN PEU DE CODE class Room { const SIZE_S = 's'; const SIZE_M = ‘m'; const SIZE_L = ‘l'; protected $number; protected $size; protected $floor; protected $available = true; protected $hotel; public function bookIfSuitable(string $roomSize, int $minFloor) { if ( ! $this->available) return $this; if ($this->floor < $minFloor) return $this; if ($this->size != $roomSize) return $this; $this->hotel->bookRoom($this->number); return $this; } public function book() { $this->available = false; return $this; } }
  26. 26. POUR UNE VIE DE DÉVELOPPEUR MEILLEURE CONCLUSIONS • Revenez à l’essence de l’objet • KISS • Méditez sur les textes des fondateurs • Faites du sport • Mangez sain • Souriez ! • Restez positifs !
  27. 27. MERCI ! ET TOUT DOIT FINIR PAR UN
  28. 28. QUESTIONS ? AVEZ-VOUS DES

×