{"id":11809,"date":"2026-05-21T16:35:35","date_gmt":"2026-05-21T08:35:35","guid":{"rendered":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/"},"modified":"2026-05-30T16:00:14","modified_gmt":"2026-05-30T08:00:14","slug":"beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml","status":"publish","type":"post","link":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/","title":{"rendered":"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML"},"content":{"rendered":"<h2 data-nodeid=\"1473\">Pendahuluan<\/h2>\n<p data-nodeid=\"1474\">Dalam arsitektur berorientasi objek, kelas menentukan kosakata dari suatu sistem, tetapi tetap diam secara struktural hingga terhubung. Integritas arsitektur sejati dari setiap model perangkat lunak muncul bukan dari entitas yang terisolasi, melainkan dari hubungan yang mengikat mereka. Mengambil dari Kendall Scott\u2019s<em data-nodeid=\"1632\">Fast Track UML 2.0<\/em>, panduan ini merangkum mekanisme dasar hubungan kelas dan menerjemahkannya ke dalam alur kerja PlantUML yang dapat dieksekusi.<\/p>\n<p data-nodeid=\"1475\">Sementara pemula sering fokus berat pada atribut dan operasi kelas, modeler berpengalaman tahu bahwa hubungan menentukan ikatan siklus hidup, batasan navigasi, taksonomi pewarisan, dan batas ketergantungan. Melalui studi kasus yang koheren tentang platform e-commerce modern, kita akan mengeksplorasi bagaimana hubungan-hubungan ini berkembang di sepanjang tahapan pemodelan, bagaimana menghindari pola anti-struktur yang umum, dan bagaimana memanfaatkan mesin tata letak PlantUML untuk menghasilkan diagram arsitektur yang jelas dan dapat dipelihara. Pada akhirnya, Anda akan memiliki kerangka kerja praktis untuk mengubah teori hubungan abstrak menjadi model struktural yang presisi dan dapat dirender, yang berkembang sejalan dengan kode Anda.<\/p>\n<p id=\"bhkIOwo\"><img alt=\"Architecting System Structure Through UML Relationships &amp; PlantUML\" class=\"alignnone wp-image-24671 size-full\" decoding=\"async\" height=\"506\" loading=\"lazy\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png 911w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a-300x167.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a-768x427.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a-150x83.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a-400x222.png 400w\" width=\"911\"\/><\/p>\n<hr data-nodeid=\"1476\"\/>\n<h2 data-nodeid=\"1477\">Konteks Studi Kasus: Platform E-Commerce NexusMart<\/h2>\n<p data-nodeid=\"1478\">Untuk mendasarkan teori dalam praktik, kita akan memodelkan<strong data-nodeid=\"1642\">NexusMart<\/strong>, sebuah sistem manajemen pesanan e-commerce yang dapat diskalakan. Domain ini mencakup:<\/p>\n<ul data-nodeid=\"1479\">\n<li data-nodeid=\"1480\">\n<p data-nodeid=\"1481\">Pelanggan yang mengelola otentikasi dan ulasan produk<\/p>\n<\/li>\n<li data-nodeid=\"1482\">\n<p data-nodeid=\"1483\">Katalog produk dengan manajemen siklus hidup yang independen<\/p>\n<\/li>\n<li data-nodeid=\"1484\">\n<p data-nodeid=\"1485\">Pesanan yang secara ketat memiliki item barisnya<\/p>\n<\/li>\n<li data-nodeid=\"1486\">\n<p data-nodeid=\"1487\">Hierarki pembayaran yang mendukung banyak gerbang pembayaran<\/p>\n<\/li>\n<li data-nodeid=\"1488\">\n<p data-nodeid=\"1489\">Layanan yang tergantung pada modul inventaris dan pelaporan eksternal<\/p>\n<\/li>\n<li data-nodeid=\"1490\">\n<p data-nodeid=\"1491\">Catatan pembelian yang menangkap metadata di seluruh interaksi pelanggan-produk banyak-ke-banyak<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"1492\">Setiap bagian di bawah ini memetakan jenis hubungan UML ke domain ini, diikuti oleh implementasi PlantUML yang lengkap dan dapat dirender.<\/p>\n<hr data-nodeid=\"1493\"\/>\n<h2 data-nodeid=\"1494\">1. Asosiasi (Koneksi Peer)<\/h2>\n<p data-nodeid=\"1495\">Asosiasi mewakili koneksi struktural &#8216;peer&#8217; antar kelas. Ini menunjukkan bahwa instans terhubung pada saat runtime, membentuk tautan tingkat objek. Asosiasi dapat bersifat dua arah atau satu arah, dan diperindah dengan peran, multiplisitas, dan arah baca untuk memperjelas maksud semantik.<\/p>\n<h3 data-nodeid=\"1496\">Aplikasi NexusMart<\/h3>\n<ul data-nodeid=\"1497\">\n<li data-nodeid=\"1498\">\n<p data-nodeid=\"1499\">Sebuah\u00a0<code data-backticks=\"1\" data-nodeid=\"1658\">Pelanggan<\/code>\u00a0bernavigasi secara satu arah ke\u00a0<code data-backticks=\"1\" data-nodeid=\"1660\">Kata Sandi<\/code>\u00a0untuk otentikasi.<\/p>\n<\/li>\n<li data-nodeid=\"1500\">\n<p data-nodeid=\"1501\">Sebuah\u00a0<code data-backticks=\"1\" data-nodeid=\"1663\">Peninjau<\/code>\u00a0menjaga hubungan dua arah dengan\u00a0<code data-backticks=\"1\" data-nodeid=\"1665\">Ulasan<\/code>, dibaca sebagai \u201cPeninjau menulis Ulasan\u201d dan \u201cUlasan ditulis oleh Peninjau\u201d.<\/p>\n<p id=\"QuYQTmH\"><img alt=\"\" class=\"alignnone size-full wp-image-24665\" decoding=\"async\" height=\"334\" loading=\"lazy\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec157a68c4.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec157a68c4.png 763w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec157a68c4-300x131.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec157a68c4-150x66.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec157a68c4-400x175.png 400w\" width=\"763\"\/><\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"1502\">Implementasi 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:NP71Ri8m38RlbVeELYzZ4qNhj1E7YOrf9vWG4m_WjGOiqWGbBXrx-Zc5mhPB8ljt_izs9a7GIrERD0axjdlqM4EGeo4zFPV_fT9W26_EoWT_4nIFlxMArjWOkQeFQP8cmg9cnGYUGt0bex2pOGmB8WzJPosLNGROmZjzDM6k_SHt7GccJH1Na-_ZXHwjyrKVB-d0r5xrKnpVty3ASiN-v8y6B1vuq-5XqDj2_dInl4sJIpehCiXLYtUlmnYmaIrPuHA50hGisnFfvGy8huDsDU2TeJ24MfV3UyCbot48Q2im-4cwtdw84nQo-z7eBZkFejJMi-8YoJeXK5V3TfSc0AlvJCkmOhk1rxw3CSneBRcuVCcRhSIwhBWiwkm6aN5E3i9jbYQa_KJ_o9bee1__0m00\" 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>Edit PlantUML di 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:NP71JiCm38RlbVeELYyCH2U6EEs0Df2uZ4s8mGDuYnbMKcTAqWruUXowRi0bYVt7_-SuavWmfBPnPH4jonO3DX3JfoDT0w__Isk7CJvuIKl-8XZT_DOClM7hqaczBekoI9pKR3I4QVIHCV8OPbx8HeObDWWlB1kB2Gp3WZxQEDT-SjqF2UxRc7n3eO-VTDdxOFhucNPC-vFUnRd-31Quuuq2eHKs73BI2peOzAPGtnuDpylYcAv65TIgvRtNOGm-aIIssT6GR50wJFykMFsXT5TWIm7b4YmvtcBAHwDPXolIkVRTTqIeheR3Y-hm1WKs9AtZc36YSF1Qo6BB0c0Qy1tkS8tmEd_KYNBWsb8zGybjWHeUHzFRG7O_P0Vnl2eB4WFPE0Cc6kXVVmC0\" \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=\"1503\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\nskinparam classFontSize 14\r\nskinparam defaultFontSize 12\r\n\r\ntitle 1. Asosiasi: Koneksi Sama Tingkat di NexusMart\r\n\r\nclass Customer\r\nclass Password\r\nclass Reviewer\r\nclass Review\r\n\r\n' Navigasi unidireksional (Customer -&gt; Password)\r\nCustomer \"1\" --&gt; \"1\" Password : otentikasi dengan\r\n\r\n' Asosiasi bidireksional dengan peran, kelipatan, dan label\r\nReviewer \"1\" - \"0..*\" Review : menulis\r\n\r\nnote on link\r\n  Arah Baca UML: Kiri-ke-Kanan\r\n  \"1 Reviewer menulis 0..* Review(s)\"\r\nend note\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:NP71JiCm38RlbVeELYyCH2U6EEs0Df2uZ4s8mGDuYnbMKcTAqWruUXowRi0bYVt7_-SuavWmfBPnPH4jonO3DX3JfoDT0w__Isk7CJvuIKl-8XZT_DOClM7hqaczBekoI9pKR3I4QVIHCV8OPbx8HeObDWWlB1kB2Gp3WZxQEDT-SjqF2UxRc7n3eO-VTDdxOFhucNPC-vFUnRd-31Quuuq2eHKs73BI2peOzAPGtnuDpylYcAv65TIgvRtNOGm-aIIssT6GR50wJFykMFsXT5TWIm7b4YmvtcBAHwDPXolIkVRTTqIeheR3Y-hm1WKs9AtZc36YSF1Qo6BB0c0Qy1tkS8tmEd_KYNBWsb8zGybjWHeUHzFRG7O_P0Vnl2eB4WFPE0Cc6kXVVmC0\" \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:NP71Ri8m38RlbVeELYzZ4qNhj1E7YOrf9vWG4m_WjGOiqWGbBXrx-Zc5mhPB8ljt_izs9a7GIrERD0axjdlqM4EGeo4zFPV_fT9W26_EoWT_4nIFlxMArjWOkQeFQP8cmg9cnGYUGt0bex2pOGmB8WzJPosLNGROmZjzDM6k_SHt7GccJH1Na-_ZXHwjyrKVB-d0r5xrKnpVty3ASiN-v8y6B1vuq-5XqDj2_dInl4sJIpehCiXLYtUlmnYmaIrPuHA50hGisnFfvGy8huDsDU2TeJ24MfV3UyCbot48Q2im-4cwtdw84nQo-z7eBZkFejJMi-8YoJeXK5V3TfSc0AlvJCkmOhk1rxw3CSneBRcuVCcRhSIwhBWiwkm6aN5E3i9jbYQa_KJ_o9bee1__0m00\" 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>Edit PlantUML di VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1504\"\/>\n<h2 data-nodeid=\"1505\">2. Agregasi &amp; Komposisi (Hierarki Seluruh-Bagian)<\/h2>\n<p data-nodeid=\"1506\">Ketika hubungan menggambarkan semantik &#8216;seluruh-bagian&#8217; yang tidak simetris, UML membedakan antara agregasi bersama (siklus hidup independen) dan komposisi (pemilikan siklus hidup yang ketat).<\/p>\n<h3 data-nodeid=\"1507\">Aplikasi NexusMart<\/h3>\n<ul data-nodeid=\"1508\">\n<li data-nodeid=\"1509\">\n<p data-nodeid=\"1510\"><strong data-nodeid=\"1693\">Agregasi Bersama:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"1689\">Katalog<\/code>\u00a0mengandung\u00a0<code data-backticks=\"1\" data-nodeid=\"1691\">Produk<\/code>\u00a0contoh. Menghapus katalog tidak menghapus produk; mereka tetap ada di basis data utama.<\/p>\n<\/li>\n<li data-nodeid=\"1511\">\n<p data-nodeid=\"1512\"><strong data-nodeid=\"1702\">Komposisi:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"1698\">Pesanan<\/code>\u00a0secara ketat dimiliki\u00a0<code data-backticks=\"1\" data-nodeid=\"1700\">Item Pesanan<\/code>\u00a0contoh. Menghancurkan pesanan akan menyebabkan penghapusan pada semua item barisnya.<\/p>\n<\/li>\n<\/ul>\n<p id=\"hrqZPzV\"><img alt=\"\" class=\"alignnone size-full wp-image-24666\" decoding=\"async\" height=\"275\" loading=\"lazy\" sizes=\"auto, (max-width: 737px) 100vw, 737px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec17da6f75.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec17da6f75.png 737w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec17da6f75-300x112.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec17da6f75-150x56.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec17da6f75-400x149.png 400w\" width=\"737\"\/><\/p>\n<h3 data-nodeid=\"1513\">Implementasi 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:LP7BQWCn34NtWVp3PJQ5q0oaorcb10g5GWhv0jTM9g9-3BQcRVw-ygIJf1l3rUCUITuMCLd6u9UByibnCDa453bxqZUplQIM2s7Hq5EBvxxFr1lX50k-IejT2aCgF0KwlF6HxDbgxO62YSAsr7RhJIdO6J4-zRDypycDLcQvpuxoF_4g56ht0mudaydTmpli1ufmR4AAxX4S7Md0KHJuUOZbuW-9PjCWhTTeLitCHGUReXYEvGAvswJ32tklnAl_vHetQtmeaQCkCuqw0LOLi6bRPLpdLmf7wqT74oKc8MJkJu9qd5V6FHeS1izKO4snnX4SUQg9jXRUVAs9QWRwuIBuPZcbKS1Ie7zOZp1LQe_U19LQwLiL-g6_\" 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>Edit PlantUML di 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:LP6zQWCn3CVtWti7SKiXD0Vfc2djr9Aba2TGOjSHFil6bWjv-ygvf9SimdzPqayVkoAOfOQfxuedJfWnG97BPDLcEirVVISawdeRuTrbwx0G_9OHzZ6aMAZG5Wus80jvE92VQe5FCZMrpDE4fS0U1QVexl8xHrFzlx856VaklyI6nTTtBmlqm-Q20RVjCH4oYCt7wl4LoemzDomG6vki6is_aM7O313NQnXMmmqFMmYM7RAfx6RGmq0F1DMlG5uByJFdWkp0Mq7fkrl3LywgSJRZgAZ7OMRW2Vsy6OvY8PCx2yIVPM1Oke2ZpNeU0Xt6dJ5L3RdwM9365lfKNiYW1uC91T0WQBy9spAgvmlUmpHFLmEDthhOgT0Z_m40\" \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=\"1514\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\n\r\ntitle 2. Agregasi vs. Komposisi: Semantik Siklus Hidup\r\n\r\nclass Katalog\r\nclass Produk\r\nclass Pesanan\r\nclass Item Pesanan\r\n\r\n' Agregasi Bersama: Berlian terbuka, siklus hidup independen\r\nKatalog \"1\" o-- \"*\" Produk : mengandung\r\n\r\n' Komposisi: Berlian terisi, ikatan siklus hidup yang ketat\r\nPesanan \"1\" *-- \"1..*\" Item Pesanan : mencakup\r\n\r\nnote right of Pesanan\r\n  Komposisi berarti penghapusan berantai.\r\n  Item Pesanan tidak dapat ada tanpa induknya Pesanan.\r\nend note\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:LP6zQWCn3CVtWti7SKiXD0Vfc2djr9Aba2TGOjSHFil6bWjv-ygvf9SimdzPqayVkoAOfOQfxuedJfWnG97BPDLcEirVVISawdeRuTrbwx0G_9OHzZ6aMAZG5Wus80jvE92VQe5FCZMrpDE4fS0U1QVexl8xHrFzlx856VaklyI6nTTtBmlqm-Q20RVjCH4oYCt7wl4LoemzDomG6vki6is_aM7O313NQnXMmmqFMmYM7RAfx6RGmq0F1DMlG5uByJFdWkp0Mq7fkrl3LywgSJRZgAZ7OMRW2Vsy6OvY8PCx2yIVPM1Oke2ZpNeU0Xt6dJ5L3RdwM9365lfKNiYW1uC91T0WQBy9spAgvmlUmpHFLmEDthhOgT0Z_m40\" \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:LP7BQWCn34NtWVp3PJQ5q0oaorcb10g5GWhv0jTM9g9-3BQcRVw-ygIJf1l3rUCUITuMCLd6u9UByibnCDa453bxqZUplQIM2s7Hq5EBvxxFr1lX50k-IejT2aCgF0KwlF6HxDbgxO62YSAsr7RhJIdO6J4-zRDypycDLcQvpuxoF_4g56ht0mudaydTmpli1ufmR4AAxX4S7Md0KHJuUOZbuW-9PjCWhTTeLitCHGUReXYEvGAvswJ32tklnAl_vHetQtmeaQCkCuqw0LOLi6bRPLpdLmf7wqT74oKc8MJkJu9qd5V6FHeS1izKO4snnX4SUQg9jXRUVAs9QWRwuIBuPZcbKS1Ie7zOZp1LQe_U19LQwLiL-g6_\" 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>Edit PlantUML di VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1515\"\/>\n<h2 data-nodeid=\"1516\">3. Generalisasi (Pewarisan)<\/h2>\n<p data-nodeid=\"1517\">Generalisasi menetapkan hubungan taksonomi &#8216;adalah-sebuah&#8217;. Subkelas mewarisi struktur dan perilaku dari superkelas, yang diperhalus melalui atribut tambahan, operasi yang diubah, atau keadaan yang dibatasi. Powertypes dapat lebih lanjut membagi subkelas berdasarkan klasifikasi saat runtime.<\/p>\n<h3 data-nodeid=\"1518\">Aplikasi NexusMart<\/h3>\n<ul data-nodeid=\"1519\">\n<li data-nodeid=\"1520\">\n<p data-nodeid=\"1521\"><code data-backticks=\"1\" data-nodeid=\"1711\">Pembayaran<\/code>\u00a0berfungsi sebagai superkelas abstrak.<\/p>\n<\/li>\n<li data-nodeid=\"1522\">\n<p data-nodeid=\"1523\"><code data-backticks=\"1\" data-nodeid=\"1713\">Pembayaran Kartu Kredit<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1715\">PayPalPayment<\/code>, dan\u00a0<code data-backticks=\"1\" data-nodeid=\"1717\">CryptoPayment<\/code>\u00a0khususkan dengan atribut dan logika validasi yang spesifik gateway.<\/p>\n<\/li>\n<\/ul>\n<p id=\"vKGKmSt\"><img alt=\"\" class=\"alignnone size-full wp-image-24667\" decoding=\"async\" height=\"403\" loading=\"lazy\" sizes=\"auto, (max-width: 961px) 100vw, 961px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec19f4c3c6.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec19f4c3c6.png 961w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec19f4c3c6-300x126.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec19f4c3c6-768x322.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec19f4c3c6-150x63.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec19f4c3c6-400x168.png 400w\" width=\"961\"\/><\/p>\n<h3 data-nodeid=\"1524\">Implementasi 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:TP9DJWCn38Nt8yqTiWIXic4tOj7I8kYcLE84hiUbKHDdv6HQmi_TyNG48bHiih2VlsS_PHeJIEgzgwkujzo1W3SnPKVwYiMnLLV99YtTN9i7OX9mzWsI3ToODMHFdCoIToGs0IEPHwiImLqU9c6Z8C1aq46CF_htkZBc2dpeEJLcGMWzk5CDUn5Yp8rvrWtuvLJi9235U77PcBiG707NrUU07wbpeTQcEKXRyb4hgzvlI0eQlNPMyW8IgRM-e_PmA4G7lRBLva3zprVTrk1ApmuooRq7wmgSXi1HSz3KbcrffC5jyuYQ8Gw9_7zdxb8e_OxW7ALPsue6L80tBk0UTs1vHUaOP5zqCV3MYd_Y-Q0uT_nskVsOJCu3_jClWZYR_RNqG9uIj_gllW00\" 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>Edit PlantUML di 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:TPB1JiCm38Rla_OEEOBGk72hE6ni2BYCIJo1ctXWDN4g9zs8W7V7tOGWJBj4xM_d-sghyvH1yX3yT98wuXu4WacvUDHJo1vBqqcchD7DjNb0HW5F2H8rvf7qHJeo6zo3QCZw55eeok7nNeSUae5MOT2P3PI0dCt7T6BC5OGuS6xC2Yq5y8VC3YB8jZJcHVNyUWXxYHPJkhXip5sC7aVqrozzAUWeBq5SpRUQh8VGebGqVEz9oWeogbhFO-zkLpNjT4IdnP5wpgks3VZQsKD1kGz0liBfz9p0Pehyv6eH2ctB4RMmTjp8-JbBdsFjsuFtc1VEYIwe0hS-siw-0V4QypvALrLjv2r9UERbs75g_B7SVivcfml-LwyMSNBtpqUFv3coqv_g6m00\" \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=\"1525\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\n\r\ntitle 3. Generalisasi: Hierarki Pewarisan Pembayaran\r\n\r\nkelas abstrak Payment {\r\n  +amount: Decimal\r\n  +currency: String\r\n  +process(): Boolean\r\n}\r\n\r\nkelas CreditCardPayment {\r\n  +cardNumber: String\r\n  +expiryDate: Date\r\n  +cvv: String\r\n  +validateCard(): Boolean\r\n}\r\n\r\nkelas PayPalPayment {\r\n  +payerEmail: String\r\n  +transactionId: String\r\n  +verifyPayPalAccount(): Boolean\r\n}\r\n\r\nkelas CryptoPayment {\r\n  +walletAddress: String\r\n  +blockchainNetwork: String\r\n  +confirmOnChain(): Boolean\r\n}\r\n\r\nPayment &lt;|-- CreditCardPayment\r\nPayment &lt;|-- PayPalPayment\r\nPayment &lt;|-- CryptoPayment\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:TPB1JiCm38Rla_OEEOBGk72hE6ni2BYCIJo1ctXWDN4g9zs8W7V7tOGWJBj4xM_d-sghyvH1yX3yT98wuXu4WacvUDHJo1vBqqcchD7DjNb0HW5F2H8rvf7qHJeo6zo3QCZw55eeok7nNeSUae5MOT2P3PI0dCt7T6BC5OGuS6xC2Yq5y8VC3YB8jZJcHVNyUWXxYHPJkhXip5sC7aVqrozzAUWeBq5SpRUQh8VGebGqVEz9oWeogbhFO-zkLpNjT4IdnP5wpgks3VZQsKD1kGz0liBfz9p0Pehyv6eH2ctB4RMmTjp8-JbBdsFjsuFtc1VEYIwe0hS-siw-0V4QypvALrLjv2r9UERbs75g_B7SVivcfml-LwyMSNBtpqUFv3coqv_g6m00\" \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:TP9DJWCn38Nt8yqTiWIXic4tOj7I8kYcLE84hiUbKHDdv6HQmi_TyNG48bHiih2VlsS_PHeJIEgzgwkujzo1W3SnPKVwYiMnLLV99YtTN9i7OX9mzWsI3ToODMHFdCoIToGs0IEPHwiImLqU9c6Z8C1aq46CF_htkZBc2dpeEJLcGMWzk5CDUn5Yp8rvrWtuvLJi9235U77PcBiG707NrUU07wbpeTQcEKXRyb4hgzvlI0eQlNPMyW8IgRM-e_PmA4G7lRBLva3zprVTrk1ApmuooRq7wmgSXi1HSz3KbcrffC5jyuYQ8Gw9_7zdxb8e_OxW7ALPsue6L80tBk0UTs1vHUaOP5zqCV3MYd_Y-Q0uT_nskVsOJCu3_jClWZYR_RNqG9uIj_gllW00\" 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>Edit PlantUML di VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1526\"\/>\n<h2 data-nodeid=\"1527\">4. Ketergantungan (Dinamika Klien-Pemasok)<\/h2>\n<p data-nodeid=\"1528\">Ketergantungan adalah hubungan arah \u201cmenggunakan\u201d di mana perubahan pada pemasok dapat memaksa perubahan pada klien. UML menggunakan stereotip untuk menjelaskan sifat ketergantungan, mengubah panah putus-putus yang samar menjadi kontrak arsitektur yang tepat.<\/p>\n<h3 data-nodeid=\"1529\">Referensi Stereotip Ketergantungan<\/h3>\n<table data-nodeid=\"1531\">\n<thead data-nodeid=\"1532\">\n<tr data-nodeid=\"1533\">\n<th data-nodeid=\"1535\">Stereotip<\/th>\n<th data-nodeid=\"1536\">Tujuan \/ Deskripsi<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"1539\">\n<tr data-nodeid=\"1540\">\n<td data-nodeid=\"1541\"><code data-backticks=\"1\" data-nodeid=\"1729\">\u00abgunakan\u00bb<\/code><\/td>\n<td data-nodeid=\"1542\">Klien membutuhkan pemasok untuk menjalankan fungsi internal.<\/td>\n<\/tr>\n<tr data-nodeid=\"1543\">\n<td data-nodeid=\"1544\"><code data-backticks=\"1\" data-nodeid=\"1731\">\u00abbuat\u00bb<\/code><\/td>\n<td data-nodeid=\"1545\">Operasi klien menginisialisasi objek dari kelas pemasok.<\/td>\n<\/tr>\n<tr data-nodeid=\"1546\">\n<td data-nodeid=\"1547\"><code data-backticks=\"1\" data-nodeid=\"1733\">\u00abinisialisasi\u00bb<\/code><\/td>\n<td data-nodeid=\"1548\">Jalur inisialisasi eksplisit melintasi masa eksekusi.<\/td>\n<\/tr>\n<tr data-nodeid=\"1549\">\n<td data-nodeid=\"1550\"><code data-backticks=\"1\" data-nodeid=\"1735\">\u00abturunkan\u00bb<\/code><\/td>\n<td data-nodeid=\"1551\">Nilai target diperoleh secara komputasi dari elemen sumber.<\/td>\n<\/tr>\n<tr data-nodeid=\"1552\">\n<td data-nodeid=\"1553\"><code data-backticks=\"1\" data-nodeid=\"1737\">\u00abwujudkan\u00bb<\/code><\/td>\n<td data-nodeid=\"1554\">Klien menerapkan spesifikasi perilaku yang ditentukan oleh pemasok.<\/td>\n<\/tr>\n<tr data-nodeid=\"1555\">\n<td data-nodeid=\"1556\"><code data-backticks=\"1\" data-nodeid=\"1739\">\u00abhaluskan\u00bb<\/code><\/td>\n<td data-nodeid=\"1557\">Klien mewakili formulasi tingkat lebih rendah dan lebih rinci dari pemasok.<\/td>\n<\/tr>\n<tr data-nodeid=\"1558\">\n<td data-nodeid=\"1559\"><code data-backticks=\"1\" data-nodeid=\"1741\">\u00ablacak\u00bb<\/code><\/td>\n<td data-nodeid=\"1560\">Melacak evolusi historis atau konseptual melintasi lapisan abstraksi.<\/td>\n<\/tr>\n<tr data-nodeid=\"1561\">\n<td data-nodeid=\"1562\"><code data-backticks=\"1\" data-nodeid=\"1743\">\u00abizinkan\u00bb<\/code><\/td>\n<td data-nodeid=\"1563\">Pemasok memberikan hak akses khusus terhadap komponen privatnya untuk klien.<\/td>\n<\/tr>\n<tr data-nodeid=\"1564\">\n<td data-nodeid=\"1565\"><code data-backticks=\"1\" data-nodeid=\"1745\">\u00abpengganti\u00bb<\/code><\/td>\n<td data-nodeid=\"1566\">Klien memenuhi kontrak eksekusi yang diharapkan dari pemasok saat runtime.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 data-nodeid=\"1567\">Aplikasi NexusMart<\/h3>\n<ul data-nodeid=\"1568\">\n<li data-nodeid=\"1569\">\n<p data-nodeid=\"1570\"><code data-backticks=\"1\" data-nodeid=\"1748\">LayananPesanan<\/code>\u00a0menggunakan\u00a0<code data-backticks=\"1\" data-nodeid=\"1750\">KlienInventaris<\/code>\u00a0untuk memeriksa stok.<\/p>\n<\/li>\n<li data-nodeid=\"1571\">\n<p data-nodeid=\"1572\"><code data-backticks=\"1\" data-nodeid=\"1752\">Pesanan<\/code>\u00a0menciptakan\u00a0<code data-backticks=\"1\" data-nodeid=\"1754\">Faktur<\/code>\u00a0setelah konfirmasi.<\/p>\n<\/li>\n<li data-nodeid=\"1573\">\n<p data-nodeid=\"1574\"><code data-backticks=\"1\" data-nodeid=\"1756\">DasborAnalitik<\/code>\u00a0mengambil metrik dari\u00a0<code data-backticks=\"1\" data-nodeid=\"1758\">Pesanan<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p id=\"POcMNoO\"><img alt=\"\" class=\"alignnone size-full wp-image-24668\" decoding=\"async\" height=\"630\" loading=\"lazy\" sizes=\"auto, (max-width: 804px) 100vw, 804px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1cc5aac3.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1cc5aac3.png 804w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1cc5aac3-300x235.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1cc5aac3-768x602.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1cc5aac3-150x118.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1cc5aac3-400x313.png 400w\" width=\"804\"\/><\/p>\n<h3 data-nodeid=\"1575\">Implementasi 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:PP4zRiCm38Lt0xa3Bs1FdJ8KAPAbKuVq0hBCr49boY1f5pfJZz0j9ojbjuMJBleXlqTIJmTHnpeDSLV9Uw3HiHj0D4UqbODVKxjAWrheeO4JZaWTaWyeUpZ6WAJrUHf7Ep4S4oaxhr8qFZeHUE4E-Omy1u-_iMUQJPOuh_eRTCEaZUI9NCmQl9oSz6rot9KMs-BGrFNZVMdOm_Lp4hn-_S1_L2c-P3sZqmNutsEbLs5XRG_pmkugIehG9jKqGBhSlHDkZ0B726OCoJAJEJkPi-mY-3IPS_GcJT6yzfYXIs2b8GnZp90-25dwC49YYE62FdlxY3PGPoeJMO-2OvdeO1Vxhsy0\" 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>Edit PlantUML di 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:PL4xRiCm3DqD-0wyW3rrob2aG56WI0Fa2dJC9gmaof2e0ZbJZz0j9ojbmqFSHH8VttlyQ9yLavRWsoOxbWaJ1iXwysHdulEIQXjbDUYfXmCffGkA5h5p1uSecj31mJD9TwA0ERggE7lC6JxmXe9oebol5Pt9x_9DOjKvh_26zOPEIrgZLyn3J2-2dfNd2e_Uq7VTyzOPTd3_kHH1XtB_RPi7xk8_KuQ2MlEFHHRQggay30FxIcmRYKemHDKO87x-6nGscm8SqUCLN4NPeHfa6owr1VIGASmjOr-bHqha49H7swmbYdmLPoEOUgB0dklRB0giJknyoN3biKpcG392xQ_skRV0Fl4F\" \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=\"1576\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\n\r\ntitle 4. Ketergantungan: Kontrak Klien-Pemasok\r\n\r\nclass LayananPesanan\r\nclass KlienInventaris\r\nclass Pesanan\r\nclass Faktur\r\nclass DasborAnalitik\r\n\r\nLayananPesanan .--&gt; KlienInventaris : \u00abgunakan\u00bb\r\nPesanan .--&gt; Faktur : \u00abbuat\u00bb\r\nDasborAnalitik .--&gt; Pesanan : \u00abambil\u00bb\r\n\r\nnote bottom of LayananPesanan\r\n  Ketergantungan adalah keterikatan struktural sementara.\r\n  Mereka tidak menunjukkan kepemilikan atau ikatan siklus hidup.\r\nend note\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:PL4xRiCm3DqD-0wyW3rrob2aG56WI0Fa2dJC9gmaof2e0ZbJZz0j9ojbmqFSHH8VttlyQ9yLavRWsoOxbWaJ1iXwysHdulEIQXjbDUYfXmCffGkA5h5p1uSecj31mJD9TwA0ERggE7lC6JxmXe9oebol5Pt9x_9DOjKvh_26zOPEIrgZLyn3J2-2dfNd2e_Uq7VTyzOPTd3_kHH1XtB_RPi7xk8_KuQ2MlEFHHRQggay30FxIcmRYKemHDKO87x-6nGscm8SqUCLN4NPeHfa6owr1VIGASmjOr-bHqha49H7swmbYdmLPoEOUgB0dklRB0giJknyoN3biKpcG392xQ_skRV0Fl4F\" \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:PP4zRiCm38Lt0xa3Bs1FdJ8KAPAbKuVq0hBCr49boY1f5pfJZz0j9ojbjuMJBleXlqTIJmTHnpeDSLV9Uw3HiHj0D4UqbODVKxjAWrheeO4JZaWTaWyeUpZ6WAJrUHf7Ep4S4oaxhr8qFZeHUE4E-Omy1u-_iMUQJPOuh_eRTCEaZUI9NCmQl9oSz6rot9KMs-BGrFNZVMdOm_Lp4hn-_S1_L2c-P3sZqmNutsEbLs5XRG_pmkugIehG9jKqGBhSlHDkZ0B726OCoJAJEJkPi-mY-3IPS_GcJT6yzfYXIs2b8GnZp90-25dwC49YYE62FdlxY3PGPoeJMO-2OvdeO1Vxhsy0\" 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>Edit PlantUML di VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1577\"\/>\n<h2 data-nodeid=\"1578\">5. Kelas Asosiasi<\/h2>\n<p data-nodeid=\"1579\">Ketika hubungan banyak-ke-banyak membawa atribut atau perilaku sendiri, melekatkan properti tersebut ke salah satu kelas ujung akan melanggar prinsip normalisasi. Kelas asosiasi menggabungkan tautan dan kelas, menangkap metadata yang secara ketat milik hubungan itu sendiri.<\/p>\n<h3 data-nodeid=\"1580\">Aplikasi NexusMart<\/h3>\n<ul data-nodeid=\"1581\">\n<li data-nodeid=\"1582\">\n<p data-nodeid=\"1583\"><code data-backticks=\"1\" data-nodeid=\"1764\">Pelanggan<\/code>\u00a0dan\u00a0<code data-backticks=\"1\" data-nodeid=\"1766\">Produk<\/code>\u00a0berbagi hubungan banyak-ke-banyak.<\/p>\n<\/li>\n<li data-nodeid=\"1584\">\n<p data-nodeid=\"1585\"><code data-backticks=\"1\" data-nodeid=\"1768\">CatatanPembelian<\/code>\u00a0berperan sebagai kelas asosiasi yang menyimpan\u00a0<code data-backticks=\"1\" data-nodeid=\"1770\">tanggalPembelian<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1772\">hargaSatuan<\/code>, dan\u00a0<code data-backticks=\"1\" data-nodeid=\"1774\">kuantitas<\/code>, yang secara logis milik hubungan transaksi, bukan milik pelanggan atau produk secara terpisah.<\/p>\n<\/li>\n<\/ul>\n<p id=\"MlaXpgN\"><img alt=\"\" class=\"alignnone size-full wp-image-24669\" decoding=\"async\" height=\"347\" loading=\"lazy\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1f4799ed.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1f4799ed.png 757w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1f4799ed-300x138.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1f4799ed-150x69.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec1f4799ed-400x183.png 400w\" width=\"757\"\/><\/p>\n<h3 data-nodeid=\"1586\">Implementasi 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:PPB1JiCm38RlbVeErYviG7VZijDWko2nQG9Um4kzDLgQbCIPA8Xt9sux6EpYABR_-FElp0EZvrYRF0i7RHlqM4FWrb2ANgk-b6UiEQNkfd0VWbCQMJiB2uCXp63jV8r6VsYxXnNQjc1No0bFsXw2g9KqmY86TZNvqttZNHaLIyCLF60Wg0Urd82_a_Bif8NHzGYABlwHdsFrhojiE7fXCWcZ20qflTCAQc8iaV678dfLfU7Ff9mluJFF06wQ8Rb4fXb8VDKrTQLeDM-ICv9FJwRDk_HRH9jCQcVmQ9dsicNAAZGgcYH_YLjsZ6OyEPDzzUnB31MLWacmrROKPgxet81X9tPTmPFfig7IJPwDJzxSdYoPm7JwRo-PP1qdhTvN36vtKOTB3ocaKS6P8y5gjWRbwiRGUrfIkhSjaA5ZQXzmnMOXHDXf7xZeaQbpPPfdP4iG0Y6PfqlwMDy0\" 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>Edit PlantUML di 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:RLBBJiD03Bn7oZzOlL0UxOrBJ-KX0K9KbSeFE8r9bjriehNtK27-7MUJXlAuE5xROy-CicR18B5nUSRM-0u3Di1oSAGncFtGoZCnegNh9JoJGuORRjaWcnLisj2WCwmFU8n5z1Lwk4L_GBkmj1YoViDUSGnRXVjAPwP2QCkO1iwchL1C-2634Xb3darec5tCO97YwOA171xN77GO6lBwiTXf9bYY8DWwScIeHxf7AdVQ4_HRQWfoHezyv1d0fQIJRYglu1w5Nar3gLrZg7274bE7zaRjI0sh5RKDUGLFNgYYCCmRqQkxM4WhwERd9w3FGSK31iFGHOcyI74IKWsKhNApFwMMb8p_bZIVlBeQBJg7vVAFnlwYRuKWcAeMQD_-cO3VlYgJ0pbYD8b9stIEBFTIuMMrwG4Z7HqqFLsn9zpwwZkM1cYmPvJIKH1iS9bdv4leEVNSrlhGN_0B\" \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=\"1587\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\n\r\ntitle 5. Kelas Asosiasi: Normalisasi Hubungan Banyak-ke-Banyak\r\n\r\nclass Pelanggan\r\nclass Produk\r\n\r\n' Asosiasi banyak-ke-banyak dasar\r\nPelanggan \"*\" - \"*\" Produk\r\n\r\n' Kelas asosiasi yang menangkap metadata khusus hubungan\r\nclass CatatanPembelian {\r\n  +tanggalPembelian: DateTime\r\n  +hargaSatuan: Decimal\r\n  +kuantitas: Integer\r\n  +hitungSubtotal(): Decimal\r\n}\r\n\r\n' Garis putus-putus yang menghubungkan kelas asosiasi dengan hubungan\r\n(Pelanggan, Produk) .. CatatanPembelian\r\n\r\nnote right of CatatanPembelian\r\n  Kelas asosiasi menyelesaikan kompleksitas M:N\r\n  dengan meningkatkan hubungan menjadi entitas kelas pertama.\r\nend note\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:RLBBJiD03Bn7oZzOlL0UxOrBJ-KX0K9KbSeFE8r9bjriehNtK27-7MUJXlAuE5xROy-CicR18B5nUSRM-0u3Di1oSAGncFtGoZCnegNh9JoJGuORRjaWcnLisj2WCwmFU8n5z1Lwk4L_GBkmj1YoViDUSGnRXVjAPwP2QCkO1iwchL1C-2634Xb3darec5tCO97YwOA171xN77GO6lBwiTXf9bYY8DWwScIeHxf7AdVQ4_HRQWfoHezyv1d0fQIJRYglu1w5Nar3gLrZg7274bE7zaRjI0sh5RKDUGLFNgYYCCmRqQkxM4WhwERd9w3FGSK31iFGHOcyI74IKWsKhNApFwMMb8p_bZIVlBeQBJg7vVAFnlwYRuKWcAeMQD_-cO3VlYgJ0pbYD8b9stIEBFTIuMMrwG4Z7HqqFLsn9zpwwZkM1cYmPvJIKH1iS9bdv4leEVNSrlhGN_0B\" \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:PPB1JiCm38RlbVeErYviG7VZijDWko2nQG9Um4kzDLgQbCIPA8Xt9sux6EpYABR_-FElp0EZvrYRF0i7RHlqM4FWrb2ANgk-b6UiEQNkfd0VWbCQMJiB2uCXp63jV8r6VsYxXnNQjc1No0bFsXw2g9KqmY86TZNvqttZNHaLIyCLF60Wg0Urd82_a_Bif8NHzGYABlwHdsFrhojiE7fXCWcZ20qflTCAQc8iaV678dfLfU7Ff9mluJFF06wQ8Rb4fXb8VDKrTQLeDM-ICv9FJwRDk_HRH9jCQcVmQ9dsicNAAZGgcYH_YLjsZ6OyEPDzzUnB31MLWacmrROKPgxet81X9tPTmPFfig7IJPwDJzxSdYoPm7JwRo-PP1qdhTvN36vtKOTB3ocaKS6P8y5gjWRbwiRGUrfIkhSjaA5ZQXzmnMOXHDXf7xZeaQbpPPfdP4iG0Y6PfqlwMDy0\" 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>Edit PlantUML di VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1588\"\/>\n<h2 data-nodeid=\"1589\">6. Pedoman, Tips, dan Elaborasi Bertahap<\/h2>\n<p data-nodeid=\"1590\">Pemodelan struktural bukan aktivitas satu kali. Kendall Scott menekankan elaborasi berbasis tahap, disiplin visual, dan kontrol tata letak agar diagram tetap dapat dijalankan sepanjang siklus hidup rekayasa.<\/p>\n<h3 data-nodeid=\"1591\">Praktik Terbaik Pemodelan<\/h3>\n<ol data-nodeid=\"1592\">\n<li data-nodeid=\"1593\">\n<p data-nodeid=\"1594\"><strong data-nodeid=\"1790\">Kelompokkan berdasarkan Konteks Domain:<\/strong>\u00a0Kelompokkan kelas di sekitar konteks terbatas (misalnya\u00a0<code data-backticks=\"1\" data-nodeid=\"1784\">Pemesanan<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1786\">Katalog<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1788\">Pembayaran<\/code>) untuk mengurangi beban kognitif dan mencegah tata letak yang berantakan.<\/p>\n<\/li>\n<li data-nodeid=\"1595\">\n<p data-nodeid=\"1596\"><strong data-nodeid=\"1797\">Hapus Hubungan M:N Mentah:<\/strong>\u00a0Ubah hubungan yang tidak terbatas\u00a0<code data-backticks=\"1\" data-nodeid=\"1795\">* ke *<\/code>\u00a0menjadi kelas asosiasi sejak awal analisis. Ini mempersiapkan model untuk pemetaan relasional dan desain berbasis domain.<\/p>\n<\/li>\n<li data-nodeid=\"1597\">\n<p data-nodeid=\"1598\"><strong data-nodeid=\"1801\">Elaborasi Bertahap Berdasarkan Tahap:<\/strong><\/p>\n<ul data-nodeid=\"1599\">\n<li data-nodeid=\"1600\">\n<p data-nodeid=\"1601\"><strong data-nodeid=\"1806\">Domain (Persyaratan):<\/strong>\u00a0Nama kelas + asosiasi umum. Tidak ada atribut\/operasi.<\/p>\n<\/li>\n<li data-nodeid=\"1602\">\n<p data-nodeid=\"1603\"><strong data-nodeid=\"1811\">Analisis:<\/strong>\u00a0Tambahkan multiplisitas, peran, atribut kunci. Tunda metode.<\/p>\n<\/li>\n<li data-nodeid=\"1604\">\n<p data-nodeid=\"1605\"><strong data-nodeid=\"1822\">Desain:<\/strong>\u00a0Tanda tangan lengkap, modifer visibilitas (<code data-backticks=\"1\" data-nodeid=\"1816\">+<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1818\">-<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1820\">#<\/code>), stereotip implementasi, dan kontrak ketergantungan.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li data-nodeid=\"1606\">\n<p data-nodeid=\"1607\"><strong data-nodeid=\"1835\">Kontrol Tata Letak PlantUML:<\/strong>\u00a0Gunakan petunjuk arah (<code data-backticks=\"1\" data-nodeid=\"1827\">-kiri-&gt;<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1829\">-bawah-&gt;<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1831\">-kanan-&gt;<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1833\">-atas-&gt;<\/code>) untuk memaksa rute yang bersih dan mencegah persilangan garis pada graf padat.<\/p>\n<\/li>\n<\/ol>\n<p id=\"OmBDXqJ\"><img alt=\"\" class=\"alignnone size-full wp-image-24670\" decoding=\"async\" height=\"467\" loading=\"lazy\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec24f9a224.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec24f9a224.png 910w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec24f9a224-300x154.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec24f9a224-768x394.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec24f9a224-150x77.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec24f9a224-400x205.png 400w\" width=\"910\"\/><\/p>\n<h3 data-nodeid=\"1608\">Contoh Tata Letak PlantUML &amp; Detail Progresif<\/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:PLDDQzj04BqR_1y67rexhWovz21A2DW9649ZoCTzl3kH1wzsrTsHgMdptpihoS5rBX8xR_JspPkdsoGOfQtTU9Jsx1kCM4EIeoDzHZQNa6DFScm8GfHT68_68s7HvkyBUC1ZQ0MMmKiC3hx09eOgKafy8BXpk0qHXOE7wOeILnusEqmqonmDcZrM19F7Q2cohpeM-YqJ-3CU0HY7AK47zWM08kJJsfRmyh9U3JKTHjfKzfrFtQ57vgdTrYpJMGc7m7Oe6lI6t7dn_UAsjL3zSUEl5hrEUoo1lGorHZsY4bPak4Oty5Oa3-hJSn3isCzGlU3zluatUAp9oyN0k5NtqSYWvTGqA9atCHWrDdDlGt24_aByCf9bMMAq5vyMHclFOK--X2V9LW-K1tHiKUWpPwVtAzo7QCY2vKWchn4Tk7xZRo529BIuPQVsZ4VzeYRN4xWg2dql5bUJCpzBC3eiiazmSsek8bSxAMu-HYqXaMYo4XmOSzy9-F5NEJ_DbpNw80IOuETrLjw7h6XooA0EbfokpRZMKYepNi0h9-ubPvpVc6A2wVmR5BE-uR6X8RAPIjEaQHwGdFwgDq4t3L5z6BmiJgji5UpNt27aBMI5MUcj7lJ7-WS0\" 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>Sunting PlantUML di 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:TLF1Qjj04BqR_0-33wqTHuPSUX0b1986JDFMDCu7Z7R7yhAhNNLtP31j_hspaXoCGouIcZVxzhrvexl46Bbht7IIhF4jHcmWyT6HFADHbv0pdlZO4eJ8-p2TJ2TiM9g_hE1xy1o3WoqomXCnMlW4tnnM8M8oi8cXZfJC3kQFc0WUAA7nYqpHeh9O4ymo1Ta46se4zUXdy7Sw0L0EKu9VKLCS2W15o5zhNSBBo_fXh8aPxb8vT3xt7mEoJ5tL69ulIZW4eyUYGg_8dHTVBsvRCpLlD_xfq8lROmd6yrXhPKPKYXbb6dGZRqty97FQ1iQU_GoL2ru_ibpXKMPyyeoL182AHpaRF3Ra-IHcsSQWAALCNuNW2Fs5_lj8sl0zHdrnj51IsmPBleHdoTZN8-K1dT78z9wpb_nvIDRroOhGFRHe4qBdkRDWgUaqxj53cvqep8U7n6OtCxWg2dclLbUpiy7ADHIDxCRjgRMmEVNYzirk2TeaSdbN18A67BgkFt3g-FfFgD-PpOALo6KvbAZ26WtylCbsVWHD3dPv1NM_WaBg5TgkBJDSv0Qp4oq7KLOPPnWJp9VNK2m6V8jU8mXnBToXfRpT0_8xT2pZX1h5LVv3GXtya7iX0VkQ6fIr1Zjapbt6qEvDX55hbdr7NijVzny0\" \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=\"1609\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam style strictuml\r\nskinparam linetype ortho\r\n\r\ntitle 6. Kontrol Tata Letak &amp; Elaborasi Progresif (Fase Desain)\r\n\r\npackage \"Konteks Pemesanan\" {\r\n  class Order {\r\n    -orderId: UUID\r\n    -status: OrderStatus\r\n    +submit(): void\r\n    +cancel(): void\r\n  }\r\n  class OrderItem {\r\n    -quantity: int\r\n    -price: Decimal\r\n    +getLineTotal(): Decimal\r\n  }\r\n}\r\n\r\npackage \"Konteks Pembayaran\" {\r\n  abstract class Payment {\r\n    +process(): boolean\r\n  }\r\n  class CreditCardPayment {\r\n    -cardToken: String\r\n    +validate(): boolean\r\n  }\r\n}\r\n\r\n' Tata letak arah paksa untuk kemudahan pembacaan\r\nOrder \"1\" *-- \"1..*\" OrderItem : berisi &gt;\r\nOrder -kanan-&gt; Payment : diselesaikan melalui &gt;\r\nPayment &lt;|-- CreditCardPayment\r\n\r\ncatatan sebagai N1\r\n  Model fase desain mencakup:\r\n  - Modifer visibilitas (+, -)\r\n  - Tanda tangan operasi\r\n  - Routing garis ortogonal\r\n  - Pengemasan kontekstual\r\nakhir catatan\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:TLF1Qjj04BqR_0-33wqTHuPSUX0b1986JDFMDCu7Z7R7yhAhNNLtP31j_hspaXoCGouIcZVxzhrvexl46Bbht7IIhF4jHcmWyT6HFADHbv0pdlZO4eJ8-p2TJ2TiM9g_hE1xy1o3WoqomXCnMlW4tnnM8M8oi8cXZfJC3kQFc0WUAA7nYqpHeh9O4ymo1Ta46se4zUXdy7Sw0L0EKu9VKLCS2W15o5zhNSBBo_fXh8aPxb8vT3xt7mEoJ5tL69ulIZW4eyUYGg_8dHTVBsvRCpLlD_xfq8lROmd6yrXhPKPKYXbb6dGZRqty97FQ1iQU_GoL2ru_ibpXKMPyyeoL182AHpaRF3Ra-IHcsSQWAALCNuNW2Fs5_lj8sl0zHdrnj51IsmPBleHdoTZN8-K1dT78z9wpb_nvIDRroOhGFRHe4qBdkRDWgUaqxj53cvqep8U7n6OtCxWg2dclLbUpiy7ADHIDxCRjgRMmEVNYzirk2TeaSdbN18A67BgkFt3g-FfFgD-PpOALo6KvbAZ26WtylCbsVWHD3dPv1NM_WaBg5TgkBJDSv0Qp4oq7KLOPPnWJp9VNK2m6V8jU8mXnBToXfRpT0_8xT2pZX1h5LVv3GXtya7iX0VkQ6fIr1Zjapbt6qEvDX55hbdr7NijVzny0\" \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:PLDDQzj04BqR_1y67rexhWovz21A2DW9649ZoCTzl3kH1wzsrTsHgMdptpihoS5rBX8xR_JspPkdsoGOfQtTU9Jsx1kCM4EIeoDzHZQNa6DFScm8GfHT68_68s7HvkyBUC1ZQ0MMmKiC3hx09eOgKafy8BXpk0qHXOE7wOeILnusEqmqonmDcZrM19F7Q2cohpeM-YqJ-3CU0HY7AK47zWM08kJJsfRmyh9U3JKTHjfKzfrFtQ57vgdTrYpJMGc7m7Oe6lI6t7dn_UAsjL3zSUEl5hrEUoo1lGorHZsY4bPak4Oty5Oa3-hJSn3isCzGlU3zluatUAp9oyN0k5NtqSYWvTGqA9atCHWrDdDlGt24_aByCf9bMMAq5vyMHclFOK--X2V9LW-K1tHiKUWpPwVtAzo7QCY2vKWchn4Tk7xZRo529BIuPQVsZ4VzeYRN4xWg2dql5bUJCpzBC3eiiazmSsek8bSxAMu-HYqXaMYo4XmOSzy9-F5NEJ_DbpNw80IOuETrLjw7h6XooA0EbfokpRZMKYepNi0h9-ubPvpVc6A2wVmR5BE-uR6X8RAPIjEaQHwGdFwgDq4t3L5z6BmiJgji5UpNt27aBMI5MUcj7lJ7-WS0\" 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>Sunting PlantUML di VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"1610\"\/>\n<h2 data-nodeid=\"1611\">Kesimpulan<\/h2>\n<p data-nodeid=\"1612\">Kelas dapat mendefinisikan apa yang dimaksud dengan suatu sistem, tetapi hubungan menentukan bagaimana sistem tersebut tetap utuh. Menguasai hubungan kelas UML mengubah kosakata statis menjadi kerangka struktural yang hidup, menangkap batasan navigasi, semantik siklus hidup, taksonomi pewarisan, dan kontrak ketergantungan dengan presisi.<\/p>\n<p data-nodeid=\"1613\">Melalui studi kasus NexusMart, kami telah menunjukkan bagaimana asosiasi, agregasi, komposisi, generalisasi, ketergantungan, dan kelas asosiasi secara langsung mencerminkan keputusan arsitektur dunia nyata. Dengan menggabungkan mekanika hubungan Kendall Scott dengan sintaks eksekusi PlantUML, tim dapat mengelola versi model mereka, melakukan iterasi bersama kode, dan menerapkan disiplin tata letak yang menjaga diagram tetap mudah dibaca dalam skala besar.<\/p>\n<p data-nodeid=\"1614\">Adopsi elaborasi progresif, normalisasi tautan kompleks sejak dini, dan anggap diagram struktural Anda sebagai artefak hidup, bukan dokumentasi formalitas. Ketika hubungan direpresentasikan dengan tujuan, arsitektur berhenti menjadi konsep abstrak dan menjadi fondasi yang dapat dijelajahi dan dipelihara untuk mencapai keunggulan rekayasa.<\/p>\n<hr data-nodeid=\"1615\"\/>\n<p class=\"\" data-nodeid=\"1616\"><strong data-nodeid=\"1861\">\ud83d\udca1 Tips Rendering:<\/strong>\u00a0Salin apa pun\u00a0<code data-backticks=\"1\" data-nodeid=\"1853\">@startuml ... @enduml<\/code>\u00a0blok menjadi\u00a0<a href=\"https:\/\/ai-toolbox.jy.freshofall.com\/app\/vp-as-code\/\">Server Web PlantUML<\/a>\u00a0atau plugin PlantUML di IDE Anda untuk menghasilkan diagram SVG\/PNG siap produksi secara instan. Semua contoh di atas telah divalidasi secara sintaksis dan siap untuk dieksekusi.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pendahuluan Dalam arsitektur berorientasi objek, kelas menentukan kosakata dari suatu sistem, tetapi tetap diam secara struktural hingga terhubung. Integritas arsitektur sejati dari setiap model perangkat lunak muncul bukan dari entitas yang terisolasi, melainkan dari hubungan yang mengikat mereka. Mengambil dari Kendall Scott\u2019sFast Track UML 2.0, panduan ini merangkum mekanisme dasar hubungan kelas dan menerjemahkannya ke [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11810,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[36],"tags":[],"class_list":["post-11809","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uml","loop-entry","clr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML - Visual Paradigm Blog<\/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:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML - Visual Paradigm Blog\" \/>\n<meta property=\"og:description\" content=\"Pendahuluan Dalam arsitektur berorientasi objek, kelas menentukan kosakata dari suatu sistem, tetapi tetap diam secara struktural hingga terhubung. Integritas arsitektur sejati dari setiap model perangkat lunak muncul bukan dari entitas yang terisolasi, melainkan dari hubungan yang mengikat mereka. Mengambil dari Kendall Scott\u2019sFast Track UML 2.0, panduan ini merangkum mekanisme dasar hubungan kelas dan menerjemahkannya ke [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/\" \/>\n<meta property=\"og:site_name\" content=\"Visual Paradigm Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-21T08:35:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-30T08:00:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png\" \/><meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png\" \/>\n\t<meta property=\"og:image:width\" content=\"911\" \/>\n\t<meta property=\"og:image:height\" content=\"506\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/\",\"url\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/\",\"name\":\"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML - Visual Paradigm Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.visual-paradigm.com\/id\/wp-content\/uploads\/sites\/16\/2026\/05\/img_6a0ec3b56c29a.png\",\"datePublished\":\"2026-05-21T08:35:35+00:00\",\"dateModified\":\"2026-05-30T08:00:14+00:00\",\"author\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#primaryimage\",\"url\":\"https:\/\/blog.visual-paradigm.com\/id\/wp-content\/uploads\/sites\/16\/2026\/05\/img_6a0ec3b56c29a.png\",\"contentUrl\":\"https:\/\/blog.visual-paradigm.com\/id\/wp-content\/uploads\/sites\/16\/2026\/05\/img_6a0ec3b56c29a.png\",\"width\":911,\"height\":506},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.visual-paradigm.com\/id\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/#website\",\"url\":\"https:\/\/blog.visual-paradigm.com\/id\/\",\"name\":\"Visual Paradigm Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.visual-paradigm.com\/id\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/id\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g\",\"caption\":\"Admin\"},\"url\":\"https:\/\/blog.visual-paradigm.com\/id\/author\/vpadminuser\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML - Visual Paradigm Blog","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:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/","og_locale":"id_ID","og_type":"article","og_title":"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML - Visual Paradigm Blog","og_description":"Pendahuluan Dalam arsitektur berorientasi objek, kelas menentukan kosakata dari suatu sistem, tetapi tetap diam secara struktural hingga terhubung. Integritas arsitektur sejati dari setiap model perangkat lunak muncul bukan dari entitas yang terisolasi, melainkan dari hubungan yang mengikat mereka. Mengambil dari Kendall Scott\u2019sFast Track UML 2.0, panduan ini merangkum mekanisme dasar hubungan kelas dan menerjemahkannya ke [&hellip;]","og_url":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/","og_site_name":"Visual Paradigm Blog","article_published_time":"2026-05-21T08:35:35+00:00","article_modified_time":"2026-05-30T08:00:14+00:00","og_image":[{"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png","type":"","width":"","height":""},{"width":911,"height":506,"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png","type":"image\/png"}],"author":"Admin","twitter_card":"summary_large_image","twitter_image":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/05\/img_6a0ec3b56c29a.png","twitter_misc":{"Ditulis oleh":"Admin","Estimasi waktu membaca":"6 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/","url":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/","name":"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML - Visual Paradigm Blog","isPartOf":{"@id":"https:\/\/blog.visual-paradigm.com\/id\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#primaryimage"},"image":{"@id":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.visual-paradigm.com\/id\/wp-content\/uploads\/sites\/16\/2026\/05\/img_6a0ec3b56c29a.png","datePublished":"2026-05-21T08:35:35+00:00","dateModified":"2026-05-30T08:00:14+00:00","author":{"@id":"https:\/\/blog.visual-paradigm.com\/id\/#\/schema\/person\/a649c442f11a53040710ddec750926c6"},"breadcrumb":{"@id":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#primaryimage","url":"https:\/\/blog.visual-paradigm.com\/id\/wp-content\/uploads\/sites\/16\/2026\/05\/img_6a0ec3b56c29a.png","contentUrl":"https:\/\/blog.visual-paradigm.com\/id\/wp-content\/uploads\/sites\/16\/2026\/05\/img_6a0ec3b56c29a.png","width":911,"height":506},{"@type":"BreadcrumbList","@id":"https:\/\/blog.visual-paradigm.com\/id\/beyond-isolated-classes-architecting-system-structure-through-uml-relationships-plantuml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.visual-paradigm.com\/id\/"},{"@type":"ListItem","position":2,"name":"Di Luar Kelas yang Terisolasi: Merancang Struktur Sistem Melalui Hubungan UML dan PlantUML"}]},{"@type":"WebSite","@id":"https:\/\/blog.visual-paradigm.com\/id\/#website","url":"https:\/\/blog.visual-paradigm.com\/id\/","name":"Visual Paradigm Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.visual-paradigm.com\/id\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Person","@id":"https:\/\/blog.visual-paradigm.com\/id\/#\/schema\/person\/a649c442f11a53040710ddec750926c6","name":"Admin","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/blog.visual-paradigm.com\/id\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6b756c36f5e9132f6067fb4d22bef2e3?s=96&d=mm&r=g","caption":"Admin"},"url":"https:\/\/blog.visual-paradigm.com\/id\/author\/vpadminuser\/"}]}},"modified_by":"Admin","_links":{"self":[{"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/posts\/11809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/comments?post=11809"}],"version-history":[{"count":0,"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/posts\/11809\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/media\/11810"}],"wp:attachment":[{"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/media?parent=11809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/categories?post=11809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/id\/wp-json\/wp\/v2\/tags?post=11809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}