[{"data":1,"prerenderedAt":4264},["ShallowReactive",2],{"/fr/architecture-craft/principe-substitution-liskov-lsp-java":3,"search-api":-1},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"date":11,"listed":12,"nocomments":6,"hidden":6,"categories":13,"tags":15,"--cover":18,"readingTime":19,"body":24,"_type":4258,"_id":4259,"_source":4260,"_file":4261,"_stem":4262,"_extension":4263},"/fr/architecture-craft/principe-substitution-liskov-lsp-java","architecture-craft",false,"","Principe de substitution de Liskov (LSP), Comprendre et appliquer avec des exemples Java","Découvrez le principe de substitution de Liskov (LSP) avec des exemples concrets en Java. Apprenez à respecter ce principe clé des SOLID pour des conceptions orientées objet robustes.",38,"2024-02-06",true,[14],"Principes du software craftsmanship",[16,17],"principe","qualité","covers/articles/principe-lsp.jpg",{"text":20,"minutes":21,"time":22,"words":23},"10 min read",9.85,591000,1970,{"type":25,"children":26,"toc":4242},"root",[27,36,48,53,67,72,76,82,87,94,99,106,157,164,177,180,193,199,218,231,706,718,731,1061,1095,1101,1112,1557,1563,1599,1625,1628,1634,1652,1658,1677,1694,1699,1710,2119,2131,2143,2422,2468,2474,2493,3082,3087,3113,3119,3150,3156,3168,3174,3696,3702,4039,4042,4048,4053,4059,4077,4083,4101,4104,4110,4125,4138,4169,4182,4195,4208,4221,4224,4236],{"type":28,"tag":29,"props":30,"children":32},"element","h2",{"id":31},"principe-de-liskov-substitution-lsp-pour-les-développeurs-de-logiciels",[33],{"type":34,"value":35},"text","Principe de Liskov Substitution (LSP) pour les développeurs de logiciels",{"type":28,"tag":37,"props":38,"children":39},"p",{},[40,42],{"type":34,"value":41},"Mise en situation : vous travaillez sur un projet orienté objet et tout se passe bien jusqu’au moment où vous dérivez une classe pour ajouter des fonctionnalités supplémentaires. Tout semble fonctionner au début, mais très vite, vous vous rendez compte que la nouvelle classe casse le comportement attendu de l’application. Vous vous demandez alors : ",{"type":28,"tag":43,"props":44,"children":45},"em",{},[46],{"type":34,"value":47},"Qu’est-ce qui ne va pas ? Est-ce que j’ai mal utilisé l’héritage ?",{"type":28,"tag":37,"props":49,"children":50},{},[51],{"type":34,"value":52},"C’est ici que le principe de substitution de Liskov (LSP) entre en jeu.",{"type":28,"tag":37,"props":54,"children":55},{},[56,58,65],{"type":34,"value":57},"Le LSP est l’un des cinq ",{"type":28,"tag":59,"props":60,"children":62},"a",{"href":61},"/fr/architecture-craft/principes-solid-java-exemples",[63],{"type":34,"value":64},"principes SOLID",{"type":34,"value":66}," et a pour but d’éviter ces scénarios où une sous-classe viole le contrat implicite d’une classe parente. En tant que développeur, comprendre ce principe vous permet de garantir que votre code reste flexible et maintenable, même lorsqu’il est étendu par des sous-classes.",{"type":28,"tag":37,"props":68,"children":69},{},[70],{"type":34,"value":71},"Dans cet article, je vais vous montrer ce qu’est exactement le LSP, pourquoi il est si crucial dans la conception de logiciels robustes, et surtout comment l’appliquer efficacement à travers des exemples concrets. À la fin, vous aurez toutes les clés pour ne plus jamais briser le comportement attendu de vos classes.",{"type":28,"tag":73,"props":74,"children":75},"hr",{},[],{"type":28,"tag":29,"props":77,"children":79},{"id":78},"quest-ce-que-le-principe-de-substitution-de-liskov-lsp",[80],{"type":34,"value":81},"Qu’est-ce que le principe de substitution de Liskov (LSP) ?",{"type":28,"tag":37,"props":83,"children":84},{},[85],{"type":34,"value":86},"Le principe de substitution de Liskov (LSP), introduit par Barbara Liskov en 1987, est l’un des cinq principes SOLID utilisés en programmation orientée objet. Ce principe stipule qu’une sous-classe doit pouvoir être substituée à sa classe parente sans que cela ne modifie le comportement attendu du programme. En d’autres termes, si vous utilisez une classe de base dans votre code, vous devriez pouvoir la remplacer par n’importe quelle sous-classe sans avoir à ajuster le code existant.",{"type":28,"tag":88,"props":89,"children":91},"h4",{"id":90},"en-termes-simples-voici-ce-que-cela-signifie",[92],{"type":34,"value":93},"En termes simples, voici ce que cela signifie :",{"type":28,"tag":37,"props":95,"children":96},{},[97],{"type":34,"value":98},"Si une classe B hérite de la classe A, alors B doit pouvoir être utilisée partout où A est acceptée. Les objets de B doivent se comporter de manière cohérente avec les attentes établies par la classe A.",{"type":28,"tag":100,"props":101,"children":103},"h5",{"id":102},"exemple-classique-pour-mieux-comprendre",[104],{"type":34,"value":105},"Exemple classique pour mieux comprendre :",{"type":28,"tag":37,"props":107,"children":108},{},[109,111,118,120,126,128,134,136,141,143,148,150,155],{"type":34,"value":110},"Imaginez que vous développez une application qui manipule des formes géométriques. Vous avez une classe de base ",{"type":28,"tag":112,"props":113,"children":115},"code",{"className":114},[],[116],{"type":34,"value":117},"Forme",{"type":34,"value":119},", et deux sous-classes : ",{"type":28,"tag":112,"props":121,"children":123},{"className":122},[],[124],{"type":34,"value":125},"Rectangle",{"type":34,"value":127}," et ",{"type":28,"tag":112,"props":129,"children":131},{"className":130},[],[132],{"type":34,"value":133},"Carré",{"type":34,"value":135},". Comme vous le savez, un carré est un cas particulier de rectangle où tous les côtés sont égaux. Cependant, si vous créez une sous-classe ",{"type":28,"tag":112,"props":137,"children":139},{"className":138},[],[140],{"type":34,"value":133},{"type":34,"value":142}," qui redéfinit le comportement de ",{"type":28,"tag":112,"props":144,"children":146},{"className":145},[],[147],{"type":34,"value":125},{"type":34,"value":149},", vous risquez de casser la logique qui fonctionne parfaitement pour la classe ",{"type":28,"tag":112,"props":151,"children":153},{"className":152},[],[154],{"type":34,"value":125},{"type":34,"value":156},". Cela brise le LSP.",{"type":28,"tag":158,"props":159,"children":161},"h3",{"id":160},"pourquoi-ce-principe-est-il-important",[162],{"type":34,"value":163},"Pourquoi ce principe est-il important ?",{"type":28,"tag":37,"props":165,"children":166},{},[167,169,175],{"type":34,"value":168},"Le non-respect du LSP peut rendre votre code plus difficile à comprendre, à maintenir et surtout à tester. Si une sous-classe introduit des comportements inattendus ou redéfinit de manière inattendue des méthodes de la classe parente, cela peut entraîner des bugs cachés et un comportement imprévisible du logiciel. Dans mes missions, j’ai observé que les violations de LSP se manifestent souvent à travers des bugs en production difficiles à reproduire, ce qui allonge les cycles de correction et alourdit les coûts de maintenance. C’est pour cette raison que le ",{"type":28,"tag":59,"props":170,"children":172},{"href":171},"/fr/architecture-craft/dependency-inversion-pratique",[173],{"type":34,"value":174},"Dependency Inversion Principle",{"type":34,"value":176}," recommande de dépendre d’abstractions : une interface garantit un contrat que toutes les implémentations respectent, ce qui évite précisément les violations LSP.",{"type":28,"tag":73,"props":178,"children":179},{},[],{"type":28,"tag":181,"props":182,"children":187},"cta",{"cta":183,"href":184,"title":185,"type":186},"Réserver mon diagnostic gratuit →","https://app.kamanga.fr/forms/discovery-call","L’héritage dans votre code crée des comportements imprévisibles et des bugs en cascade ?","call",[188],{"type":28,"tag":37,"props":189,"children":190},{},[191],{"type":34,"value":192},"Les sous-classes cassent les contrats de leurs parents, les tests passent mais le comportement en production est incorrect, et personne ne comprend vraiment pourquoi. Réservons 30 minutes pour diagnostiquer les violations de design dans votre architecture et construire un plan de remédiation.",{"type":28,"tag":29,"props":194,"children":196},{"id":195},"exemple-pratique-briser-le-lsp-ce-quil-ne-faut-pas-faire",[197],{"type":34,"value":198},"Exemple pratique - Briser le LSP : Ce qu’il ne faut pas faire",{"type":28,"tag":37,"props":200,"children":201},{},[202,204,209,211,216],{"type":34,"value":203},"Prenons l'exemple classique du ",{"type":28,"tag":112,"props":205,"children":207},{"className":206},[],[208],{"type":34,"value":125},{"type":34,"value":210}," et du ",{"type":28,"tag":112,"props":212,"children":214},{"className":213},[],[215],{"type":34,"value":133},{"type":34,"value":217}," en Java pour illustrer une violation du principe de substitution de Liskov (LSP).",{"type":28,"tag":88,"props":219,"children":221},{"id":220},"classe-rectangle",[222,224,229],{"type":34,"value":223},"Classe ",{"type":28,"tag":112,"props":225,"children":227},{"className":226},[],[228],{"type":34,"value":125},{"type":34,"value":230}," :",{"type":28,"tag":232,"props":233,"children":237},"pre",{"className":234,"code":235,"language":236,"meta":7,"style":7},"language-java shiki shiki-themes catppuccin-frappe github-dark","public class Rectangle {\n    protected int largeur;\n    protected int hauteur;\n\n    public Rectangle(int largeur, int hauteur) {\n        this.largeur = largeur;\n        this.hauteur = hauteur;\n    }\n\n    public void setLargeur(int largeur) {\n        this.largeur = largeur;\n    }\n\n    public void setHauteur(int hauteur) {\n        this.hauteur = hauteur;\n    }\n\n    public int calculerAire() {\n        return this.largeur * this.hauteur;\n    }\n}\n","java",[238],{"type":28,"tag":112,"props":239,"children":240},{"__ignoreMap":7},[241,270,295,316,325,376,410,439,448,456,494,522,530,538,575,603,611,619,645,689,697],{"type":28,"tag":242,"props":243,"children":246},"span",{"class":244,"line":245},"line",1,[247,253,258,264],{"type":28,"tag":242,"props":248,"children":250},{"style":249},"--shiki-default:#CA9EE6;--shiki-dark:#F97583",[251],{"type":34,"value":252},"public",{"type":28,"tag":242,"props":254,"children":255},{"style":249},[256],{"type":34,"value":257}," class",{"type":28,"tag":242,"props":259,"children":261},{"style":260},"--shiki-default:#E5C890;--shiki-default-font-style:italic;--shiki-dark:#B392F0;--shiki-dark-font-style:inherit",[262],{"type":34,"value":263}," Rectangle",{"type":28,"tag":242,"props":265,"children":267},{"style":266},"--shiki-default:#949CBB;--shiki-dark:#E1E4E8",[268],{"type":34,"value":269}," {\n",{"type":28,"tag":242,"props":271,"children":273},{"class":244,"line":272},2,[274,279,284,290],{"type":28,"tag":242,"props":275,"children":276},{"style":249},[277],{"type":34,"value":278},"    protected",{"type":28,"tag":242,"props":280,"children":281},{"style":249},[282],{"type":34,"value":283}," int",{"type":28,"tag":242,"props":285,"children":287},{"style":286},"--shiki-default:#C6D0F5;--shiki-dark:#E1E4E8",[288],{"type":34,"value":289}," largeur",{"type":28,"tag":242,"props":291,"children":292},{"style":266},[293],{"type":34,"value":294},";\n",{"type":28,"tag":242,"props":296,"children":298},{"class":244,"line":297},3,[299,303,307,312],{"type":28,"tag":242,"props":300,"children":301},{"style":249},[302],{"type":34,"value":278},{"type":28,"tag":242,"props":304,"children":305},{"style":249},[306],{"type":34,"value":283},{"type":28,"tag":242,"props":308,"children":309},{"style":286},[310],{"type":34,"value":311}," hauteur",{"type":28,"tag":242,"props":313,"children":314},{"style":266},[315],{"type":34,"value":294},{"type":28,"tag":242,"props":317,"children":319},{"class":244,"line":318},4,[320],{"type":28,"tag":242,"props":321,"children":322},{"emptyLinePlaceholder":12},[323],{"type":34,"value":324},"\n",{"type":28,"tag":242,"props":326,"children":328},{"class":244,"line":327},5,[329,334,339,344,349,354,359,363,367,372],{"type":28,"tag":242,"props":330,"children":331},{"style":249},[332],{"type":34,"value":333},"    public",{"type":28,"tag":242,"props":335,"children":337},{"style":336},"--shiki-default:#8CAAEE;--shiki-default-font-style:italic;--shiki-dark:#B392F0;--shiki-dark-font-style:inherit",[338],{"type":34,"value":263},{"type":28,"tag":242,"props":340,"children":341},{"style":266},[342],{"type":34,"value":343},"(",{"type":28,"tag":242,"props":345,"children":346},{"style":249},[347],{"type":34,"value":348},"int",{"type":28,"tag":242,"props":350,"children":352},{"style":351},"--shiki-default:#EA999C;--shiki-default-font-style:italic;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit",[353],{"type":34,"value":289},{"type":28,"tag":242,"props":355,"children":356},{"style":266},[357],{"type":34,"value":358},",",{"type":28,"tag":242,"props":360,"children":361},{"style":249},[362],{"type":34,"value":283},{"type":28,"tag":242,"props":364,"children":365},{"style":351},[366],{"type":34,"value":311},{"type":28,"tag":242,"props":368,"children":369},{"style":266},[370],{"type":34,"value":371},")",{"type":28,"tag":242,"props":373,"children":374},{"style":266},[375],{"type":34,"value":269},{"type":28,"tag":242,"props":377,"children":379},{"class":244,"line":378},6,[380,386,391,396,402,406],{"type":28,"tag":242,"props":381,"children":383},{"style":382},"--shiki-default:#E78284;--shiki-dark:#79B8FF",[384],{"type":34,"value":385},"        this",{"type":28,"tag":242,"props":387,"children":388},{"style":266},[389],{"type":34,"value":390},".",{"type":28,"tag":242,"props":392,"children":393},{"style":286},[394],{"type":34,"value":395},"largeur ",{"type":28,"tag":242,"props":397,"children":399},{"style":398},"--shiki-default:#81C8BE;--shiki-dark:#F97583",[400],{"type":34,"value":401},"=",{"type":28,"tag":242,"props":403,"children":404},{"style":286},[405],{"type":34,"value":289},{"type":28,"tag":242,"props":407,"children":408},{"style":266},[409],{"type":34,"value":294},{"type":28,"tag":242,"props":411,"children":413},{"class":244,"line":412},7,[414,418,422,427,431,435],{"type":28,"tag":242,"props":415,"children":416},{"style":382},[417],{"type":34,"value":385},{"type":28,"tag":242,"props":419,"children":420},{"style":266},[421],{"type":34,"value":390},{"type":28,"tag":242,"props":423,"children":424},{"style":286},[425],{"type":34,"value":426},"hauteur ",{"type":28,"tag":242,"props":428,"children":429},{"style":398},[430],{"type":34,"value":401},{"type":28,"tag":242,"props":432,"children":433},{"style":286},[434],{"type":34,"value":311},{"type":28,"tag":242,"props":436,"children":437},{"style":266},[438],{"type":34,"value":294},{"type":28,"tag":242,"props":440,"children":442},{"class":244,"line":441},8,[443],{"type":28,"tag":242,"props":444,"children":445},{"style":266},[446],{"type":34,"value":447},"    }\n",{"type":28,"tag":242,"props":449,"children":451},{"class":244,"line":450},9,[452],{"type":28,"tag":242,"props":453,"children":454},{"emptyLinePlaceholder":12},[455],{"type":34,"value":324},{"type":28,"tag":242,"props":457,"children":459},{"class":244,"line":458},10,[460,464,469,474,478,482,486,490],{"type":28,"tag":242,"props":461,"children":462},{"style":249},[463],{"type":34,"value":333},{"type":28,"tag":242,"props":465,"children":466},{"style":249},[467],{"type":34,"value":468}," void",{"type":28,"tag":242,"props":470,"children":471},{"style":336},[472],{"type":34,"value":473}," setLargeur",{"type":28,"tag":242,"props":475,"children":476},{"style":266},[477],{"type":34,"value":343},{"type":28,"tag":242,"props":479,"children":480},{"style":249},[481],{"type":34,"value":348},{"type":28,"tag":242,"props":483,"children":484},{"style":351},[485],{"type":34,"value":289},{"type":28,"tag":242,"props":487,"children":488},{"style":266},[489],{"type":34,"value":371},{"type":28,"tag":242,"props":491,"children":492},{"style":266},[493],{"type":34,"value":269},{"type":28,"tag":242,"props":495,"children":497},{"class":244,"line":496},11,[498,502,506,510,514,518],{"type":28,"tag":242,"props":499,"children":500},{"style":382},[501],{"type":34,"value":385},{"type":28,"tag":242,"props":503,"children":504},{"style":266},[505],{"type":34,"value":390},{"type":28,"tag":242,"props":507,"children":508},{"style":286},[509],{"type":34,"value":395},{"type":28,"tag":242,"props":511,"children":512},{"style":398},[513],{"type":34,"value":401},{"type":28,"tag":242,"props":515,"children":516},{"style":286},[517],{"type":34,"value":289},{"type":28,"tag":242,"props":519,"children":520},{"style":266},[521],{"type":34,"value":294},{"type":28,"tag":242,"props":523,"children":525},{"class":244,"line":524},12,[526],{"type":28,"tag":242,"props":527,"children":528},{"style":266},[529],{"type":34,"value":447},{"type":28,"tag":242,"props":531,"children":533},{"class":244,"line":532},13,[534],{"type":28,"tag":242,"props":535,"children":536},{"emptyLinePlaceholder":12},[537],{"type":34,"value":324},{"type":28,"tag":242,"props":539,"children":541},{"class":244,"line":540},14,[542,546,550,555,559,563,567,571],{"type":28,"tag":242,"props":543,"children":544},{"style":249},[545],{"type":34,"value":333},{"type":28,"tag":242,"props":547,"children":548},{"style":249},[549],{"type":34,"value":468},{"type":28,"tag":242,"props":551,"children":552},{"style":336},[553],{"type":34,"value":554}," setHauteur",{"type":28,"tag":242,"props":556,"children":557},{"style":266},[558],{"type":34,"value":343},{"type":28,"tag":242,"props":560,"children":561},{"style":249},[562],{"type":34,"value":348},{"type":28,"tag":242,"props":564,"children":565},{"style":351},[566],{"type":34,"value":311},{"type":28,"tag":242,"props":568,"children":569},{"style":266},[570],{"type":34,"value":371},{"type":28,"tag":242,"props":572,"children":573},{"style":266},[574],{"type":34,"value":269},{"type":28,"tag":242,"props":576,"children":578},{"class":244,"line":577},15,[579,583,587,591,595,599],{"type":28,"tag":242,"props":580,"children":581},{"style":382},[582],{"type":34,"value":385},{"type":28,"tag":242,"props":584,"children":585},{"style":266},[586],{"type":34,"value":390},{"type":28,"tag":242,"props":588,"children":589},{"style":286},[590],{"type":34,"value":426},{"type":28,"tag":242,"props":592,"children":593},{"style":398},[594],{"type":34,"value":401},{"type":28,"tag":242,"props":596,"children":597},{"style":286},[598],{"type":34,"value":311},{"type":28,"tag":242,"props":600,"children":601},{"style":266},[602],{"type":34,"value":294},{"type":28,"tag":242,"props":604,"children":606},{"class":244,"line":605},16,[607],{"type":28,"tag":242,"props":608,"children":609},{"style":266},[610],{"type":34,"value":447},{"type":28,"tag":242,"props":612,"children":614},{"class":244,"line":613},17,[615],{"type":28,"tag":242,"props":616,"children":617},{"emptyLinePlaceholder":12},[618],{"type":34,"value":324},{"type":28,"tag":242,"props":620,"children":622},{"class":244,"line":621},18,[623,627,631,636,641],{"type":28,"tag":242,"props":624,"children":625},{"style":249},[626],{"type":34,"value":333},{"type":28,"tag":242,"props":628,"children":629},{"style":249},[630],{"type":34,"value":283},{"type":28,"tag":242,"props":632,"children":633},{"style":336},[634],{"type":34,"value":635}," calculerAire",{"type":28,"tag":242,"props":637,"children":638},{"style":266},[639],{"type":34,"value":640},"()",{"type":28,"tag":242,"props":642,"children":643},{"style":266},[644],{"type":34,"value":269},{"type":28,"tag":242,"props":646,"children":648},{"class":244,"line":647},19,[649,654,659,663,667,672,676,680,685],{"type":28,"tag":242,"props":650,"children":651},{"style":249},[652],{"type":34,"value":653},"        return",{"type":28,"tag":242,"props":655,"children":656},{"style":382},[657],{"type":34,"value":658}," this",{"type":28,"tag":242,"props":660,"children":661},{"style":266},[662],{"type":34,"value":390},{"type":28,"tag":242,"props":664,"children":665},{"style":286},[666],{"type":34,"value":395},{"type":28,"tag":242,"props":668,"children":669},{"style":398},[670],{"type":34,"value":671},"*",{"type":28,"tag":242,"props":673,"children":674},{"style":382},[675],{"type":34,"value":658},{"type":28,"tag":242,"props":677,"children":678},{"style":266},[679],{"type":34,"value":390},{"type":28,"tag":242,"props":681,"children":682},{"style":286},[683],{"type":34,"value":684},"hauteur",{"type":28,"tag":242,"props":686,"children":687},{"style":266},[688],{"type":34,"value":294},{"type":28,"tag":242,"props":690,"children":692},{"class":244,"line":691},20,[693],{"type":28,"tag":242,"props":694,"children":695},{"style":266},[696],{"type":34,"value":447},{"type":28,"tag":242,"props":698,"children":700},{"class":244,"line":699},21,[701],{"type":28,"tag":242,"props":702,"children":703},{"style":266},[704],{"type":34,"value":705},"}\n",{"type":28,"tag":37,"props":707,"children":708},{},[709,711,716],{"type":34,"value":710},"Ici, la classe ",{"type":28,"tag":112,"props":712,"children":714},{"className":713},[],[715],{"type":34,"value":125},{"type":34,"value":717}," fonctionne normalement. Elle a des méthodes pour définir la largeur et la hauteur, et pour calculer l'aire.",{"type":28,"tag":88,"props":719,"children":721},{"id":720},"sous-classe-carre",[722,724,730],{"type":34,"value":723},"Sous-classe ",{"type":28,"tag":112,"props":725,"children":727},{"className":726},[],[728],{"type":34,"value":729},"Carre",{"type":34,"value":230},{"type":28,"tag":232,"props":732,"children":734},{"className":234,"code":733,"language":236,"meta":7,"style":7},"public class Carre extends Rectangle {\n\n    public Carre(int taille) {\n        super(taille, taille);\n    }\n\n    @Override\n    public void setLargeur(int taille) {\n        this.largeur = this.hauteur = taille;\n    }\n\n    @Override\n    public void setHauteur(int taille) {\n        this.largeur = this.hauteur = taille;\n    }\n}\n",[735],{"type":28,"tag":112,"props":736,"children":737},{"__ignoreMap":7},[738,767,774,806,837,844,851,866,901,944,951,958,969,1004,1047,1054],{"type":28,"tag":242,"props":739,"children":740},{"class":244,"line":245},[741,745,749,754,759,763],{"type":28,"tag":242,"props":742,"children":743},{"style":249},[744],{"type":34,"value":252},{"type":28,"tag":242,"props":746,"children":747},{"style":249},[748],{"type":34,"value":257},{"type":28,"tag":242,"props":750,"children":751},{"style":260},[752],{"type":34,"value":753}," Carre",{"type":28,"tag":242,"props":755,"children":756},{"style":249},[757],{"type":34,"value":758}," extends",{"type":28,"tag":242,"props":760,"children":761},{"style":260},[762],{"type":34,"value":263},{"type":28,"tag":242,"props":764,"children":765},{"style":266},[766],{"type":34,"value":269},{"type":28,"tag":242,"props":768,"children":769},{"class":244,"line":272},[770],{"type":28,"tag":242,"props":771,"children":772},{"emptyLinePlaceholder":12},[773],{"type":34,"value":324},{"type":28,"tag":242,"props":775,"children":776},{"class":244,"line":297},[777,781,785,789,793,798,802],{"type":28,"tag":242,"props":778,"children":779},{"style":249},[780],{"type":34,"value":333},{"type":28,"tag":242,"props":782,"children":783},{"style":336},[784],{"type":34,"value":753},{"type":28,"tag":242,"props":786,"children":787},{"style":266},[788],{"type":34,"value":343},{"type":28,"tag":242,"props":790,"children":791},{"style":249},[792],{"type":34,"value":348},{"type":28,"tag":242,"props":794,"children":795},{"style":351},[796],{"type":34,"value":797}," taille",{"type":28,"tag":242,"props":799,"children":800},{"style":266},[801],{"type":34,"value":371},{"type":28,"tag":242,"props":803,"children":804},{"style":266},[805],{"type":34,"value":269},{"type":28,"tag":242,"props":807,"children":808},{"class":244,"line":318},[809,815,819,824,828,832],{"type":28,"tag":242,"props":810,"children":812},{"style":811},"--shiki-default:#C6D0F5;--shiki-dark:#79B8FF",[813],{"type":34,"value":814},"        super",{"type":28,"tag":242,"props":816,"children":817},{"style":266},[818],{"type":34,"value":343},{"type":28,"tag":242,"props":820,"children":821},{"style":286},[822],{"type":34,"value":823},"taille",{"type":28,"tag":242,"props":825,"children":826},{"style":266},[827],{"type":34,"value":358},{"type":28,"tag":242,"props":829,"children":830},{"style":286},[831],{"type":34,"value":797},{"type":28,"tag":242,"props":833,"children":834},{"style":266},[835],{"type":34,"value":836},");\n",{"type":28,"tag":242,"props":838,"children":839},{"class":244,"line":327},[840],{"type":28,"tag":242,"props":841,"children":842},{"style":266},[843],{"type":34,"value":447},{"type":28,"tag":242,"props":845,"children":846},{"class":244,"line":378},[847],{"type":28,"tag":242,"props":848,"children":849},{"emptyLinePlaceholder":12},[850],{"type":34,"value":324},{"type":28,"tag":242,"props":852,"children":853},{"class":244,"line":412},[854,860],{"type":28,"tag":242,"props":855,"children":857},{"style":856},"--shiki-default:#EF9F76;--shiki-dark:#E1E4E8",[858],{"type":34,"value":859},"    @",{"type":28,"tag":242,"props":861,"children":863},{"style":862},"--shiki-default:#EF9F76;--shiki-dark:#F97583",[864],{"type":34,"value":865},"Override\n",{"type":28,"tag":242,"props":867,"children":868},{"class":244,"line":441},[869,873,877,881,885,889,893,897],{"type":28,"tag":242,"props":870,"children":871},{"style":249},[872],{"type":34,"value":333},{"type":28,"tag":242,"props":874,"children":875},{"style":249},[876],{"type":34,"value":468},{"type":28,"tag":242,"props":878,"children":879},{"style":336},[880],{"type":34,"value":473},{"type":28,"tag":242,"props":882,"children":883},{"style":266},[884],{"type":34,"value":343},{"type":28,"tag":242,"props":886,"children":887},{"style":249},[888],{"type":34,"value":348},{"type":28,"tag":242,"props":890,"children":891},{"style":351},[892],{"type":34,"value":797},{"type":28,"tag":242,"props":894,"children":895},{"style":266},[896],{"type":34,"value":371},{"type":28,"tag":242,"props":898,"children":899},{"style":266},[900],{"type":34,"value":269},{"type":28,"tag":242,"props":902,"children":903},{"class":244,"line":450},[904,908,912,916,920,924,928,932,936,940],{"type":28,"tag":242,"props":905,"children":906},{"style":382},[907],{"type":34,"value":385},{"type":28,"tag":242,"props":909,"children":910},{"style":266},[911],{"type":34,"value":390},{"type":28,"tag":242,"props":913,"children":914},{"style":286},[915],{"type":34,"value":395},{"type":28,"tag":242,"props":917,"children":918},{"style":398},[919],{"type":34,"value":401},{"type":28,"tag":242,"props":921,"children":922},{"style":382},[923],{"type":34,"value":658},{"type":28,"tag":242,"props":925,"children":926},{"style":266},[927],{"type":34,"value":390},{"type":28,"tag":242,"props":929,"children":930},{"style":286},[931],{"type":34,"value":426},{"type":28,"tag":242,"props":933,"children":934},{"style":398},[935],{"type":34,"value":401},{"type":28,"tag":242,"props":937,"children":938},{"style":286},[939],{"type":34,"value":797},{"type":28,"tag":242,"props":941,"children":942},{"style":266},[943],{"type":34,"value":294},{"type":28,"tag":242,"props":945,"children":946},{"class":244,"line":458},[947],{"type":28,"tag":242,"props":948,"children":949},{"style":266},[950],{"type":34,"value":447},{"type":28,"tag":242,"props":952,"children":953},{"class":244,"line":496},[954],{"type":28,"tag":242,"props":955,"children":956},{"emptyLinePlaceholder":12},[957],{"type":34,"value":324},{"type":28,"tag":242,"props":959,"children":960},{"class":244,"line":524},[961,965],{"type":28,"tag":242,"props":962,"children":963},{"style":856},[964],{"type":34,"value":859},{"type":28,"tag":242,"props":966,"children":967},{"style":862},[968],{"type":34,"value":865},{"type":28,"tag":242,"props":970,"children":971},{"class":244,"line":532},[972,976,980,984,988,992,996,1000],{"type":28,"tag":242,"props":973,"children":974},{"style":249},[975],{"type":34,"value":333},{"type":28,"tag":242,"props":977,"children":978},{"style":249},[979],{"type":34,"value":468},{"type":28,"tag":242,"props":981,"children":982},{"style":336},[983],{"type":34,"value":554},{"type":28,"tag":242,"props":985,"children":986},{"style":266},[987],{"type":34,"value":343},{"type":28,"tag":242,"props":989,"children":990},{"style":249},[991],{"type":34,"value":348},{"type":28,"tag":242,"props":993,"children":994},{"style":351},[995],{"type":34,"value":797},{"type":28,"tag":242,"props":997,"children":998},{"style":266},[999],{"type":34,"value":371},{"type":28,"tag":242,"props":1001,"children":1002},{"style":266},[1003],{"type":34,"value":269},{"type":28,"tag":242,"props":1005,"children":1006},{"class":244,"line":540},[1007,1011,1015,1019,1023,1027,1031,1035,1039,1043],{"type":28,"tag":242,"props":1008,"children":1009},{"style":382},[1010],{"type":34,"value":385},{"type":28,"tag":242,"props":1012,"children":1013},{"style":266},[1014],{"type":34,"value":390},{"type":28,"tag":242,"props":1016,"children":1017},{"style":286},[1018],{"type":34,"value":395},{"type":28,"tag":242,"props":1020,"children":1021},{"style":398},[1022],{"type":34,"value":401},{"type":28,"tag":242,"props":1024,"children":1025},{"style":382},[1026],{"type":34,"value":658},{"type":28,"tag":242,"props":1028,"children":1029},{"style":266},[1030],{"type":34,"value":390},{"type":28,"tag":242,"props":1032,"children":1033},{"style":286},[1034],{"type":34,"value":426},{"type":28,"tag":242,"props":1036,"children":1037},{"style":398},[1038],{"type":34,"value":401},{"type":28,"tag":242,"props":1040,"children":1041},{"style":286},[1042],{"type":34,"value":797},{"type":28,"tag":242,"props":1044,"children":1045},{"style":266},[1046],{"type":34,"value":294},{"type":28,"tag":242,"props":1048,"children":1049},{"class":244,"line":577},[1050],{"type":28,"tag":242,"props":1051,"children":1052},{"style":266},[1053],{"type":34,"value":447},{"type":28,"tag":242,"props":1055,"children":1056},{"class":244,"line":605},[1057],{"type":28,"tag":242,"props":1058,"children":1059},{"style":266},[1060],{"type":34,"value":705},{"type":28,"tag":37,"props":1062,"children":1063},{},[1064,1066,1071,1073,1078,1080,1086,1087,1093],{"type":34,"value":1065},"Dans cet exemple, nous avons une classe ",{"type":28,"tag":112,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":34,"value":729},{"type":34,"value":1072}," qui hérite de ",{"type":28,"tag":112,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":34,"value":125},{"type":34,"value":1079},". Un carré étant un cas particulier de rectangle où tous les côtés sont égaux, nous avons redéfini les méthodes ",{"type":28,"tag":112,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":34,"value":1085},"setLargeur",{"type":34,"value":127},{"type":28,"tag":112,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":34,"value":1092},"setHauteur",{"type":34,"value":1094}," pour toujours appliquer la même valeur à la largeur et à la hauteur.",{"type":28,"tag":88,"props":1096,"children":1098},{"id":1097},"problème-avec-le-lsp",[1099],{"type":34,"value":1100},"Problème avec le LSP",{"type":28,"tag":37,"props":1102,"children":1103},{},[1104,1106,1111],{"type":34,"value":1105},"Maintenant, utilisons ces classes dans un programme. Supposons que nous ayons une méthode qui teste les objets ",{"type":28,"tag":112,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":34,"value":125},{"type":34,"value":230},{"type":28,"tag":232,"props":1113,"children":1115},{"className":234,"code":1114,"language":236,"meta":7,"style":7},"public class Main {\n\n    public static void testerRectangle(Rectangle rect) {\n        rect.setLargeur(5);\n        rect.setHauteur(10);\n        int aire = rect.calculerAire();\n        System.out.println(\"Aire attendue : 50, Aire calculée : \" + aire);\n    }\n\n    public static void main(String[] args) {\n        // Test avec un Rectangle\n        Rectangle rect = new Rectangle(2, 3);\n        testerRectangle(rect);\n\n        // Test avec un Carre\n        Carre carre = new Carre(5);\n        testerRectangle(carre);\n    }\n}\n",[1116],{"type":28,"tag":112,"props":1117,"children":1118},{"__ignoreMap":7},[1119,1139,1146,1189,1219,1247,1282,1332,1339,1346,1393,1402,1450,1471,1478,1486,1523,1543,1550],{"type":28,"tag":242,"props":1120,"children":1121},{"class":244,"line":245},[1122,1126,1130,1135],{"type":28,"tag":242,"props":1123,"children":1124},{"style":249},[1125],{"type":34,"value":252},{"type":28,"tag":242,"props":1127,"children":1128},{"style":249},[1129],{"type":34,"value":257},{"type":28,"tag":242,"props":1131,"children":1132},{"style":260},[1133],{"type":34,"value":1134}," Main",{"type":28,"tag":242,"props":1136,"children":1137},{"style":266},[1138],{"type":34,"value":269},{"type":28,"tag":242,"props":1140,"children":1141},{"class":244,"line":272},[1142],{"type":28,"tag":242,"props":1143,"children":1144},{"emptyLinePlaceholder":12},[1145],{"type":34,"value":324},{"type":28,"tag":242,"props":1147,"children":1148},{"class":244,"line":297},[1149,1153,1158,1162,1167,1171,1176,1181,1185],{"type":28,"tag":242,"props":1150,"children":1151},{"style":249},[1152],{"type":34,"value":333},{"type":28,"tag":242,"props":1154,"children":1155},{"style":249},[1156],{"type":34,"value":1157}," static",{"type":28,"tag":242,"props":1159,"children":1160},{"style":249},[1161],{"type":34,"value":468},{"type":28,"tag":242,"props":1163,"children":1164},{"style":336},[1165],{"type":34,"value":1166}," testerRectangle",{"type":28,"tag":242,"props":1168,"children":1169},{"style":266},[1170],{"type":34,"value":343},{"type":28,"tag":242,"props":1172,"children":1174},{"style":1173},"--shiki-default:#CA9EE6;--shiki-dark:#E1E4E8",[1175],{"type":34,"value":125},{"type":28,"tag":242,"props":1177,"children":1178},{"style":351},[1179],{"type":34,"value":1180}," rect",{"type":28,"tag":242,"props":1182,"children":1183},{"style":266},[1184],{"type":34,"value":371},{"type":28,"tag":242,"props":1186,"children":1187},{"style":266},[1188],{"type":34,"value":269},{"type":28,"tag":242,"props":1190,"children":1191},{"class":244,"line":318},[1192,1197,1201,1205,1209,1215],{"type":28,"tag":242,"props":1193,"children":1194},{"style":286},[1195],{"type":34,"value":1196},"        rect",{"type":28,"tag":242,"props":1198,"children":1199},{"style":266},[1200],{"type":34,"value":390},{"type":28,"tag":242,"props":1202,"children":1203},{"style":336},[1204],{"type":34,"value":1085},{"type":28,"tag":242,"props":1206,"children":1207},{"style":266},[1208],{"type":34,"value":343},{"type":28,"tag":242,"props":1210,"children":1212},{"style":1211},"--shiki-default:#EF9F76;--shiki-dark:#79B8FF",[1213],{"type":34,"value":1214},"5",{"type":28,"tag":242,"props":1216,"children":1217},{"style":266},[1218],{"type":34,"value":836},{"type":28,"tag":242,"props":1220,"children":1221},{"class":244,"line":327},[1222,1226,1230,1234,1238,1243],{"type":28,"tag":242,"props":1223,"children":1224},{"style":286},[1225],{"type":34,"value":1196},{"type":28,"tag":242,"props":1227,"children":1228},{"style":266},[1229],{"type":34,"value":390},{"type":28,"tag":242,"props":1231,"children":1232},{"style":336},[1233],{"type":34,"value":1092},{"type":28,"tag":242,"props":1235,"children":1236},{"style":266},[1237],{"type":34,"value":343},{"type":28,"tag":242,"props":1239,"children":1240},{"style":1211},[1241],{"type":34,"value":1242},"10",{"type":28,"tag":242,"props":1244,"children":1245},{"style":266},[1246],{"type":34,"value":836},{"type":28,"tag":242,"props":1248,"children":1249},{"class":244,"line":378},[1250,1255,1260,1264,1268,1272,1277],{"type":28,"tag":242,"props":1251,"children":1252},{"style":249},[1253],{"type":34,"value":1254},"        int",{"type":28,"tag":242,"props":1256,"children":1257},{"style":286},[1258],{"type":34,"value":1259}," aire ",{"type":28,"tag":242,"props":1261,"children":1262},{"style":398},[1263],{"type":34,"value":401},{"type":28,"tag":242,"props":1265,"children":1266},{"style":286},[1267],{"type":34,"value":1180},{"type":28,"tag":242,"props":1269,"children":1270},{"style":266},[1271],{"type":34,"value":390},{"type":28,"tag":242,"props":1273,"children":1274},{"style":336},[1275],{"type":34,"value":1276},"calculerAire",{"type":28,"tag":242,"props":1278,"children":1279},{"style":266},[1280],{"type":34,"value":1281},"();\n",{"type":28,"tag":242,"props":1283,"children":1284},{"class":244,"line":412},[1285,1290,1294,1299,1303,1308,1312,1318,1323,1328],{"type":28,"tag":242,"props":1286,"children":1287},{"style":286},[1288],{"type":34,"value":1289},"        System",{"type":28,"tag":242,"props":1291,"children":1292},{"style":266},[1293],{"type":34,"value":390},{"type":28,"tag":242,"props":1295,"children":1296},{"style":286},[1297],{"type":34,"value":1298},"out",{"type":28,"tag":242,"props":1300,"children":1301},{"style":266},[1302],{"type":34,"value":390},{"type":28,"tag":242,"props":1304,"children":1305},{"style":336},[1306],{"type":34,"value":1307},"println",{"type":28,"tag":242,"props":1309,"children":1310},{"style":266},[1311],{"type":34,"value":343},{"type":28,"tag":242,"props":1313,"children":1315},{"style":1314},"--shiki-default:#A6D189;--shiki-dark:#9ECBFF",[1316],{"type":34,"value":1317},"\"Aire attendue : 50, Aire calculée : \"",{"type":28,"tag":242,"props":1319,"children":1320},{"style":398},[1321],{"type":34,"value":1322}," +",{"type":28,"tag":242,"props":1324,"children":1325},{"style":286},[1326],{"type":34,"value":1327}," aire",{"type":28,"tag":242,"props":1329,"children":1330},{"style":266},[1331],{"type":34,"value":836},{"type":28,"tag":242,"props":1333,"children":1334},{"class":244,"line":441},[1335],{"type":28,"tag":242,"props":1336,"children":1337},{"style":266},[1338],{"type":34,"value":447},{"type":28,"tag":242,"props":1340,"children":1341},{"class":244,"line":450},[1342],{"type":28,"tag":242,"props":1343,"children":1344},{"emptyLinePlaceholder":12},[1345],{"type":34,"value":324},{"type":28,"tag":242,"props":1347,"children":1348},{"class":244,"line":458},[1349,1353,1357,1361,1366,1370,1375,1380,1385,1389],{"type":28,"tag":242,"props":1350,"children":1351},{"style":249},[1352],{"type":34,"value":333},{"type":28,"tag":242,"props":1354,"children":1355},{"style":249},[1356],{"type":34,"value":1157},{"type":28,"tag":242,"props":1358,"children":1359},{"style":249},[1360],{"type":34,"value":468},{"type":28,"tag":242,"props":1362,"children":1363},{"style":336},[1364],{"type":34,"value":1365}," main",{"type":28,"tag":242,"props":1367,"children":1368},{"style":266},[1369],{"type":34,"value":343},{"type":28,"tag":242,"props":1371,"children":1372},{"style":249},[1373],{"type":34,"value":1374},"String",{"type":28,"tag":242,"props":1376,"children":1377},{"style":266},[1378],{"type":34,"value":1379},"[]",{"type":28,"tag":242,"props":1381,"children":1382},{"style":351},[1383],{"type":34,"value":1384}," args",{"type":28,"tag":242,"props":1386,"children":1387},{"style":266},[1388],{"type":34,"value":371},{"type":28,"tag":242,"props":1390,"children":1391},{"style":266},[1392],{"type":34,"value":269},{"type":28,"tag":242,"props":1394,"children":1395},{"class":244,"line":496},[1396],{"type":28,"tag":242,"props":1397,"children":1399},{"style":1398},"--shiki-default:#737994;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit",[1400],{"type":34,"value":1401},"        // Test avec un Rectangle\n",{"type":28,"tag":242,"props":1403,"children":1404},{"class":244,"line":524},[1405,1410,1415,1419,1424,1428,1432,1437,1441,1446],{"type":28,"tag":242,"props":1406,"children":1407},{"style":1173},[1408],{"type":34,"value":1409},"        Rectangle",{"type":28,"tag":242,"props":1411,"children":1412},{"style":286},[1413],{"type":34,"value":1414}," rect ",{"type":28,"tag":242,"props":1416,"children":1417},{"style":398},[1418],{"type":34,"value":401},{"type":28,"tag":242,"props":1420,"children":1421},{"style":249},[1422],{"type":34,"value":1423}," new",{"type":28,"tag":242,"props":1425,"children":1426},{"style":336},[1427],{"type":34,"value":263},{"type":28,"tag":242,"props":1429,"children":1430},{"style":266},[1431],{"type":34,"value":343},{"type":28,"tag":242,"props":1433,"children":1434},{"style":1211},[1435],{"type":34,"value":1436},"2",{"type":28,"tag":242,"props":1438,"children":1439},{"style":266},[1440],{"type":34,"value":358},{"type":28,"tag":242,"props":1442,"children":1443},{"style":1211},[1444],{"type":34,"value":1445}," 3",{"type":28,"tag":242,"props":1447,"children":1448},{"style":266},[1449],{"type":34,"value":836},{"type":28,"tag":242,"props":1451,"children":1452},{"class":244,"line":532},[1453,1458,1462,1467],{"type":28,"tag":242,"props":1454,"children":1455},{"style":336},[1456],{"type":34,"value":1457},"        testerRectangle",{"type":28,"tag":242,"props":1459,"children":1460},{"style":266},[1461],{"type":34,"value":343},{"type":28,"tag":242,"props":1463,"children":1464},{"style":286},[1465],{"type":34,"value":1466},"rect",{"type":28,"tag":242,"props":1468,"children":1469},{"style":266},[1470],{"type":34,"value":836},{"type":28,"tag":242,"props":1472,"children":1473},{"class":244,"line":540},[1474],{"type":28,"tag":242,"props":1475,"children":1476},{"emptyLinePlaceholder":12},[1477],{"type":34,"value":324},{"type":28,"tag":242,"props":1479,"children":1480},{"class":244,"line":577},[1481],{"type":28,"tag":242,"props":1482,"children":1483},{"style":1398},[1484],{"type":34,"value":1485},"        // Test avec un Carre\n",{"type":28,"tag":242,"props":1487,"children":1488},{"class":244,"line":605},[1489,1494,1499,1503,1507,1511,1515,1519],{"type":28,"tag":242,"props":1490,"children":1491},{"style":1173},[1492],{"type":34,"value":1493},"        Carre",{"type":28,"tag":242,"props":1495,"children":1496},{"style":286},[1497],{"type":34,"value":1498}," carre ",{"type":28,"tag":242,"props":1500,"children":1501},{"style":398},[1502],{"type":34,"value":401},{"type":28,"tag":242,"props":1504,"children":1505},{"style":249},[1506],{"type":34,"value":1423},{"type":28,"tag":242,"props":1508,"children":1509},{"style":336},[1510],{"type":34,"value":753},{"type":28,"tag":242,"props":1512,"children":1513},{"style":266},[1514],{"type":34,"value":343},{"type":28,"tag":242,"props":1516,"children":1517},{"style":1211},[1518],{"type":34,"value":1214},{"type":28,"tag":242,"props":1520,"children":1521},{"style":266},[1522],{"type":34,"value":836},{"type":28,"tag":242,"props":1524,"children":1525},{"class":244,"line":613},[1526,1530,1534,1539],{"type":28,"tag":242,"props":1527,"children":1528},{"style":336},[1529],{"type":34,"value":1457},{"type":28,"tag":242,"props":1531,"children":1532},{"style":266},[1533],{"type":34,"value":343},{"type":28,"tag":242,"props":1535,"children":1536},{"style":286},[1537],{"type":34,"value":1538},"carre",{"type":28,"tag":242,"props":1540,"children":1541},{"style":266},[1542],{"type":34,"value":836},{"type":28,"tag":242,"props":1544,"children":1545},{"class":244,"line":621},[1546],{"type":28,"tag":242,"props":1547,"children":1548},{"style":266},[1549],{"type":34,"value":447},{"type":28,"tag":242,"props":1551,"children":1552},{"class":244,"line":647},[1553],{"type":28,"tag":242,"props":1554,"children":1555},{"style":266},[1556],{"type":34,"value":705},{"type":28,"tag":88,"props":1558,"children":1560},{"id":1559},"résultat",[1561],{"type":34,"value":1562},"Résultat :",{"type":28,"tag":1564,"props":1565,"children":1566},"ul",{},[1567,1580],{"type":28,"tag":1568,"props":1569,"children":1570},"li",{},[1571,1573,1578],{"type":34,"value":1572},"Avec l'objet ",{"type":28,"tag":112,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":34,"value":125},{"type":34,"value":1579},", tout fonctionne comme prévu. L'aire calculée sera de 50 (5 * 10).",{"type":28,"tag":1568,"props":1581,"children":1582},{},[1583,1584,1589,1591,1597],{"type":34,"value":1572},{"type":28,"tag":112,"props":1585,"children":1587},{"className":1586},[],[1588],{"type":34,"value":729},{"type":34,"value":1590},", cependant, le calcul ne donnera pas le résultat attendu. En appelant ",{"type":28,"tag":112,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":34,"value":1596},"setHauteur(10)",{"type":34,"value":1598},", nous changeons aussi la largeur à 10, et l'aire calculée sera 100 au lieu de 50.",{"type":28,"tag":37,"props":1600,"children":1601},{},[1602,1604,1609,1611,1616,1618,1623],{"type":34,"value":1603},"Ce comportement brise le LSP, car la classe ",{"type":28,"tag":112,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":34,"value":729},{"type":34,"value":1610}," ne respecte pas les attentes fixées par ",{"type":28,"tag":112,"props":1612,"children":1614},{"className":1613},[],[1615],{"type":34,"value":125},{"type":34,"value":1617},". Cela peut causer des bugs ou des comportements inattendus dans les programmes qui s’attendent à ce qu’un ",{"type":28,"tag":112,"props":1619,"children":1621},{"className":1620},[],[1622],{"type":34,"value":125},{"type":34,"value":1624}," fonctionne d’une certaine manière.",{"type":28,"tag":73,"props":1626,"children":1627},{},[],{"type":28,"tag":29,"props":1629,"children":1631},{"id":1630},"exemple-correct-respecter-le-lsp-ce-quil-faut-faire",[1632],{"type":34,"value":1633},"Exemple correct - Respecter le LSP : Ce qu’il faut faire",{"type":28,"tag":37,"props":1635,"children":1636},{},[1637,1639,1644,1645,1650],{"type":34,"value":1638},"Pour respecter le principe de substitution de Liskov, nous devons nous assurer que les sous-classes n'altèrent pas le comportement attendu de la classe de base. Dans le cas du ",{"type":28,"tag":112,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":34,"value":125},{"type":34,"value":210},{"type":28,"tag":112,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":34,"value":729},{"type":34,"value":1651},", le problème vient du fait que le carré redéfinit la manière dont les dimensions sont définies, brisant ainsi le comportement du rectangle.",{"type":28,"tag":88,"props":1653,"children":1655},{"id":1654},"solution-séparer-les-concepts",[1656],{"type":34,"value":1657},"Solution : Séparer les concepts",{"type":28,"tag":37,"props":1659,"children":1660},{},[1661,1663,1668,1670,1675],{"type":34,"value":1662},"Une solution consiste à ne pas faire de ",{"type":28,"tag":112,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":34,"value":729},{"type":34,"value":1669}," une sous-classe de ",{"type":28,"tag":112,"props":1671,"children":1673},{"className":1672},[],[1674],{"type":34,"value":125},{"type":34,"value":1676},". Bien que mathématiquement, un carré soit un type particulier de rectangle, en termes de conception orientée objet, il est souvent préférable de modéliser ces concepts de manière distincte pour éviter de briser le LSP.",{"type":28,"tag":88,"props":1678,"children":1680},{"id":1679},"nouvelle-conception-classes-indépendantes-rectangle-et-carre",[1681,1683,1688,1689],{"type":34,"value":1682},"Nouvelle conception : Classes indépendantes ",{"type":28,"tag":112,"props":1684,"children":1686},{"className":1685},[],[1687],{"type":34,"value":125},{"type":34,"value":127},{"type":28,"tag":112,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":34,"value":729},{"type":28,"tag":37,"props":1695,"children":1696},{},[1697],{"type":34,"value":1698},"Voici comment nous pourrions concevoir cela correctement :",{"type":28,"tag":88,"props":1700,"children":1702},{"id":1701},"classe-rectangle-1",[1703,1704,1709],{"type":34,"value":223},{"type":28,"tag":112,"props":1705,"children":1707},{"className":1706},[],[1708],{"type":34,"value":125},{"type":34,"value":230},{"type":28,"tag":232,"props":1711,"children":1712},{"className":234,"code":235,"language":236,"meta":7,"style":7},[1713],{"type":28,"tag":112,"props":1714,"children":1715},{"__ignoreMap":7},[1716,1735,1754,1773,1780,1823,1850,1877,1884,1891,1926,1953,1960,1967,2002,2029,2036,2043,2066,2105,2112],{"type":28,"tag":242,"props":1717,"children":1718},{"class":244,"line":245},[1719,1723,1727,1731],{"type":28,"tag":242,"props":1720,"children":1721},{"style":249},[1722],{"type":34,"value":252},{"type":28,"tag":242,"props":1724,"children":1725},{"style":249},[1726],{"type":34,"value":257},{"type":28,"tag":242,"props":1728,"children":1729},{"style":260},[1730],{"type":34,"value":263},{"type":28,"tag":242,"props":1732,"children":1733},{"style":266},[1734],{"type":34,"value":269},{"type":28,"tag":242,"props":1736,"children":1737},{"class":244,"line":272},[1738,1742,1746,1750],{"type":28,"tag":242,"props":1739,"children":1740},{"style":249},[1741],{"type":34,"value":278},{"type":28,"tag":242,"props":1743,"children":1744},{"style":249},[1745],{"type":34,"value":283},{"type":28,"tag":242,"props":1747,"children":1748},{"style":286},[1749],{"type":34,"value":289},{"type":28,"tag":242,"props":1751,"children":1752},{"style":266},[1753],{"type":34,"value":294},{"type":28,"tag":242,"props":1755,"children":1756},{"class":244,"line":297},[1757,1761,1765,1769],{"type":28,"tag":242,"props":1758,"children":1759},{"style":249},[1760],{"type":34,"value":278},{"type":28,"tag":242,"props":1762,"children":1763},{"style":249},[1764],{"type":34,"value":283},{"type":28,"tag":242,"props":1766,"children":1767},{"style":286},[1768],{"type":34,"value":311},{"type":28,"tag":242,"props":1770,"children":1771},{"style":266},[1772],{"type":34,"value":294},{"type":28,"tag":242,"props":1774,"children":1775},{"class":244,"line":318},[1776],{"type":28,"tag":242,"props":1777,"children":1778},{"emptyLinePlaceholder":12},[1779],{"type":34,"value":324},{"type":28,"tag":242,"props":1781,"children":1782},{"class":244,"line":327},[1783,1787,1791,1795,1799,1803,1807,1811,1815,1819],{"type":28,"tag":242,"props":1784,"children":1785},{"style":249},[1786],{"type":34,"value":333},{"type":28,"tag":242,"props":1788,"children":1789},{"style":336},[1790],{"type":34,"value":263},{"type":28,"tag":242,"props":1792,"children":1793},{"style":266},[1794],{"type":34,"value":343},{"type":28,"tag":242,"props":1796,"children":1797},{"style":249},[1798],{"type":34,"value":348},{"type":28,"tag":242,"props":1800,"children":1801},{"style":351},[1802],{"type":34,"value":289},{"type":28,"tag":242,"props":1804,"children":1805},{"style":266},[1806],{"type":34,"value":358},{"type":28,"tag":242,"props":1808,"children":1809},{"style":249},[1810],{"type":34,"value":283},{"type":28,"tag":242,"props":1812,"children":1813},{"style":351},[1814],{"type":34,"value":311},{"type":28,"tag":242,"props":1816,"children":1817},{"style":266},[1818],{"type":34,"value":371},{"type":28,"tag":242,"props":1820,"children":1821},{"style":266},[1822],{"type":34,"value":269},{"type":28,"tag":242,"props":1824,"children":1825},{"class":244,"line":378},[1826,1830,1834,1838,1842,1846],{"type":28,"tag":242,"props":1827,"children":1828},{"style":382},[1829],{"type":34,"value":385},{"type":28,"tag":242,"props":1831,"children":1832},{"style":266},[1833],{"type":34,"value":390},{"type":28,"tag":242,"props":1835,"children":1836},{"style":286},[1837],{"type":34,"value":395},{"type":28,"tag":242,"props":1839,"children":1840},{"style":398},[1841],{"type":34,"value":401},{"type":28,"tag":242,"props":1843,"children":1844},{"style":286},[1845],{"type":34,"value":289},{"type":28,"tag":242,"props":1847,"children":1848},{"style":266},[1849],{"type":34,"value":294},{"type":28,"tag":242,"props":1851,"children":1852},{"class":244,"line":412},[1853,1857,1861,1865,1869,1873],{"type":28,"tag":242,"props":1854,"children":1855},{"style":382},[1856],{"type":34,"value":385},{"type":28,"tag":242,"props":1858,"children":1859},{"style":266},[1860],{"type":34,"value":390},{"type":28,"tag":242,"props":1862,"children":1863},{"style":286},[1864],{"type":34,"value":426},{"type":28,"tag":242,"props":1866,"children":1867},{"style":398},[1868],{"type":34,"value":401},{"type":28,"tag":242,"props":1870,"children":1871},{"style":286},[1872],{"type":34,"value":311},{"type":28,"tag":242,"props":1874,"children":1875},{"style":266},[1876],{"type":34,"value":294},{"type":28,"tag":242,"props":1878,"children":1879},{"class":244,"line":441},[1880],{"type":28,"tag":242,"props":1881,"children":1882},{"style":266},[1883],{"type":34,"value":447},{"type":28,"tag":242,"props":1885,"children":1886},{"class":244,"line":450},[1887],{"type":28,"tag":242,"props":1888,"children":1889},{"emptyLinePlaceholder":12},[1890],{"type":34,"value":324},{"type":28,"tag":242,"props":1892,"children":1893},{"class":244,"line":458},[1894,1898,1902,1906,1910,1914,1918,1922],{"type":28,"tag":242,"props":1895,"children":1896},{"style":249},[1897],{"type":34,"value":333},{"type":28,"tag":242,"props":1899,"children":1900},{"style":249},[1901],{"type":34,"value":468},{"type":28,"tag":242,"props":1903,"children":1904},{"style":336},[1905],{"type":34,"value":473},{"type":28,"tag":242,"props":1907,"children":1908},{"style":266},[1909],{"type":34,"value":343},{"type":28,"tag":242,"props":1911,"children":1912},{"style":249},[1913],{"type":34,"value":348},{"type":28,"tag":242,"props":1915,"children":1916},{"style":351},[1917],{"type":34,"value":289},{"type":28,"tag":242,"props":1919,"children":1920},{"style":266},[1921],{"type":34,"value":371},{"type":28,"tag":242,"props":1923,"children":1924},{"style":266},[1925],{"type":34,"value":269},{"type":28,"tag":242,"props":1927,"children":1928},{"class":244,"line":496},[1929,1933,1937,1941,1945,1949],{"type":28,"tag":242,"props":1930,"children":1931},{"style":382},[1932],{"type":34,"value":385},{"type":28,"tag":242,"props":1934,"children":1935},{"style":266},[1936],{"type":34,"value":390},{"type":28,"tag":242,"props":1938,"children":1939},{"style":286},[1940],{"type":34,"value":395},{"type":28,"tag":242,"props":1942,"children":1943},{"style":398},[1944],{"type":34,"value":401},{"type":28,"tag":242,"props":1946,"children":1947},{"style":286},[1948],{"type":34,"value":289},{"type":28,"tag":242,"props":1950,"children":1951},{"style":266},[1952],{"type":34,"value":294},{"type":28,"tag":242,"props":1954,"children":1955},{"class":244,"line":524},[1956],{"type":28,"tag":242,"props":1957,"children":1958},{"style":266},[1959],{"type":34,"value":447},{"type":28,"tag":242,"props":1961,"children":1962},{"class":244,"line":532},[1963],{"type":28,"tag":242,"props":1964,"children":1965},{"emptyLinePlaceholder":12},[1966],{"type":34,"value":324},{"type":28,"tag":242,"props":1968,"children":1969},{"class":244,"line":540},[1970,1974,1978,1982,1986,1990,1994,1998],{"type":28,"tag":242,"props":1971,"children":1972},{"style":249},[1973],{"type":34,"value":333},{"type":28,"tag":242,"props":1975,"children":1976},{"style":249},[1977],{"type":34,"value":468},{"type":28,"tag":242,"props":1979,"children":1980},{"style":336},[1981],{"type":34,"value":554},{"type":28,"tag":242,"props":1983,"children":1984},{"style":266},[1985],{"type":34,"value":343},{"type":28,"tag":242,"props":1987,"children":1988},{"style":249},[1989],{"type":34,"value":348},{"type":28,"tag":242,"props":1991,"children":1992},{"style":351},[1993],{"type":34,"value":311},{"type":28,"tag":242,"props":1995,"children":1996},{"style":266},[1997],{"type":34,"value":371},{"type":28,"tag":242,"props":1999,"children":2000},{"style":266},[2001],{"type":34,"value":269},{"type":28,"tag":242,"props":2003,"children":2004},{"class":244,"line":577},[2005,2009,2013,2017,2021,2025],{"type":28,"tag":242,"props":2006,"children":2007},{"style":382},[2008],{"type":34,"value":385},{"type":28,"tag":242,"props":2010,"children":2011},{"style":266},[2012],{"type":34,"value":390},{"type":28,"tag":242,"props":2014,"children":2015},{"style":286},[2016],{"type":34,"value":426},{"type":28,"tag":242,"props":2018,"children":2019},{"style":398},[2020],{"type":34,"value":401},{"type":28,"tag":242,"props":2022,"children":2023},{"style":286},[2024],{"type":34,"value":311},{"type":28,"tag":242,"props":2026,"children":2027},{"style":266},[2028],{"type":34,"value":294},{"type":28,"tag":242,"props":2030,"children":2031},{"class":244,"line":605},[2032],{"type":28,"tag":242,"props":2033,"children":2034},{"style":266},[2035],{"type":34,"value":447},{"type":28,"tag":242,"props":2037,"children":2038},{"class":244,"line":613},[2039],{"type":28,"tag":242,"props":2040,"children":2041},{"emptyLinePlaceholder":12},[2042],{"type":34,"value":324},{"type":28,"tag":242,"props":2044,"children":2045},{"class":244,"line":621},[2046,2050,2054,2058,2062],{"type":28,"tag":242,"props":2047,"children":2048},{"style":249},[2049],{"type":34,"value":333},{"type":28,"tag":242,"props":2051,"children":2052},{"style":249},[2053],{"type":34,"value":283},{"type":28,"tag":242,"props":2055,"children":2056},{"style":336},[2057],{"type":34,"value":635},{"type":28,"tag":242,"props":2059,"children":2060},{"style":266},[2061],{"type":34,"value":640},{"type":28,"tag":242,"props":2063,"children":2064},{"style":266},[2065],{"type":34,"value":269},{"type":28,"tag":242,"props":2067,"children":2068},{"class":244,"line":647},[2069,2073,2077,2081,2085,2089,2093,2097,2101],{"type":28,"tag":242,"props":2070,"children":2071},{"style":249},[2072],{"type":34,"value":653},{"type":28,"tag":242,"props":2074,"children":2075},{"style":382},[2076],{"type":34,"value":658},{"type":28,"tag":242,"props":2078,"children":2079},{"style":266},[2080],{"type":34,"value":390},{"type":28,"tag":242,"props":2082,"children":2083},{"style":286},[2084],{"type":34,"value":395},{"type":28,"tag":242,"props":2086,"children":2087},{"style":398},[2088],{"type":34,"value":671},{"type":28,"tag":242,"props":2090,"children":2091},{"style":382},[2092],{"type":34,"value":658},{"type":28,"tag":242,"props":2094,"children":2095},{"style":266},[2096],{"type":34,"value":390},{"type":28,"tag":242,"props":2098,"children":2099},{"style":286},[2100],{"type":34,"value":684},{"type":28,"tag":242,"props":2102,"children":2103},{"style":266},[2104],{"type":34,"value":294},{"type":28,"tag":242,"props":2106,"children":2107},{"class":244,"line":691},[2108],{"type":28,"tag":242,"props":2109,"children":2110},{"style":266},[2111],{"type":34,"value":447},{"type":28,"tag":242,"props":2113,"children":2114},{"class":244,"line":699},[2115],{"type":28,"tag":242,"props":2116,"children":2117},{"style":266},[2118],{"type":34,"value":705},{"type":28,"tag":37,"props":2120,"children":2121},{},[2122,2124,2129],{"type":34,"value":2123},"La classe ",{"type":28,"tag":112,"props":2125,"children":2127},{"className":2126},[],[2128],{"type":34,"value":125},{"type":34,"value":2130}," reste inchangée.",{"type":28,"tag":88,"props":2132,"children":2134},{"id":2133},"classe-carre-indépendante",[2135,2136,2141],{"type":34,"value":223},{"type":28,"tag":112,"props":2137,"children":2139},{"className":2138},[],[2140],{"type":34,"value":729},{"type":34,"value":2142}," (indépendante) :",{"type":28,"tag":232,"props":2144,"children":2146},{"className":234,"code":2145,"language":236,"meta":7,"style":7},"public class Carre {\n    private int taille;\n\n    public Carre(int taille) {\n        this.taille = taille;\n    }\n\n    public void setTaille(int taille) {\n        this.taille = taille;\n    }\n\n    public int calculerAire() {\n        return this.taille * this.taille;\n    }\n}\n",[2147],{"type":28,"tag":112,"props":2148,"children":2149},{"__ignoreMap":7},[2150,2169,2189,2196,2227,2255,2262,2269,2305,2332,2339,2346,2369,2408,2415],{"type":28,"tag":242,"props":2151,"children":2152},{"class":244,"line":245},[2153,2157,2161,2165],{"type":28,"tag":242,"props":2154,"children":2155},{"style":249},[2156],{"type":34,"value":252},{"type":28,"tag":242,"props":2158,"children":2159},{"style":249},[2160],{"type":34,"value":257},{"type":28,"tag":242,"props":2162,"children":2163},{"style":260},[2164],{"type":34,"value":753},{"type":28,"tag":242,"props":2166,"children":2167},{"style":266},[2168],{"type":34,"value":269},{"type":28,"tag":242,"props":2170,"children":2171},{"class":244,"line":272},[2172,2177,2181,2185],{"type":28,"tag":242,"props":2173,"children":2174},{"style":249},[2175],{"type":34,"value":2176},"    private",{"type":28,"tag":242,"props":2178,"children":2179},{"style":249},[2180],{"type":34,"value":283},{"type":28,"tag":242,"props":2182,"children":2183},{"style":286},[2184],{"type":34,"value":797},{"type":28,"tag":242,"props":2186,"children":2187},{"style":266},[2188],{"type":34,"value":294},{"type":28,"tag":242,"props":2190,"children":2191},{"class":244,"line":297},[2192],{"type":28,"tag":242,"props":2193,"children":2194},{"emptyLinePlaceholder":12},[2195],{"type":34,"value":324},{"type":28,"tag":242,"props":2197,"children":2198},{"class":244,"line":318},[2199,2203,2207,2211,2215,2219,2223],{"type":28,"tag":242,"props":2200,"children":2201},{"style":249},[2202],{"type":34,"value":333},{"type":28,"tag":242,"props":2204,"children":2205},{"style":336},[2206],{"type":34,"value":753},{"type":28,"tag":242,"props":2208,"children":2209},{"style":266},[2210],{"type":34,"value":343},{"type":28,"tag":242,"props":2212,"children":2213},{"style":249},[2214],{"type":34,"value":348},{"type":28,"tag":242,"props":2216,"children":2217},{"style":351},[2218],{"type":34,"value":797},{"type":28,"tag":242,"props":2220,"children":2221},{"style":266},[2222],{"type":34,"value":371},{"type":28,"tag":242,"props":2224,"children":2225},{"style":266},[2226],{"type":34,"value":269},{"type":28,"tag":242,"props":2228,"children":2229},{"class":244,"line":327},[2230,2234,2238,2243,2247,2251],{"type":28,"tag":242,"props":2231,"children":2232},{"style":382},[2233],{"type":34,"value":385},{"type":28,"tag":242,"props":2235,"children":2236},{"style":266},[2237],{"type":34,"value":390},{"type":28,"tag":242,"props":2239,"children":2240},{"style":286},[2241],{"type":34,"value":2242},"taille ",{"type":28,"tag":242,"props":2244,"children":2245},{"style":398},[2246],{"type":34,"value":401},{"type":28,"tag":242,"props":2248,"children":2249},{"style":286},[2250],{"type":34,"value":797},{"type":28,"tag":242,"props":2252,"children":2253},{"style":266},[2254],{"type":34,"value":294},{"type":28,"tag":242,"props":2256,"children":2257},{"class":244,"line":378},[2258],{"type":28,"tag":242,"props":2259,"children":2260},{"style":266},[2261],{"type":34,"value":447},{"type":28,"tag":242,"props":2263,"children":2264},{"class":244,"line":412},[2265],{"type":28,"tag":242,"props":2266,"children":2267},{"emptyLinePlaceholder":12},[2268],{"type":34,"value":324},{"type":28,"tag":242,"props":2270,"children":2271},{"class":244,"line":441},[2272,2276,2280,2285,2289,2293,2297,2301],{"type":28,"tag":242,"props":2273,"children":2274},{"style":249},[2275],{"type":34,"value":333},{"type":28,"tag":242,"props":2277,"children":2278},{"style":249},[2279],{"type":34,"value":468},{"type":28,"tag":242,"props":2281,"children":2282},{"style":336},[2283],{"type":34,"value":2284}," setTaille",{"type":28,"tag":242,"props":2286,"children":2287},{"style":266},[2288],{"type":34,"value":343},{"type":28,"tag":242,"props":2290,"children":2291},{"style":249},[2292],{"type":34,"value":348},{"type":28,"tag":242,"props":2294,"children":2295},{"style":351},[2296],{"type":34,"value":797},{"type":28,"tag":242,"props":2298,"children":2299},{"style":266},[2300],{"type":34,"value":371},{"type":28,"tag":242,"props":2302,"children":2303},{"style":266},[2304],{"type":34,"value":269},{"type":28,"tag":242,"props":2306,"children":2307},{"class":244,"line":450},[2308,2312,2316,2320,2324,2328],{"type":28,"tag":242,"props":2309,"children":2310},{"style":382},[2311],{"type":34,"value":385},{"type":28,"tag":242,"props":2313,"children":2314},{"style":266},[2315],{"type":34,"value":390},{"type":28,"tag":242,"props":2317,"children":2318},{"style":286},[2319],{"type":34,"value":2242},{"type":28,"tag":242,"props":2321,"children":2322},{"style":398},[2323],{"type":34,"value":401},{"type":28,"tag":242,"props":2325,"children":2326},{"style":286},[2327],{"type":34,"value":797},{"type":28,"tag":242,"props":2329,"children":2330},{"style":266},[2331],{"type":34,"value":294},{"type":28,"tag":242,"props":2333,"children":2334},{"class":244,"line":458},[2335],{"type":28,"tag":242,"props":2336,"children":2337},{"style":266},[2338],{"type":34,"value":447},{"type":28,"tag":242,"props":2340,"children":2341},{"class":244,"line":496},[2342],{"type":28,"tag":242,"props":2343,"children":2344},{"emptyLinePlaceholder":12},[2345],{"type":34,"value":324},{"type":28,"tag":242,"props":2347,"children":2348},{"class":244,"line":524},[2349,2353,2357,2361,2365],{"type":28,"tag":242,"props":2350,"children":2351},{"style":249},[2352],{"type":34,"value":333},{"type":28,"tag":242,"props":2354,"children":2355},{"style":249},[2356],{"type":34,"value":283},{"type":28,"tag":242,"props":2358,"children":2359},{"style":336},[2360],{"type":34,"value":635},{"type":28,"tag":242,"props":2362,"children":2363},{"style":266},[2364],{"type":34,"value":640},{"type":28,"tag":242,"props":2366,"children":2367},{"style":266},[2368],{"type":34,"value":269},{"type":28,"tag":242,"props":2370,"children":2371},{"class":244,"line":532},[2372,2376,2380,2384,2388,2392,2396,2400,2404],{"type":28,"tag":242,"props":2373,"children":2374},{"style":249},[2375],{"type":34,"value":653},{"type":28,"tag":242,"props":2377,"children":2378},{"style":382},[2379],{"type":34,"value":658},{"type":28,"tag":242,"props":2381,"children":2382},{"style":266},[2383],{"type":34,"value":390},{"type":28,"tag":242,"props":2385,"children":2386},{"style":286},[2387],{"type":34,"value":2242},{"type":28,"tag":242,"props":2389,"children":2390},{"style":398},[2391],{"type":34,"value":671},{"type":28,"tag":242,"props":2393,"children":2394},{"style":382},[2395],{"type":34,"value":658},{"type":28,"tag":242,"props":2397,"children":2398},{"style":266},[2399],{"type":34,"value":390},{"type":28,"tag":242,"props":2401,"children":2402},{"style":286},[2403],{"type":34,"value":823},{"type":28,"tag":242,"props":2405,"children":2406},{"style":266},[2407],{"type":34,"value":294},{"type":28,"tag":242,"props":2409,"children":2410},{"class":244,"line":540},[2411],{"type":28,"tag":242,"props":2412,"children":2413},{"style":266},[2414],{"type":34,"value":447},{"type":28,"tag":242,"props":2416,"children":2417},{"class":244,"line":577},[2418],{"type":28,"tag":242,"props":2419,"children":2420},{"style":266},[2421],{"type":34,"value":705},{"type":28,"tag":37,"props":2423,"children":2424},{},[2425,2427,2432,2434,2439,2441,2446,2448,2453,2455,2460,2462,2467],{"type":34,"value":2426},"Dans cette version, ",{"type":28,"tag":112,"props":2428,"children":2430},{"className":2429},[],[2431],{"type":34,"value":729},{"type":34,"value":2433}," n’hérite plus de ",{"type":28,"tag":112,"props":2435,"children":2437},{"className":2436},[],[2438],{"type":34,"value":125},{"type":34,"value":2440},". Nous avons ainsi une classe ",{"type":28,"tag":112,"props":2442,"children":2444},{"className":2443},[],[2445],{"type":34,"value":729},{"type":34,"value":2447}," totalement indépendante qui suit ses propres règles et n'interfère pas avec les attentes définies pour un ",{"type":28,"tag":112,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":34,"value":125},{"type":34,"value":2454},". Le carré a une seule dimension (",{"type":28,"tag":112,"props":2456,"children":2458},{"className":2457},[],[2459],{"type":34,"value":823},{"type":34,"value":2461},"), et son comportement est cohérent avec son concept sans violer les principes de la classe ",{"type":28,"tag":112,"props":2463,"children":2465},{"className":2464},[],[2466],{"type":34,"value":125},{"type":34,"value":390},{"type":28,"tag":88,"props":2469,"children":2471},{"id":2470},"modification-du-programme-de-test",[2472],{"type":34,"value":2473},"Modification du programme de test :",{"type":28,"tag":37,"props":2475,"children":2476},{},[2477,2479,2484,2486,2491],{"type":34,"value":2478},"Puisque ",{"type":28,"tag":112,"props":2480,"children":2482},{"className":2481},[],[2483],{"type":34,"value":729},{"type":34,"value":2485}," n’est plus une sous-classe de ",{"type":28,"tag":112,"props":2487,"children":2489},{"className":2488},[],[2490],{"type":34,"value":125},{"type":34,"value":2492},", nous devons légèrement modifier notre méthode de test pour respecter cette nouvelle structure.",{"type":28,"tag":232,"props":2494,"children":2496},{"className":234,"code":2495,"language":236,"meta":7,"style":7},"public class Main {\n\n    public static void testerRectangle(Rectangle rect) {\n        rect.setLargeur(5);\n        rect.setHauteur(10);\n        int aire = rect.calculerAire();\n        System.out.println(\"Aire attendue (Rectangle) : 50, Aire calculée : \" + aire);\n    }\n\n    public static void testerCarre(Carre carre) {\n        carre.setTaille(5);\n        int aire = carre.calculerAire();\n        System.out.println(\"Aire attendue (Carre) : 25, Aire calculée : \" + aire);\n    }\n\n    public static void main(String[] args) {\n        // Test avec un Rectangle\n        Rectangle rect = new Rectangle(2, 3);\n        testerRectangle(rect);\n\n        // Test avec un Carre\n        Carre carre = new Carre(5);\n\n\n        testerCarre(carre);\n    }\n}\n",[2497],{"type":28,"tag":112,"props":2498,"children":2499},{"__ignoreMap":7},[2500,2519,2526,2565,2592,2619,2650,2694,2701,2708,2749,2778,2809,2853,2860,2867,2910,2917,2960,2979,2986,2993,3029,3037,3045,3066,3074],{"type":28,"tag":242,"props":2501,"children":2502},{"class":244,"line":245},[2503,2507,2511,2515],{"type":28,"tag":242,"props":2504,"children":2505},{"style":249},[2506],{"type":34,"value":252},{"type":28,"tag":242,"props":2508,"children":2509},{"style":249},[2510],{"type":34,"value":257},{"type":28,"tag":242,"props":2512,"children":2513},{"style":260},[2514],{"type":34,"value":1134},{"type":28,"tag":242,"props":2516,"children":2517},{"style":266},[2518],{"type":34,"value":269},{"type":28,"tag":242,"props":2520,"children":2521},{"class":244,"line":272},[2522],{"type":28,"tag":242,"props":2523,"children":2524},{"emptyLinePlaceholder":12},[2525],{"type":34,"value":324},{"type":28,"tag":242,"props":2527,"children":2528},{"class":244,"line":297},[2529,2533,2537,2541,2545,2549,2553,2557,2561],{"type":28,"tag":242,"props":2530,"children":2531},{"style":249},[2532],{"type":34,"value":333},{"type":28,"tag":242,"props":2534,"children":2535},{"style":249},[2536],{"type":34,"value":1157},{"type":28,"tag":242,"props":2538,"children":2539},{"style":249},[2540],{"type":34,"value":468},{"type":28,"tag":242,"props":2542,"children":2543},{"style":336},[2544],{"type":34,"value":1166},{"type":28,"tag":242,"props":2546,"children":2547},{"style":266},[2548],{"type":34,"value":343},{"type":28,"tag":242,"props":2550,"children":2551},{"style":1173},[2552],{"type":34,"value":125},{"type":28,"tag":242,"props":2554,"children":2555},{"style":351},[2556],{"type":34,"value":1180},{"type":28,"tag":242,"props":2558,"children":2559},{"style":266},[2560],{"type":34,"value":371},{"type":28,"tag":242,"props":2562,"children":2563},{"style":266},[2564],{"type":34,"value":269},{"type":28,"tag":242,"props":2566,"children":2567},{"class":244,"line":318},[2568,2572,2576,2580,2584,2588],{"type":28,"tag":242,"props":2569,"children":2570},{"style":286},[2571],{"type":34,"value":1196},{"type":28,"tag":242,"props":2573,"children":2574},{"style":266},[2575],{"type":34,"value":390},{"type":28,"tag":242,"props":2577,"children":2578},{"style":336},[2579],{"type":34,"value":1085},{"type":28,"tag":242,"props":2581,"children":2582},{"style":266},[2583],{"type":34,"value":343},{"type":28,"tag":242,"props":2585,"children":2586},{"style":1211},[2587],{"type":34,"value":1214},{"type":28,"tag":242,"props":2589,"children":2590},{"style":266},[2591],{"type":34,"value":836},{"type":28,"tag":242,"props":2593,"children":2594},{"class":244,"line":327},[2595,2599,2603,2607,2611,2615],{"type":28,"tag":242,"props":2596,"children":2597},{"style":286},[2598],{"type":34,"value":1196},{"type":28,"tag":242,"props":2600,"children":2601},{"style":266},[2602],{"type":34,"value":390},{"type":28,"tag":242,"props":2604,"children":2605},{"style":336},[2606],{"type":34,"value":1092},{"type":28,"tag":242,"props":2608,"children":2609},{"style":266},[2610],{"type":34,"value":343},{"type":28,"tag":242,"props":2612,"children":2613},{"style":1211},[2614],{"type":34,"value":1242},{"type":28,"tag":242,"props":2616,"children":2617},{"style":266},[2618],{"type":34,"value":836},{"type":28,"tag":242,"props":2620,"children":2621},{"class":244,"line":378},[2622,2626,2630,2634,2638,2642,2646],{"type":28,"tag":242,"props":2623,"children":2624},{"style":249},[2625],{"type":34,"value":1254},{"type":28,"tag":242,"props":2627,"children":2628},{"style":286},[2629],{"type":34,"value":1259},{"type":28,"tag":242,"props":2631,"children":2632},{"style":398},[2633],{"type":34,"value":401},{"type":28,"tag":242,"props":2635,"children":2636},{"style":286},[2637],{"type":34,"value":1180},{"type":28,"tag":242,"props":2639,"children":2640},{"style":266},[2641],{"type":34,"value":390},{"type":28,"tag":242,"props":2643,"children":2644},{"style":336},[2645],{"type":34,"value":1276},{"type":28,"tag":242,"props":2647,"children":2648},{"style":266},[2649],{"type":34,"value":1281},{"type":28,"tag":242,"props":2651,"children":2652},{"class":244,"line":412},[2653,2657,2661,2665,2669,2673,2677,2682,2686,2690],{"type":28,"tag":242,"props":2654,"children":2655},{"style":286},[2656],{"type":34,"value":1289},{"type":28,"tag":242,"props":2658,"children":2659},{"style":266},[2660],{"type":34,"value":390},{"type":28,"tag":242,"props":2662,"children":2663},{"style":286},[2664],{"type":34,"value":1298},{"type":28,"tag":242,"props":2666,"children":2667},{"style":266},[2668],{"type":34,"value":390},{"type":28,"tag":242,"props":2670,"children":2671},{"style":336},[2672],{"type":34,"value":1307},{"type":28,"tag":242,"props":2674,"children":2675},{"style":266},[2676],{"type":34,"value":343},{"type":28,"tag":242,"props":2678,"children":2679},{"style":1314},[2680],{"type":34,"value":2681},"\"Aire attendue (Rectangle) : 50, Aire calculée : \"",{"type":28,"tag":242,"props":2683,"children":2684},{"style":398},[2685],{"type":34,"value":1322},{"type":28,"tag":242,"props":2687,"children":2688},{"style":286},[2689],{"type":34,"value":1327},{"type":28,"tag":242,"props":2691,"children":2692},{"style":266},[2693],{"type":34,"value":836},{"type":28,"tag":242,"props":2695,"children":2696},{"class":244,"line":441},[2697],{"type":28,"tag":242,"props":2698,"children":2699},{"style":266},[2700],{"type":34,"value":447},{"type":28,"tag":242,"props":2702,"children":2703},{"class":244,"line":450},[2704],{"type":28,"tag":242,"props":2705,"children":2706},{"emptyLinePlaceholder":12},[2707],{"type":34,"value":324},{"type":28,"tag":242,"props":2709,"children":2710},{"class":244,"line":458},[2711,2715,2719,2723,2728,2732,2736,2741,2745],{"type":28,"tag":242,"props":2712,"children":2713},{"style":249},[2714],{"type":34,"value":333},{"type":28,"tag":242,"props":2716,"children":2717},{"style":249},[2718],{"type":34,"value":1157},{"type":28,"tag":242,"props":2720,"children":2721},{"style":249},[2722],{"type":34,"value":468},{"type":28,"tag":242,"props":2724,"children":2725},{"style":336},[2726],{"type":34,"value":2727}," testerCarre",{"type":28,"tag":242,"props":2729,"children":2730},{"style":266},[2731],{"type":34,"value":343},{"type":28,"tag":242,"props":2733,"children":2734},{"style":1173},[2735],{"type":34,"value":729},{"type":28,"tag":242,"props":2737,"children":2738},{"style":351},[2739],{"type":34,"value":2740}," carre",{"type":28,"tag":242,"props":2742,"children":2743},{"style":266},[2744],{"type":34,"value":371},{"type":28,"tag":242,"props":2746,"children":2747},{"style":266},[2748],{"type":34,"value":269},{"type":28,"tag":242,"props":2750,"children":2751},{"class":244,"line":496},[2752,2757,2761,2766,2770,2774],{"type":28,"tag":242,"props":2753,"children":2754},{"style":286},[2755],{"type":34,"value":2756},"        carre",{"type":28,"tag":242,"props":2758,"children":2759},{"style":266},[2760],{"type":34,"value":390},{"type":28,"tag":242,"props":2762,"children":2763},{"style":336},[2764],{"type":34,"value":2765},"setTaille",{"type":28,"tag":242,"props":2767,"children":2768},{"style":266},[2769],{"type":34,"value":343},{"type":28,"tag":242,"props":2771,"children":2772},{"style":1211},[2773],{"type":34,"value":1214},{"type":28,"tag":242,"props":2775,"children":2776},{"style":266},[2777],{"type":34,"value":836},{"type":28,"tag":242,"props":2779,"children":2780},{"class":244,"line":524},[2781,2785,2789,2793,2797,2801,2805],{"type":28,"tag":242,"props":2782,"children":2783},{"style":249},[2784],{"type":34,"value":1254},{"type":28,"tag":242,"props":2786,"children":2787},{"style":286},[2788],{"type":34,"value":1259},{"type":28,"tag":242,"props":2790,"children":2791},{"style":398},[2792],{"type":34,"value":401},{"type":28,"tag":242,"props":2794,"children":2795},{"style":286},[2796],{"type":34,"value":2740},{"type":28,"tag":242,"props":2798,"children":2799},{"style":266},[2800],{"type":34,"value":390},{"type":28,"tag":242,"props":2802,"children":2803},{"style":336},[2804],{"type":34,"value":1276},{"type":28,"tag":242,"props":2806,"children":2807},{"style":266},[2808],{"type":34,"value":1281},{"type":28,"tag":242,"props":2810,"children":2811},{"class":244,"line":532},[2812,2816,2820,2824,2828,2832,2836,2841,2845,2849],{"type":28,"tag":242,"props":2813,"children":2814},{"style":286},[2815],{"type":34,"value":1289},{"type":28,"tag":242,"props":2817,"children":2818},{"style":266},[2819],{"type":34,"value":390},{"type":28,"tag":242,"props":2821,"children":2822},{"style":286},[2823],{"type":34,"value":1298},{"type":28,"tag":242,"props":2825,"children":2826},{"style":266},[2827],{"type":34,"value":390},{"type":28,"tag":242,"props":2829,"children":2830},{"style":336},[2831],{"type":34,"value":1307},{"type":28,"tag":242,"props":2833,"children":2834},{"style":266},[2835],{"type":34,"value":343},{"type":28,"tag":242,"props":2837,"children":2838},{"style":1314},[2839],{"type":34,"value":2840},"\"Aire attendue (Carre) : 25, Aire calculée : \"",{"type":28,"tag":242,"props":2842,"children":2843},{"style":398},[2844],{"type":34,"value":1322},{"type":28,"tag":242,"props":2846,"children":2847},{"style":286},[2848],{"type":34,"value":1327},{"type":28,"tag":242,"props":2850,"children":2851},{"style":266},[2852],{"type":34,"value":836},{"type":28,"tag":242,"props":2854,"children":2855},{"class":244,"line":540},[2856],{"type":28,"tag":242,"props":2857,"children":2858},{"style":266},[2859],{"type":34,"value":447},{"type":28,"tag":242,"props":2861,"children":2862},{"class":244,"line":577},[2863],{"type":28,"tag":242,"props":2864,"children":2865},{"emptyLinePlaceholder":12},[2866],{"type":34,"value":324},{"type":28,"tag":242,"props":2868,"children":2869},{"class":244,"line":605},[2870,2874,2878,2882,2886,2890,2894,2898,2902,2906],{"type":28,"tag":242,"props":2871,"children":2872},{"style":249},[2873],{"type":34,"value":333},{"type":28,"tag":242,"props":2875,"children":2876},{"style":249},[2877],{"type":34,"value":1157},{"type":28,"tag":242,"props":2879,"children":2880},{"style":249},[2881],{"type":34,"value":468},{"type":28,"tag":242,"props":2883,"children":2884},{"style":336},[2885],{"type":34,"value":1365},{"type":28,"tag":242,"props":2887,"children":2888},{"style":266},[2889],{"type":34,"value":343},{"type":28,"tag":242,"props":2891,"children":2892},{"style":249},[2893],{"type":34,"value":1374},{"type":28,"tag":242,"props":2895,"children":2896},{"style":266},[2897],{"type":34,"value":1379},{"type":28,"tag":242,"props":2899,"children":2900},{"style":351},[2901],{"type":34,"value":1384},{"type":28,"tag":242,"props":2903,"children":2904},{"style":266},[2905],{"type":34,"value":371},{"type":28,"tag":242,"props":2907,"children":2908},{"style":266},[2909],{"type":34,"value":269},{"type":28,"tag":242,"props":2911,"children":2912},{"class":244,"line":613},[2913],{"type":28,"tag":242,"props":2914,"children":2915},{"style":1398},[2916],{"type":34,"value":1401},{"type":28,"tag":242,"props":2918,"children":2919},{"class":244,"line":621},[2920,2924,2928,2932,2936,2940,2944,2948,2952,2956],{"type":28,"tag":242,"props":2921,"children":2922},{"style":1173},[2923],{"type":34,"value":1409},{"type":28,"tag":242,"props":2925,"children":2926},{"style":286},[2927],{"type":34,"value":1414},{"type":28,"tag":242,"props":2929,"children":2930},{"style":398},[2931],{"type":34,"value":401},{"type":28,"tag":242,"props":2933,"children":2934},{"style":249},[2935],{"type":34,"value":1423},{"type":28,"tag":242,"props":2937,"children":2938},{"style":336},[2939],{"type":34,"value":263},{"type":28,"tag":242,"props":2941,"children":2942},{"style":266},[2943],{"type":34,"value":343},{"type":28,"tag":242,"props":2945,"children":2946},{"style":1211},[2947],{"type":34,"value":1436},{"type":28,"tag":242,"props":2949,"children":2950},{"style":266},[2951],{"type":34,"value":358},{"type":28,"tag":242,"props":2953,"children":2954},{"style":1211},[2955],{"type":34,"value":1445},{"type":28,"tag":242,"props":2957,"children":2958},{"style":266},[2959],{"type":34,"value":836},{"type":28,"tag":242,"props":2961,"children":2962},{"class":244,"line":647},[2963,2967,2971,2975],{"type":28,"tag":242,"props":2964,"children":2965},{"style":336},[2966],{"type":34,"value":1457},{"type":28,"tag":242,"props":2968,"children":2969},{"style":266},[2970],{"type":34,"value":343},{"type":28,"tag":242,"props":2972,"children":2973},{"style":286},[2974],{"type":34,"value":1466},{"type":28,"tag":242,"props":2976,"children":2977},{"style":266},[2978],{"type":34,"value":836},{"type":28,"tag":242,"props":2980,"children":2981},{"class":244,"line":691},[2982],{"type":28,"tag":242,"props":2983,"children":2984},{"emptyLinePlaceholder":12},[2985],{"type":34,"value":324},{"type":28,"tag":242,"props":2987,"children":2988},{"class":244,"line":699},[2989],{"type":28,"tag":242,"props":2990,"children":2991},{"style":1398},[2992],{"type":34,"value":1485},{"type":28,"tag":242,"props":2994,"children":2996},{"class":244,"line":2995},22,[2997,3001,3005,3009,3013,3017,3021,3025],{"type":28,"tag":242,"props":2998,"children":2999},{"style":1173},[3000],{"type":34,"value":1493},{"type":28,"tag":242,"props":3002,"children":3003},{"style":286},[3004],{"type":34,"value":1498},{"type":28,"tag":242,"props":3006,"children":3007},{"style":398},[3008],{"type":34,"value":401},{"type":28,"tag":242,"props":3010,"children":3011},{"style":249},[3012],{"type":34,"value":1423},{"type":28,"tag":242,"props":3014,"children":3015},{"style":336},[3016],{"type":34,"value":753},{"type":28,"tag":242,"props":3018,"children":3019},{"style":266},[3020],{"type":34,"value":343},{"type":28,"tag":242,"props":3022,"children":3023},{"style":1211},[3024],{"type":34,"value":1214},{"type":28,"tag":242,"props":3026,"children":3027},{"style":266},[3028],{"type":34,"value":836},{"type":28,"tag":242,"props":3030,"children":3032},{"class":244,"line":3031},23,[3033],{"type":28,"tag":242,"props":3034,"children":3035},{"emptyLinePlaceholder":12},[3036],{"type":34,"value":324},{"type":28,"tag":242,"props":3038,"children":3040},{"class":244,"line":3039},24,[3041],{"type":28,"tag":242,"props":3042,"children":3043},{"emptyLinePlaceholder":12},[3044],{"type":34,"value":324},{"type":28,"tag":242,"props":3046,"children":3048},{"class":244,"line":3047},25,[3049,3054,3058,3062],{"type":28,"tag":242,"props":3050,"children":3051},{"style":336},[3052],{"type":34,"value":3053},"        testerCarre",{"type":28,"tag":242,"props":3055,"children":3056},{"style":266},[3057],{"type":34,"value":343},{"type":28,"tag":242,"props":3059,"children":3060},{"style":286},[3061],{"type":34,"value":1538},{"type":28,"tag":242,"props":3063,"children":3064},{"style":266},[3065],{"type":34,"value":836},{"type":28,"tag":242,"props":3067,"children":3069},{"class":244,"line":3068},26,[3070],{"type":28,"tag":242,"props":3071,"children":3072},{"style":266},[3073],{"type":34,"value":447},{"type":28,"tag":242,"props":3075,"children":3077},{"class":244,"line":3076},27,[3078],{"type":28,"tag":242,"props":3079,"children":3080},{"style":266},[3081],{"type":34,"value":705},{"type":28,"tag":88,"props":3083,"children":3085},{"id":3084},"résultat-1",[3086],{"type":34,"value":1562},{"type":28,"tag":1564,"props":3088,"children":3089},{},[3090,3102],{"type":28,"tag":1568,"props":3091,"children":3092},{},[3093,3095,3100],{"type":34,"value":3094},"Le ",{"type":28,"tag":112,"props":3096,"children":3098},{"className":3097},[],[3099],{"type":34,"value":125},{"type":34,"value":3101}," fonctionne comme prévu : l'aire est de 50.",{"type":28,"tag":1568,"props":3103,"children":3104},{},[3105,3106,3111],{"type":34,"value":3094},{"type":28,"tag":112,"props":3107,"children":3109},{"className":3108},[],[3110],{"type":34,"value":729},{"type":34,"value":3112}," fonctionne également correctement : l'aire est de 25 (5 * 5), et le comportement est bien conforme aux attentes.",{"type":28,"tag":158,"props":3114,"children":3116},{"id":3115},"pourquoi-cela-respecte-t-il-le-lsp",[3117],{"type":34,"value":3118},"Pourquoi cela respecte-t-il le LSP ?",{"type":28,"tag":37,"props":3120,"children":3121},{},[3122,3124,3129,3130,3135,3137,3142,3143,3148],{"type":34,"value":3123},"Dans cette solution, nous avons séparé les deux concepts (",{"type":28,"tag":112,"props":3125,"children":3127},{"className":3126},[],[3128],{"type":34,"value":125},{"type":34,"value":127},{"type":28,"tag":112,"props":3131,"children":3133},{"className":3132},[],[3134],{"type":34,"value":729},{"type":34,"value":3136},") afin que chaque classe respecte ses propres contraintes. Le LSP est respecté car les objets ",{"type":28,"tag":112,"props":3138,"children":3140},{"className":3139},[],[3141],{"type":34,"value":125},{"type":34,"value":127},{"type":28,"tag":112,"props":3144,"children":3146},{"className":3145},[],[3147],{"type":34,"value":729},{"type":34,"value":3149}," ne sont plus liés par une relation d’héritage qui pourrait potentiellement briser les attentes du programme.",{"type":28,"tag":158,"props":3151,"children":3153},{"id":3152},"autre-approche-utiliser-une-interface-commune",[3154],{"type":34,"value":3155},"Autre approche : utiliser une interface commune",{"type":28,"tag":37,"props":3157,"children":3158},{},[3159,3161,3166],{"type":34,"value":3160},"Si vous souhaitez toujours utiliser l’héritage ou l’interchangeabilité, une meilleure approche serait d’introduire une interface commune ",{"type":28,"tag":112,"props":3162,"children":3164},{"className":3163},[],[3165],{"type":34,"value":117},{"type":34,"value":3167}," que les deux classes pourraient implémenter. Ainsi, elles partageraient des comportements communs tout en ayant leurs propres implémentations spécifiques.",{"type":28,"tag":88,"props":3169,"children":3171},{"id":3170},"exemple-avec-une-interface-commune",[3172],{"type":34,"value":3173},"Exemple avec une interface commune",{"type":28,"tag":232,"props":3175,"children":3177},{"className":234,"code":3176,"language":236,"meta":7,"style":7},"public interface Forme {\n    int calculerAire();\n}\n\npublic class Rectangle implements Forme {\n    private int largeur;\n    private int hauteur;\n\n    public Rectangle(int largeur, int hauteur) {\n        this.largeur = largeur;\n        this.hauteur = hauteur;\n    }\n\n    @Override\n    public int calculerAire() {\n        return largeur * hauteur;\n    }\n}\n\npublic class Carre implements Forme {\n    private int taille;\n\n    public Carre(int taille) {\n        this.taille = taille;\n    }\n\n    @Override\n    public int calculerAire() {\n        return taille * taille;\n    }\n}\n",[3178],{"type":28,"tag":112,"props":3179,"children":3180},{"__ignoreMap":7},[3181,3202,3218,3225,3232,3260,3279,3298,3305,3348,3375,3402,3409,3416,3427,3450,3474,3481,3488,3495,3522,3541,3548,3579,3606,3613,3620,3631,3655,3680,3688],{"type":28,"tag":242,"props":3182,"children":3183},{"class":244,"line":245},[3184,3188,3193,3198],{"type":28,"tag":242,"props":3185,"children":3186},{"style":249},[3187],{"type":34,"value":252},{"type":28,"tag":242,"props":3189,"children":3190},{"style":249},[3191],{"type":34,"value":3192}," interface",{"type":28,"tag":242,"props":3194,"children":3195},{"style":260},[3196],{"type":34,"value":3197}," Forme",{"type":28,"tag":242,"props":3199,"children":3200},{"style":266},[3201],{"type":34,"value":269},{"type":28,"tag":242,"props":3203,"children":3204},{"class":244,"line":272},[3205,3210,3214],{"type":28,"tag":242,"props":3206,"children":3207},{"style":249},[3208],{"type":34,"value":3209},"    int",{"type":28,"tag":242,"props":3211,"children":3212},{"style":336},[3213],{"type":34,"value":635},{"type":28,"tag":242,"props":3215,"children":3216},{"style":266},[3217],{"type":34,"value":1281},{"type":28,"tag":242,"props":3219,"children":3220},{"class":244,"line":297},[3221],{"type":28,"tag":242,"props":3222,"children":3223},{"style":266},[3224],{"type":34,"value":705},{"type":28,"tag":242,"props":3226,"children":3227},{"class":244,"line":318},[3228],{"type":28,"tag":242,"props":3229,"children":3230},{"emptyLinePlaceholder":12},[3231],{"type":34,"value":324},{"type":28,"tag":242,"props":3233,"children":3234},{"class":244,"line":327},[3235,3239,3243,3247,3252,3256],{"type":28,"tag":242,"props":3236,"children":3237},{"style":249},[3238],{"type":34,"value":252},{"type":28,"tag":242,"props":3240,"children":3241},{"style":249},[3242],{"type":34,"value":257},{"type":28,"tag":242,"props":3244,"children":3245},{"style":260},[3246],{"type":34,"value":263},{"type":28,"tag":242,"props":3248,"children":3249},{"style":249},[3250],{"type":34,"value":3251}," implements",{"type":28,"tag":242,"props":3253,"children":3254},{"style":260},[3255],{"type":34,"value":3197},{"type":28,"tag":242,"props":3257,"children":3258},{"style":266},[3259],{"type":34,"value":269},{"type":28,"tag":242,"props":3261,"children":3262},{"class":244,"line":378},[3263,3267,3271,3275],{"type":28,"tag":242,"props":3264,"children":3265},{"style":249},[3266],{"type":34,"value":2176},{"type":28,"tag":242,"props":3268,"children":3269},{"style":249},[3270],{"type":34,"value":283},{"type":28,"tag":242,"props":3272,"children":3273},{"style":286},[3274],{"type":34,"value":289},{"type":28,"tag":242,"props":3276,"children":3277},{"style":266},[3278],{"type":34,"value":294},{"type":28,"tag":242,"props":3280,"children":3281},{"class":244,"line":412},[3282,3286,3290,3294],{"type":28,"tag":242,"props":3283,"children":3284},{"style":249},[3285],{"type":34,"value":2176},{"type":28,"tag":242,"props":3287,"children":3288},{"style":249},[3289],{"type":34,"value":283},{"type":28,"tag":242,"props":3291,"children":3292},{"style":286},[3293],{"type":34,"value":311},{"type":28,"tag":242,"props":3295,"children":3296},{"style":266},[3297],{"type":34,"value":294},{"type":28,"tag":242,"props":3299,"children":3300},{"class":244,"line":441},[3301],{"type":28,"tag":242,"props":3302,"children":3303},{"emptyLinePlaceholder":12},[3304],{"type":34,"value":324},{"type":28,"tag":242,"props":3306,"children":3307},{"class":244,"line":450},[3308,3312,3316,3320,3324,3328,3332,3336,3340,3344],{"type":28,"tag":242,"props":3309,"children":3310},{"style":249},[3311],{"type":34,"value":333},{"type":28,"tag":242,"props":3313,"children":3314},{"style":336},[3315],{"type":34,"value":263},{"type":28,"tag":242,"props":3317,"children":3318},{"style":266},[3319],{"type":34,"value":343},{"type":28,"tag":242,"props":3321,"children":3322},{"style":249},[3323],{"type":34,"value":348},{"type":28,"tag":242,"props":3325,"children":3326},{"style":351},[3327],{"type":34,"value":289},{"type":28,"tag":242,"props":3329,"children":3330},{"style":266},[3331],{"type":34,"value":358},{"type":28,"tag":242,"props":3333,"children":3334},{"style":249},[3335],{"type":34,"value":283},{"type":28,"tag":242,"props":3337,"children":3338},{"style":351},[3339],{"type":34,"value":311},{"type":28,"tag":242,"props":3341,"children":3342},{"style":266},[3343],{"type":34,"value":371},{"type":28,"tag":242,"props":3345,"children":3346},{"style":266},[3347],{"type":34,"value":269},{"type":28,"tag":242,"props":3349,"children":3350},{"class":244,"line":458},[3351,3355,3359,3363,3367,3371],{"type":28,"tag":242,"props":3352,"children":3353},{"style":382},[3354],{"type":34,"value":385},{"type":28,"tag":242,"props":3356,"children":3357},{"style":266},[3358],{"type":34,"value":390},{"type":28,"tag":242,"props":3360,"children":3361},{"style":286},[3362],{"type":34,"value":395},{"type":28,"tag":242,"props":3364,"children":3365},{"style":398},[3366],{"type":34,"value":401},{"type":28,"tag":242,"props":3368,"children":3369},{"style":286},[3370],{"type":34,"value":289},{"type":28,"tag":242,"props":3372,"children":3373},{"style":266},[3374],{"type":34,"value":294},{"type":28,"tag":242,"props":3376,"children":3377},{"class":244,"line":496},[3378,3382,3386,3390,3394,3398],{"type":28,"tag":242,"props":3379,"children":3380},{"style":382},[3381],{"type":34,"value":385},{"type":28,"tag":242,"props":3383,"children":3384},{"style":266},[3385],{"type":34,"value":390},{"type":28,"tag":242,"props":3387,"children":3388},{"style":286},[3389],{"type":34,"value":426},{"type":28,"tag":242,"props":3391,"children":3392},{"style":398},[3393],{"type":34,"value":401},{"type":28,"tag":242,"props":3395,"children":3396},{"style":286},[3397],{"type":34,"value":311},{"type":28,"tag":242,"props":3399,"children":3400},{"style":266},[3401],{"type":34,"value":294},{"type":28,"tag":242,"props":3403,"children":3404},{"class":244,"line":524},[3405],{"type":28,"tag":242,"props":3406,"children":3407},{"style":266},[3408],{"type":34,"value":447},{"type":28,"tag":242,"props":3410,"children":3411},{"class":244,"line":532},[3412],{"type":28,"tag":242,"props":3413,"children":3414},{"emptyLinePlaceholder":12},[3415],{"type":34,"value":324},{"type":28,"tag":242,"props":3417,"children":3418},{"class":244,"line":540},[3419,3423],{"type":28,"tag":242,"props":3420,"children":3421},{"style":856},[3422],{"type":34,"value":859},{"type":28,"tag":242,"props":3424,"children":3425},{"style":862},[3426],{"type":34,"value":865},{"type":28,"tag":242,"props":3428,"children":3429},{"class":244,"line":577},[3430,3434,3438,3442,3446],{"type":28,"tag":242,"props":3431,"children":3432},{"style":249},[3433],{"type":34,"value":333},{"type":28,"tag":242,"props":3435,"children":3436},{"style":249},[3437],{"type":34,"value":283},{"type":28,"tag":242,"props":3439,"children":3440},{"style":336},[3441],{"type":34,"value":635},{"type":28,"tag":242,"props":3443,"children":3444},{"style":266},[3445],{"type":34,"value":640},{"type":28,"tag":242,"props":3447,"children":3448},{"style":266},[3449],{"type":34,"value":269},{"type":28,"tag":242,"props":3451,"children":3452},{"class":244,"line":605},[3453,3457,3462,3466,3470],{"type":28,"tag":242,"props":3454,"children":3455},{"style":249},[3456],{"type":34,"value":653},{"type":28,"tag":242,"props":3458,"children":3459},{"style":286},[3460],{"type":34,"value":3461}," largeur ",{"type":28,"tag":242,"props":3463,"children":3464},{"style":398},[3465],{"type":34,"value":671},{"type":28,"tag":242,"props":3467,"children":3468},{"style":286},[3469],{"type":34,"value":311},{"type":28,"tag":242,"props":3471,"children":3472},{"style":266},[3473],{"type":34,"value":294},{"type":28,"tag":242,"props":3475,"children":3476},{"class":244,"line":613},[3477],{"type":28,"tag":242,"props":3478,"children":3479},{"style":266},[3480],{"type":34,"value":447},{"type":28,"tag":242,"props":3482,"children":3483},{"class":244,"line":621},[3484],{"type":28,"tag":242,"props":3485,"children":3486},{"style":266},[3487],{"type":34,"value":705},{"type":28,"tag":242,"props":3489,"children":3490},{"class":244,"line":647},[3491],{"type":28,"tag":242,"props":3492,"children":3493},{"emptyLinePlaceholder":12},[3494],{"type":34,"value":324},{"type":28,"tag":242,"props":3496,"children":3497},{"class":244,"line":691},[3498,3502,3506,3510,3514,3518],{"type":28,"tag":242,"props":3499,"children":3500},{"style":249},[3501],{"type":34,"value":252},{"type":28,"tag":242,"props":3503,"children":3504},{"style":249},[3505],{"type":34,"value":257},{"type":28,"tag":242,"props":3507,"children":3508},{"style":260},[3509],{"type":34,"value":753},{"type":28,"tag":242,"props":3511,"children":3512},{"style":249},[3513],{"type":34,"value":3251},{"type":28,"tag":242,"props":3515,"children":3516},{"style":260},[3517],{"type":34,"value":3197},{"type":28,"tag":242,"props":3519,"children":3520},{"style":266},[3521],{"type":34,"value":269},{"type":28,"tag":242,"props":3523,"children":3524},{"class":244,"line":699},[3525,3529,3533,3537],{"type":28,"tag":242,"props":3526,"children":3527},{"style":249},[3528],{"type":34,"value":2176},{"type":28,"tag":242,"props":3530,"children":3531},{"style":249},[3532],{"type":34,"value":283},{"type":28,"tag":242,"props":3534,"children":3535},{"style":286},[3536],{"type":34,"value":797},{"type":28,"tag":242,"props":3538,"children":3539},{"style":266},[3540],{"type":34,"value":294},{"type":28,"tag":242,"props":3542,"children":3543},{"class":244,"line":2995},[3544],{"type":28,"tag":242,"props":3545,"children":3546},{"emptyLinePlaceholder":12},[3547],{"type":34,"value":324},{"type":28,"tag":242,"props":3549,"children":3550},{"class":244,"line":3031},[3551,3555,3559,3563,3567,3571,3575],{"type":28,"tag":242,"props":3552,"children":3553},{"style":249},[3554],{"type":34,"value":333},{"type":28,"tag":242,"props":3556,"children":3557},{"style":336},[3558],{"type":34,"value":753},{"type":28,"tag":242,"props":3560,"children":3561},{"style":266},[3562],{"type":34,"value":343},{"type":28,"tag":242,"props":3564,"children":3565},{"style":249},[3566],{"type":34,"value":348},{"type":28,"tag":242,"props":3568,"children":3569},{"style":351},[3570],{"type":34,"value":797},{"type":28,"tag":242,"props":3572,"children":3573},{"style":266},[3574],{"type":34,"value":371},{"type":28,"tag":242,"props":3576,"children":3577},{"style":266},[3578],{"type":34,"value":269},{"type":28,"tag":242,"props":3580,"children":3581},{"class":244,"line":3039},[3582,3586,3590,3594,3598,3602],{"type":28,"tag":242,"props":3583,"children":3584},{"style":382},[3585],{"type":34,"value":385},{"type":28,"tag":242,"props":3587,"children":3588},{"style":266},[3589],{"type":34,"value":390},{"type":28,"tag":242,"props":3591,"children":3592},{"style":286},[3593],{"type":34,"value":2242},{"type":28,"tag":242,"props":3595,"children":3596},{"style":398},[3597],{"type":34,"value":401},{"type":28,"tag":242,"props":3599,"children":3600},{"style":286},[3601],{"type":34,"value":797},{"type":28,"tag":242,"props":3603,"children":3604},{"style":266},[3605],{"type":34,"value":294},{"type":28,"tag":242,"props":3607,"children":3608},{"class":244,"line":3047},[3609],{"type":28,"tag":242,"props":3610,"children":3611},{"style":266},[3612],{"type":34,"value":447},{"type":28,"tag":242,"props":3614,"children":3615},{"class":244,"line":3068},[3616],{"type":28,"tag":242,"props":3617,"children":3618},{"emptyLinePlaceholder":12},[3619],{"type":34,"value":324},{"type":28,"tag":242,"props":3621,"children":3622},{"class":244,"line":3076},[3623,3627],{"type":28,"tag":242,"props":3624,"children":3625},{"style":856},[3626],{"type":34,"value":859},{"type":28,"tag":242,"props":3628,"children":3629},{"style":862},[3630],{"type":34,"value":865},{"type":28,"tag":242,"props":3632,"children":3634},{"class":244,"line":3633},28,[3635,3639,3643,3647,3651],{"type":28,"tag":242,"props":3636,"children":3637},{"style":249},[3638],{"type":34,"value":333},{"type":28,"tag":242,"props":3640,"children":3641},{"style":249},[3642],{"type":34,"value":283},{"type":28,"tag":242,"props":3644,"children":3645},{"style":336},[3646],{"type":34,"value":635},{"type":28,"tag":242,"props":3648,"children":3649},{"style":266},[3650],{"type":34,"value":640},{"type":28,"tag":242,"props":3652,"children":3653},{"style":266},[3654],{"type":34,"value":269},{"type":28,"tag":242,"props":3656,"children":3658},{"class":244,"line":3657},29,[3659,3663,3668,3672,3676],{"type":28,"tag":242,"props":3660,"children":3661},{"style":249},[3662],{"type":34,"value":653},{"type":28,"tag":242,"props":3664,"children":3665},{"style":286},[3666],{"type":34,"value":3667}," taille ",{"type":28,"tag":242,"props":3669,"children":3670},{"style":398},[3671],{"type":34,"value":671},{"type":28,"tag":242,"props":3673,"children":3674},{"style":286},[3675],{"type":34,"value":797},{"type":28,"tag":242,"props":3677,"children":3678},{"style":266},[3679],{"type":34,"value":294},{"type":28,"tag":242,"props":3681,"children":3683},{"class":244,"line":3682},30,[3684],{"type":28,"tag":242,"props":3685,"children":3686},{"style":266},[3687],{"type":34,"value":447},{"type":28,"tag":242,"props":3689,"children":3691},{"class":244,"line":3690},31,[3692],{"type":28,"tag":242,"props":3693,"children":3694},{"style":266},[3695],{"type":34,"value":705},{"type":28,"tag":88,"props":3697,"children":3699},{"id":3698},"exemple-dutilisation",[3700],{"type":34,"value":3701},"Exemple d'utilisation :",{"type":28,"tag":232,"props":3703,"children":3705},{"className":234,"code":3704,"language":236,"meta":7,"style":7},"public class Main {\n\n    public static void afficherAire(Forme forme) {\n        System.out.println(\"Aire calculée : \" + forme.calculerAire());\n    }\n\n    public static void main(String[] args) {\n        Forme rectangle = new Rectangle(5, 10);\n        Forme carre = new Carre(5);\n\n        afficherAire(rectangle);  // Aire calculée : 50\n        afficherAire(carre);      // Aire calculée : 25\n    }\n}\n",[3706],{"type":28,"tag":112,"props":3707,"children":3708},{"__ignoreMap":7},[3709,3728,3735,3776,3829,3836,3843,3886,3932,3967,3974,4001,4025,4032],{"type":28,"tag":242,"props":3710,"children":3711},{"class":244,"line":245},[3712,3716,3720,3724],{"type":28,"tag":242,"props":3713,"children":3714},{"style":249},[3715],{"type":34,"value":252},{"type":28,"tag":242,"props":3717,"children":3718},{"style":249},[3719],{"type":34,"value":257},{"type":28,"tag":242,"props":3721,"children":3722},{"style":260},[3723],{"type":34,"value":1134},{"type":28,"tag":242,"props":3725,"children":3726},{"style":266},[3727],{"type":34,"value":269},{"type":28,"tag":242,"props":3729,"children":3730},{"class":244,"line":272},[3731],{"type":28,"tag":242,"props":3732,"children":3733},{"emptyLinePlaceholder":12},[3734],{"type":34,"value":324},{"type":28,"tag":242,"props":3736,"children":3737},{"class":244,"line":297},[3738,3742,3746,3750,3755,3759,3763,3768,3772],{"type":28,"tag":242,"props":3739,"children":3740},{"style":249},[3741],{"type":34,"value":333},{"type":28,"tag":242,"props":3743,"children":3744},{"style":249},[3745],{"type":34,"value":1157},{"type":28,"tag":242,"props":3747,"children":3748},{"style":249},[3749],{"type":34,"value":468},{"type":28,"tag":242,"props":3751,"children":3752},{"style":336},[3753],{"type":34,"value":3754}," afficherAire",{"type":28,"tag":242,"props":3756,"children":3757},{"style":266},[3758],{"type":34,"value":343},{"type":28,"tag":242,"props":3760,"children":3761},{"style":1173},[3762],{"type":34,"value":117},{"type":28,"tag":242,"props":3764,"children":3765},{"style":351},[3766],{"type":34,"value":3767}," forme",{"type":28,"tag":242,"props":3769,"children":3770},{"style":266},[3771],{"type":34,"value":371},{"type":28,"tag":242,"props":3773,"children":3774},{"style":266},[3775],{"type":34,"value":269},{"type":28,"tag":242,"props":3777,"children":3778},{"class":244,"line":318},[3779,3783,3787,3791,3795,3799,3803,3808,3812,3816,3820,3824],{"type":28,"tag":242,"props":3780,"children":3781},{"style":286},[3782],{"type":34,"value":1289},{"type":28,"tag":242,"props":3784,"children":3785},{"style":266},[3786],{"type":34,"value":390},{"type":28,"tag":242,"props":3788,"children":3789},{"style":286},[3790],{"type":34,"value":1298},{"type":28,"tag":242,"props":3792,"children":3793},{"style":266},[3794],{"type":34,"value":390},{"type":28,"tag":242,"props":3796,"children":3797},{"style":336},[3798],{"type":34,"value":1307},{"type":28,"tag":242,"props":3800,"children":3801},{"style":266},[3802],{"type":34,"value":343},{"type":28,"tag":242,"props":3804,"children":3805},{"style":1314},[3806],{"type":34,"value":3807},"\"Aire calculée : \"",{"type":28,"tag":242,"props":3809,"children":3810},{"style":398},[3811],{"type":34,"value":1322},{"type":28,"tag":242,"props":3813,"children":3814},{"style":286},[3815],{"type":34,"value":3767},{"type":28,"tag":242,"props":3817,"children":3818},{"style":266},[3819],{"type":34,"value":390},{"type":28,"tag":242,"props":3821,"children":3822},{"style":336},[3823],{"type":34,"value":1276},{"type":28,"tag":242,"props":3825,"children":3826},{"style":266},[3827],{"type":34,"value":3828},"());\n",{"type":28,"tag":242,"props":3830,"children":3831},{"class":244,"line":327},[3832],{"type":28,"tag":242,"props":3833,"children":3834},{"style":266},[3835],{"type":34,"value":447},{"type":28,"tag":242,"props":3837,"children":3838},{"class":244,"line":378},[3839],{"type":28,"tag":242,"props":3840,"children":3841},{"emptyLinePlaceholder":12},[3842],{"type":34,"value":324},{"type":28,"tag":242,"props":3844,"children":3845},{"class":244,"line":412},[3846,3850,3854,3858,3862,3866,3870,3874,3878,3882],{"type":28,"tag":242,"props":3847,"children":3848},{"style":249},[3849],{"type":34,"value":333},{"type":28,"tag":242,"props":3851,"children":3852},{"style":249},[3853],{"type":34,"value":1157},{"type":28,"tag":242,"props":3855,"children":3856},{"style":249},[3857],{"type":34,"value":468},{"type":28,"tag":242,"props":3859,"children":3860},{"style":336},[3861],{"type":34,"value":1365},{"type":28,"tag":242,"props":3863,"children":3864},{"style":266},[3865],{"type":34,"value":343},{"type":28,"tag":242,"props":3867,"children":3868},{"style":249},[3869],{"type":34,"value":1374},{"type":28,"tag":242,"props":3871,"children":3872},{"style":266},[3873],{"type":34,"value":1379},{"type":28,"tag":242,"props":3875,"children":3876},{"style":351},[3877],{"type":34,"value":1384},{"type":28,"tag":242,"props":3879,"children":3880},{"style":266},[3881],{"type":34,"value":371},{"type":28,"tag":242,"props":3883,"children":3884},{"style":266},[3885],{"type":34,"value":269},{"type":28,"tag":242,"props":3887,"children":3888},{"class":244,"line":441},[3889,3894,3899,3903,3907,3911,3915,3919,3923,3928],{"type":28,"tag":242,"props":3890,"children":3891},{"style":1173},[3892],{"type":34,"value":3893},"        Forme",{"type":28,"tag":242,"props":3895,"children":3896},{"style":286},[3897],{"type":34,"value":3898}," rectangle ",{"type":28,"tag":242,"props":3900,"children":3901},{"style":398},[3902],{"type":34,"value":401},{"type":28,"tag":242,"props":3904,"children":3905},{"style":249},[3906],{"type":34,"value":1423},{"type":28,"tag":242,"props":3908,"children":3909},{"style":336},[3910],{"type":34,"value":263},{"type":28,"tag":242,"props":3912,"children":3913},{"style":266},[3914],{"type":34,"value":343},{"type":28,"tag":242,"props":3916,"children":3917},{"style":1211},[3918],{"type":34,"value":1214},{"type":28,"tag":242,"props":3920,"children":3921},{"style":266},[3922],{"type":34,"value":358},{"type":28,"tag":242,"props":3924,"children":3925},{"style":1211},[3926],{"type":34,"value":3927}," 10",{"type":28,"tag":242,"props":3929,"children":3930},{"style":266},[3931],{"type":34,"value":836},{"type":28,"tag":242,"props":3933,"children":3934},{"class":244,"line":450},[3935,3939,3943,3947,3951,3955,3959,3963],{"type":28,"tag":242,"props":3936,"children":3937},{"style":1173},[3938],{"type":34,"value":3893},{"type":28,"tag":242,"props":3940,"children":3941},{"style":286},[3942],{"type":34,"value":1498},{"type":28,"tag":242,"props":3944,"children":3945},{"style":398},[3946],{"type":34,"value":401},{"type":28,"tag":242,"props":3948,"children":3949},{"style":249},[3950],{"type":34,"value":1423},{"type":28,"tag":242,"props":3952,"children":3953},{"style":336},[3954],{"type":34,"value":753},{"type":28,"tag":242,"props":3956,"children":3957},{"style":266},[3958],{"type":34,"value":343},{"type":28,"tag":242,"props":3960,"children":3961},{"style":1211},[3962],{"type":34,"value":1214},{"type":28,"tag":242,"props":3964,"children":3965},{"style":266},[3966],{"type":34,"value":836},{"type":28,"tag":242,"props":3968,"children":3969},{"class":244,"line":458},[3970],{"type":28,"tag":242,"props":3971,"children":3972},{"emptyLinePlaceholder":12},[3973],{"type":34,"value":324},{"type":28,"tag":242,"props":3975,"children":3976},{"class":244,"line":496},[3977,3982,3986,3991,3996],{"type":28,"tag":242,"props":3978,"children":3979},{"style":336},[3980],{"type":34,"value":3981},"        afficherAire",{"type":28,"tag":242,"props":3983,"children":3984},{"style":266},[3985],{"type":34,"value":343},{"type":28,"tag":242,"props":3987,"children":3988},{"style":286},[3989],{"type":34,"value":3990},"rectangle",{"type":28,"tag":242,"props":3992,"children":3993},{"style":266},[3994],{"type":34,"value":3995},");",{"type":28,"tag":242,"props":3997,"children":3998},{"style":1398},[3999],{"type":34,"value":4000},"  // Aire calculée : 50\n",{"type":28,"tag":242,"props":4002,"children":4003},{"class":244,"line":524},[4004,4008,4012,4016,4020],{"type":28,"tag":242,"props":4005,"children":4006},{"style":336},[4007],{"type":34,"value":3981},{"type":28,"tag":242,"props":4009,"children":4010},{"style":266},[4011],{"type":34,"value":343},{"type":28,"tag":242,"props":4013,"children":4014},{"style":286},[4015],{"type":34,"value":1538},{"type":28,"tag":242,"props":4017,"children":4018},{"style":266},[4019],{"type":34,"value":3995},{"type":28,"tag":242,"props":4021,"children":4022},{"style":1398},[4023],{"type":34,"value":4024},"      // Aire calculée : 25\n",{"type":28,"tag":242,"props":4026,"children":4027},{"class":244,"line":532},[4028],{"type":28,"tag":242,"props":4029,"children":4030},{"style":266},[4031],{"type":34,"value":447},{"type":28,"tag":242,"props":4033,"children":4034},{"class":244,"line":540},[4035],{"type":28,"tag":242,"props":4036,"children":4037},{"style":266},[4038],{"type":34,"value":705},{"type":28,"tag":73,"props":4040,"children":4041},{},[],{"type":28,"tag":29,"props":4043,"children":4045},{"id":4044},"conclusion-et-conseils-pratiques",[4046],{"type":34,"value":4047},"Conclusion et conseils pratiques",{"type":28,"tag":37,"props":4049,"children":4050},{},[4051],{"type":34,"value":4052},"Le principe de substitution de Liskov est fondamental pour garantir que les objets dérivés fonctionnent comme prévu dans des systèmes orientés objet. Respecter ce principe vous permet de rendre votre code plus extensible et de prévenir les erreurs liées à des comportements inattendus dans les sous-classes.",{"type":28,"tag":158,"props":4054,"children":4056},{"id":4055},"récapitulatif-des-points-clés",[4057],{"type":34,"value":4058},"Récapitulatif des points clés :",{"type":28,"tag":1564,"props":4060,"children":4061},{},[4062,4067,4072],{"type":28,"tag":1568,"props":4063,"children":4064},{},[4065],{"type":34,"value":4066},"Le LSP exige que les sous-classes puissent être utilisées de manière interchangeable avec les classes parentes sans modifier le comportement attendu.",{"type":28,"tag":1568,"props":4068,"children":4069},{},[4070],{"type":34,"value":4071},"Une sous-classe qui modifie les règles d'une classe parente brise le LSP.",{"type":28,"tag":1568,"props":4073,"children":4074},{},[4075],{"type":34,"value":4076},"Il est parfois préférable d’utiliser des interfaces ou la composition pour éviter les problèmes d’héritage tout en respectant le LSP.",{"type":28,"tag":158,"props":4078,"children":4080},{"id":4079},"conseils-pratiques",[4081],{"type":34,"value":4082},"Conseils pratiques :",{"type":28,"tag":1564,"props":4084,"children":4085},{},[4086,4091,4096],{"type":28,"tag":1568,"props":4087,"children":4088},{},[4089],{"type":34,"value":4090},"Testez régulièrement votre code pour vérifier que les sous-classes respectent bien le comportement des classes parentes.",{"type":28,"tag":1568,"props":4092,"children":4093},{},[4094],{"type":34,"value":4095},"Utilisez des interfaces ou la composition lorsque cela est possible, surtout si vous constatez que l’héritage ne correspond pas bien à votre modèle d’objet.",{"type":28,"tag":1568,"props":4097,"children":4098},{},[4099],{"type":34,"value":4100},"Appliquez le LSP avec souplesse, en l’adaptant à vos besoins de conception, mais gardez en tête son importance pour éviter des bugs difficiles à identifier.",{"type":28,"tag":73,"props":4102,"children":4103},{},[],{"type":28,"tag":29,"props":4105,"children":4107},{"id":4106},"faq-sur-le-principe-de-substitution-de-liskov-lsp",[4108],{"type":34,"value":4109},"FAQ sur le principe de substitution de Liskov (LSP)",{"type":28,"tag":4111,"props":4112,"children":4113},"details",{},[4114,4120],{"type":28,"tag":4115,"props":4116,"children":4117},"summary",{},[4118],{"type":34,"value":4119},"1. Qu’est-ce que le LSP exactement ?",{"type":28,"tag":37,"props":4121,"children":4122},{},[4123],{"type":34,"value":4124},"Le principe de substitution de Liskov (LSP) stipule qu’une sous-classe doit pouvoir remplacer sa classe parente sans altérer le comportement du programme. Si vous utilisez une instance d’une sous-classe à la place d’une classe de base, le programme ne doit pas avoir de comportements inattendus ou incorrects.",{"type":28,"tag":4111,"props":4126,"children":4127},{},[4128,4133],{"type":28,"tag":4115,"props":4129,"children":4130},{},[4131],{"type":34,"value":4132},"2. Pourquoi est-ce que je dois respecter le LSP ?",{"type":28,"tag":37,"props":4134,"children":4135},{},[4136],{"type":34,"value":4137},"Le LSP garantit que votre code est extensible et maintenable. Sans ce principe, les sous-classes pourraient introduire des comportements indésirables ou imprévisibles, compliquant la détection des bugs et rendant votre code plus difficile à maintenir.",{"type":28,"tag":4111,"props":4139,"children":4140},{},[4141,4146,4151],{"type":28,"tag":4115,"props":4142,"children":4143},{},[4144],{"type":34,"value":4145},"3. Quels sont les signes indiquant que mon code ne respecte pas le LSP ?",{"type":28,"tag":37,"props":4147,"children":4148},{},[4149],{"type":34,"value":4150},"Voici quelques indices de violation du LSP :",{"type":28,"tag":1564,"props":4152,"children":4153},{},[4154,4159,4164],{"type":28,"tag":1568,"props":4155,"children":4156},{},[4157],{"type":34,"value":4158},"Ta sous-classe modifie ou redéfinit des méthodes de la classe parente de manière inattendue.",{"type":28,"tag":1568,"props":4160,"children":4161},{},[4162],{"type":34,"value":4163},"Vous devez modifier le code existant lorsque vous ajoutez une nouvelle sous-classe.",{"type":28,"tag":1568,"props":4165,"children":4166},{},[4167],{"type":34,"value":4168},"La sous-classe ne respecte pas les propriétés définies par la classe parente.",{"type":28,"tag":4111,"props":4170,"children":4171},{},[4172,4177],{"type":28,"tag":4115,"props":4173,"children":4174},{},[4175],{"type":34,"value":4176},"4. Quelle est la différence entre l’héritage classique et l’application du LSP ?",{"type":28,"tag":37,"props":4178,"children":4179},{},[4180],{"type":34,"value":4181},"L’héritage permet à une classe de réutiliser du code d’une autre. Cependant, respecter le LSP va plus loin : il garantit que la sous-classe maintient le comportement logique attendu de la classe parente, sans modifier ses règles.",{"type":28,"tag":4111,"props":4183,"children":4184},{},[4185,4190],{"type":28,"tag":4115,"props":4186,"children":4187},{},[4188],{"type":34,"value":4189},"5. Est-ce que le LSP est toujours applicable ?",{"type":28,"tag":37,"props":4191,"children":4192},{},[4193],{"type":34,"value":4194},"Non, le LSP est un principe de conception qui doit être appliqué lorsqu’il est pertinent. Dans certains cas, éviter des hiérarchies complexes en utilisant la composition ou des interfaces peut être une meilleure approche.",{"type":28,"tag":4111,"props":4196,"children":4197},{},[4198,4203],{"type":28,"tag":4115,"props":4199,"children":4200},{},[4201],{"type":34,"value":4202},"6. Comment tester si mon code respecte le LSP ?",{"type":28,"tag":37,"props":4204,"children":4205},{},[4206],{"type":34,"value":4207},"Une manière de tester est de vérifier que vous pouvez utiliser une instance de la sous-classe à la place de la classe parente sans modifier le comportement du programme. Si des ajustements sont nécessaires, il est probable que le LSP soit violé.",{"type":28,"tag":4111,"props":4209,"children":4210},{},[4211,4216],{"type":28,"tag":4115,"props":4212,"children":4213},{},[4214],{"type":34,"value":4215},"7. Quelles sont les alternatives si je n’arrive pas à respecter le LSP dans mon code ?",{"type":28,"tag":37,"props":4217,"children":4218},{},[4219],{"type":34,"value":4220},"Si vous avez des difficultés à respecter le LSP, il peut être préférable de repenser la conception. Utiliser des interfaces, la composition plutôt que l’héritage, ou des classes abstraites peut aider à structurer votre code sans violer ce principe.",{"type":28,"tag":73,"props":4222,"children":4223},{},[],{"type":28,"tag":181,"props":4225,"children":4230},{"cta":4226,"href":4227,"title":4228,"type":4229},"Télécharger le diagnostic gratuit →","/mes-ressources","Ressource gratuite : 10 signaux que votre équipe tech est en danger","resource",[4231],{"type":28,"tag":37,"props":4232,"children":4233},{},[4234],{"type":34,"value":4235},"10 signaux d'alarme pour identifier les problèmes systémiques cachés dans votre équipe avant qu'ils deviennent critiques. Auto-diagnostic inclus : 5 minutes pour savoir où vous en êtes.",{"type":28,"tag":4237,"props":4238,"children":4239},"style",{},[4240],{"type":34,"value":4241},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":7,"searchDepth":272,"depth":272,"links":4243},[4244,4245,4248,4249,4253,4257],{"id":31,"depth":272,"text":35},{"id":78,"depth":272,"text":81,"children":4246},[4247],{"id":160,"depth":297,"text":163},{"id":195,"depth":272,"text":198},{"id":1630,"depth":272,"text":1633,"children":4250},[4251,4252],{"id":3115,"depth":297,"text":3118},{"id":3152,"depth":297,"text":3155},{"id":4044,"depth":272,"text":4047,"children":4254},[4255,4256],{"id":4055,"depth":297,"text":4058},{"id":4079,"depth":297,"text":4082},{"id":4106,"depth":272,"text":4109},"markdown","content:fr:architecture-craft:principe-substitution-liskov-lsp-java.md","content","fr/architecture-craft/principe-substitution-liskov-lsp-java.md","fr/architecture-craft/principe-substitution-liskov-lsp-java","md",1775679826863]