[{"data":1,"prerenderedAt":1013},["ShallowReactive",2],{"page-\u002Fjava\u002Ftableaux-classes-et-records":3,"pieces-java":970,"autour-\u002Fjava\u002Ftableaux-classes-et-records":995,"prerequis-\u002Fjava\u002Ftableaux-classes-et-records":1000,"plan-java":1002},{"id":4,"title":5,"body":6,"description":941,"extension":942,"ligne":50,"meta":943,"motsCles":944,"navigation":100,"niveau":945,"path":946,"prerequis":947,"ressources":949,"seo":961,"sources":962,"stem":968,"__hash__":969},"docs\u002Fjava\u002F04.tableaux-classes-et-records.md","Tableaux, classes et records",{"type":7,"value":8,"toc":930},"minimark",[9,14,32,36,45,188,198,205,222,225,229,232,243,247,422,425,469,473,586,593,597,608,615,688,699,706,710,716,741,758,820,830,834,878,881,887,891,926],[10,11,13],"h2",{"id":12},"ce-que-tu-vas-apprendre","Ce que tu vas apprendre",[15,16,17,21,24],"ul",{},[18,19,20],"li",{},"Utiliser un tableau pour ranger plusieurs valeurs du même type.",[18,22,23],{},"Écrire une classe avec un constructeur et des champs privés.",[18,25,26,27,31],{},"Remplacer une classe simple par un ",[28,29,30],"code",{},"record",".",[10,33,35],{"id":34},"les-tableaux","Les tableaux",[37,38,39,40,44],"p",{},"Un ",[41,42,43],"strong",{},"tableau"," range un nombre fixe de valeurs du même type. Les cases sont numérotées à partir de 0.",[46,47,52],"pre",{"className":48,"code":49,"language":50,"meta":51,"style":51},"language-java shiki shiki-themes github-light-default github-dark-default github-dark-default","String[] ingredients = {\"farine\", \"oeufs\", \"lait\"};\n\nSystem.out.println(ingredients[0]);      \u002F\u002F farine\nSystem.out.println(ingredients.length);  \u002F\u002F 3\n\nfor (String ingredient : ingredients) {\n    System.out.println(\"- \" + ingredient);\n}\n","java","",[28,53,54,95,102,126,139,144,162,182],{"__ignoreMap":51},[55,56,59,63,67,71,74,77,81,84,87,89,92],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"sOnC1","String",[55,64,66],{"class":65},"sIXEE","[] ",[55,68,70],{"class":69},"scfrF","ingredients",[55,72,73],{"class":61}," =",[55,75,76],{"class":69}," {",[55,78,80],{"class":79},"shWOn","\"farine\"",[55,82,83],{"class":69},", ",[55,85,86],{"class":79},"\"oeufs\"",[55,88,83],{"class":69},[55,90,91],{"class":79},"\"lait\"",[55,93,94],{"class":69},"};\n",[55,96,98],{"class":57,"line":97},2,[55,99,101],{"emptyLinePlaceholder":100},true,"\n",[55,103,105,108,112,115,119,122],{"class":57,"line":104},3,[55,106,107],{"class":69},"System.out.",[55,109,111],{"class":110},"syCW7","println",[55,113,114],{"class":69},"(ingredients[",[55,116,118],{"class":117},"s5iOY","0",[55,120,121],{"class":69},"]);      ",[55,123,125],{"class":124},"sd6ml","\u002F\u002F farine\n",[55,127,129,131,133,136],{"class":57,"line":128},4,[55,130,107],{"class":69},[55,132,111],{"class":110},[55,134,135],{"class":69},"(ingredients.length);  ",[55,137,138],{"class":124},"\u002F\u002F 3\n",[55,140,142],{"class":57,"line":141},5,[55,143,101],{"emptyLinePlaceholder":100},[55,145,147,150,153,156,159],{"class":57,"line":146},6,[55,148,149],{"class":61},"for",[55,151,152],{"class":69}," (String",[55,154,155],{"class":69}," ingredient",[55,157,158],{"class":61}," :",[55,160,161],{"class":69}," ingredients) {\n",[55,163,165,168,170,173,176,179],{"class":57,"line":164},7,[55,166,167],{"class":69},"    System.out.",[55,169,111],{"class":110},[55,171,172],{"class":69},"(",[55,174,175],{"class":79},"\"- \"",[55,177,178],{"class":61}," +",[55,180,181],{"class":69}," ingredient);\n",[55,183,185],{"class":57,"line":184},8,[55,186,187],{"class":69},"}\n",[37,189,190,193,194,197],{},[28,191,192],{},"length"," donne la taille, sans parenthèses pour un tableau. La boucle ",[28,195,196],{},"for (String ingredient : ingredients)"," parcourt chaque case à tour de rôle.",[37,199,200,201,204],{},"Pour créer un tableau vide de taille connue : ",[28,202,203],{},"int[] notes = new int[5];",". Les cases valent alors 0.",[206,207,208],"warning",{},[37,209,210,211,214,215,218,219,31],{},"Lire ",[28,212,213],{},"ingredients[3]"," alors que le tableau n'a que 3 cases lève une erreur à l'exécution, ",[28,216,217],{},"ArrayIndexOutOfBoundsException",". Le dernier indice valide est ",[28,220,221],{},"length - 1",[37,223,224],{},"La taille d'un tableau ne change plus après sa création. Pour une liste qui grandit, on utilise les collections du cours 06.",[10,226,228],{"id":227},"pourquoi-une-classe","Pourquoi une classe",[37,230,231],{},"Pour décrire une recette, il faudrait un nom, une durée, un nombre de portions. Trois variables séparées se mélangent vite.",[37,233,234,235,238,239,242],{},"Une ",[41,236,237],{},"classe"," regroupe ces données et les actions associées sous un même nom. Un ",[41,240,241],{},"objet"," est un exemplaire créé à partir de cette classe.",[10,244,246],{"id":245},"écrire-la-classe-recette","Écrire la classe Recette",[46,248,251],{"className":48,"code":249,"filename":250,"language":50,"meta":51,"style":51},"public class Recette {\n    private String nom;\n    private int minutes;\n\n    public Recette(String nom, int minutes) {\n        this.nom = nom;\n        this.minutes = minutes;\n    }\n\n    public String getNom() {\n        return nom;\n    }\n\n    public boolean estRapide() {\n        return minutes \u003C= 30;\n    }\n}\n","Recette.java",[28,252,253,267,278,288,292,316,329,340,345,350,364,372,377,382,395,412,417],{"__ignoreMap":51},[55,254,255,258,261,264],{"class":57,"line":58},[55,256,257],{"class":61},"public",[55,259,260],{"class":61}," class",[55,262,263],{"class":65}," Recette",[55,265,266],{"class":69}," {\n",[55,268,269,272,275],{"class":57,"line":97},[55,270,271],{"class":61},"    private",[55,273,274],{"class":69}," String",[55,276,277],{"class":69}," nom;\n",[55,279,280,282,285],{"class":57,"line":104},[55,281,271],{"class":61},[55,283,284],{"class":61}," int",[55,286,287],{"class":69}," minutes;\n",[55,289,290],{"class":57,"line":128},[55,291,101],{"emptyLinePlaceholder":100},[55,293,294,297,299,302,305,307,310,313],{"class":57,"line":141},[55,295,296],{"class":61},"    public",[55,298,263],{"class":110},[55,300,301],{"class":69},"(String ",[55,303,304],{"class":65},"nom",[55,306,83],{"class":69},[55,308,309],{"class":61},"int",[55,311,312],{"class":65}," minutes",[55,314,315],{"class":69},") {\n",[55,317,318,321,324,327],{"class":57,"line":146},[55,319,320],{"class":117},"        this",[55,322,323],{"class":69},".nom ",[55,325,326],{"class":61},"=",[55,328,277],{"class":69},[55,330,331,333,336,338],{"class":57,"line":164},[55,332,320],{"class":117},[55,334,335],{"class":69},".minutes ",[55,337,326],{"class":61},[55,339,287],{"class":69},[55,341,342],{"class":57,"line":184},[55,343,344],{"class":69},"    }\n",[55,346,348],{"class":57,"line":347},9,[55,349,101],{"emptyLinePlaceholder":100},[55,351,353,355,358,361],{"class":57,"line":352},10,[55,354,296],{"class":61},[55,356,357],{"class":69}," String ",[55,359,360],{"class":110},"getNom",[55,362,363],{"class":69},"() {\n",[55,365,367,370],{"class":57,"line":366},11,[55,368,369],{"class":61},"        return",[55,371,277],{"class":69},[55,373,375],{"class":57,"line":374},12,[55,376,344],{"class":69},[55,378,380],{"class":57,"line":379},13,[55,381,101],{"emptyLinePlaceholder":100},[55,383,385,387,390,393],{"class":57,"line":384},14,[55,386,296],{"class":61},[55,388,389],{"class":61}," boolean",[55,391,392],{"class":110}," estRapide",[55,394,363],{"class":69},[55,396,398,400,403,406,409],{"class":57,"line":397},15,[55,399,369],{"class":61},[55,401,402],{"class":69}," minutes ",[55,404,405],{"class":61},"\u003C=",[55,407,408],{"class":117}," 30",[55,410,411],{"class":69},";\n",[55,413,415],{"class":57,"line":414},16,[55,416,344],{"class":69},[55,418,420],{"class":57,"line":419},17,[55,421,187],{"class":69},[37,423,424],{},"Chaque élément a un rôle :",[15,426,427,440,450,460],{},[18,428,429,431,432,435,436,439],{},[28,430,304],{}," et ",[28,433,434],{},"minutes"," sont des ",[41,437,438],{},"champs"," : les données de chaque recette.",[18,441,442,445,446,449],{},[28,443,444],{},"Recette(...)"," est le ",[41,447,448],{},"constructeur",", appelé à la création de l'objet. Il porte le nom de la classe et n'a pas de type de retour.",[18,451,452,455,456,459],{},[28,453,454],{},"this"," désigne l'objet en cours. ",[28,457,458],{},"this.nom = nom"," copie le paramètre dans le champ.",[18,461,462,431,465,468],{},[28,463,464],{},"getNom()",[28,466,467],{},"estRapide()"," sont des méthodes d'instance.",[10,470,472],{"id":471},"créer-et-utiliser-des-objets","Créer et utiliser des objets",[46,474,476],{"className":48,"code":475,"language":50,"meta":51,"style":51},"Recette crepes = new Recette(\"Crêpes\", 20);\nRecette cassoulet = new Recette(\"Cassoulet\", 180);\n\nSystem.out.println(crepes.getNom());       \u002F\u002F Crêpes\nSystem.out.println(crepes.estRapide());    \u002F\u002F true\nSystem.out.println(cassoulet.estRapide()); \u002F\u002F false\n",[28,477,478,506,531,535,552,569],{"__ignoreMap":51},[55,479,480,483,486,488,491,493,495,498,500,503],{"class":57,"line":58},[55,481,482],{"class":69},"Recette",[55,484,485],{"class":69}," crepes",[55,487,73],{"class":61},[55,489,490],{"class":61}," new",[55,492,263],{"class":110},[55,494,172],{"class":69},[55,496,497],{"class":79},"\"Crêpes\"",[55,499,83],{"class":69},[55,501,502],{"class":117},"20",[55,504,505],{"class":69},");\n",[55,507,508,510,513,515,517,519,521,524,526,529],{"class":57,"line":97},[55,509,482],{"class":69},[55,511,512],{"class":69}," cassoulet",[55,514,73],{"class":61},[55,516,490],{"class":61},[55,518,263],{"class":110},[55,520,172],{"class":69},[55,522,523],{"class":79},"\"Cassoulet\"",[55,525,83],{"class":69},[55,527,528],{"class":117},"180",[55,530,505],{"class":69},[55,532,533],{"class":57,"line":104},[55,534,101],{"emptyLinePlaceholder":100},[55,536,537,539,541,544,546,549],{"class":57,"line":128},[55,538,107],{"class":69},[55,540,111],{"class":110},[55,542,543],{"class":69},"(crepes.",[55,545,360],{"class":110},[55,547,548],{"class":69},"());       ",[55,550,551],{"class":124},"\u002F\u002F Crêpes\n",[55,553,554,556,558,560,563,566],{"class":57,"line":141},[55,555,107],{"class":69},[55,557,111],{"class":110},[55,559,543],{"class":69},[55,561,562],{"class":110},"estRapide",[55,564,565],{"class":69},"());    ",[55,567,568],{"class":124},"\u002F\u002F true\n",[55,570,571,573,575,578,580,583],{"class":57,"line":146},[55,572,107],{"class":69},[55,574,111],{"class":110},[55,576,577],{"class":69},"(cassoulet.",[55,579,562],{"class":110},[55,581,582],{"class":69},"()); ",[55,584,585],{"class":124},"\u002F\u002F false\n",[37,587,588,589,592],{},"Le mot ",[28,590,591],{},"new"," appelle le constructeur et crée l'objet. Les deux recettes ont leurs propres valeurs, indépendantes l'une de l'autre.",[10,594,596],{"id":595},"lencapsulation","L'encapsulation",[37,598,599,600,603,604,607],{},"Les champs sont ",[28,601,602],{},"private"," : seul le code de la classe peut les lire ou les modifier. De l'extérieur, ",[28,605,606],{},"crepes.minutes"," est refusé.",[37,609,610,611,614],{},"C'est l'",[41,612,613],{},"encapsulation",". Elle protège les données : tu décides comment on y accède, et tu peux ajouter des contrôles.",[46,616,618],{"className":48,"code":617,"language":50,"meta":51,"style":51},"public void setMinutes(int minutes) {\n    if (minutes \u003C= 0) {\n        throw new IllegalArgumentException(\"La durée doit être positive\");\n    }\n    this.minutes = minutes;\n}\n",[28,619,620,637,652,669,673,684],{"__ignoreMap":51},[55,621,622,624,627,630,632,634],{"class":57,"line":58},[55,623,257],{"class":61},[55,625,626],{"class":61}," void",[55,628,629],{"class":110}," setMinutes",[55,631,172],{"class":69},[55,633,309],{"class":61},[55,635,636],{"class":69}," minutes) {\n",[55,638,639,642,645,647,650],{"class":57,"line":97},[55,640,641],{"class":61},"    if",[55,643,644],{"class":69}," (minutes ",[55,646,405],{"class":61},[55,648,649],{"class":117}," 0",[55,651,315],{"class":69},[55,653,654,657,659,662,664,667],{"class":57,"line":104},[55,655,656],{"class":61},"        throw",[55,658,490],{"class":61},[55,660,661],{"class":110}," IllegalArgumentException",[55,663,172],{"class":69},[55,665,666],{"class":79},"\"La durée doit être positive\"",[55,668,505],{"class":69},[55,670,671],{"class":57,"line":128},[55,672,344],{"class":69},[55,674,675,678,680,682],{"class":57,"line":141},[55,676,677],{"class":117},"    this",[55,679,335],{"class":69},[55,681,326],{"class":61},[55,683,287],{"class":69},[55,685,686],{"class":57,"line":146},[55,687,187],{"class":69},[37,689,690,691,694,695,698],{},"Une méthode qui lit un champ s'appelle un ",[41,692,693],{},"getter",", une méthode qui le modifie un ",[41,696,697],{},"setter",". Sans setter, le champ n'est pas modifiable de l'extérieur.",[37,700,701,702,705],{},"Le ",[28,703,704],{},"throw"," signale une erreur. Les exceptions sont expliquées dans le cours 06.",[10,707,709],{"id":708},"le-record","Le record",[37,711,712,713,715],{},"Beaucoup de classes ne font que porter des données. Un ",[41,714,30],{}," les écrit en une ligne :",[46,717,720],{"className":48,"code":718,"filename":719,"language":50,"meta":51,"style":51},"public record Ingredient(String nom, double quantite, String unite) { }\n","Ingredient.java",[28,721,722],{"__ignoreMap":51},[55,723,724,726,729,732,735,738],{"class":57,"line":58},[55,725,257],{"class":61},[55,727,728],{"class":61}," record",[55,730,731],{"class":65}," Ingredient",[55,733,734],{"class":69},"(String nom, ",[55,736,737],{"class":61},"double",[55,739,740],{"class":69}," quantite, String unite) { }\n",[37,742,743,744,83,747,431,750,753,754,757],{},"Java génère pour toi le constructeur, les accesseurs, ",[28,745,746],{},"equals",[28,748,749],{},"hashCode",[28,751,752],{},"toString",". Un record est ",[41,755,756],{},"immuable"," : ses valeurs ne changent plus après la création.",[46,759,761],{"className":48,"code":760,"language":50,"meta":51,"style":51},"Ingredient farine = new Ingredient(\"farine\", 250, \"g\");\nSystem.out.println(farine.nom()); \u002F\u002F farine\nSystem.out.println(farine);       \u002F\u002F Ingredient[nom=farine, quantite=250.0, unite=g]\n",[28,762,763,793,808],{"__ignoreMap":51},[55,764,765,768,771,773,775,777,779,781,783,786,788,791],{"class":57,"line":58},[55,766,767],{"class":69},"Ingredient",[55,769,770],{"class":69}," farine",[55,772,73],{"class":61},[55,774,490],{"class":61},[55,776,731],{"class":110},[55,778,172],{"class":69},[55,780,80],{"class":79},[55,782,83],{"class":69},[55,784,785],{"class":117},"250",[55,787,83],{"class":69},[55,789,790],{"class":79},"\"g\"",[55,792,505],{"class":69},[55,794,795,797,799,802,804,806],{"class":57,"line":97},[55,796,107],{"class":69},[55,798,111],{"class":110},[55,800,801],{"class":69},"(farine.",[55,803,304],{"class":110},[55,805,582],{"class":69},[55,807,125],{"class":124},[55,809,810,812,814,817],{"class":57,"line":104},[55,811,107],{"class":69},[55,813,111],{"class":110},[55,815,816],{"class":69},"(farine);       ",[55,818,819],{"class":124},"\u002F\u002F Ingredient[nom=farine, quantite=250.0, unite=g]\n",[37,821,822,823,826,827,31],{},"Les accesseurs portent le nom du champ, sans préfixe ",[28,824,825],{},"get"," : ",[28,828,829],{},"farine.nom()",[10,831,833],{"id":832},"classe-ou-record","Classe ou record ?",[835,836,837,850],"table",{},[838,839,840],"thead",{},[841,842,843,847],"tr",{},[844,845,846],"th",{},"Besoin",[844,848,849],{},"Choix",[851,852,853,863,871],"tbody",{},[841,854,855,859],{},[856,857,858],"td",{},"Données simples, jamais modifiées",[856,860,861],{},[28,862,30],{},[841,864,865,868],{},[856,866,867],{},"Valeurs qui changent au fil du temps",[856,869,870],{},"classe avec setters",[841,872,873,876],{},[856,874,875],{},"Logique et état internes à protéger",[856,877,237],{},[37,879,880],{},"Un record peut aussi contenir des méthodes. Il ne peut pas avoir de champs d'instance supplémentaires.",[882,883,884],"tip",{},[37,885,886],{},"Commence par un record pour les données simples. Passe à une classe seulement quand tu as besoin de modifier l'état ou de cacher des détails.",[10,888,890],{"id":889},"à-retenir","À retenir",[15,892,893,899,904,910,916],{},[18,894,895,896,898],{},"Un tableau a une taille fixe et des indices qui commencent à 0 ; ",[28,897,192],{}," donne sa taille.",[18,900,901,902,31],{},"Une classe décrit un modèle, un objet en est un exemplaire créé avec ",[28,903,591],{},[18,905,906,907,909],{},"Le constructeur initialise les champs ; ",[28,908,454],{}," désigne l'objet courant.",[18,911,912,913,915],{},"L'encapsulation consiste à rendre les champs ",[28,914,602],{}," et à passer par des méthodes.",[18,917,39,918,920,921,431,923,925],{},[28,919,30],{}," déclare en une ligne une classe de données immuable, avec accesseurs, ",[28,922,746],{},[28,924,752],{}," générés.",[927,928,929],"style",{},"html pre.shiki code .sOnC1, html code.shiki .sOnC1{--shiki-light:#CF222E;--shiki-default:#FF7B72;--shiki-dark:#FF7B72}html pre.shiki code .sIXEE, html code.shiki .sIXEE{--shiki-light:#953800;--shiki-default:#FFA657;--shiki-dark:#FFA657}html pre.shiki code .scfrF, html code.shiki .scfrF{--shiki-light:#1F2328;--shiki-default:#E6EDF3;--shiki-dark:#E6EDF3}html pre.shiki code .shWOn, html code.shiki .shWOn{--shiki-light:#0A3069;--shiki-default:#A5D6FF;--shiki-dark:#A5D6FF}html pre.shiki code .syCW7, html code.shiki .syCW7{--shiki-light:#8250DF;--shiki-default:#D2A8FF;--shiki-dark:#D2A8FF}html pre.shiki code .s5iOY, html code.shiki .s5iOY{--shiki-light:#0550AE;--shiki-default:#79C0FF;--shiki-dark:#79C0FF}html pre.shiki code .sd6ml, html code.shiki .sd6ml{--shiki-light:#6E7781;--shiki-default:#8B949E;--shiki-dark:#8B949E}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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":51,"searchDepth":97,"depth":104,"links":931},[932,933,934,935,936,937,938,939,940],{"id":12,"depth":97,"text":13},{"id":34,"depth":97,"text":35},{"id":227,"depth":97,"text":228},{"id":245,"depth":97,"text":246},{"id":471,"depth":97,"text":472},{"id":595,"depth":97,"text":596},{"id":708,"depth":97,"text":709},{"id":832,"depth":97,"text":833},{"id":889,"depth":97,"text":890},"Stocker plusieurs valeurs dans un tableau, puis modéliser une recette avec une classe, un constructeur, l'encapsulation et un record.","md",{},[43,237,241,448,613,602,693,30,454],"intermediaire","\u002Fjava\u002Ftableaux-classes-et-records",[948],"\u002Fjava\u002Fconditions-boucles-methodes",[950,954,957],{"nom":951,"url":952,"type":953},"OpenClassrooms, Apprenez à programmer en Java","https:\u002F\u002Fopenclassrooms.com\u002Ffr\u002Fcourses\u002F6173501-apprenez-a-programmer-en-java","cours",{"nom":955,"url":956,"type":953},"Développons en Java (Jean-Michel Doudoux)","https:\u002F\u002Fwww.jmdoudoux.fr\u002Fjava\u002Fdej\u002Findex.htm",{"nom":958,"url":959,"type":960,"anglais":100},"Classes et objets (dev.java, en anglais)","https:\u002F\u002Fdev.java\u002Flearn\u002Fclasses-objects\u002F","doc",{"title":5,"description":941},[963,965],{"nom":964,"url":959},"Classes et objets, dev.java (en anglais)",{"nom":966,"url":967},"Records, Java SE 25 (en anglais)","https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F25\u002Flanguage\u002Frecords.html","java\u002F04.tableaux-classes-et-records","L_efqSEVGsPZDLCcxt7krw3IuFUyU9828QOXAOHEwqQ",[971,975,979,982,983,987,991],{"path":972,"title":973,"stem":974},"\u002Fjava\u002Fjvm-et-premier-programme","La JVM et ton premier programme","java\u002F01.jvm-et-premier-programme",{"path":976,"title":977,"stem":978},"\u002Fjava\u002Fvariables-et-types","Variables, types et String","java\u002F02.variables-et-types",{"path":948,"title":980,"stem":981},"Conditions, boucles et méthodes","java\u002F03.conditions-boucles-methodes",{"path":946,"title":5,"stem":968},{"path":984,"title":985,"stem":986},"\u002Fjava\u002Fheritage-et-interfaces","Héritage, interfaces et polymorphisme","java\u002F05.heritage-et-interfaces",{"path":988,"title":989,"stem":990},"\u002Fjava\u002Fcollections-generiques-exceptions","Collections, génériques et exceptions","java\u002F06.collections-generiques-exceptions",{"path":992,"title":993,"stem":994},"\u002Fjava","Java","java\u002Findex",[996,998],{"title":980,"path":948,"stem":981,"description":997,"children":-1},"Faire des choix avec if et switch, répéter avec for et while, et regrouper du code dans des méthodes.",{"title":985,"path":984,"stem":986,"description":999,"children":-1},"Réutiliser une classe avec l'héritage, définir un contrat avec une interface, et traiter des objets différents de la même façon.",[1001],{"path":948,"title":980,"ligne":50},[1003,1005,1006,1007,1008,1009,1011],{"path":972,"title":973,"niveau":1004,"stem":974},"debutant",{"path":976,"title":977,"niveau":1004,"stem":978},{"path":948,"title":980,"niveau":1004,"stem":981},{"path":946,"title":5,"niveau":945,"stem":968},{"path":984,"title":985,"niveau":945,"stem":986},{"path":988,"title":989,"niveau":1010,"stem":990},"avance",{"path":992,"title":993,"niveau":1012,"stem":994},"memo",1794583453477]