{"id":11065,"date":"2026-06-03T13:38:37","date_gmt":"2026-06-03T05:38:37","guid":{"rendered":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/"},"modified":"2026-06-03T13:38:37","modified_gmt":"2026-06-03T05:38:37","slug":"comprehensive-guide-to-uml-class-diagrams-diagram-as-code","status":"publish","type":"post","link":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3)"},"content":{"rendered":"<blockquote data-nodeid=\"1675\">\n<p data-nodeid=\"1676\">\ud83d\udca1\u00a0<strong data-nodeid=\"2062\">Ghi ch\u00fa<\/strong>: T\u1ea5t c\u1ea3 c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u1ec1u \u0111\u01b0\u1ee3c cung c\u1ea5p d\u01b0\u1edbi d\u1ea1ng\u00a0<strong data-nodeid=\"2063\">PlantUML<\/strong> \u0111\u1ecbnh d\u1ea1ng. B\u1ea1n c\u00f3 th\u1ec3 hi\u1ec3n th\u1ecb ch\u00fang ngay l\u1eadp t\u1ee9c b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng <a href=\"http:\/\/vpascode.com\">Visual Paradigm S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3<\/a>.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"1696\"\/>\n<h2 data-nodeid=\"1697\">\ud83d\udd39 Gi\u1edbi thi\u1ec7u v\u1ec1 UML<\/h2>\n<h3 data-nodeid=\"1698\">UML l\u00e0 g\u00ec?<\/h3>\n<blockquote data-nodeid=\"1699\">\n<p data-nodeid=\"1700\"><em data-nodeid=\"2097\">\u201cNg\u00f4n ng\u1eef m\u00f4 h\u00ecnh h\u00f3a th\u1ed1ng nh\u1ea5t (UML) l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef m\u00f4 h\u00ecnh h\u00f3a tr\u1ef1c quan mang t\u00ednh t\u1ed5ng qu\u00e1t, \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh, tr\u1ef1c quan h\u00f3a, x\u00e2y d\u1ef1ng v\u00e0 t\u00e0i li\u1ec7u h\u00f3a c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a m\u1ed9t h\u1ec7 th\u1ed1ng ph\u1ea7n m\u1ec1m.\u201d<\/em>\u00a0\u2014 Rumbaugh et al., 1999<\/p>\n<\/blockquote>\n<p data-nodeid=\"1701\"><strong data-nodeid=\"2101\">\u0110\u1eb7c \u0111i\u1ec3m ch\u00ednh:<\/strong><\/p>\n<ul data-nodeid=\"1702\">\n<li data-nodeid=\"1703\">\n<p data-nodeid=\"1704\">\ud83c\udfa8\u00a0<strong data-nodeid=\"2107\">K\u00fd hi\u1ec7u tr\u1ef1c quan<\/strong>: Ng\u1eef ph\u00e1p \u0111\u1ed3 h\u1ecda \u0111\u1ec3 m\u00f4 h\u00ecnh h\u00f3a h\u1ec7 th\u1ed1ng<\/p>\n<\/li>\n<li data-nodeid=\"1705\">\n<p data-nodeid=\"1706\">\ud83d\udcd0\u00a0<strong data-nodeid=\"2113\">Ti\u00eau chu\u1ea9n h\u00f3a<\/strong>: Chu\u1ea9n \u0111\u01b0\u1ee3c OMG ch\u1ea5p nh\u1eadn t\u1eeb n\u0103m 1997<\/p>\n<\/li>\n<li data-nodeid=\"1707\">\n<p data-nodeid=\"1708\">\ud83d\udd27\u00a0<strong data-nodeid=\"2119\">Ng\u00f4n ng\u1eef, kh\u00f4ng ph\u1ea3i l\u00e0 ph\u01b0\u01a1ng ph\u00e1p<\/strong>: X\u00e1c \u0111\u1ecbnh k\u00fd hi\u1ec7u, kh\u00f4ng ph\u1ea3i quy tr\u00ecnh<\/p>\n<\/li>\n<li data-nodeid=\"1709\">\n<p data-nodeid=\"1710\">\ud83c\udf10\u00a0<strong data-nodeid=\"2125\">Ph\u1ea1m vi r\u1ed9ng<\/strong>: M\u00f4 h\u00ecnh h\u00f3a c\u00e1c quy tr\u00ecnh kinh doanh, ch\u1ee9c n\u0103ng h\u1ec7 th\u1ed1ng, c\u1ea5u tr\u00fac m\u00e3 ngu\u1ed3n v\u00e0 l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"1711\">UML KH\u00d4NG PH\u1ea2I l\u00e0 g\u00ec<\/h3>\n<table data-nodeid=\"1713\">\n<thead data-nodeid=\"1714\">\n<tr data-nodeid=\"1715\">\n<th data-nodeid=\"1717\">Sai l\u1ea7m ph\u1ed5 bi\u1ebfn<\/th>\n<th data-nodeid=\"1718\">Th\u1ef1c t\u1ebf<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1721\">\n<tr data-nodeid=\"1722\">\n<td data-nodeid=\"1723\">M\u1ed9t ph\u01b0\u01a1ng ph\u00e1p ph\u00e1t tri\u1ec3n<\/td>\n<td data-nodeid=\"1724\">Ch\u1ec9 l\u00e0 m\u1ed9t k\u00fd hi\u1ec7u m\u00f4 h\u00ecnh h\u00f3a<\/td>\n<\/tr>\n<tr data-nodeid=\"1725\">\n<td data-nodeid=\"1726\">M\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh<\/td>\n<td data-nodeid=\"1727\">Ng\u00f4n ng\u1eef m\u00f4 t\u1ea3 tr\u1eebu t\u01b0\u1ee3ng<\/td>\n<\/tr>\n<tr data-nodeid=\"1728\">\n<td data-nodeid=\"1729\">Ch\u1ec9 d\u00e0nh cho l\u1eadp tr\u00ecnh h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng<\/td>\n<td data-nodeid=\"1730\">\u00c1p d\u1ee5ng \u0111\u01b0\u1ee3c cho c\u01a1 s\u1edf d\u1eef li\u1ec7u, m\u00f4 h\u00ecnh h\u00f3a kinh doanh, v.v.<\/td>\n<\/tr>\n<tr data-nodeid=\"1731\">\n<td data-nodeid=\"1732\">\u0110\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a ch\u00ednh x\u00e1c \u1edf m\u1ecdi kh\u00eda c\u1ea1nh<\/td>\n<td data-nodeid=\"1733\">V\u1eabn c\u00f2n m\u1ed9t s\u1ed1 s\u1ef1 m\u01a1 h\u1ed3 v\u1ec1 ng\u1eef ngh\u0129a trong c\u00e1c phi\u00ean b\u1ea3n \u0111\u1ea7u<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"1734\"\/>\n<h2 data-nodeid=\"1735\">\ud83d\udd39 L\u1ecbch s\u1eed v\u00e0 chu\u1ea9n h\u00f3a<\/h2>\n<h3 data-nodeid=\"1736\">L\u1ed9 tr\u00ecnh ph\u00e1t tri\u1ec3n<\/h3>\n<p id=\"xFCmEsT\"><img alt=\"The Evolution of Unified Modeling Language (UML)\" class=\"alignnone wp-image-12647 size-full\" decoding=\"async\" height=\"658\" loading=\"lazy\" sizes=\"auto, (max-width: 1208px) 100vw, 1208px\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png\" srcset=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png 1208w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19-300x163.png 300w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19-1024x558.png 1024w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19-768x418.png 768w\" width=\"1208\"\/><\/p>\n<pre data-nodeid=\"1737\"><code>1965-1970: Simula-67 (ng\u00f4n ng\u1eef OO \u0111\u1ea7u ti\u00ean)\r\n     \u2193\r\nTh\u1eadp ni\u00ean 1970-1980: Smalltalk t\u1ea1i Xerox PARC\r\n     \u2193\r\n1984: C++ \u0111\u01b0\u1ee3c Bjarne Stroustrup gi\u1edbi thi\u1ec7u\r\n     \u2193\r\n1988-1992: S\u1ef1 b\u00f9ng n\u1ed5 c\u00e1c ph\u01b0\u01a1ng ph\u00e1p h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng (Booch, OMT, OOSE, v.v.)\r\n     \u2193\r\n1994: Rumbaugh gia nh\u1eadp Booch t\u1ea1i Rational \u2192 B\u1eaft \u0111\u1ea7u qu\u00e1 tr\u00ecnh th\u1ed1ng nh\u1ea5t\r\n     \u2193\r\n1995: B\u1ea3n nh\u00e1p UML 0.8 \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh\r\n     \u2193\r\n1996: OMG ph\u00e1t h\u00e0nh y\u00eau c\u1ea7u \u0111\u1ec1 xu\u1ea5t (RFP) cho ng\u00f4n ng\u1eef m\u00f4 h\u00ecnh h\u00f3a chu\u1ea9n\r\n     \u2193\r\n1997: UML 1.1 \u0111\u01b0\u1ee3c OMG ch\u1ea5p nh\u1eadn (ng\u00e0y 14 th\u00e1ng 11)\r\n     \u2193\r\n2000: UML 1.3 \u0111\u01b0\u1ee3c c\u00f4ng b\u1ed1 ch\u00ednh th\u1ee9c\r\n     \u2193\r\n2003: UML 1.5 \u0111\u01b0\u1ee3c c\u00f4ng b\u1ed1; c\u1ea5u tr\u00fac si\u00eau c\u1ea5p UML 2.0 \u0111\u01b0\u1ee3c ch\u1ea5p nh\u1eadn\r\n<\/code><\/pre>\n<h3 data-nodeid=\"1738\">T\u1ea1i sao UML th\u1eafng cu\u1ed9c \u201cChi\u1ebfn tranh ph\u01b0\u01a1ng ph\u00e1p\u201d<\/h3>\n<ul data-nodeid=\"1739\">\n<li data-nodeid=\"1740\">\n<p data-nodeid=\"1741\">T\u1eadp h\u1ee3p h\u01a1n 50 ph\u01b0\u01a1ng ph\u00e1p h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ea1nh tranh th\u00e0nh m\u1ed9t chu\u1ea9n duy nh\u1ea5t<\/p>\n<\/li>\n<li data-nodeid=\"1742\">\n<p data-nodeid=\"1743\">\u0110\u01b0\u1ee3c h\u1ed7 tr\u1ee3 b\u1edfi c\u00e1c c\u00f4ng ty c\u00f4ng nghi\u1ec7p l\u1edbn (IBM, Microsoft, Oracle, HP)<\/p>\n<\/li>\n<li data-nodeid=\"1744\">\n<p data-nodeid=\"1745\">Cung c\u1ea5p c\u00e1c c\u01a1 ch\u1ebf m\u1edf r\u1ed9ng \u0111\u1ec3 t\u00f9y ch\u1ec9nh<\/p>\n<\/li>\n<li data-nodeid=\"1746\">\n<p data-nodeid=\"1747\">Tr\u1edf th\u00e0nh chu\u1ea9n th\u1ef1c t\u1ebf cho m\u00f4 h\u00ecnh h\u00f3a h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng<\/p>\n<\/li>\n<\/ul>\n<blockquote data-nodeid=\"1748\">\n<p data-nodeid=\"1749\">\u26a0\ufe0f\u00a0<strong data-nodeid=\"2156\">G\u00f3c nh\u00ecn ph\u00ea ph\u00e1n<\/strong>: M\u1ed9t s\u1ed1 cho r\u1eb1ng UML l\u00e0 &#8216;m\u1ed9t ng\u00f4n ng\u1eef kh\u1ed5ng l\u1ed3 \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf b\u1edfi m\u1ed9t \u1ee7y ban&#8217; v\u1edbi ng\u1eef ngh\u0129a ch\u01b0a r\u00f5 r\u00e0ng \u1edf c\u00e1c phi\u00ean b\u1ea3n \u0111\u1ea7u.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"1750\"\/>\n<h2 data-nodeid=\"1751\">\ud83d\udd39 L\u1edbp v\u00e0 Thu\u1ed9c t\u00ednh<\/h2>\n<h3 data-nodeid=\"1752\">C\u1ea5u tr\u00fac l\u1edbp<\/h3>\n<p data-nodeid=\"1753\">M\u1ed9t l\u1edbp UML \u0111\u01b0\u1ee3c bi\u1ec3u di\u1ec5n d\u01b0\u1edbi d\u1ea1ng h\u00ecnh ch\u1eef nh\u1eadt c\u00f3 t\u1ed1i \u0111a ba ng\u0103n.<\/p>\n<p id=\"zEMvvmf\"><img alt=\"\" class=\"alignnone size-full wp-image-12648\" decoding=\"async\" height=\"183\" loading=\"lazy\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbbe222b36.png\" width=\"258\"\/><\/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#plantuml:PS-n2i8m483XFP1tkB55ABfcAcuk4d3e80uXEMimlPJaIX7ntOqKeUBw_NTmrsOsYQSXI663oHbEF3aaXgSK05UVCX_DWAfuyjH_i8pz6Gx6X_EsQNQN7oQR7YEZqzsQDy2HJT3H4-UgLd0WnXxJqZAoBfVCCRbgdBzxzHBj3UrTT-kWO1zZG4DIlAHeaLnvvmq0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:PS-n2i8m483XFP1tkB55ABfcAcuk4d3e80uXEMimlPJaIX7ntOqKeUBw_NTmrsOsYQSXI663oHbEF3aaXgSK05UVCX_DWAfuyjH_i8pz6Gx6X_EsQNQN7oQR7YEZqzsQDy2HJT3H4-UgLd0WnXxJqZAoBfVCCRbgdBzxzHBj3UrTT-kWO1zZG4DIlAHeaLnvvmq0\" \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=\"1754\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Student {\r\n  firstName: String\r\n  lastName: String\r\n  email[0..1]: String\r\n  encryptedPW: String\r\n  + totalPoints(): Integer\r\n  + setPassword(pw: String)\r\n  + checkPW(pw: String): Boolean\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:PS-n2i8m483XFP1tkB55ABfcAcuk4d3e80uXEMimlPJaIX7ntOqKeUBw_NTmrsOsYQSXI663oHbEF3aaXgSK05UVCX_DWAfuyjH_i8pz6Gx6X_EsQNQN7oQR7YEZqzsQDy2HJT3H4-UgLd0WnXxJqZAoBfVCCRbgdBzxzHBj3UrTT-kWO1zZG4DIlAHeaLnvvmq0\" \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#plantuml:PS-n2i8m483XFP1tkB55ABfcAcuk4d3e80uXEMimlPJaIX7ntOqKeUBw_NTmrsOsYQSXI663oHbEF3aaXgSK05UVCX_DWAfuyjH_i8pz6Gx6X_EsQNQN7oQR7YEZqzsQDy2HJT3H4-UgLd0WnXxJqZAoBfVCCRbgdBzxzHBj3UrTT-kWO1zZG4DIlAHeaLnvvmq0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1755\">Ng\u1eef ph\u00e1p khai b\u00e1o thu\u1ed9c t\u00ednh<\/h3>\n<pre data-nodeid=\"1756\"><code>[quy\u1ec1n truy c\u1eadp] t\u00ean[s\u1ed1 l\u01b0\u1ee3ng]: Ki\u1ec3u [= gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh] {t\u00ednh ch\u1ea5t}\r\n<\/code><\/pre>\n<p data-nodeid=\"1757\"><strong data-nodeid=\"2164\">V\u00ed d\u1ee5 PlantUML:<br \/>\n<\/strong><img alt=\"\" class=\"alignnone size-full wp-image-12649\" decoding=\"async\" height=\"134\" loading=\"lazy\" sizes=\"auto, (max-width: 310px) 100vw, 310px\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbc08ba555.png\" srcset=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbc08ba555.png 310w, https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbc08ba555-300x130.png 300w\" width=\"310\"\/><\/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#plantuml:FOwn2eD044HxmNzOJ1aY8QKGiB2na0WMAKAAvMuz9BhAkWQC9D-UkoBfXfatm-IpekWoz75aUfndQ7Inn0fR707iePRH2GwNDlZhxPYcftlc8UdOmHcIgcoIG1w0sCWwATdw-WUsLiONyJiGE-XOIHZxiiYWzDgHXE034ve7EggbUw9IWOg_XJZotPpO-eTV\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:FOwn2eD044HxmNzOJ1aY8QKGiB2na0WMAKAAvMuz9BhAkWQC9D-UkoBfXfatm-IpekWoz75aUfndQ7Inn0fR707iePRH2GwNDlZhxPYcftlc8UdOmHcIgcoIG1w0sCWwATdw-WUsLiONyJiGE-XOIHZxiiYWzDgHXE034ve7EggbUw9IWOg_XJZotPpO-eTV\" \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=\"1758\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Student {\r\n  + ProgramOfStudy[0..2]: String = \"MIS\"\r\n  - encryptedPW: String {frozen}\r\n  # internalID: Integer\r\n  ~ packagePrivateData: String\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:FOwn2eD044HxmNzOJ1aY8QKGiB2na0WMAKAAvMuz9BhAkWQC9D-UkoBfXfatm-IpekWoz75aUfndQ7Inn0fR707iePRH2GwNDlZhxPYcftlc8UdOmHcIgcoIG1w0sCWwATdw-WUsLiONyJiGE-XOIHZxiiYWzDgHXE034ve7EggbUw9IWOg_XJZotPpO-eTV\" \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#plantuml:FOwn2eD044HxmNzOJ1aY8QKGiB2na0WMAKAAvMuz9BhAkWQC9D-UkoBfXfatm-IpekWoz75aUfndQ7Inn0fR707iePRH2GwNDlZhxPYcftlc8UdOmHcIgcoIG1w0sCWwATdw-WUsLiONyJiGE-XOIHZxiiYWzDgHXE034ve7EggbUw9IWOg_XJZotPpO-eTV\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1759\">Ph\u1ea1m vi thu\u1ed9c t\u00ednh<\/h3>\n<ul data-nodeid=\"1760\">\n<li data-nodeid=\"1761\">\n<p data-nodeid=\"1762\"><strong data-nodeid=\"2170\">Ph\u1ea1m vi th\u1ec3 hi\u1ec7n<\/strong>\u00a0(m\u1eb7c \u0111\u1ecbnh): M\u1ed7i \u0111\u1ed1i t\u01b0\u1ee3ng c\u00f3 gi\u00e1 tr\u1ecb ri\u00eang c\u1ee7a n\u00f3<\/p>\n<\/li>\n<li data-nodeid=\"1763\">\n<p data-nodeid=\"1764\"><strong data-nodeid=\"2175\">Ph\u1ea1m vi l\u1edbp<\/strong>\u00a0(t\u0129nh): Gi\u00e1 tr\u1ecb duy nh\u1ea5t \u0111\u01b0\u1ee3c chia s\u1ebb b\u1edfi t\u1ea5t c\u1ea3 c\u00e1c th\u1ec3 hi\u1ec7n<\/p>\n<\/li>\n<\/ul>\n<p id=\"IpqQSPg\"><img alt=\"\" class=\"alignnone size-full wp-image-12650\" decoding=\"async\" height=\"85\" loading=\"lazy\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbc920bfbd.png\" width=\"227\"\/><\/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#plantuml:5Omn2W0X30JxGFwGTrZPNdql40qYQ0HTA_7lvvKp3ECdmi1gbIdMCAUyM4aDifb4B3HrLurY-UTzQvHu9FPbSF8ODEjWEanUBTtF1m00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:5Omn2W0X30JxGFwGTrZPNdql40qYQ0HTA_7lvvKp3ECdmi1gbIdMCAUyM4aDifb4B3HrLurY-UTzQvHu9FPbSF8ODEjWEanUBTtF1m00\" \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=\"1765\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Student {\r\n  name: String\r\n  {static} count: Integer\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:5Omn2W0X30JxGFwGTrZPNdql40qYQ0HTA_7lvvKp3ECdmi1gbIdMCAUyM4aDifb4B3HrLurY-UTzQvHu9FPbSF8ODEjWEanUBTtF1m00\" \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#plantuml:5Omn2W0X30JxGFwGTrZPNdql40qYQ0HTA_7lvvKp3ECdmi1gbIdMCAUyM4aDifb4B3HrLurY-UTzQvHu9FPbSF8ODEjWEanUBTtF1m00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1766\">Kh\u00f3a trong UML \u26a0\ufe0f<\/h3>\n<p data-nodeid=\"1767\"><strong data-nodeid=\"2181\">H\u1ea1n ch\u1ebf quan tr\u1ecdng<\/strong>: UML kh\u00f4ng c\u00f3 kh\u00e1i ni\u1ec7m t\u00edch h\u1ee3p v\u1ec1 kh\u00f3a. S\u1eed d\u1ee5ng c\u00e1c ki\u1ec3u d\u00e1ng ho\u1eb7c gi\u00e1 tr\u1ecb g\u1eafn th\u1ebb nh\u01b0 gi\u1ea3i ph\u00e1p thay th\u1ebf.<\/p>\n<p id=\"hLmsAEe\"><img alt=\"\" class=\"alignnone size-full wp-image-12651\" decoding=\"async\" height=\"117\" loading=\"lazy\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbcd8087f6.png\" width=\"184\"\/><\/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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg2x8hbN8JB5IyCmhIKrFBGAB9MORrYgavYPcvbW1LHTbvgM3X7KLyX9pKn4YjRnS3gbvAK2J0G00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg2x8hbN8JB5IyCmhIKrFBGAB9MORrYgavYPcvbW1LHTbvgM3X7KLyX9pKn4YjRnS3gbvAK2J0G00\" \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=\"1768\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Student {\r\n  {pk} id: Integer\r\n  {ak1} email: String\r\n  - name: String\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg2x8hbN8JB5IyCmhIKrFBGAB9MORrYgavYPcvbW1LHTbvgM3X7KLyX9pKn4YjRnS3gbvAK2J0G00\" \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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg2x8hbN8JB5IyCmhIKrFBGAB9MORrYgavYPcvbW1LHTbvgM3X7KLyX9pKn4YjRnS3gbvAK2J0G00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1769\"\/>\n<h2 data-nodeid=\"1770\">\ud83d\udd39 Li\u00ean k\u1ebft v\u00e0 m\u1ed1i quan h\u1ec7<\/h2>\n<h3 data-nodeid=\"1771\">Li\u00ean k\u1ebft c\u01a1 b\u1ea3n v\u00e0 b\u1ed9i s\u1ed1<\/h3>\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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJeNndJCI2qfIYtYvO18AIWPwUbfA2hgw2ag6Udg6IZ0b2bOAJgav-NdfnI7vl5mEgNafG6C1\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJeNndJCI2qfIYtYvO18AIWPwUbfA2hgw2ag6Udg6IZ0b2bOA8Hcb3tVFJ5OeUxYxaPVB8JKl1MWo0000\" \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=\"1772\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Exercise\r\nclass Chapter\r\nExercise \"0..*\" -- \"1..1\" Chapter : Thu\u1ed9c v\u1ec1\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJeNndJCI2qfIYtYvO18AIWPwUbfA2hgw2ag6Udg6IZ0b2bOA8Hcb3tVFJ5OeUxYxaPVB8JKl1MWo0000\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJeNndJCI2qfIYtYvO18AIWPwUbfA2hgw2ag6Udg6IZ0b2bOAJgav-NdfnI7vl5mEgNafG6C1\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"1773\"><em data-nodeid=\"2190\">Gi\u1ea3i th\u00edch<\/em>: M\u1ed7i b\u00e0i t\u1eadp thu\u1ed9c v\u1ec1 \u0111\u00fang m\u1ed9t ch\u01b0\u01a1ng; m\u1ed9t ch\u01b0\u01a1ng c\u00f3 th\u1ec3 ch\u1ee9a kh\u00f4ng ho\u1eb7c nhi\u1ec1u b\u00e0i t\u1eadp.<\/p>\n<h3 data-nodeid=\"1774\">T\u00ean vai tr\u00f2<\/h3>\n<p data-nodeid=\"1775\">Thay v\u00ec (ho\u1eb7c ngo\u00e0i t\u00ean li\u00ean k\u1ebft), h\u00e3y s\u1eed d\u1ee5ng t\u00ean vai tr\u00f2 \u1edf c\u00e1c \u0111\u1ea7u n\u1ed1i k\u1ebft:<\/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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yPppSmiIyofvkI322ae6UdfQIWgwkdPWfg4IJ8M2bO9hRa5EVcLggZwKKSJBvP2Qbm8q6m00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yPppSmiIyofvkI322ae6UdfQIWgwkdPWfg4IJ8M2bO9Vnk55UGfbcOTNvUa3sGiKIaeh7-vkpbD8URXxQLuwBvT3QbuAq2O0\" \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=\"1776\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Person\r\nclass Company\r\nPerson \"0..*\" --&gt; \"0..1\" Company : Nh\u00e2n vi\u00ean\/Nh\u00e0 tuy\u1ec3n d\u1ee5ng\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yPppSmiIyofvkI322ae6UdfQIWgwkdPWfg4IJ8M2bO9Vnk55UGfbcOTNvUa3sGiKIaeh7-vkpbD8URXxQLuwBvT3QbuAq2O0\" \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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yPppSmiIyofvkI322ae6UdfQIWgwkdPWfg4IJ8M2bO9hRa5EVcLggZwKKSJBvP2Qbm8q6m00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"1777\"><em data-nodeid=\"2203\">Tri\u1ec3n khai<\/em>: Nh\u1eefng\u00a0<code data-backticks=\"1\" data-nodeid=\"2197\">Ng\u01b0\u1eddi<\/code>\u00a0b\u1ea3ng s\u1ebd c\u00f3 kh\u00f3a ngo\u1ea1i\u00a0<code data-backticks=\"1\" data-nodeid=\"2199\">ng\u01b0\u1eddi s\u1eed d\u1ee5ng lao \u0111\u1ed9ng<\/code>\u00a0tham chi\u1ebfu \u0111\u1ebfn\u00a0<code data-backticks=\"1\" data-nodeid=\"2201\">C\u00f4ng ty<\/code>.<\/p>\n<h3 data-nodeid=\"1778\">Kh\u1ea3 n\u0103ng di chuy\u1ec3n<\/h3>\n<p data-nodeid=\"1779\">X\u00e1c \u0111\u1ecbnh h\u01b0\u1edbng di chuy\u1ec3n b\u1eb1ng c\u00e1c m\u0169i t\u00ean:<\/p>\n<p id=\"akPRCei\"><img alt=\"\" class=\"alignnone size-full wp-image-12652\" decoding=\"async\" height=\"170\" loading=\"lazy\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbd4c87489.png\" width=\"104\"\/><\/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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJeNndJCI2qfIYtYvO18AIWPwUbfA2hgwTWfAXae81GwfUIb0Wm00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmEhmWKw7auQwr1J0HvunZ6uujp4ldvKB8AIWPwEbfAIdewjefA1ag8QbnICrB0He70000\" \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=\"1780\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass B\u00e0i t\u1eadp\r\nclass Ch\u01b0\u01a1ng\r\nB\u00e0i t\u1eadp \"0..*\" --&gt; \"1\" Ch\u01b0\u01a1ng\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmEhmWKw7auQwr1J0HvunZ6uujp4ldvKB8AIWPwEbfAIdewjefA1ag8QbnICrB0He70000\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJeNndJCI2qfIYtYvO18AIWPwUbfA2hgwTWfAXae81GwfUIb0Wm00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<ul data-nodeid=\"1781\">\n<li data-nodeid=\"1782\">\n<p data-nodeid=\"1783\">M\u0169i t\u00ean ch\u1ec9 h\u01b0\u1edbng di chuy\u1ec3n hi\u1ec7u qu\u1ea3<\/p>\n<\/li>\n<li data-nodeid=\"1784\">\n<p data-nodeid=\"1785\">Trong OODBs: tri\u1ec3n khai nh\u01b0 con tr\u1ecf ch\u1ec9 theo m\u1ed9t h\u01b0\u1edbng<\/p>\n<\/li>\n<li data-nodeid=\"1786\">\n<p data-nodeid=\"1787\">Trong RDBMS: c\u00e1c ph\u00e9p n\u1ed1i ho\u1ea1t \u0111\u1ed9ng theo c\u1ea3 hai h\u01b0\u1edbng b\u1ea5t k\u1ec3<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"1788\">Lo\u1ea1i t\u1eadp h\u1ee3p v\u1edbi\u00a0<code data-backticks=\"1\" data-nodeid=\"2210\">{theo th\u1ee9 t\u1ef1}<br \/>\n<\/code><\/h3>\n<p id=\"eKzRwWF\"><img alt=\"\" class=\"alignnone size-full wp-image-12653\" decoding=\"async\" height=\"187\" loading=\"lazy\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbd8d068d1.png\" width=\"129\"\/><\/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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AIePA2hgw2ae6UdfQId1v1Ik5wloYbDIYr9HQNYw7rBmKe9a0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmpZYsuTZ2l7GOt-dmWao5aeUxrXRmSi7a59GCbHHqTHMK3FJqj9IGb2XOALINPAJcAvHaFDoz4YYsUsCjBvT3QbuAq0O0\" \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=\"1789\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Ch\u01b0\u01a1ng\r\nclass B\u00e0i t\u1eadp\r\nCh\u01b0\u01a1ng \"1\" -- \"0..*\" B\u00e0i t\u1eadp : {theo th\u1ee9 t\u1ef1}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmpZYsuTZ2l7GOt-dmWao5aeUxrXRmSi7a59GCbHHqTHMK3FJqj9IGb2XOALINPAJcAvHaFDoz4YYsUsCjBvT3QbuAq0O0\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AIePA2hgw2ae6UdfQId1v1Ik5wloYbDIYr9HQNYw7rBmKe9a0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<ul data-nodeid=\"1790\">\n<li data-nodeid=\"1791\">\n<p data-nodeid=\"1792\"><code data-backticks=\"1\" data-nodeid=\"2211\">{theo th\u1ee9 t\u1ef1}<\/code>: Duy tr\u00ec th\u1ee9 t\u1ef1 (s\u1eed d\u1ee5ng danh s\u00e1ch, kh\u00f4ng ph\u1ea3i t\u1eadp h\u1ee3p)<\/p>\n<\/li>\n<li data-nodeid=\"1793\">\n<p data-nodeid=\"1794\">Tri\u1ec3n khai trong RDBMS: Th\u00eam thu\u1ed9c t\u00ednh s\u1ed1 th\u1ee9 t\u1ef1<\/p>\n<\/li>\n<\/ul>\n<pre class=\"lang-sql\" data-nodeid=\"1795\"><code data-language=\"sql\">B\u00c0I T\u1eacP (\r\n    id PRIMARY KEY,\r\n    chapter_id tham chi\u1ebfu \u0111\u1ebfn CH\u01af\u01a0NG,\r\n    sort_no INTEGER,\r\n    UNIQUE (chapter_id, sort_no)\r\n)\r\n<\/code><\/pre>\n<h3 data-nodeid=\"1796\">C\u00e1c b\u1ed9 l\u1ecdc<\/h3>\n<p data-nodeid=\"1797\">C\u00e1c b\u1ed9 l\u1ecdc chia nh\u1ecf c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng li\u00ean quan b\u1eb1ng c\u01a1 ch\u1ebf gi\u1ed1ng nh\u01b0 kh\u00f3a:<\/p>\n<p id=\"kMuWSIi\"><img alt=\"\" class=\"alignnone size-full wp-image-12654\" decoding=\"async\" height=\"187\" loading=\"lazy\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbdce6a835.png\" width=\"206\"\/><\/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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AIePA2hgwTWfA1dfwG2PCWOALWerDOMbYJcPQPcgHdPr2NhwLWcTUIMewo327rBmKe2K0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AIePA2hgwTWfA1dfwG2PCWOALWerDSiR3tPqAHoO-tDsTbs5dfv2NRwNWcLUIcWuoq24rBmLe4G00\" \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=\"1798\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Chapter\r\nclass Exercise\r\nChapter \"1\" --&gt; \"0..1\" Exercise : &lt;&lt;ch\u1ec9 \u0111\u1ecbnh&gt;&gt; no: Integer\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AIePA2hgwTWfA1dfwG2PCWOALWerDSiR3tPqAHoO-tDsTbs5dfv2NRwNWcLUIcWuoq24rBmLe4G00\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AIePA2hgwTWfA1dfwG2PCWOALWerDOMbYJcPQPcgHdPr2NhwLWcTUIMewo327rBmKe2K0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"1799\"><em data-nodeid=\"2220\">\u00dd ngh\u0129a<\/em>: V\u1edbi m\u1ed9t Ch\u01b0\u01a1ng v\u00e0 m\u1ed9t s\u1ed1 b\u00e0i t\u1eadp, t\u1ed1i \u0111a ch\u1ec9 tr\u1ea3 v\u1ec1 m\u1ed9t B\u00e0i t\u1eadp.<\/p>\n<h3 data-nodeid=\"1800\">L\u1edbp li\u00ean k\u1ebft<\/h3>\n<p data-nodeid=\"1801\">Khi m\u1ed9t li\u00ean k\u1ebft c\u00f3 thu\u1ed9c t\u00ednh ho\u1eb7c thao t\u00e1c:<\/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#plantuml:JOun2W8n44NxGExmsLBOi7MgBRImzWHXCsWW9fAPo89uzurWN9jX_f_XyMOMLwJUerPBTCouIFMKfCVJIcK9JBzpZbL2JdXf1NWdP75iyvCUEIHXYtCIkbBHwgtL5uTXCkOmO1pxri6mk3a6v_Wat_uxtvXTvR_SXMPAlebl\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhWN5TArABaZEBK-7I-Jcb9PdvUGhLl5mA2Yc99QbM2Yv04iGhoC_CAocsKl3CAqbDJotYvQhbvO8Qfw1aeAUdfQIWgmjZmGnMi58uCl7mOeNqp8Ux5cS2DS0iqDD3k0LP4E4YXzIy5A3B0G00\" \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=\"1802\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Student\r\nclass Exercise\r\nclass Solution {\r\n  date: Date\r\n  points: Integer\r\n}\r\nStudent \"0..*\" -- \"0..*\" Exercise : \u0111\u00e3 gi\u1ea3i\r\nSolution .. Student\r\nSolution .. Exercise\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhWN5TArABaZEBK-7I-Jcb9PdvUGhLl5mA2Yc99QbM2Yv04iGhoC_CAocsKl3CAqbDJotYvQhbvO8Qfw1aeAUdfQIWgmjZmGnMi58uCl7mOeNqp8Ux5cS2DS0iqDD3k0LP4E4YXzIy5A3B0G00\" \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#plantuml:JOun2W8n44NxGExmsLBOi7MgBRImzWHXCsWW9fAPo89uzurWN9jX_f_XyMOMLwJUerPBTCouIFMKfCVJIcK9JBzpZbL2JdXf1NWdP75iyvCUEIHXYtCIkbBHwgtL5uTXCkOmO1pxri6mk3a6v_Wat_uxtvXTvR_SXMPAlebl\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<ul data-nodeid=\"1803\">\n<li data-nodeid=\"1804\">\n<p data-nodeid=\"1805\">M\u1ed9t\u00a0<code data-backticks=\"1\" data-nodeid=\"2224\">Gi\u1ea3i ph\u00e1p<\/code>\u00a0\u0111\u1ed1i t\u01b0\u1ee3ng cho m\u1ed7i c\u1eb7p (H\u1ecdc sinh, B\u00e0i t\u1eadp)<\/p>\n<\/li>\n<li data-nodeid=\"1806\">\n<p data-nodeid=\"1807\">B\u1eaft bu\u1ed9c: c\u00f9ng m\u1ed9t h\u1ecdc sinh kh\u00f4ng th\u1ec3 n\u1ed9p hai gi\u1ea3i ph\u00e1p cho c\u00f9ng m\u1ed9t b\u00e0i t\u1eadp<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"1808\">Th\u00e0nh ph\u1ea7n h\u00f3a so v\u1edbi t\u00edch h\u1ee3p<\/h3>\n<table data-nodeid=\"1810\">\n<thead data-nodeid=\"1811\">\n<tr data-nodeid=\"1812\">\n<th data-nodeid=\"1814\">T\u00ednh n\u0103ng<\/th>\n<th data-nodeid=\"1815\">Th\u00e0nh ph\u1ea7n h\u00f3a (<code data-backticks=\"1\" data-nodeid=\"2230\">*--<\/code>)<\/th>\n<th data-nodeid=\"1816\">T\u00edch h\u1ee3p (<code data-backticks=\"1\" data-nodeid=\"2233\">o--<\/code>)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1820\">\n<tr data-nodeid=\"1821\">\n<td data-nodeid=\"1822\">K\u00fd hi\u1ec7u<\/td>\n<td data-nodeid=\"1823\">Kim c\u01b0\u01a1ng \u0111en<\/td>\n<td data-nodeid=\"1824\">Kim c\u01b0\u01a1ng tr\u1eafng<\/td>\n<\/tr>\n<tr data-nodeid=\"1825\">\n<td data-nodeid=\"1826\">M\u1ed1i quan h\u1ec7<\/td>\n<td data-nodeid=\"1827\">To\u00e0n th\u1ec3-ph\u1ea7n, s\u1edf h\u1eefu m\u1ea1nh<\/td>\n<td data-nodeid=\"1828\">To\u00e0n th\u1ec3-ph\u1ea7n, tham chi\u1ebfu y\u1ebfu<\/td>\n<\/tr>\n<tr data-nodeid=\"1829\">\n<td data-nodeid=\"1830\">Chu k\u1ef3 s\u1ed1ng<\/td>\n<td data-nodeid=\"1831\">C\u00e1c b\u1ed9 ph\u1eadn b\u1ecb x\u00f3a c\u00f9ng v\u1edbi to\u00e0n b\u1ed9<\/td>\n<td data-nodeid=\"1832\">C\u00e1c b\u1ed9 ph\u1eadn \u0111\u1ed9c l\u1eadp<\/td>\n<\/tr>\n<tr data-nodeid=\"1833\">\n<td data-nodeid=\"1834\">\u0110a d\u1ea1ng<\/td>\n<td data-nodeid=\"1835\">1 ho\u1eb7c 0..1 \u1edf ph\u00eda to\u00e0n b\u1ed9<\/td>\n<td data-nodeid=\"1836\">B\u1ea5t k\u1ef3<\/td>\n<\/tr>\n<tr data-nodeid=\"1837\">\n<td data-nodeid=\"1838\">\u00c1nh x\u1ea1 RDBMS<\/td>\n<td data-nodeid=\"1839\"><code data-backticks=\"1\" data-nodeid=\"2248\">ON DELETE CASCADE<\/code><\/td>\n<td data-nodeid=\"1840\">Kh\u00f3a ngo\u1ea1i ti\u00eau chu\u1ea9n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AMhgw2ae6UdfQId191Ii5v_pSWlpYp9BC_3o4qdoiIXtJqujIqnCXIXrIyrA0jWC0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AMhgw2ae6UdfQId191Ik5a8p32_8o50eo7kvQdeTGd8zLiVV3NVjB538UxbvSmClba9gN0hGV0000\" \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=\"1841\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Chapter\r\nclass Exercise\r\nChapter *-- \"0..*\" Exercise : Th\u00e0nh ph\u1ea7n\r\nChapter o-- \"0..*\" Exercise : K\u1ebft h\u1ee3p\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AMhgw2ae6UdfQId191Ik5a8p32_8o50eo7kvQdeTGd8zLiVV3NVjB538UxbvSmClba9gN0hGV0000\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmpaWiA4ajWd5TArABaZEBKtcve18AMhgw2ae6UdfQId191Ii5v_pSWlpYp9BC_3o4qdoiIXtJqujIqnCXIXrIyrA0jWC0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1842\"\/>\n<h2 data-nodeid=\"1843\">\ud83d\udd39 C\u00e1c thao t\u00e1c v\u00e0 ph\u01b0\u01a1ng th\u1ee9c<\/h2>\n<h3 data-nodeid=\"1844\">Ng\u1eef ph\u00e1p khai b\u00e1o thao t\u00e1c<\/h3>\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#plantuml:JOzB2i9038RtXTuXonRr0eL2yGLT2k8-fA4Cn1d8P4GflRjJBUWo_-iZNJHKItSf2nAC4Gueb0GjA4nb0R21aUqQ3AMAbeR-s43lZKVMBJXFSdgQOWFx48JHGmkcYUi6pXBGO7BnabXVxQBEtxqf8ytHl0ptFX-UkCgD7tdDKSYk9ihA_ETMpZjpA3UKn2keNYexKAOrzbby13UKHSPsx8Vyuni0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:JOzB2i9038RtXTuXonRr0eL2yGLT2k8-fA4Cn1d8P4GflRjJBUWo_-iZNJHKItSf2nAC4Gueb0GjA4nb0R21aUqQ3AMAbeR-s43lZKVMBJXFSdgQOWFx48JHGmkcYUi6pXBGO7BnabXVxQBEtxqf8ytHl0ptFX-UkCgD7tdDKSYk9ihA_ETMpZjpA3UKn2keNYexKAOrzbby13UKHSPsx8Vyuni0\" \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=\"1845\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Calculator {\r\n  + getTotal(studID: Integer, inclExtra: Boolean = true): Float {isQuery=true}\r\n  + {static} getInstance(): Calculator\r\n  + {constructor} Calculator(initialValue: Float)\r\n  - recalculate(): 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#plantuml:JOzB2i9038RtXTuXonRr0eL2yGLT2k8-fA4Cn1d8P4GflRjJBUWo_-iZNJHKItSf2nAC4Gueb0GjA4nb0R21aUqQ3AMAbeR-s43lZKVMBJXFSdgQOWFx48JHGmkcYUi6pXBGO7BnabXVxQBEtxqf8ytHl0ptFX-UkCgD7tdDKSYk9ihA_ETMpZjpA3UKn2keNYexKAOrzbby13UKHSPsx8Vyuni0\" \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#plantuml:JOzB2i9038RtXTuXonRr0eL2yGLT2k8-fA4Cn1d8P4GflRjJBUWo_-iZNJHKItSf2nAC4Gueb0GjA4nb0R21aUqQ3AMAbeR-s43lZKVMBJXFSdgQOWFx48JHGmkcYUi6pXBGO7BnabXVxQBEtxqf8ytHl0ptFX-UkCgD7tdDKSYk9ihA_ETMpZjpA3UKn2keNYexKAOrzbby13UKHSPsx8Vyuni0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"1846\"><strong data-nodeid=\"2256\">C\u1ee5 th\u1ec3 h\u00f3a tham s\u1ed1<\/strong>:<\/p>\n<pre data-nodeid=\"1847\"><code>[h\u01b0\u1edbng] t\u00ean: Ki\u1ec3u [= gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh]\r\n<\/code><\/pre>\n<ul data-nodeid=\"1848\">\n<li data-nodeid=\"1849\">\n<p data-nodeid=\"1850\">H\u01b0\u1edbng:\u00a0<code data-backticks=\"1\" data-nodeid=\"2258\">v\u00e0o<\/code>\u00a0(m\u1eb7c \u0111\u1ecbnh),\u00a0<code data-backticks=\"1\" data-nodeid=\"2260\">ra<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"2262\">v\u00e0o-ra<\/code><\/p>\n<\/li>\n<li data-nodeid=\"1851\">\n<p data-nodeid=\"1852\">Gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh cho ph\u00e9p tham s\u1ed1 t\u00f9y ch\u1ecdn<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"1853\">C\u00e1c ki\u1ec3u \u0111\u1eb7c bi\u1ec7t cho thao t\u00e1c<\/h3>\n<table data-nodeid=\"1855\">\n<thead data-nodeid=\"1856\">\n<tr data-nodeid=\"1857\">\n<th data-nodeid=\"1859\">Ch\u1ee7ng lo\u1ea1i<\/th>\n<th data-nodeid=\"1860\">M\u1ee5c \u0111\u00edch<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1863\">\n<tr data-nodeid=\"1864\">\n<td data-nodeid=\"1865\"><code data-backticks=\"1\" data-nodeid=\"2267\">{isQuery=true}<\/code><\/td>\n<td data-nodeid=\"1866\">\u0110\u1ea3m b\u1ea3o kh\u00f4ng thay \u0111\u1ed5i tr\u1ea1ng th\u00e1i<\/td>\n<\/tr>\n<tr data-nodeid=\"1867\">\n<td data-nodeid=\"1868\"><code data-backticks=\"1\" data-nodeid=\"2269\">{constructor}<\/code><\/td>\n<td data-nodeid=\"1869\">T\u1ea1o v\u00e0 kh\u1edfi t\u1ea1o c\u00e1c th\u1ec3 hi\u1ec7n m\u1edbi<\/td>\n<\/tr>\n<tr data-nodeid=\"1870\">\n<td data-nodeid=\"1871\"><code data-backticks=\"1\" data-nodeid=\"2271\">{static}<\/code><\/td>\n<td data-nodeid=\"1872\">Thao t\u00e1c \u1edf c\u1ea5p l\u1edbp, kh\u00f4ng ng\u1ea7m \u0111\u1ecbnh<code data-backticks=\"1\" data-nodeid=\"2273\">self<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 data-nodeid=\"1873\">C\u00e1c thao t\u00e1c trong ng\u1eef c\u1ea3nh c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/h3>\n<p data-nodeid=\"1874\"><strong data-nodeid=\"2279\">S\u1ef1 xung \u0111\u1ed9t v\u0103n h\u00f3a<\/strong>: OO nh\u1ea5n m\u1ea1nh \u0111\u00f3ng g\u00f3i; quan h\u1ec7 nh\u1ea5n m\u1ea1nh truy c\u1eadp d\u1eef li\u1ec7u tr\u1ef1c ti\u1ebfp.<\/p>\n<p data-nodeid=\"1875\"><strong data-nodeid=\"2284\">Chi\u1ebfn l\u01b0\u1ee3c tri\u1ec3n khai<\/strong>:<\/p>\n<table data-nodeid=\"1876\">\n<thead data-nodeid=\"1877\">\n<tr data-nodeid=\"1878\">\n<th data-nodeid=\"1880\">Lo\u1ea1i thao t\u00e1c<\/th>\n<th data-nodeid=\"1881\">Tri\u1ec3n khai RDBMS<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1884\">\n<tr data-nodeid=\"1885\">\n<td data-nodeid=\"1886\">Truy c\u1eadp thu\u1ed9c t\u00ednh \u0111\u01a1n gi\u1ea3n<\/td>\n<td data-nodeid=\"1887\">SELECT\/UPDATE tr\u1ef1c ti\u1ebfp<\/td>\n<\/tr>\n<tr data-nodeid=\"1888\">\n<td data-nodeid=\"1889\">Thu\u1ed9c t\u00ednh suy ra (kh\u00f4ng tham s\u1ed1)<\/td>\n<td data-nodeid=\"1890\">VIEW c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/td>\n<\/tr>\n<tr data-nodeid=\"1891\">\n<td data-nodeid=\"1892\">Thu\u1ed9c t\u00ednh suy ra (c\u00f3 tham s\u1ed1)<\/td>\n<td data-nodeid=\"1893\">Th\u1ee7 t\u1ee5c l\u01b0u tr\u1eef ho\u1eb7c logic \u1ee9ng d\u1ee5ng<\/td>\n<\/tr>\n<tr data-nodeid=\"1894\">\n<td data-nodeid=\"1895\">Th\u1ef1c thi r\u00e0ng bu\u1ed9c ph\u1ee9c t\u1ea1p<\/td>\n<td data-nodeid=\"1896\">Triggers ho\u1eb7c th\u1ee7 t\u1ee5c \u1ee9ng d\u1ee5ng<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"1897\"\/>\n<h2 data-nodeid=\"1898\">\ud83d\udd39 T\u1ed5ng qu\u00e1t h\u00f3a v\u00e0 k\u1ebf th\u1eeba<\/h2>\n<h3 data-nodeid=\"1899\">T\u1ed5ng qu\u00e1t h\u00f3a c\u01a1 b\u1ea3n<\/h3>\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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5l5mGTGesDRgw25N8WaXg7LBpKe1M0000\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5l5mGTGesDRgw25N8WaXg7LBpKe1M0000\" \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=\"1900\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Person\r\nclass Student\r\nclass Professor\r\nPerson &lt;|-- Student\r\nPerson &lt;|-- Professor\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5l5mGTGesDRgw25N8WaXg7LBpKe1M0000\" \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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5l5mGTGesDRgw25N8WaXg7LBpKe1M0000\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1901\">L\u1edbp tr\u1eebu t\u01b0\u1ee3ng v\u00e0 thao t\u00e1c<\/h3>\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#plantuml:TSun2iCm50FGtU0xQ4mflK2cTEazb6z33OvT_7-Q8UJkQMWxPfKUGeCQcyrJzewZMgCO95CLTv4w5yFg7N33oCmYiSSZLzgHNH7YgsgoZjCXVzMbnxkcy1NhVtJ3akmP6fSJlNatn18-JtO0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuUNAURXxTe52IT73tQjB5KgERNYuUt5Uke9ZSd9-QLw9GZKlbuA2ha9IOavYNdAgbO9RJdvY2KXCMo4bjI2_EBD48p4Nf18gfMcbK9QVcG9HKPsOL5nIb9XSKgjGdbcIaLAKM8v3TIqlbqDgNWhGGG00\" \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=\"1902\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nl\u1edbp tr\u1eebu t\u01b0\u1ee3ng Account {\r\n  - balance: Float\r\n  + deposit(amount: Float): void\r\n  + {abstract} withdraw(amount: Float): 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#plantuml:SoWkIImgAStDuUNAURXxTe52IT73tQjB5KgERNYuUt5Uke9ZSd9-QLw9GZKlbuA2ha9IOavYNdAgbO9RJdvY2KXCMo4bjI2_EBD48p4Nf18gfMcbK9QVcG9HKPsOL5nIb9XSKgjGdbcIaLAKM8v3TIqlbqDgNWhGGG00\" \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#plantuml:TSun2iCm50FGtU0xQ4mflK2cTEazb6z33OvT_7-Q8UJkQMWxPfKUGeCQcyrJzewZMgCO95CLTv4w5yFg7N33oCmYiSSZLzgHNH7YgsgoZjCXVzMbnxkcy1NhVtJ3akmP6fSJlNatn18-JtO0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1903\">R\u00e0ng bu\u1ed9c t\u1ed5ng qu\u00e1t h\u00f3a<\/h3>\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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5C07_aepK8fWM2ArWKwEh2zEeOALWOrETabcSbP-PLwAZa9oVMv2JMf9QQsU7gXvkCj4waAp6gySXDIy5w3y0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5C07_aepK8fWM2ArWKwEh2zEeOALWOrETdN5uIrwwGdfcOhv2NaPYgOx2aOaFTosl156xbzVQsQ7gXTj2bcua9n6jto4rBmKO1W00\" \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=\"1904\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Person\r\nclass Student\r\nclass Professor\r\nclass OtherPerson\r\nPerson &lt;|-- Student : &lt;&lt;{kh\u00f4ng giao nhau, \u0111\u1ea7y \u0111\u1ee7}&gt;&gt;\r\nPerson &lt;|-- Professor : &lt;&lt;{kh\u00f4ng giao nhau, \u0111\u1ea7y \u0111\u1ee7}&gt;&gt;\r\nPerson &lt;|-- OtherPerson : &lt;&lt;{kh\u00f4ng giao nhau, \u0111\u1ea7y \u0111\u1ee7}&gt;&gt;\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5C07_aepK8fWM2ArWKwEh2zEeOALWOrETdN5uIrwwGdfcOhv2NaPYgOx2aOaFTosl156xbzVQsQ7gXTj2bcua9n6jto4rBmKO1W00\" \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#plantuml:SoWkIImgAStDuULApaaiBbO8I2qgpi-3yO9BIbDIyqhWaaNvQQd5nVb5C07_aepK8fWM2ArWKwEh2zEeOALWOrETabcSbP-PLwAZa9oVMv2JMf9QQsU7gXvkCj4waAp6gySXDIy5w3y0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1905\">Ph\u00e2n lo\u1ea1i nhi\u1ec1u l\u1edbp \/ B\u1ed9 ph\u00e2n bi\u1ec7t<\/h3>\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#plantuml:SoWkIImgAStDuULApaaiBbPmpIt8oQzCJONnWqiIqz9W7BV4vDASaaeOryFN7yRqoyy3ys3Q5MngT7KXcXMi56niiZFpKkpiqEMXvk5H0JGKB9kPLrnQb9YNd8gf168rfYg7rBmKeCS0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmpIt8oQzCJONnWqiIqz9W7BV4vDASaaeOryFN7yRqoyy3ys3Q5MngT7KXcXMi56niSl8VxbgOQMU7hW9g8burG8F1yaaFTotELyZ8VBYxEHTJ5SG5M1KwfEQb0Bq80000\" \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=\"1906\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Employee\r\nclass Staff\r\nclass Faculty\r\nclass HMO\r\nclass NonHMO\r\nEmployee &lt;|-- Staff : &lt;&lt;lo\u1ea1i&gt;&gt;\r\nEmployee &lt;|-- Faculty : &lt;&lt;lo\u1ea1i&gt;&gt;\r\nEmployee &lt;|-- HMO : &lt;&lt;b\u1ea3o hi\u1ec3m&gt;&gt;\r\nEmployee &lt;|-- NonHMO : &lt;&lt;b\u1ea3o hi\u1ec3m&gt;&gt;\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmpIt8oQzCJONnWqiIqz9W7BV4vDASaaeOryFN7yRqoyy3ys3Q5MngT7KXcXMi56niSl8VxbgOQMU7hW9g8burG8F1yaaFTotELyZ8VBYxEHTJ5SG5M1KwfEQb0Bq80000\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmpIt8oQzCJONnWqiIqz9W7BV4vDASaaeOryFN7yRqoyy3ys3Q5MngT7KXcXMi56niiZFpKkpiqEMXvk5H0JGKB9kPLrnQb9YNd8gf168rfYg7rBmKeCS0\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<ul data-nodeid=\"1907\">\n<li data-nodeid=\"1908\">\n<p data-nodeid=\"1909\">C\u00e1c b\u1ed9 ph\u00e2n bi\u1ec7t nh\u00f3m c\u00e1c \u0111\u1eb7c t\u1ea3 lo\u1ea1i tr\u1eeb l\u1eabn nhau<\/p>\n<\/li>\n<li data-nodeid=\"1910\">\n<p data-nodeid=\"1911\">C\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng c\u00f3 th\u1ec3 c\u00f3 m\u1ed9t gi\u00e1 tr\u1ecb cho m\u1ed7i chi\u1ec1u b\u1ed9 ph\u00e2n bi\u1ec7t<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"1912\"\/>\n<h2 data-nodeid=\"1913\">\ud83d\udd39 C\u01a1 ch\u1ebf m\u1edf r\u1ed9ng<\/h2>\n<p data-nodeid=\"1914\">UML cung c\u1ea5p ba c\u01a1 ch\u1ebf m\u1edf r\u1ed9ng:<\/p>\n<h3 data-nodeid=\"1915\">1. Stereotype<code data-backticks=\"1\" data-nodeid=\"2305\">&lt;&lt; &gt;&gt;<\/code><\/h3>\n<p data-nodeid=\"1916\">M\u1edf r\u1ed9ng ng\u1eef ngh\u0129a UML b\u1eb1ng c\u00e1ch t\u1ea1o ra c\u00e1c \u201clo\u1ea1i con\u201d m\u1edbi t\u1eeb c\u00e1c ph\u1ea7n t\u1eed m\u00f4 h\u00ecnh si\u00eau c\u1ea5p.<\/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#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAmiKdDAyaigRIpKwZcvL9Gq5N8JB5IyCmhIKrFBO88v2Ncfbef19SKPUQbytBLmepmJIp9yCbCAaeigWIQKbgIcODaZBP2SMQUHeMLWbjEVcA99fI6o2Jd5sEH0Phha9gN0dGZ0000\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAmiKdDAyaigRIpKwZcvL9Gq5N8JB5IyCmhIKrFBO88v2Ncfbef19SKPUQbytBLmepmJIp9yCbCAaeigWIQKbgIcODaZBP2SMQUHeMLWbjEVcA99fI6o2Jd5sEH0Phha9gN0dGZ0000\" \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=\"1917\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Customer &lt;&lt;entity&gt;&gt; {\r\n  - id: Integer\r\n  - name: String\r\n}\r\nclass MathLibrary &lt;&lt;utility&gt;&gt; {\r\n  + sin(x: Float): Float\r\n  + cos(x: Float): Float\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAmiKdDAyaigRIpKwZcvL9Gq5N8JB5IyCmhIKrFBO88v2Ncfbef19SKPUQbytBLmepmJIp9yCbCAaeigWIQKbgIcODaZBP2SMQUHeMLWbjEVcA99fI6o2Jd5sEH0Phha9gN0dGZ0000\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAmiKdDAyaigRIpKwZcvL9Gq5N8JB5IyCmhIKrFBO88v2Ncfbef19SKPUQbytBLmepmJIp9yCbCAaeigWIQKbgIcODaZBP2SMQUHeMLWbjEVcA99fI6o2Jd5sEH0Phha9gN0dGZ0000\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1918\">2. Gi\u00e1 tr\u1ecb g\u1eafn th\u1ebb<code data-backticks=\"1\" data-nodeid=\"2312\">{key=value}<\/code><\/h3>\n<p data-nodeid=\"1919\">Th\u00eam c\u00e1c thu\u1ed9c t\u00ednh t\u00f9y ch\u1ec9nh v\u00e0o c\u00e1c ph\u1ea7n t\u1eed m\u00f4 h\u00ecnh.<\/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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg4uiBSd8Bx8jJj9HA4ijAixCpxCrr3FGKIW0SOfBKlEIKstXx99Qa1vTXSmKAmNFl9BKzDGYNYwWc4DgNWhG1W00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg4uiBSd8Bx8jJj9HA4ijAixCpxCrr3FGKIW0SOfBKlEIKstXx99Qa1vTXSmKAmNFl9BKzDGYNYwWc4DgNWhG1W00\" \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=\"1920\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Student {\r\n  {author=sb, version=1.0, persistence=persistent}\r\n  - id: Integer\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg4uiBSd8Bx8jJj9HA4ijAixCpxCrr3FGKIW0SOfBKlEIKstXx99Qa1vTXSmKAmNFl9BKzDGYNYwWc4DgNWhG1W00\" \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#plantuml:SoWkIImgAStDuULApaaiBbO8BYbDISqhKQZcvL9Gg4uiBSd8Bx8jJj9HA4ijAixCpxCrr3FGKIW0SOfBKlEIKstXx99Qa1vTXSmKAmNFl9BKzDGYNYwWc4DgNWhG1W00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"1921\">3. R\u00e0ng bu\u1ed9c\u00a0<code data-backticks=\"1\" data-nodeid=\"2315\">{...}<\/code><\/h3>\n<p data-nodeid=\"1922\">Th\u00eam c\u00e1c gi\u1edbi h\u1ea1n ng\u1eef ngh\u0129a b\u1eb1ng v\u0103n b\u1ea3n t\u1ef1 do, OCL ho\u1eb7c c\u00e1c ch\u1eef vi\u1ebft t\u1eaft \u0111\u00e3 \u0111\u1ecbnh s\u1eb5n.<\/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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJbMevkLIKD1LoCktKl3CAqbDJos221JaP-QL5CC55QhB4dDAKnNiR1KCQa4ggY4A56ni5N8JAmB07A0443cavgK0RG80\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJbMevkLIKD1LoCktKl3CAqbDJos221JaP-QL5CC55QhB4dDAKnNiR1KCQa4ggY4A56ni5N8JAmB07A0443cavgK0RG80\" \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=\"1923\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Exercise {\r\n  - no: Integer\r\n  - points: Integer {value &gt;= 0}\r\n  {points &lt;= maxPoints}\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJbMevkLIKD1LoCktKl3CAqbDJos221JaP-QL5CC55QhB4dDAKnNiR1KCQa4ggY4A56ni5N8JAmB07A0443cavgK0RG80\" \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#plantuml:SoWkIImgAStDuULApaaiBbPmhKWjIiuiJbMevkLIKD1LoCktKl3CAqbDJos221JaP-QL5CC55QhB4dDAKnNiR1KCQa4ggY4A56ni5N8JAmB07A0443cavgK0RG80\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1924\"\/>\n<h2 data-nodeid=\"1925\">\ud83d\udd39 UML cho thi\u1ebft k\u1ebf c\u01a1 s\u1edf d\u1eef li\u1ec7u: Nh\u1eefng \u0111i\u1ec3m c\u1ea7n l\u01b0u \u00fd ch\u00ednh<\/h2>\n<h3 data-nodeid=\"1926\">Chuy\u1ec3n \u0111\u1ed5i UML sang l\u01b0\u1ee3c \u0111\u1ed3 quan h\u1ec7<\/h3>\n<table data-nodeid=\"1928\">\n<thead data-nodeid=\"1929\">\n<tr data-nodeid=\"1930\">\n<th data-nodeid=\"1932\">C\u1ea5u tr\u00fac UML<\/th>\n<th data-nodeid=\"1933\">Tri\u1ec3n khai quan h\u1ec7<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1936\">\n<tr data-nodeid=\"1937\">\n<td data-nodeid=\"1938\">L\u1edbp<\/td>\n<td data-nodeid=\"1939\">B\u1ea3ng<\/td>\n<\/tr>\n<tr data-nodeid=\"1940\">\n<td data-nodeid=\"1941\">Thu\u1ed9c t\u00ednh<\/td>\n<td data-nodeid=\"1942\">C\u1ed9t<\/td>\n<\/tr>\n<tr data-nodeid=\"1943\">\n<td data-nodeid=\"1944\">Kh\u00f3a ch\u00ednh\u00a0<code data-backticks=\"1\" data-nodeid=\"2326\">{pk}<\/code><\/td>\n<td data-nodeid=\"1945\">R\u00e0ng bu\u1ed9c PRIMARY KEY<\/td>\n<\/tr>\n<tr data-nodeid=\"1946\">\n<td data-nodeid=\"1947\">Li\u00ean k\u1ebft (1:*)<\/td>\n<td data-nodeid=\"1948\">Kh\u00f3a ngo\u1ea1i \u1edf ph\u00eda &#8220;nhi\u1ec1u&#8221;<\/td>\n<\/tr>\n<tr data-nodeid=\"1949\">\n<td data-nodeid=\"1950\">Li\u00ean k\u1ebft (<em data-nodeid=\"2341\">:<\/em>)<\/td>\n<td data-nodeid=\"1951\">B\u1ea3ng giao nhau\/b\u1ea3ng giao \u0111i\u1ec3m<\/td>\n<\/tr>\n<tr data-nodeid=\"1952\">\n<td data-nodeid=\"1953\">Th\u00e0nh ph\u1ea7n<\/td>\n<td data-nodeid=\"1954\">Kh\u00f3a ngo\u1ea1i +\u00a0<code data-backticks=\"1\" data-nodeid=\"2345\">ON DELETE CASCADE<\/code><\/td>\n<\/tr>\n<tr data-nodeid=\"1955\">\n<td data-nodeid=\"1956\">L\u1edbp li\u00ean k\u1ebft<\/td>\n<td data-nodeid=\"1957\">B\u1ea3ng v\u1edbi kh\u00f3a ngo\u1ea1i k\u1ebft h\u1ee3p + thu\u1ed9c t\u00ednh<\/td>\n<\/tr>\n<tr data-nodeid=\"1958\">\n<td data-nodeid=\"1959\">T\u1ed5ng qu\u00e1t h\u00f3a<\/td>\n<td data-nodeid=\"1960\">B\u1ea3ng ri\u00eang l\u1ebb (v\u1edbi kh\u00f3a ngo\u1ea1i) ho\u1eb7c b\u1ea3ng duy nh\u1ea5t v\u1edbi b\u1ed9 ph\u00e2n bi\u1ec7t ki\u1ec3u<\/td>\n<\/tr>\n<tr data-nodeid=\"1961\">\n<td data-nodeid=\"1962\"><code data-backticks=\"1\" data-nodeid=\"2350\">{c\u00f3 th\u1ee9 t\u1ef1}<\/code>li\u00ean k\u1ebft<\/td>\n<td data-nodeid=\"1963\">Th\u00eam c\u1ed9t th\u1ee9 t\u1ef1 + r\u00e0ng bu\u1ed9c duy nh\u1ea5t<\/td>\n<\/tr>\n<tr data-nodeid=\"1964\">\n<td data-nodeid=\"1965\">Ch\u1ec9 \u0111\u1ecbnh<\/td>\n<td data-nodeid=\"1966\">M\u1ed9t ph\u1ea7n c\u1ee7a kh\u00f3a k\u1ebft h\u1ee3p ho\u1eb7c c\u1ed9t \u0111\u01b0\u1ee3c ch\u1ec9 m\u1ee5c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 data-nodeid=\"1967\">S\u1ef1 kh\u00e1c bi\u1ec7t quan tr\u1ecdng: H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng so v\u1edbi quan h\u1ec7<\/h3>\n<table data-nodeid=\"1969\">\n<thead data-nodeid=\"1970\">\n<tr data-nodeid=\"1971\">\n<th data-nodeid=\"1973\">Kh\u00eda c\u1ea1nh<\/th>\n<th data-nodeid=\"1974\">H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng<\/th>\n<th data-nodeid=\"1975\">Quan h\u1ec7<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1979\">\n<tr data-nodeid=\"1980\">\n<td data-nodeid=\"1981\"><strong data-nodeid=\"2362\">\u0110\u1ecbnh danh<\/strong><\/td>\n<td data-nodeid=\"1982\">Tham chi\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng (thay th\u1ebf)<\/td>\n<td data-nodeid=\"1983\">Kh\u00f3a ch\u00ednh (kinh doanh ho\u1eb7c thay th\u1ebf)<\/td>\n<\/tr>\n<tr data-nodeid=\"1984\">\n<td data-nodeid=\"1985\"><strong data-nodeid=\"2368\">Thao t\u00e1c<\/strong><\/td>\n<td data-nodeid=\"1986\">C\u1ed1t l\u00f5i trong thi\u1ebft k\u1ebf, \u0111\u00f3ng g\u00f3i<\/td>\n<td data-nodeid=\"1987\">B\u00ean ngo\u00e0i (SQL, th\u1ee7 t\u1ee5c)<\/td>\n<\/tr>\n<tr data-nodeid=\"1988\">\n<td data-nodeid=\"1989\"><strong data-nodeid=\"2374\">\u0110\u00f3ng g\u00f3i<\/strong><\/td>\n<td data-nodeid=\"1990\">Thu\u1ed9c t\u00ednh ri\u00eang t\u01b0, giao di\u1ec7n c\u00f4ng khai<\/td>\n<td data-nodeid=\"1991\">Truy c\u1eadp b\u1ea3ng tr\u1ef1c ti\u1ebfp theo m\u1eb7c \u0111\u1ecbnh<\/td>\n<\/tr>\n<tr data-nodeid=\"1992\">\n<td data-nodeid=\"1993\"><strong data-nodeid=\"2380\">K\u1ebf th\u1eeba<\/strong><\/td>\n<td data-nodeid=\"1994\">H\u1ed7 tr\u1ee3 ng\u00f4n ng\u1eef b\u1ea3n \u0111\u1ecba<\/td>\n<td data-nodeid=\"1995\">Chi\u1ebfn l\u01b0\u1ee3c \u00e1nh x\u1ea1 ph\u1ee9c t\u1ea1p<\/td>\n<\/tr>\n<tr data-nodeid=\"1996\">\n<td data-nodeid=\"1997\"><strong data-nodeid=\"2386\">M\u1ed1i quan h\u1ec7<\/strong><\/td>\n<td data-nodeid=\"1998\">Con tr\u1ecf\/tham chi\u1ebfu<\/td>\n<td data-nodeid=\"1999\">Kh\u00f3a ngo\u1ea1i v\u00e0 n\u1ed1i k\u1ebft<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 data-nodeid=\"2000\">G\u1ee3i \u00fd th\u1ef1c ti\u1ec5n cho ng\u01b0\u1eddi thi\u1ebft k\u1ebf c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/h3>\n<ol data-nodeid=\"2001\">\n<li data-nodeid=\"2002\">\n<p data-nodeid=\"2003\"><strong data-nodeid=\"2398\">M\u00f4 h\u00ecnh h\u00f3a r\u00f5 r\u00e0ng c\u00e1c kh\u00f3a<\/strong>: S\u1eed d\u1ee5ng\u00a0<code data-backticks=\"1\" data-nodeid=\"2394\">{pk}<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"2396\">{ak1}<\/code>\u00a0c\u00e1c ki\u1ec3u d\u00e1ng v\u00ec UML kh\u00f4ng h\u1ed7 tr\u1ee3 kh\u00f3a t\u00edch h\u1ee3p<\/p>\n<\/li>\n<li data-nodeid=\"2004\">\n<p data-nodeid=\"2005\"><strong data-nodeid=\"2405\">Ghi ch\u00fa t\u00ednh b\u1ec1n v\u1eefng<\/strong>: S\u1eed d\u1ee5ng\u00a0<code data-backticks=\"1\" data-nodeid=\"2403\">{persistent}<\/code>\u00a0gi\u00e1 tr\u1ecb g\u1eafn nh\u00e3n \u0111\u1ec3 ph\u00e2n bi\u1ec7t c\u00e1c l\u1edbp c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u1edbi c\u00e1c l\u1edbp \u1ee9ng d\u1ee5ng t\u1ea1m th\u1eddi<\/p>\n<\/li>\n<li data-nodeid=\"2006\">\n<p data-nodeid=\"2007\"><strong data-nodeid=\"2410\">\u0110\u01a1n gi\u1ea3n h\u00f3a thao t\u00e1c<\/strong>: \u00c1nh x\u1ea1 c\u00e1c thao t\u00e1c truy v\u1ea5n sang c\u00e1c view; c\u00e1c thao t\u00e1c ph\u1ee9c t\u1ea1p sang c\u00e1c th\u1ee7 t\u1ee5c l\u01b0u tr\u1eef<\/p>\n<\/li>\n<li data-nodeid=\"2008\">\n<p data-nodeid=\"2009\"><strong data-nodeid=\"2415\">X\u1eed l\u00fd k\u1ebf th\u1eeba c\u1ea9n th\u1eadn<\/strong>: Ch\u1ecdn chi\u1ebfn l\u01b0\u1ee3c \u00e1nh x\u1ea1 d\u1ef1a tr\u00ean c\u00e1c m\u1eabu truy v\u1ea5n<\/p>\n<\/li>\n<li data-nodeid=\"2010\">\n<p data-nodeid=\"2011\"><strong data-nodeid=\"2420\">T\u00e0i li\u1ec7u c\u00e1c r\u00e0ng bu\u1ed9c<\/strong>: S\u1eed d\u1ee5ng OCL ho\u1eb7c r\u00e0ng bu\u1ed9c v\u0103n b\u1ea3n r\u00f5 r\u00e0ng cho c\u00e1c quy t\u1eafc kinh doanh<\/p>\n<\/li>\n<li data-nodeid=\"2012\">\n<p data-nodeid=\"2013\"><strong data-nodeid=\"2425\">S\u1eed d\u1ee5ng l\u1edbp li\u00ean k\u1ebft m\u1ed9t c\u00e1ch th\u1eadn tr\u1ecdng<\/strong>: Ch\u1ec9 khi m\u1ed1i quan h\u1ec7 c\u00f3 c\u00e1c thu\u1ed9c t\u00ednh quan tr\u1ecdng<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"2014\"\/>\n<h2 data-nodeid=\"2015\">\ud83c\udfaf B\u1ea3n t\u00f3m t\u1eaft tham kh\u1ea3o nhanh<\/h2>\n<h3 data-nodeid=\"2016\">T\u00f3m t\u1eaft k\u00fd hi\u1ec7u s\u01a1 \u0111\u1ed3 l\u1edbp PlantUML<\/h3>\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#plantuml:SoWkIImgAStDuULApaaiBbQmiIakIIrApI-fB4YrirDm1Wdw9UQcAbJpSYaeL9SafgUdfjYM9UQKfjQ2HAArzNNrbVNhOXNoWAgYSqjpIcAj54A0kXMYRHM0wc8LgWkAyWkAiQZMA4WiIimjrhHI24ejGIW38eVKl1IWem00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULApaaiBbQmiSdEVBYxkLGXvV32l7GxEmLdaB1VOcwgGZKlbu92TKbYUdfgYcrPOavfQYr895fRNrTVMRykLY4Fg2ewjpId9DPA8QIo85KXsbO1g2vMeRgWAB-W68jgZOB4eiJSOaqhXQ3K4eGo8798pKi1EWi0\" \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=\"2017\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass &lt;&lt;ki\u1ec3u d\u00e1ng&gt;&gt; ClassName {\r\n  {tagged=value}\r\n  [+\/-\/#\/~] name[mult]: Type [= val] {props}\r\n  [+\/-\/#\/~] name(params): Ret {props}\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULApaaiBbQmiSdEVBYxkLGXvV32l7GxEmLdaB1VOcwgGZKlbu92TKbYUdfgYcrPOavfQYr895fRNrTVMRykLY4Fg2ewjpId9DPA8QIo85KXsbO1g2vMeRgWAB-W68jgZOB4eiJSOaqhXQ3K4eGo8798pKi1EWi0\" \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#plantuml:SoWkIImgAStDuULApaaiBbQmiIakIIrApI-fB4YrirDm1Wdw9UQcAbJpSYaeL9SafgUdfjYM9UQKfjQ2HAArzNNrbVNhOXNoWAgYSqjpIcAj54A0kXMYRHM0wc8LgWkAyWkAiQZMA4WiIimjrhHI24ejGIW38eVKl1IWem00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"2018\">K\u00fd hi\u1ec7u li\u00ean k\u1ebft<\/h3>\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#plantuml:LSvD2e0W40NWVT0T1ZT1u0LQXDQ-Eqmb8gWJZNN-x8UetS3x7cyK9rpJ5dnPz1wPDOYm-QG5I7cVdO0hwQ01pKoJm-Ge3XZCswapVX1Kq5DOYDsfNa4_eQrTZSMVaBBzY05tPt7qUKEPEES73m00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong 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#plantuml:SoWkIImgAStDuULopaaiBdPKKCejpIbnL5BGrOKmdPGKm39E2bOAZiN5-ScPYIMP-Nb-YRcfS3rQGCLGHGhg2Y67roPdA6GytBsu0AuYdw0ANLqx91NEXpShb00LD2iScPZvS7TZgKB6iGqFTy_EI-VbSaZDIm6w6000\" \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=\"2019\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nClassA \"multA\" -- \"multB\" ClassB : AssociationName\r\nClassA *-- ClassB  ' T\u00edch h\u1ee3p\r\nClassA o-- ClassB  ' T\u00edch h\u1ee3p\r\nClassA --&gt; ClassB  ' C\u00f3 th\u1ec3 \u0111i\u1ec1u h\u01b0\u1edbng\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com#plantuml:SoWkIImgAStDuULopaaiBdPKKCejpIbnL5BGrOKmdPGKm39E2bOAZiN5-ScPYIMP-Nb-YRcfS3rQGCLGHGhg2Y67roPdA6GytBsu0AuYdw0ANLqx91NEXpShb00LD2iScPZvS7TZgKB6iGqFTy_EI-VbSaZDIm6w6000\" \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#plantuml:LSvD2e0W40NWVT0T1ZT1u0LQXDQ-Eqmb8gWJZNN-x8UetS3x7cyK9rpJ5dnPz1wPDOYm-QG5I7cVdO0hwQ01pKoJm-Ge3XZCswapVX1Kq5DOYDsfNa4_eQrTZSMVaBBzY05tPt7qUKEPEES73m00\" 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>Ch\u1ec9nh s\u1eeda PlantUML trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"2020\">C\u00e1c k\u00fd hi\u1ec7u t\u00ednh kh\u1ea3 ki\u1ebfn<\/h3>\n<ul data-nodeid=\"2021\">\n<li data-nodeid=\"2022\">\n<p data-nodeid=\"2023\"><code data-backticks=\"1\" data-nodeid=\"2430\">+<\/code>\u00a0C\u00f4ng khai<\/p>\n<\/li>\n<li data-nodeid=\"2024\">\n<p data-nodeid=\"2025\"><code data-backticks=\"1\" data-nodeid=\"2432\">-<\/code>\u00a0Ri\u00eang t\u01b0<\/p>\n<\/li>\n<li data-nodeid=\"2026\">\n<p data-nodeid=\"2027\"><code data-backticks=\"1\" data-nodeid=\"2434\">#<\/code>\u00a0B\u1ea3o v\u1ec7<\/p>\n<\/li>\n<li data-nodeid=\"2028\">\n<p data-nodeid=\"2029\"><code data-backticks=\"1\" data-nodeid=\"2436\">~<\/code>\u00a0G\u00f3i<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"2030\">C\u00e1c thu\u1ed9c t\u00ednh v\u00e0 r\u00e0ng bu\u1ed9c chung<\/h3>\n<ul data-nodeid=\"2031\">\n<li data-nodeid=\"2032\">\n<p data-nodeid=\"2033\"><code data-backticks=\"1\" data-nodeid=\"2441\">{t\u0129nh}<\/code>\u00a0\/\u00a0<code data-backticks=\"1\" data-nodeid=\"2443\">{l\u00e0 truy v\u1ea5n=true}<\/code>\u00a0\/\u00a0<code data-backticks=\"1\" data-nodeid=\"2445\">{tr\u1eebu t\u01b0\u1ee3ng}<\/code><\/p>\n<\/li>\n<li data-nodeid=\"2034\">\n<p data-nodeid=\"2035\"><code data-backticks=\"1\" data-nodeid=\"2446\">{gi\u00e1 tr\u1ecb &gt;= 0}<\/code>\u00a0\/\u00a0<code data-backticks=\"1\" data-nodeid=\"2448\">{xor}<\/code>\u00a0\/\u00a0<code data-backticks=\"1\" data-nodeid=\"2450\">{c\u00f3 th\u1ee9 t\u1ef1}<\/code>\u00a0\/\u00a0<code data-backticks=\"1\" data-nodeid=\"2452\">{kh\u00f3a ch\u00ednh}<\/code><\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"2036\"\/>\n<blockquote data-nodeid=\"2037\">\n<p data-nodeid=\"2038\">\ud83d\udca1\u00a0<strong data-nodeid=\"2462\">Suy ngh\u0129 cu\u1ed1i c\u00f9ng<\/strong>: S\u01a1 \u0111\u1ed3 l\u1edbp UML r\u1ea5t m\u1ea1nh m\u1ebd cho m\u00f4 h\u00ecnh h\u00f3a kh\u00e1i ni\u1ec7m, nh\u01b0ng h\u00e3y nh\u1edb ch\u00fang \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf ch\u1ee7 y\u1ebfu cho k\u1ef9 thu\u1eadt ph\u1ea7n m\u1ec1m. Khi s\u1eed d\u1ee5ng UML cho thi\u1ebft k\u1ebf c\u01a1 s\u1edf d\u1eef li\u1ec7u, h\u00e3y s\u1eb5n s\u00e0ng m\u1edf r\u1ed9ng k\u00fd hi\u1ec7u (b\u1eb1ng c\u00e1c ki\u1ec3u d\u00e1ng, gi\u00e1 tr\u1ecb g\u1eafn th\u1ebb, r\u00e0ng bu\u1ed9c) \u0111\u1ec3 ghi l\u1ea1i c\u00e1c kh\u00e1i ni\u1ec7m quan h\u1ec7 nh\u01b0 kh\u00f3a, chu\u1ea9n h\u00f3a v\u00e0 c\u00e1c r\u00e0ng bu\u1ed9c khai b\u00e1o m\u00e0 kh\u00f4ng ph\u1ea3i l\u00e0 b\u1ea3n ch\u1ea5t c\u1ee7a n\u1ec1n t\u1ea3ng h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a UML.<\/p>\n<\/blockquote>\n<p class=\"\" data-nodeid=\"2039\"><em data-nodeid=\"2470\">H\u01b0\u1edbng d\u1eabn \u0111\u01b0\u1ee3c bi\u00ean so\u1ea1n t\u1eeb \u201cPh\u1ea7n 6: S\u01a1 \u0111\u1ed3 l\u1edbp UML\u201d c\u1ee7a Stefan Brass, \u0110\u1ea1i h\u1ecdc Halle, 2003. T\u1ea5t c\u1ea3 c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u01b0\u1ee3c \u0111\u1ecbnh d\u1ea1ng theo c\u00fa ph\u00e1p PlantUML \u0111\u1ec3 t\u01b0\u01a1ng th\u00edch v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 hi\u1ec7n \u0111\u1ea1i.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udca1\u00a0Ghi ch\u00fa: T\u1ea5t c\u1ea3 c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u1ec1u \u0111\u01b0\u1ee3c cung c\u1ea5p d\u01b0\u1edbi d\u1ea1ng\u00a0PlantUML \u0111\u1ecbnh d\u1ea1ng. B\u1ea1n c\u00f3 th\u1ec3 hi\u1ec3n th\u1ecb<\/p>\n","protected":false},"author":3482,"featured_media":11066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","fifu_image_url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png","fifu_image_alt":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-11065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3) - ArchiMetric Vietnamese<\/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.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3) - ArchiMetric Vietnamese\" \/>\n<meta property=\"og:description\" content=\"\ud83d\udca1\u00a0Ghi ch\u00fa: T\u1ea5t c\u1ea3 c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u1ec1u \u0111\u01b0\u1ee3c cung c\u1ea5p d\u01b0\u1edbi d\u1ea1ng\u00a0PlantUML \u0111\u1ecbnh d\u1ea1ng. B\u1ea1n c\u00f3 th\u1ec3 hi\u1ec3n th\u1ecb\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\" \/>\n<meta property=\"og:site_name\" content=\"ArchiMetric Vietnamese\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-03T05:38:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png\" \/><meta property=\"og:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1208\" \/>\n\t<meta property=\"og:image:height\" content=\"658\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba\"},\"headline\":\"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3)\",\"datePublished\":\"2026-06-03T05:38:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\"},\"wordCount\":2716,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\",\"url\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\",\"name\":\"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3) - ArchiMetric Vietnamese\",\"isPartOf\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png\",\"datePublished\":\"2026-06-03T05:38:37+00:00\",\"author\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage\",\"url\":\"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png\",\"contentUrl\":\"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png\",\"width\":1208,\"height\":658},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.archimetric.com\/vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#website\",\"url\":\"https:\/\/www.archimetric.com\/vn\/\",\"name\":\"ArchiMetric Vietnamese\",\"description\":\"EA, Dev Ops, Scrum, Agile and More\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.archimetric.com\/vn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.archimetric.com\/vn\/#\/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.archimetric.com\/vn\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3) - ArchiMetric Vietnamese","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.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/","og_locale":"vi_VN","og_type":"article","og_title":"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3) - ArchiMetric Vietnamese","og_description":"\ud83d\udca1\u00a0Ghi ch\u00fa: T\u1ea5t c\u1ea3 c\u00e1c s\u01a1 \u0111\u1ed3 \u0111\u1ec1u \u0111\u01b0\u1ee3c cung c\u1ea5p d\u01b0\u1edbi d\u1ea1ng\u00a0PlantUML \u0111\u1ecbnh d\u1ea1ng. B\u1ea1n c\u00f3 th\u1ec3 hi\u1ec3n th\u1ecb","og_url":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/","og_site_name":"ArchiMetric Vietnamese","article_published_time":"2026-06-03T05:38:37+00:00","og_image":[{"url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png","type":"","width":"","height":""},{"width":1208,"height":658,"url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png","type":"image\/png"}],"author":"curtis","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/06\/img_6a1fbb7554f19.png","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"curtis","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"5 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#article","isPartOf":{"@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/"},"author":{"name":"curtis","@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba"},"headline":"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3)","datePublished":"2026-06-03T05:38:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/"},"wordCount":2716,"commentCount":0,"image":{"@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png","articleSection":["Uncategorized"],"inLanguage":"vi","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/","url":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/","name":"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3) - ArchiMetric Vietnamese","isPartOf":{"@id":"https:\/\/www.archimetric.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage"},"image":{"@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png","datePublished":"2026-06-03T05:38:37+00:00","author":{"@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba"},"breadcrumb":{"@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#primaryimage","url":"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png","contentUrl":"https:\/\/www.archimetric.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/img_6a1fbb7554f19.png","width":1208,"height":658},{"@type":"BreadcrumbList","@id":"https:\/\/www.archimetric.com\/vn\/comprehensive-guide-to-uml-class-diagrams-diagram-as-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.archimetric.com\/vn\/"},{"@type":"ListItem","position":2,"name":"H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n v\u1ec1 s\u01a1 \u0111\u1ed3 l\u1edbp UML (S\u01a1 \u0111\u1ed3 d\u01b0\u1edbi d\u1ea1ng m\u00e3)"}]},{"@type":"WebSite","@id":"https:\/\/www.archimetric.com\/vn\/#website","url":"https:\/\/www.archimetric.com\/vn\/","name":"ArchiMetric Vietnamese","description":"EA, Dev Ops, Scrum, Agile and More","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.archimetric.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/www.archimetric.com\/vn\/#\/schema\/person\/71e6318556cda44457a5b68e284bedba","name":"curtis","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.archimetric.com\/vn\/#\/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.archimetric.com\/vn\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/posts\/11065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/users\/3482"}],"replies":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/comments?post=11065"}],"version-history":[{"count":0,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/posts\/11065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/media\/11066"}],"wp:attachment":[{"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/media?parent=11065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/categories?post=11065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.archimetric.com\/vn\/wp-json\/wp\/v2\/tags?post=11065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}