{"id":12638,"date":"2026-10-13T13:27:33","date_gmt":"2026-10-13T05:27:33","guid":{"rendered":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/"},"modified":"2026-10-14T13:09:00","modified_gmt":"2026-10-14T05:09:00","slug":"uml-class-diagrams-for-data-modeling-with-plantuml","status":"publish","type":"post","link":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/","title":{"rendered":"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML"},"content":{"rendered":"<p data-nodeid=\"15366\">Un <a href=\"https:\/\/www.visual-paradigm.com\/guide\/uml-unified-modeling-language\/uml-class-diagram-tutorial\/\">diagramme de classes UML<\/a>d\u00e9crit la <strong data-nodeid=\"15522\">structure<\/strong>d&#8217;un syst\u00e8me : les \u00e9l\u00e9ments qu&#8217;il mod\u00e9lise, leurs propri\u00e9t\u00e9s et leurs relations. Pour la mod\u00e9lisation de donn\u00e9es, il peut capturer les concepts du domaine et les contraintes avant de vous engager dans des tables ou du code d&#8217;application.<\/p>\n<p><img alt=\"Diagramme de classes UML mod\u00e9lisant les entit\u00e9s Client, Commande et Produit, accompagn\u00e9 de la syntaxe PlantUML et d'un flux de travail en quatre \u00e9tapes pour la mod\u00e9lisation de donn\u00e9es sous contr\u00f4le de version.\" class=\"alignnone size-full wp-image-21887\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47.jpeg\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47.jpeg 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47-300x240.jpeg 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47-1024x819.jpeg 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47-768x615.jpeg 768w\" width=\"1402\"\/><\/p>\n<p data-nodeid=\"15367\"><a href=\"https:\/\/www.visual-paradigm.com\/features\/plantuml-editor\/\">PlantUML<\/a>rend le diagramme reproductible : vous \u00e9crivez du texte, le g\u00e9n\u00e9rez, examinez les modifications dans le contr\u00f4le de version et le mettez \u00e0 jour au fur et \u00e0 mesure que le mod\u00e8le \u00e9volue. Il compl\u00e8te \u2014 et ne remplace pas \u2014 les sch\u00e9mas de base de donn\u00e9es, les migrations et les r\u00e8gles m\u00e9tier d\u00e9taill\u00e9es.<\/p>\n<h2 data-nodeid=\"15368\">1. Choisissez le niveau de mod\u00e9lisation<\/h2>\n<p data-nodeid=\"15369\">Un diagramme de mod\u00e9lisation de donn\u00e9es utile se concentre g\u00e9n\u00e9ralement sur un seul niveau \u00e0 la fois :<\/p>\n<p><img alt=\"Diagramme illustrant trois niveaux de mod\u00e9lisation de donn\u00e9es : conceptuel, logique et physique, montrant un niveau de d\u00e9tail croissant des concepts m\u00e9tier \u00e0 l'impl\u00e9mentation SQL.\" class=\"alignnone size-full wp-image-21890\" decoding=\"async\" height=\"941\" loading=\"lazy\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc.png 1672w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-300x169.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-1024x576.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-768x432.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-1536x864.png 1536w\" width=\"1672\"\/><\/p>\n<ul data-nodeid=\"15370\">\n<li data-nodeid=\"15371\">\n<p data-nodeid=\"15372\"><strong data-nodeid=\"15534\">Conceptuel :<\/strong>concepts m\u00e9tier et relations, avec un minimum de d\u00e9tails techniques. Exemple :<code data-backticks=\"1\" data-nodeid=\"15530\">Client<\/code>passe un <code data-backticks=\"1\" data-nodeid=\"15532\">Commande<\/code>.<\/p>\n<\/li>\n<li data-nodeid=\"15373\">\n<p data-nodeid=\"15374\"><strong data-nodeid=\"15539\">Logique :<\/strong>attributs, identifiants, multiplicit\u00e9s et r\u00e8gles, sans lier le mod\u00e8le \u00e0 une base de donn\u00e9es sp\u00e9cifique.<\/p>\n<\/li>\n<li data-nodeid=\"15375\">\n<p data-nodeid=\"15376\"><strong data-nodeid=\"15544\">Physique :<\/strong>d\u00e9tails d&#8217;impl\u00e9mentation tels que les types de colonnes SQL, les index et les contraintes sp\u00e9cifiques \u00e0 la base de donn\u00e9es.<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"15377\">L&#8217;exemple ci-dessous est un <strong data-nodeid=\"15556\">mod\u00e8le de domaine logique<\/strong>. Des types comme <code data-backticks=\"1\" data-nodeid=\"15550\">UUID<\/code>, <code data-backticks=\"1\" data-nodeid=\"15552\">Money<\/code>, et <code data-backticks=\"1\" data-nodeid=\"15554\">DateTime<\/code>sont illustratifs ; d\u00e9cidez de leurs repr\u00e9sentations concr\u00e8tes lors du choix d&#8217;une technologie.<\/p>\n<h2 data-nodeid=\"15378\">2. Fondamentaux de PlantUML<\/h2>\n<p data-nodeid=\"15379\">Une classe poss\u00e8de un nom et peut \u00e9num\u00e9rer des attributs et des op\u00e9rations :<\/p>\n<p id=\"pCSWdAu\"><img alt=\"Interface VPasCode affichant la syntaxe PlantUML pour une classe Client, accompagn\u00e9e de son diagramme rendu montrant les attributs et les op\u00e9rations.\" class=\"alignnone size-full wp-image-21891\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781.png 1916w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-1024x466.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-768x349.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-1536x698.png 1536w\" width=\"1916\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15380\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Customer {\r\n  -id: UUID\r\n  +name: String\r\n  +email: String\r\n  +changeEmail(newEmail: String): void\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15381\">Les marqueurs de visibilit\u00e9 sont des indications de mod\u00e9lisation facultatives :<\/p>\n<p><img alt=\"Infographie des marqueurs de visibilit\u00e9 UML montrant les symboles plus, moins, di\u00e8se et tilde pour les niveaux d'acc\u00e8s public, priv\u00e9, prot\u00e9g\u00e9 et package.\" class=\"alignnone size-full wp-image-21893\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7-768x615.png 768w\" width=\"1402\"\/><\/p>\n<ul data-nodeid=\"15382\">\n<li data-nodeid=\"15383\">\n<p data-nodeid=\"15384\"><code data-backticks=\"1\" data-nodeid=\"15560\">+<\/code> public<\/p>\n<\/li>\n<li data-nodeid=\"15385\">\n<p data-nodeid=\"15386\"><code data-backticks=\"1\" data-nodeid=\"15562\">-<\/code> private<\/p>\n<\/li>\n<li data-nodeid=\"15387\">\n<p data-nodeid=\"15388\"><code data-backticks=\"1\" data-nodeid=\"15564\">#<\/code> protected<\/p>\n<\/li>\n<li data-nodeid=\"15389\">\n<p data-nodeid=\"15390\"><code data-backticks=\"1\" data-nodeid=\"15566\">~<\/code> visibilit\u00e9 du paquet<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"15391\">Pour un diagramme de domaine ou de donn\u00e9es, les attributs sont les plus importants. Incluez des op\u00e9rations uniquement lorsqu&#8217;elles clarifient un comportement important ; \u00e9vitez de transformer le diagramme en une liste compl\u00e8te de code.<\/p>\n<h2 data-nodeid=\"15392\">3. Relations et multiplicit\u00e9<\/h2>\n<p data-nodeid=\"15393\">Les notations de relation les plus utiles pour la mod\u00e9lisation de donn\u00e9es sont :<\/p>\n<p><img alt=\"Diagramme UML illustrant des types de relations comme l'association et l'agr\u00e9gation, ainsi que des notations de multiplicit\u00e9 telles que 0..1 et 0..* avec un exemple client-commande.\" class=\"alignnone size-full wp-image-21894\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5-768x615.png 768w\" width=\"1402\"\/><\/p>\n<table data-nodeid=\"15395\">\n<thead data-nodeid=\"15396\">\n<tr data-nodeid=\"15397\">\n<th data-nodeid=\"15399\">Relation<\/th>\n<th data-nodeid=\"15400\">PlantUML<\/th>\n<th data-nodeid=\"15401\">Signification<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"15405\">\n<tr data-nodeid=\"15406\">\n<td data-nodeid=\"15407\">Association<\/td>\n<td data-nodeid=\"15408\"><code data-backticks=\"1\" data-nodeid=\"15575\">A -- B<\/code><\/td>\n<td data-nodeid=\"15409\">Une relation existe entre A et B<\/td>\n<\/tr>\n<tr data-nodeid=\"15410\">\n<td data-nodeid=\"15411\">Association dirig\u00e9e<\/td>\n<td data-nodeid=\"15412\"><code data-backticks=\"1\" data-nodeid=\"15578\">A --&gt; B<\/code><\/td>\n<td data-nodeid=\"15413\">Une relation navigable ou directionnelle<\/td>\n<\/tr>\n<tr data-nodeid=\"15414\">\n<td data-nodeid=\"15415\">Agr\u00e9gation<\/td>\n<td data-nodeid=\"15416\"><code data-backticks=\"1\" data-nodeid=\"15581\">A o-- B<\/code><\/td>\n<td data-nodeid=\"15417\">A poss\u00e8de une partie, mais la partie peut exister ind\u00e9pendamment<\/td>\n<\/tr>\n<tr data-nodeid=\"15418\">\n<td data-nodeid=\"15419\">Composition<\/td>\n<td data-nodeid=\"15420\"><code data-backticks=\"1\" data-nodeid=\"15584\">A *-- B<\/code><\/td>\n<td data-nodeid=\"15421\">A poss\u00e8de une partie dont le cycle de vie d\u00e9pend d&#8217;elle<\/td>\n<\/tr>\n<tr data-nodeid=\"15422\">\n<td data-nodeid=\"15423\">G\u00e9n\u00e9ralisation<\/td>\n<td data-nodeid=\"15424\">`Enfant \u2014<\/td>\n<td data-nodeid=\"15425\">&gt; Parent`<\/td>\n<\/tr>\n<tr data-nodeid=\"15427\">\n<td data-nodeid=\"15428\">R\u00e9alisation d&#8217;interface<\/td>\n<td data-nodeid=\"15429\">`Classe ..<\/td>\n<td data-nodeid=\"15430\">&gt; Interface`<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nodeid=\"15432\">Les \u00e9tiquettes de multiplicit\u00e9 se situent pr\u00e8s des extr\u00e9mit\u00e9s de l&#8217;association :<\/p>\n<ul data-nodeid=\"15433\">\n<li data-nodeid=\"15434\">\n<p data-nodeid=\"15435\"><code data-backticks=\"1\" data-nodeid=\"15597\">1<\/code> \u2014 exactement un<\/p>\n<\/li>\n<li data-nodeid=\"15436\">\n<p data-nodeid=\"15437\"><code data-backticks=\"1\" data-nodeid=\"15599\">0..1<\/code> \u2014 optionnel, au plus un<\/p>\n<\/li>\n<li data-nodeid=\"15438\">\n<p data-nodeid=\"15439\"><code data-backticks=\"1\" data-nodeid=\"15601\">*<\/code> ou <code data-backticks=\"1\" data-nodeid=\"15603\">0..*<\/code> \u2014 z\u00e9ro ou plus<\/p>\n<\/li>\n<li data-nodeid=\"15440\">\n<p data-nodeid=\"15441\"><code data-backticks=\"1\" data-nodeid=\"15605\">1..*<\/code> \u2014 un ou plus<\/p>\n<\/li>\n<li data-nodeid=\"15442\">\n<p data-nodeid=\"15443\"><code data-backticks=\"1\" data-nodeid=\"15607\">2..5<\/code> \u2014 une plage born\u00e9e<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"15444\">Par exemple :<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Syx9JCqhKL0oL5BGrLLGCj3Jqr9ISCxFpKtCIqbLi58eI2mkJWK0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15445\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">Client \"1\" -- \"0..*\" Commande : passe\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Syx9JCqhKL0oL5BGrLLGCj3Jqr9ISCxFpKtCIqbLi58eI2mkJWK0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15446\">Lisez attentivement les libell\u00e9s \u00e0 chaque extr\u00e9mit\u00e9 : un client peut passer z\u00e9ro ou plusieurs commandes ; chaque commande est associ\u00e9e \u00e0 exactement un client. Les libell\u00e9s d\u00e9crivent la relation, et non n\u00e9cessairement une impl\u00e9mentation de cl\u00e9 \u00e9trang\u00e8re sp\u00e9cifique \u00e0 une base de donn\u00e9es.<\/p>\n<h2 data-nodeid=\"15447\">4. Exemple d\u00e9taill\u00e9 : boutique en ligne<\/h2>\n<p data-nodeid=\"15448\">Ce mod\u00e8le inclut les clients, les commandes, les lignes de commande, les produits et les enregistrements de paiement. Il illustre les identifiants, les types de valeur, une \u00e9num\u00e9ration, la composition et les multiplicit\u00e9s.<\/p>\n<p id=\"uuxvPiM\"><img alt=\"Code PlantUML et diagramme de classes UML r\u00e9sultant montrant un mod\u00e8le de boutique en ligne avec les entit\u00e9s Client, Commande, Ligne de Commande, Produit et Paiement.\" class=\"alignnone size-full wp-image-21896\" decoding=\"async\" height=\"867\" loading=\"lazy\" sizes=\"auto, (max-width: 1913px) 100vw, 1913px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931.png 1913w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-1024x464.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-768x348.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-1536x696.png 1536w\" width=\"1913\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLJDRjim3Bu7o3iGENP8q5wDegYR19YnB0cIUC0mxA3QJApLbZnBweOEUu2-HQ_TQ_Z5Hid_QK_cdpwI7qdVAiqARR8KzedC5p9ZN8n7we6Bd1KiWoXbIlbQ5_pUQ0mYAVRy2U6o7wCI5ijVN9pWo5A5uz5ubF0O8KETo5XPtS70FEKeDFmPZm0-yBXIFGZ3OE5CIDbJ3_ouGALmQJLd5pBpZqSU9UMh1tkgHPp6exyzN9bbJ5365haszB1Zfh4pBqWxy0oTYoZGHbja-ss2d4jBpMn5nOag7UHSyPF0iyJ2PELh8PtBWq1eF67XF3yD4vfhM_zMAgxv8_RTUS5_Xu9hnWjyDzksaB7X7NMrtkjFFHZgu5FO4DOHLUFxaJRuVYzRnZ7hJwOnzF0pAJIpbkRz6-AQHotT7Kf3DtoxdCsklW-ILtXmVItlVw068lEHfMYAcvkwd3Rp0YEUiMebOdpaYhYQonWNJgv1aOPmDiaAvswt2OFLQhEsojRVxyldPIL-hQLLy6LNY_vw7QwSV0uwv6gv1lzmMAuFrQlmiDa516oLkRyzXBjABf_d7pTX9U-Md-ysuSv5EV3wAYPN4vXEOK8CNKowbVOW9vQekzPY0oziv9MB72wY1tIYchin33qry7Hwun2QZVBeQEbJbAz7sbqK4KBvSfQjAwljtWDD7sONMTcPvUtmsvSsq_b9jUyxPxSsmtfjHBqRn04jC9ZwGivWsg1wKIodGcg4WfyI3V8ufCZE86NGNYJ4alel_-a2GPcSIE2qVPO5UBBNxE8H-YSAg7HZWuZbsX1zDeuPAi8LHWrGagZDYI86MzJRukf1zD9KbmgnQOUKez4G9KpG3sDc8uCK165WbgSiikohDpLM5GnQd_Nhk2MH_ll_0G00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15449\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml ShopDomain\r\nskinparam classAttributeIconSize 0\r\nskinparam shadowing false\r\n\r\nhide methods\r\n\r\nclass Client {\r\n  +idClient: UUID\r\n  +email: AdresseEmail\r\n  +nomAffich\u00e9: String\r\n}\r\n\r\nclass Commande {\r\n  +idCommande: UUID\r\n  +dateCommande: DateTime\r\n  +statut: StatutCommande\r\n  +total: Argent\r\n}\r\n\r\nclass LigneCommande {\r\n  +num\u00e9roLigne: Integer\r\n  +quantit\u00e9: PositiveInteger\r\n  +prixUnitaire: Argent\r\n}\r\n\r\nclass Produit {\r\n  +idProduit: UUID\r\n  +sku: SKU\r\n  +nom: String\r\n  +prixActuel: Argent\r\n}\r\n\r\nclass Paiement {\r\n  +idPaiement: UUID\r\n  +montant: Argent\r\n  +statut: StatutPaiement\r\n  +datePaiement: DateTime [0..1]\r\n}\r\n\r\nclass Argent &lt;&lt;objet de valeur&gt;&gt; {\r\n  +montant: Decimal\r\n  +devise: CodeDevise\r\n}\r\n\r\nenum StatutCommande {\r\n  BROUILLON\r\n  PASS\u00c9E\r\n  PAY\u00c9E\r\n  LIVR\u00c9E\r\n  ANNUL\u00c9E\r\n}\r\n\r\nenum StatutPaiement {\r\n  EN ATTENTE\r\n  AUTORIS\u00c9\r\n  CAPTUR\u00c9\r\n  \u00c9CHOU\u00c9\r\n  REMBOURS\u00c9\r\n}\r\n\r\nClient \"1\" -- \"0..*\" Commande : passe\r\nCommande \"1\" *-- \"1..*\" LigneCommande : contient\r\nLigneCommande \"0..*\" --&gt; \"1\" Produit : fait r\u00e9f\u00e9rence \u00e0\r\nCommande \"1\" -- \"0..*\" Paiement : tentatives de paiement\r\nCommande --&gt; StatutCommande\r\nPaiement --&gt; StatutPaiement\r\nLigneCommande --&gt; Argent : prix unitaire\r\nPaiement --&gt; Argent : montant\r\n\r\nnote right of LigneCommande\r\n  la quantit\u00e9 doit \u00eatre sup\u00e9rieure \u00e0 z\u00e9ro\r\n  le prixUnitaire est le prix captur\u00e9\r\n  au moment de la commande\r\nend note\r\n\r\nnote right of Produit\r\n  le prixActuel du Produit peut changer.\r\n  Il ne remplace pas le prixUnitaire de la LigneCommande.\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLJDRjim3Bu7o3iGENP8q5wDegYR19YnB0cIUC0mxA3QJApLbZnBweOEUu2-HQ_TQ_Z5Hid_QK_cdpwI7qdVAiqARR8KzedC5p9ZN8n7we6Bd1KiWoXbIlbQ5_pUQ0mYAVRy2U6o7wCI5ijVN9pWo5A5uz5ubF0O8KETo5XPtS70FEKeDFmPZm0-yBXIFGZ3OE5CIDbJ3_ouGALmQJLd5pBpZqSU9UMh1tkgHPp6exyzN9bbJ5365haszB1Zfh4pBqWxy0oTYoZGHbja-ss2d4jBpMn5nOag7UHSyPF0iyJ2PELh8PtBWq1eF67XF3yD4vfhM_zMAgxv8_RTUS5_Xu9hnWjyDzksaB7X7NMrtkjFFHZgu5FO4DOHLUFxaJRuVYzRnZ7hJwOnzF0pAJIpbkRz6-AQHotT7Kf3DtoxdCsklW-ILtXmVItlVw068lEHfMYAcvkwd3Rp0YEUiMebOdpaYhYQonWNJgv1aOPmDiaAvswt2OFLQhEsojRVxyldPIL-hQLLy6LNY_vw7QwSV0uwv6gv1lzmMAuFrQlmiDa516oLkRyzXBjABf_d7pTX9U-Md-ysuSv5EV3wAYPN4vXEOK8CNKowbVOW9vQekzPY0oziv9MB72wY1tIYchin33qry7Hwun2QZVBeQEbJbAz7sbqK4KBvSfQjAwljtWDD7sONMTcPvUtmsvSsq_b9jUyxPxSsmtfjHBqRn04jC9ZwGivWsg1wKIodGcg4WfyI3V8ufCZE86NGNYJ4alel_-a2GPcSIE2qVPO5UBBNxE8H-YSAg7HZWuZbsX1zDeuPAi8LHWrGagZDYI86MzJRukf1zD9KbmgnQOUKez4G9KpG3sDc8uCK165WbgSiikohDpLM5GnQd_Nhk2MH_ll_0G00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15450\"><strong data-nodeid=\"15619\">Pourquoi mod\u00e9liser <code data-backticks=\"1\" data-nodeid=\"15615\">LigneCommande<\/code> explicitement ?<\/strong> La relation entre une commande et un produit poss\u00e8de ses propres donn\u00e9es \u2014 la quantit\u00e9 et le prix au moment de l&#8217;achat. Cela en fait un concept du domaine, et non simplement un lien simple.<\/p>\n<p data-nodeid=\"15451\"><strong data-nodeid=\"15628\">Pourquoi une composition de <code data-backticks=\"1\" data-nodeid=\"15622\">Commande<\/code> vers <code data-backticks=\"1\" data-nodeid=\"15624\">LigneCommande<\/code>?<\/strong> L&#8217;exemple suppose qu&#8217;une ligne de commande appartient \u00e0 une seule commande et n&#8217;a pas de sens ind\u00e9pendant. Utilisez la composition uniquement lorsque cette r\u00e8gle de propri\u00e9t\u00e9 et de cycle de vie est vraie dans votre domaine ; la notation UML ne l&#8217;impose pas dans la base de donn\u00e9es.<\/p>\n<p data-nodeid=\"15452\"><strong data-nodeid=\"15633\">Pourquoi distinguer les prix actuels et historiques ?<\/strong> Le prix d&#8217;un produit peut changer apr\u00e8s qu&#8217;une commande a \u00e9t\u00e9 pass\u00e9e. Conserver le prix au moment de l&#8217;achat sur la ligne de commande pr\u00e9serve le montant historique.<\/p>\n<h2 data-nodeid=\"15453\">5. D\u00e9cisions de mod\u00e9lisation qui comptent<\/h2>\n<p><img alt=\"Infographie de mod\u00e9lisation de donn\u00e9es UML illustrant six d\u00e9cisions cl\u00e9s : identifiants, valeurs optionnelles, objets de valeur, \u00e9num\u00e9rations, mod\u00e8le versus impl\u00e9mentation, et lisibilit\u00e9.\" class=\"alignnone size-full wp-image-21897\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731-768x615.png 768w\" width=\"1402\"\/><\/p>\n<p data-nodeid=\"15454\"><strong data-nodeid=\"15643\">Identifiants :<\/strong> Marquez les identifiants de mani\u00e8re coh\u00e9rente, comme <code data-backticks=\"1\" data-nodeid=\"15639\">idClient<\/code> ou <code data-backticks=\"1\" data-nodeid=\"15641\">idCommande<\/code>. UML ne d\u00e9finit pas une seule notation universelle pour les cl\u00e9s primaires, choisissez donc une convention et documentez-la. Un st\u00e9r\u00e9otype ou une note peut le rendre explicite :<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMSCx9JCqhKQZcvL9Gq4ukBIx9pqqjyaonKWWDzNHHiB49yBQp0ykbvYPcvbWfk88envIKejJYObwkMW00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15455\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">class Client {\r\n  +customerId: UUID &lt;&lt;PK&gt;&gt;\r\n  +email: EmailAddress\r\n}\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMSCx9JCqhKQZcvL9Gq4ukBIx9pqqjyaonKWWDzNHHiB49yBQp0ykbvYPcvbWfk88envIKejJYObwkMW00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Modifier PlantUML dans VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15456\"><strong data-nodeid=\"15652\">Valeurs optionnelles :<\/strong> Utilisez <code data-backticks=\"1\" data-nodeid=\"15648\">[0..1]<\/code> pour un attribut optionnel lorsque cela est clair pour vos lecteurs, ou notez la r\u00e8gle. Par exemple, un paiement peut ne pas avoir de <code data-backticks=\"1\" data-nodeid=\"15650\">paidAt<\/code> d&#8217;horodatage jusqu&#8217;\u00e0 ce qu&#8217;il r\u00e9ussisse.<\/p>\n<p data-nodeid=\"15457\"><strong data-nodeid=\"15661\">Objets de valeur :<\/strong> Un type tel que <code data-backticks=\"1\" data-nodeid=\"15657\">Money<\/code> ou <code data-backticks=\"1\" data-nodeid=\"15659\">EmailAddress<\/code> peut repr\u00e9senter un concept avec sa propre validation ou s\u00e9mantique. D\u00e9cidez s&#8217;il doit appara\u00eetre comme une classe s\u00e9par\u00e9e, un type d&#8217;attribut ou une structure de base de donn\u00e9es en fonction du public et du niveau de d\u00e9tail.<\/p>\n<p data-nodeid=\"15458\"><strong data-nodeid=\"15666\">\u00c9num\u00e9rations et valeurs contr\u00f4l\u00e9es :<\/strong> Utilisez une \u00e9num\u00e9ration lorsque l&#8217;ensemble autoris\u00e9 est petit et relativement stable. Si les valeurs n\u00e9cessitent des descriptions ind\u00e9pendantes, un cycle de vie ou une administration, mod\u00e9lisez-les plut\u00f4t comme une classe.<\/p>\n<p data-nodeid=\"15459\"><strong data-nodeid=\"15673\">Normalisation et impl\u00e9mentation :<\/strong> Un diagramme de classes communique des concepts et des r\u00e8gles ; il ne r\u00e8gle pas tous les d\u00e9tails relationnels. Par exemple, si <code data-backticks=\"1\" data-nodeid=\"15671\">Money<\/code> devient deux colonnes, une table s\u00e9par\u00e9e ou un type sp\u00e9cifique \u00e0 la base de donn\u00e9es est une d\u00e9cision d&#8217;impl\u00e9mentation.<\/p>\n<p data-nodeid=\"15460\"><strong data-nodeid=\"15678\">Gardez les diagrammes lisibles :<\/strong> Divisez un grand domaine en diagrammes cibl\u00e9s \u2014 tels que la commande, l&#8217;inventaire et l&#8217;identit\u00e9 \u2014 et utilisez des paquets pour regrouper les classes li\u00e9es. Affichez uniquement les attributs pertinents par rapport \u00e0 la question que le diagramme est cens\u00e9 r\u00e9pondre.<\/p>\n<h2 data-nodeid=\"15461\">6. Construisez un mod\u00e8le \u00e0 partir des exigences<\/h2>\n<p><img alt=\"Infographie en six \u00e9tapes illustrant comment construire un mod\u00e8le UML \u00e0 partir des exigences, couvrant l'extraction de concepts, la clarification des r\u00e8gles et l'examen des cas limites.\" class=\"alignnone size-full wp-image-21900\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a-768x615.png 768w\" width=\"1402\"\/><\/p>\n<ol data-nodeid=\"15462\">\n<li data-nodeid=\"15463\">\n<p data-nodeid=\"15464\"><strong data-nodeid=\"15684\">Extrayez les concepts candidats<\/strong> du langage du domaine : les noms sugg\u00e8rent souvent des classes ; les verbes sugg\u00e8rent souvent des relations ou des comportements.<\/p>\n<\/li>\n<li data-nodeid=\"15465\">\n<p data-nodeid=\"15466\"><strong data-nodeid=\"15689\">Pr\u00e9ciser les r\u00e8gles<\/strong> avec des questions concr\u00e8tes : une commande peut-elle exister sans client ? Peut-elle avoir z\u00e9ro ligne ? Un paiement peut-il \u00eatre r\u00e9essay\u00e9 ?<\/p>\n<\/li>\n<li data-nodeid=\"15467\">\n<p data-nodeid=\"15468\"><strong data-nodeid=\"15694\">Choisir un niveau de mod\u00e9lisation<\/strong> et exclure les d\u00e9cisions techniques relatives \u00e0 la base de donn\u00e9es d&#8217;un diagramme conceptuel.<\/p>\n<\/li>\n<li data-nodeid=\"15469\">\n<p data-nodeid=\"15470\"><strong data-nodeid=\"15699\">Ajouter des attributs et des identifiants<\/strong> uniquement lorsqu&#8217;ils aident \u00e0 expliquer le mod\u00e8le.<\/p>\n<\/li>\n<li data-nodeid=\"15471\">\n<p data-nodeid=\"15472\"><strong data-nodeid=\"15704\">D\u00e9finir les multiplicit\u00e9s<\/strong> \u00e0 partir des r\u00e8gles m\u00e9tier, en v\u00e9rifiant les deux extr\u00e9mit\u00e9s de chaque relation.<\/p>\n<\/li>\n<li data-nodeid=\"15473\">\n<p data-nodeid=\"15474\"><strong data-nodeid=\"15709\">Examiner les cas limites<\/strong>: suppression, enregistrements historiques, champs optionnels, tentatives r\u00e9p\u00e9t\u00e9es et valeurs changeantes.<\/p>\n<\/li>\n<li data-nodeid=\"15475\">\n<p data-nodeid=\"15476\"><strong data-nodeid=\"15714\">G\u00e9n\u00e9rer et examiner<\/strong> le diagramme avec des experts du domaine et des impl\u00e9menteurs. Traitez-le comme un mod\u00e8le \u00e0 valider, et non simplement comme une image \u00e0 approuver.<\/p>\n<\/li>\n<\/ol>\n<h2 data-nodeid=\"15477\">7. Utiliser VPasCode et Visual Paradigm<\/h2>\n<p data-nodeid=\"15478\"><a href=\"https:\/\/www.visual-paradigm.com\/features\/vpascode\/\"><strong data-nodeid=\"15720\">VPasCode<\/strong><\/a> est un \u00e9diteur<a href=\"https:\/\/www.visual-paradigm.com\/features\/diagram-as-code-tool\/\"> de texte vers diagramme bas\u00e9 sur le navigateur, prenant en charge PlantUML<\/a> et un aper\u00e7u en direct. Sa description des fonctionnalit\u00e9s mentionne \u00e9galement la g\u00e9n\u00e9ration et la modification de code de diagramme par IA, ainsi qu&#8217;une assistance syntaxique. Un flux de travail pratique est le suivant :<\/p>\n<p><img alt=\"Diagramme de flux de travail en cinq \u00e9tapes montrant comment \u00e9crire, pr\u00e9visualiser, affiner, g\u00e9n\u00e9rer et valider des diagrammes de classes UML en utilisant VPasCode et Visual Paradigm.\" class=\"alignnone size-full wp-image-21906\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f-768x615.png 768w\" width=\"1402\"\/><\/p>\n<ol data-nodeid=\"15479\">\n<li data-nodeid=\"15480\">\n<p data-nodeid=\"15481\">Ouvrez VPasCode et s\u00e9lectionnez ou saisissez PlantUML.<\/p>\n<\/li>\n<li data-nodeid=\"15482\">\n<p data-nodeid=\"15483\">Collez l&#8217;exemple ci-dessus et inspectez le diagramme g\u00e9n\u00e9r\u00e9.<\/p>\n<\/li>\n<li data-nodeid=\"15484\">\n<p data-nodeid=\"15485\">It\u00e9rez sur la source PlantUML ; conservez le texte comme artefact versionnable.<\/p>\n<\/li>\n<li data-nodeid=\"15486\">\n<p data-nodeid=\"15487\">Utilisez l&#8217;assistant IA, s&#8217;il est disponible dans votre espace de travail, pour r\u00e9diger ou r\u00e9viser une premi\u00e8re version.<\/p>\n<\/li>\n<li data-nodeid=\"15488\">\n<p data-nodeid=\"15489\">V\u00e9rifiez vous-m\u00eame chaque classe, relation, multiplicit\u00e9 et r\u00e8gle m\u00e9tier g\u00e9n\u00e9r\u00e9es.<\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"15490\">Les outils de diagrammes assist\u00e9s par IA de Visual Paradigm peuvent g\u00e9n\u00e9rer des diagrammes modifiables \u00e0 partir de descriptions en langage naturel. Son flux de travail publi\u00e9 d\u00e9crit la g\u00e9n\u00e9ration d&#8217;un diagramme de classes \u00e0 partir d&#8217;une consigne, puis l&#8217;affinement de ses \u00e9l\u00e9ments et relations. Traitez la sortie de l&#8217;IA comme un<strong data-nodeid=\"15735\">brouillon<\/strong>: il peut inf\u00e9rer une propri\u00e9t\u00e9 incorrecte, des contraintes manquantes ou des classes injustifi\u00e9es. La correction du mod\u00e8le d\u00e9pend toujours de sa validation par rapport aux exigences.<\/p>\n<p data-nodeid=\"15491\">Par exemple, donnez une consigne \u00e0 un assistant IA :<\/p>\n<blockquote data-nodeid=\"15492\">\n<p data-nodeid=\"15493\">Cr\u00e9ez un diagramme de classes UML logique pour une boutique en ligne. Les clients passent des commandes. Chaque commande contient une ou plusieurs lignes de commande. Chaque ligne de commande fait r\u00e9f\u00e9rence \u00e0 un produit et stocke la quantit\u00e9 et le prix unitaire au moment de l&#8217;achat. Les commandes peuvent avoir plusieurs tentatives de paiement. Incluez les identifiants, les multiplicit\u00e9s et les \u00e9num\u00e9rations d&#8217;\u00e9tat de commande et de paiement. Sortez uniquement du code PlantUML.<\/p>\n<\/blockquote>\n<p data-nodeid=\"15494\">Ensuite, examinez la sortie par rapport aux exigences avant de l&#8217;accepter. Pour de meilleurs r\u00e9sultats, sp\u00e9cifiez explicitement les hypoth\u00e8ses \u2014 par exemple, si les commandes peuvent \u00eatre des brouillons sans lignes, et si les paiements peuvent \u00eatre rembours\u00e9s.<\/p>\n<p data-nodeid=\"15495\">Visual Paradigm d\u00e9crit<a href=\"https:\/\/blog.visual-paradigm.com\/comprehensive-guide-to-the-benefits-of-vpascode-editor-in-visual-paradigms-ecosystem\/\">VPasCode<\/a> en tant que <a href=\"https:\/\/guides.visual-paradigm.com\/vpascode-ai-assisted-diagram-as-code-with-plantuml\/\">\u00e9diteur compatible PlantUML<\/a> avec rendu en direct et <a href=\"https:\/\/www.visual-paradigm.com\/guide\/mastering-vpascode-the-ultimate-guide-to-ai-powered-diagram-as-code-with-multi-engine-support\/\">g\u00e9n\u00e9ration ou modification assist\u00e9e par IA<\/a>. Les outils et la disponibilit\u00e9 peuvent varier selon la version du produit ou l&#8217;espace de travail.<\/p>\n<h2 data-nodeid=\"15496\">8. Une liste de v\u00e9rification de r\u00e9vision compacte<\/h2>\n<p data-nodeid=\"15497\">Avant de partager ou d&#8217;impl\u00e9menter un diagramme de classes, v\u00e9rifiez :<\/p>\n<p><img alt=\"Infographie de la liste de v\u00e9rification de revue de diagramme de classes UML \u00e9num\u00e9rant huit crit\u00e8res de validation pour les mod\u00e8les PlantUML, y compris les concepts du domaine, les attributs et les d\u00e9pendances du cycle de vie.\" class=\"alignnone size-full wp-image-21907\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700.jpeg\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700.jpeg 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700-300x240.jpeg 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700-1024x819.jpeg 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700-768x615.jpeg 768w\" width=\"1402\"\/><\/p>\n<ul data-nodeid=\"15498\">\n<li data-nodeid=\"15499\">\n<p data-nodeid=\"15500\">Chaque classe repr\u00e9sente-t-elle un concept de domaine significatif ?<\/p>\n<\/li>\n<li data-nodeid=\"15501\">\n<p data-nodeid=\"15502\">Les identifiants et les attributs importants sont-ils clairs ?<\/p>\n<\/li>\n<li data-nodeid=\"15503\">\n<p data-nodeid=\"15504\">Les libell\u00e9s de relation et les multiplicit\u00e9s sont-ils corrects aux <strong data-nodeid=\"15751\">deux<\/strong> extr\u00e9mit\u00e9s ?<\/p>\n<\/li>\n<li data-nodeid=\"15505\">\n<p data-nodeid=\"15506\">La composition refl\u00e8te-t-elle une d\u00e9pendance r\u00e9elle du cycle de vie ?<\/p>\n<\/li>\n<li data-nodeid=\"15507\">\n<p data-nodeid=\"15508\">Les faits historiques sont-ils pr\u00e9serv\u00e9s l\u00e0 o\u00f9 les valeurs actuelles peuvent changer ?<\/p>\n<\/li>\n<li data-nodeid=\"15509\">\n<p data-nodeid=\"15510\">Les valeurs optionnelles et les contraintes m\u00e9tier sont-elles visibles ?<\/p>\n<\/li>\n<li data-nodeid=\"15511\">\n<p data-nodeid=\"15512\">Le diagramme est-il suffisamment cibl\u00e9 pour son public ?<\/p>\n<\/li>\n<li data-nodeid=\"15513\">\n<p data-nodeid=\"15514\">Le contenu g\u00e9n\u00e9r\u00e9 a-t-il \u00e9t\u00e9 v\u00e9rifi\u00e9 par rapport aux exigences r\u00e9elles ?<\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-nodeid=\"15515\">Le meilleur flux de travail diagramme-as-code est <strong data-nodeid=\"15762\">l&#8217;IA pour un brouillon initial, PlantUML pour des modifications pr\u00e9cises et l&#8217;historique des versions, et une revue humaine pour la correction du domaine<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un diagramme de classes UMLd\u00e9crit la structured&#8217;un syst\u00e8me : les \u00e9l\u00e9ments qu&#8217;il mod\u00e9lise, leurs propri\u00e9t\u00e9s et leurs relations. Pour la<\/p>\n","protected":false},"author":11,"featured_media":12639,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","source_url":"","source_h1_title":"","fifu_image_url":"","fifu_image_alt":"","_fifu_image_alt":"","fifu_alt":"","_fifu_alt":"","fifu_image_title":"","_fifu_image_title":"","fifu_input_alt":"","vp_image_hash":"","footnotes":""},"categories":[3,85,120],"tags":[],"asset-category":[],"class_list":["post-12638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unified-modeling-language","category-visual-paradigm","category-vpascode-editor"],"source_url":"","source_h1_title":"","fifu_image_url":"","fifu_image_alt":"","vp_image_hash":"","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML - Cyberm\u00e9diane<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML - Cyberm\u00e9diane\" \/>\n<meta property=\"og:description\" content=\"Un diagramme de classes UMLd\u00e9crit la structured&#8217;un syst\u00e8me : les \u00e9l\u00e9ments qu&#8217;il mod\u00e9lise, leurs propri\u00e9t\u00e9s et leurs relations. Pour la\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\" \/>\n<meta property=\"og:site_name\" content=\"Cyberm\u00e9diane\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-13T05:27:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T05:09:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1402\" \/>\n\t<meta property=\"og:image:height\" content=\"1122\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"headline\":\"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML\",\"datePublished\":\"2026-10-13T05:27:33+00:00\",\"dateModified\":\"2026-10-14T05:09:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\"},\"wordCount\":1725,\"image\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg\",\"articleSection\":[\"Unified Modeling Language\",\"Visual Paradigm\",\"VPasCode Editor\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\",\"url\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\",\"name\":\"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML - Cyberm\u00e9diane\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg\",\"datePublished\":\"2026-10-13T05:27:33+00:00\",\"dateModified\":\"2026-10-14T05:09:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\",\"url\":\"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg\",\"contentUrl\":\"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg\",\"width\":1402,\"height\":1122},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cybermedian.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/#website\",\"url\":\"https:\/\/www.cybermedian.com\/fr\/\",\"name\":\"Cyberm\u00e9diane\",\"description\":\"Apprendre une nouvelle chose tous les jours\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cybermedian.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.cybermedian.com\/fr\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML - Cyberm\u00e9diane","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/","og_locale":"fr_FR","og_type":"article","og_title":"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML - Cyberm\u00e9diane","og_description":"Un diagramme de classes UMLd\u00e9crit la structured&#8217;un syst\u00e8me : les \u00e9l\u00e9ments qu&#8217;il mod\u00e9lise, leurs propri\u00e9t\u00e9s et leurs relations. Pour la","og_url":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/","og_site_name":"Cyberm\u00e9diane","article_published_time":"2026-10-13T05:27:33+00:00","article_modified_time":"2026-10-14T05:09:00+00:00","og_image":[{"width":1402,"height":1122,"url":"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg","type":"image\/jpeg"}],"author":"curtis","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"curtis","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#article","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/"},"author":{"name":"curtis","@id":"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"headline":"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML","datePublished":"2026-10-13T05:27:33+00:00","dateModified":"2026-10-14T05:09:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/"},"wordCount":1725,"image":{"@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg","articleSection":["Unified Modeling Language","Visual Paradigm","VPasCode Editor"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/","url":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/","name":"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML - Cyberm\u00e9diane","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage"},"image":{"@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg","datePublished":"2026-10-13T05:27:33+00:00","dateModified":"2026-10-14T05:09:00+00:00","author":{"@id":"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"breadcrumb":{"@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage","url":"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg","contentUrl":"https:\/\/www.cybermedian.com\/fr\/wp-content\/uploads\/sites\/10\/2026\/10\/img_6acdbee446b47.jpeg","width":1402,"height":1122},{"@type":"BreadcrumbList","@id":"https:\/\/www.cybermedian.com\/fr\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cybermedian.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Diagrammes de classes UML pour la mod\u00e9lisation de donn\u00e9es avec PlantUML"}]},{"@type":"WebSite","@id":"https:\/\/www.cybermedian.com\/fr\/#website","url":"https:\/\/www.cybermedian.com\/fr\/","name":"Cyberm\u00e9diane","description":"Apprendre une nouvelle chose tous les jours","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cybermedian.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d","name":"curtis","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.cybermedian.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.cybermedian.com\/fr\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/posts\/12638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/comments?post=12638"}],"version-history":[{"count":0,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/posts\/12638\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/media\/12639"}],"wp:attachment":[{"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/media?parent=12638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/categories?post=12638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/tags?post=12638"},{"taxonomy":"asset-category","embeddable":true,"href":"https:\/\/www.cybermedian.com\/fr\/wp-json\/wp\/v2\/asset-category?post=12638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}