{"id":9480,"date":"2026-07-24T15:39:20","date_gmt":"2026-07-24T07:39:20","guid":{"rendered":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/"},"modified":"2026-07-26T17:31:02","modified_gmt":"2026-07-26T09:31:02","slug":"a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples","status":"publish","type":"post","link":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/","title":{"rendered":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML"},"content":{"rendered":"<h1 class=\"qwen-markdown-heading\" dir=\"ltr\"><span class=\"qwen-markdown-text\" data-spm-anchor-id=\"a2ty_o01.29997173.0.i225.290055fbrGIlFE\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/span><\/h1>\n<div class=\"qwen-markdown-paragraph\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u0425\u043e\u0442\u044f \u0435\u0434\u0438\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (UML) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u043c \u043e\u0442\u0440\u0430\u0441\u043b\u0435\u0432\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 <\/span><em class=\"qwen-markdown-em\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u0447\u0442\u043e<\/span><\/em><span class=\"qwen-markdown-text\">\u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043d\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445, \u0442\u043e\u043d\u043a\u0438\u0445 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 <\/span><em class=\"qwen-markdown-em\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u043a\u0430\u043a<\/span><\/em><span class=\"qwen-markdown-text\">\u043e\u043d\u0430 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f. \u041e\u043f\u043e\u0440\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b, \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0439, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c \u0442\u043e\u043b\u043a\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/span><\/div>\n<div class=\"qwen-markdown-space\"><\/div>\n<div class=\"qwen-markdown-paragraph\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u0412\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0438\u0433\u0440\u0443 <\/span><strong class=\"qwen-markdown-strong\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u044f\u0437\u044b\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (OCL)<\/span><\/strong><span class=\"qwen-markdown-text\">. \u0415\u0441\u043b\u0438 UML \u2014 \u044d\u0442\u043e \u00ab\u0441\u043a\u0435\u043b\u0435\u0442\u00bb \u0432\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u043e OCL \u2014 \u044d\u0442\u043e \u00ab\u043d\u0435\u0440\u0432\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u00bb \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0442\u043e\u0447\u043d\u044b\u0435, \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0435, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043a\u0435\u043b\u0435\u0442. \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u044f OCL \u0441 UML, \u043c\u043e\u0434\u0435\u043b\u0438\u0441\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0442\u044c \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439, \u043d\u0435 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u044f \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/span><\/div>\n<div class=\"qwen-markdown-space\"><\/div>\n<div class=\"qwen-markdown-paragraph\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u042d\u0442\u043e \u0432\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043c\u043e\u0449\u043d\u0443\u044e \u0441\u0438\u043d\u0435\u0440\u0433\u0438\u044e \u043c\u0435\u0436\u0434\u0443 UML \u0438 OCL. \u041c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 OCL, \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043a \u043a\u043b\u0430\u0441\u0441\u0430\u043c, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0435 <\/span><strong class=\"qwen-markdown-strong\" dir=\"ltr\"><span class=\"qwen-markdown-text\">PlantUML<\/span><\/strong><span class=\"qwen-markdown-text\">\u043f\u0440\u0438\u043c\u0435\u0440\u044b. \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438\u043b\u0438 \u043f\u0438\u0448\u0435\u0442\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u044b\u0445 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439, \u044d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u0430\u0441\u0442 \u0432\u0430\u043c \u0437\u043d\u0430\u043d\u0438\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043d\u0430\u0431\u0440\u043e\u0441\u043a\u043e\u0432 \u0432 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0435, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/span><\/div>\n<p id=\"VRRnBro\"><img alt=\"UML + OCL = Unambiguous Design by Visual Paradigm\n\" class=\"alignnone wp-image-25380 size-full\" decoding=\"async\" height=\"928\" loading=\"lazy\" sizes=\"auto, (max-width: 1664px) 100vw, 1664px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png 1664w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9-300x167.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9-1030x574.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9-768x428.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9-1536x857.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9-150x84.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9-400x223.png 400w\" width=\"1664\"\/><\/p>\n<p data-nodeid=\"44739\">\n<p>\u0425\u043e\u0442\u044f UML (\u0435\u0434\u0438\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u0435\u043d \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u00a0<strong data-nodeid=\"44816\">\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/strong>\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043e\u043d \u043d\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445\u00a0<strong data-nodeid=\"44817\">\u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438<\/strong>. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0438\u0433\u0440\u0443\u00a0<strong data-nodeid=\"44818\">\u044f\u0437\u044b\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (OCL)<\/strong>\u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0438\u0433\u0440\u0443. OCL \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u00ab\u043a\u043b\u0435\u0439\u043a\u0430\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b UML \u0441 \u0441\u0442\u0440\u043e\u0433\u043e\u0439, \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u043e\u0439.<\/p>\n<p data-nodeid=\"44740\">\u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043a\u0430\u043a OCL \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 UML, \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435\u00a0<strong data-nodeid=\"44824\">PlantUML<\/strong>\u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439.<\/p>\n<hr data-nodeid=\"44741\"\/>\n<h2 data-nodeid=\"44742\">1. \u0421\u0438\u043d\u0435\u0440\u0433\u0438\u044f: \u043a\u0430\u043a OCL \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 UML<\/h2>\n<p data-nodeid=\"44743\">\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 UML \u043a\u0430\u043a \u00ab\u0441\u043a\u0435\u043b\u0435\u0442\u00bb \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u043a\u043b\u0430\u0441\u0441\u044b, \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f), \u0430 OCL \u2014 \u043a\u0430\u043a \u00ab\u043d\u0435\u0440\u0432\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u00bb (\u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u043b\u043e\u0433\u0438\u043a\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0435, \u043a\u0430\u043a \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0441\u043a\u0435\u043b\u0435\u0442).<\/p>\n<h3 data-nodeid=\"44744\">\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 UML<\/h3>\n<p data-nodeid=\"44745\">\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c UML \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f OCL \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<strong data-nodeid=\"44841\">\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0439<\/strong>\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u043c\u043e\u0434\u0435\u043b\u0438 (\u043a\u043b\u0430\u0441\u0441\u044b, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f).<\/p>\n<ul data-nodeid=\"44746\">\n<li data-nodeid=\"44747\">\n<p data-nodeid=\"44748\"><strong data-nodeid=\"44848\">\u0421\u0442\u0435\u0440\u0435\u043e\u0442\u0438\u043f:<\/strong>\u00a0\u0427\u0430\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 OCL, \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u00a0<code data-backticks=\"1\" data-nodeid=\"44846\">{\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435}<\/code>\u00a0\u0441\u0442\u0435\u0440\u0435\u043e\u0442\u0438\u043f.<\/p>\n<\/li>\n<li data-nodeid=\"44749\">\n<p data-nodeid=\"44750\"><strong data-nodeid=\"44855\">\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442:<\/strong>\u00a0\u041a\u0430\u0436\u0434\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 OCL \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u00a0<code data-backticks=\"1\" data-nodeid=\"44853\">\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442<\/code>\u00a0\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 UML \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u043e.<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"44751\"\/>\n<h2 data-nodeid=\"44752\">2. \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f OCL \u0432 UML<\/h2>\n<h3 data-nodeid=\"44753\">A. \u0418\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 (<code data-backticks=\"1\" data-nodeid=\"44858\">inv<\/code>)<\/h3>\n<p data-nodeid=\"44754\">\u0418\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u2014 \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b\u00a0<strong data-nodeid=\"44865\">\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u0442\u044c \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u043c\u0438<\/strong>\u00a0\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p data-nodeid=\"44755\"><strong data-nodeid=\"44870\">\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435:<\/strong>\u00a0\u0415\u0441\u043b\u0438 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u0440\u0443\u0448\u0435\u043d, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p id=\"xgWMdFF\"><img alt=\"\" class=\"alignnone size-full wp-image-25373\" decoding=\"async\" height=\"868\" loading=\"lazy\" sizes=\"auto, (max-width: 1917px) 100vw, 1917px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d.png 1917w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d-300x136.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d-1030x466.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d-768x348.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d-1536x695.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d-150x68.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314b03109d-400x181.png 400w\" width=\"1917\"\/><\/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:PPBFQiCm3CRlWRo3O9SjeoE7xR30Hl-mGc5iq3w1ugYfgICNMqdBnjvzThAMhht9-Zv9FmcFlQ2JjZ5fuhUQT-Ym0MNG-uc8qsKhj52ML_gB83_ti1MQejhMphPSpQon3cxcy_dpx35DqgHl0LFaxKIfu13uJXE04U3m_6YRabm1gp24wq4gqI0hAc19Q8QKzfyTkShXMjuOIqDL0LDh3I57mptijMo2lB_59hOTQky6hQATzLekfP_85_71wNeZODVddB4qosOz_e8xT1fPV95bKGYN43h8fRzd7OLipmyA6PW2DvGKWXf5TmGj6mezxN6Vi1lGi5EirzmT3x1iJJX2J09uCkk7lpoyla0EuSvzyleqPoWd2Onkj4Iai37GGH5Ly9Jdnv4ddFVe-pVrUW3ePcSq-IkgKT-HkEg_HPgCGnZ-r2y0\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:XPFHQXD158Rl5_OT3dXJeocvq0i3IflIW20AxHDCTYVfaDcPCZlRYYAOA2gaLBmJV8arDheqINs5Cs_KCxCDnEJ2gyoSS_xl__ViPY-tpDWYat6K3uKwPOPba4YMv_lM6j4hB7-UQ7Kitd1ehSyeRNc79SE1qOLA3xJK1kvrkzqd1u_YA8u20ZfC3VUJX2Oil8qZW2Qm-lgoo7hSjE6OJDIWRlMOP2hXRJZYJDObaRywuoOrh6yF5Uj9dhQXexNaJFc11t0kx0crptTOvh6rzdxTI_cfpeNTRBtp-NnyC69mOa7trtDwQQE1tt69KopTUwomnAKRkmdWDSwfD78ZBDkDXf-arLZ-scu2GlWcu3VIpeD-10IiY723l_0AIt-T0Ixe_XjdRWpuqqt8vGBmXdx8rdqYhp7ESEuk2331nKEWoH41gplrr2Tob-upJIs9wJww3tIu9cdblWB-9SuCfmJ-4YP2aUHaMn6wz365Ebij_gYGj7nV1CYvxE_UrU7PKsW1oRnpQ6o_blMd_h5o-7-2xJMiAygmaCUjrYgeNhc-49cm_sJTZaGimbuHhyG_j9Y5vzBPssm-NZEOS9M6xpgEzkX8VufR\" \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=\"44756\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam classAttributeIconSize 0\r\nskinparam noteBackgroundColor #FFF9C4\r\n\r\nclass BankAccount {\r\n  - accountNumber: String\r\n  - balance: Real\r\n  - isOverdraftEnabled: Boolean\r\n  + withdraw(amount: Real)\r\n  + deposit(amount: Real)\r\n}\r\n\r\nnote right of BankAccount\r\n  **\u0418\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430:**\r\n  context BankAccount\r\n  \r\n  -- \u0411\u0430\u043b\u0430\u043d\u0441 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043b\u0438\u043c\u0438\u0442\u0430\r\n  inv balanceRule: \r\n    self.balance &gt;= 0 \u0438\u043b\u0438 self.isOverdraftEnabled\r\n  \r\n  -- \u041b\u0438\u043c\u0438\u0442 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043b\u0438\u043c\u0438\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c 500\r\n  inv overdraftLimit: \r\n    self.isOverdraftEnabled \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 self.balance &gt;= -500\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#plantuml:XPFHQXD158Rl5_OT3dXJeocvq0i3IflIW20AxHDCTYVfaDcPCZlRYYAOA2gaLBmJV8arDheqINs5Cs_KCxCDnEJ2gyoSS_xl__ViPY-tpDWYat6K3uKwPOPba4YMv_lM6j4hB7-UQ7Kitd1ehSyeRNc79SE1qOLA3xJK1kvrkzqd1u_YA8u20ZfC3VUJX2Oil8qZW2Qm-lgoo7hSjE6OJDIWRlMOP2hXRJZYJDObaRywuoOrh6yF5Uj9dhQXexNaJFc11t0kx0crptTOvh6rzdxTI_cfpeNTRBtp-NnyC69mOa7trtDwQQE1tt69KopTUwomnAKRkmdWDSwfD78ZBDkDXf-arLZ-scu2GlWcu3VIpeD-10IiY723l_0AIt-T0Ixe_XjdRWpuqqt8vGBmXdx8rdqYhp7ESEuk2331nKEWoH41gplrr2Tob-upJIs9wJww3tIu9cdblWB-9SuCfmJ-4YP2aUHaMn6wz365Ebij_gYGj7nV1CYvxE_UrU7PKsW1oRnpQ6o_blMd_h5o-7-2xJMiAygmaCUjrYgeNhc-49cm_sJTZaGimbuHhyG_j9Y5vzBPssm-NZEOS9M6xpgEzkX8VufR\" \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:PPBFQiCm3CRlWRo3O9SjeoE7xR30Hl-mGc5iq3w1ugYfgICNMqdBnjvzThAMhht9-Zv9FmcFlQ2JjZ5fuhUQT-Ym0MNG-uc8qsKhj52ML_gB83_ti1MQejhMphPSpQon3cxcy_dpx35DqgHl0LFaxKIfu13uJXE04U3m_6YRabm1gp24wq4gqI0hAc19Q8QKzfyTkShXMjuOIqDL0LDh3I57mptijMo2lB_59hOTQky6hQATzLekfP_85_71wNeZODVddB4qosOz_e8xT1fPV95bKGYN43h8fRzd7OLipmyA6PW2DvGKWXf5TmGj6mezxN6Vi1lGi5EirzmT3x1iJJX2J09uCkk7lpoyla0EuSvzyleqPoWd2Onkj4Iai37GGH5Ly9Jdnv4ddFVe-pVrUW3ePcSq-IkgKT-HkEg_HPgCGnZ-r2y0\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"44757\">B. \u0414\u043e\u0433\u043e\u0432\u043e\u0440\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (<code data-backticks=\"1\" data-nodeid=\"44872\">pre<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44874\">post<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44876\">body<\/code>)<\/h3>\n<p data-nodeid=\"44758\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u043c\u0435\u0442\u043e\u0434\u044b) \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<ul data-nodeid=\"44759\">\n<li data-nodeid=\"44760\">\n<p data-nodeid=\"44761\"><strong data-nodeid=\"44891\">\u041f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435 (<code data-backticks=\"1\" data-nodeid=\"44881\">pre<\/code>):<\/strong>\u00a0\u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u043c\u00a0<em data-nodeid=\"44892\">\u0434\u043e<\/em>\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. (\u041e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e).<\/p>\n<\/li>\n<li data-nodeid=\"44762\">\n<p data-nodeid=\"44763\"><strong data-nodeid=\"44905\">\u041f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u0435 (<code data-backticks=\"1\" data-nodeid=\"44895\">\u043f\u043e\u0441\u0442<\/code>):<\/strong>\u00a0\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0440\u043d\u044b\u043c\u00a0<em data-nodeid=\"44906\">\u043f\u043e\u0441\u043b\u0435<\/em>\u00a0\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. (\u041e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438).<\/p>\n<\/li>\n<li data-nodeid=\"44764\">\n<p data-nodeid=\"44765\"><strong data-nodeid=\"44913\">\u0422\u0435\u043b\u043e (<code data-backticks=\"1\" data-nodeid=\"44909\">\u0442\u0435\u043b\u043e<\/code>):<\/strong> \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u043e\u0447\u043d\u043e\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<\/li>\n<\/ul>\n<p id=\"sBOPitg\"><img alt=\"\" class=\"alignnone size-full wp-image-25374\" decoding=\"async\" height=\"875\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d.png 1916w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d-300x137.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d-1030x470.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d-768x351.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d-1536x701.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d-150x69.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6314dc4244d-400x183.png 400w\" width=\"1916\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#plantuml:TL9RIyCm57ulz3ySy6MhLdmHj8oo2nDySbx-G9QSTM5f4f8JS8h_tIGLwHXxA-TyrvFEFJ57eLTbuGzIM-PO3rmnxnT4Jcu3uJCt-br-8ToDCTeGBXa_TCu4BLP66GTNwuUd-_LZMPH5be3tlR5MwcuLFU2xB01ga8IzRs39kjd66H4ujSE2336rwACSDV26JANnDV0zyeC9D9ccAKTfQLXqI1-9CYmI_2Svfs3WPBSdCBkJ18bMLIyM7IDfDAoC9iSu-QQgqYx7g67Zi8wLXKoW1dBsFdXAbM6BWBsbOy964E4ddNWqpOMyrc437jNkDX-WRgFQEYbDfcDlu-dCNFhiAL7SW1iKqwn3dPgWoFAHUAel_PyyC2qYpmT5C6j11wL6ZaiZZWsy1dH7CF-d4RYJEcUuNFJy_W3Rh3QEmOrIo6bYdUGuhLiV-jGOOwRqKcKnZv_n__i5\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:XPBRQXH148Rl1-OT2hpPNLtnHj0XB3cmWdTYV85ERsUssPxfeRi6Z2Ba08f4yDuB1PzWrOnE4ZPvXUetidfM8OC4R-PG_zzLN_qpcnw5mxemQU8Nkgo44mL88xpVGdHwhqRrLDfoLxzIyE2cfxIejeLSvCxMvMp76klWplJHauVJnscI9bqBs9tRgj9bliCpu7MQ08n1eofy1jiYttZcxAoME5aBQ56OhOBROGRFbJ2nV1VaNCc5hN4mZ5MfT8Lh8LVu8XvP2z7-9awEOE1qFaUm-ps2U6mqeazqHQjm70vfIHTyFmKkN5CJ2-4jjNIUZKRHss6DWRwmqj1PE0b7TCdUx-nfCeYDMFd5RojQ0byQe3FMB-ddkl8jd7B_3q3NyMmuPkqyDkL0KRt47boMtR9evLG6Nfdz-rroumalE2qgF1WCUv0CmoF-1taLtb4RtlFg3PkFmiTxG3zukrMtVniEmybV1TZQq4N7O3ts8RJ_mm2Yd85JlZO86nCeQsDkOdtb5ep389yvXIx7hX8djZ6mVlGjCEgoS_8wjBmzhN-_Fi2UdHtqCQKrHaaSL4vBDHnFV5t4s1Gpn_yaJJRvaV_-tm00\" \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=\"44766\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam classAttributeIconSize 0\r\nskinparam noteBackgroundColor #E8F5E9\r\n\r\nclass ShoppingCart {\r\n  - items: Bag&lt;Product&gt;\r\n  - totalAmount: Real\r\n  + checkout(): Receipt\r\n  + getTotal(): Real\r\n}\r\n\r\nnote right of ShoppingCart\r\n  **\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439:**\r\n  \r\n  -- \u041f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435: \u041a\u043e\u0440\u0437\u0438\u043d\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439\r\n  context ShoppingCart::checkout(): Receipt\r\n  pre: self.items-&gt;notEmpty()\r\n  \r\n  -- \u041f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u0435: \u041a\u043e\u0440\u0437\u0438\u043d\u0430 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u043a\r\n  post: self.items-&gt;isEmpty() and result &lt;&gt; null\r\n  \r\n  -- \u0422\u0435\u043b\u043e: \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\r\n  context ShoppingCart::getTotal(): Real\r\n  body: self.items-&gt;collect(price)-&gt;sum()\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#plantuml:XPBRQXH148Rl1-OT2hpPNLtnHj0XB3cmWdTYV85ERsUssPxfeRi6Z2Ba08f4yDuB1PzWrOnE4ZPvXUetidfM8OC4R-PG_zzLN_qpcnw5mxemQU8Nkgo44mL88xpVGdHwhqRrLDfoLxzIyE2cfxIejeLSvCxMvMp76klWplJHauVJnscI9bqBs9tRgj9bliCpu7MQ08n1eofy1jiYttZcxAoME5aBQ56OhOBROGRFbJ2nV1VaNCc5hN4mZ5MfT8Lh8LVu8XvP2z7-9awEOE1qFaUm-ps2U6mqeazqHQjm70vfIHTyFmKkN5CJ2-4jjNIUZKRHss6DWRwmqj1PE0b7TCdUx-nfCeYDMFd5RojQ0byQe3FMB-ddkl8jd7B_3q3NyMmuPkqyDkL0KRt47boMtR9evLG6Nfdz-rroumalE2qgF1WCUv0CmoF-1taLtb4RtlFg3PkFmiTxG3zukrMtVniEmybV1TZQq4N7O3ts8RJ_mm2Yd85JlZO86nCeQsDkOdtb5ep389yvXIx7hX8djZ6mVlGjCEgoS_8wjBmzhN-_Fi2UdHtqCQKrHaaSL4vBDHnFV5t4s1Gpn_yaJJRvaV_-tm00\" \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:TL9RIyCm57ulz3ySy6MhLdmHj8oo2nDySbx-G9QSTM5f4f8JS8h_tIGLwHXxA-TyrvFEFJ57eLTbuGzIM-PO3rmnxnT4Jcu3uJCt-br-8ToDCTeGBXa_TCu4BLP66GTNwuUd-_LZMPH5be3tlR5MwcuLFU2xB01ga8IzRs39kjd66H4ujSE2336rwACSDV26JANnDV0zyeC9D9ccAKTfQLXqI1-9CYmI_2Svfs3WPBSdCBkJ18bMLIyM7IDfDAoC9iSu-QQgqYx7g67Zi8wLXKoW1dBsFdXAbM6BWBsbOy964E4ddNWqpOMyrc437jNkDX-WRgFQEYbDfcDlu-dCNFhiAL7SW1iKqwn3dPgWoFAHUAel_PyyC2qYpmT5C6j11wL6ZaiZZWsy1dH7CF-d4RYJEcUuNFJy_W3Rh3QEmOrIo6bYdUGuhLiV-jGOOwRqKcKnZv_n__i5\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"44767\">C. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (<code data-backticks=\"1\" data-nodeid=\"44915\">\u0432\u044b\u0432\u0435\u0441\u0442\u0438<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44917\">\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/code>)<\/h3>\n<p data-nodeid=\"44768\">\u0412\u043c\u0435\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 UML \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u0430\u043a\u00a0<code data-backticks=\"1\" data-nodeid=\"44920\">{\u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435}<\/code>\u00a0\u0438\u043b\u0438\u00a0<code data-backticks=\"1\" data-nodeid=\"44922\">{\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435}<\/code>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c OCL \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0445 \u0442\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p id=\"aQqRxLs\"><img alt=\"\" class=\"alignnone size-full wp-image-25375\" decoding=\"async\" height=\"868\" loading=\"lazy\" sizes=\"auto, (max-width: 1921px) 100vw, 1921px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64.png 1921w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64-300x136.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64-1030x465.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64-768x347.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64-1536x694.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64-150x68.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63150cb1f64-400x181.png 400w\" width=\"1921\"\/><\/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:RP5FImCn4CNl2_iT1WJHXHRHMq3eV-Z5IyNxD3lT3iqc9Pc8Q-btDzcjHTHB23EFtxnvCmc2Nc9hoY8Ss1xHOmlQO0XJ4S_RABJMpcxua-3XfyOweHdgG-DTjFNS6UVXPlcqUbmjog8iUWGiswDn7H6SoW9W13lsGLwm9GMRHBVDKDwob_q29PNpEnHFDNb-f_eCsAJ6sWerv2yzjYoCvWmSfbgIJC7CEKDeuHd4nyGuPnlP9NXkzW9kTxMJ8LMr6FXmczWz3TxGH0ggghAWdpI2EHeTJNALRK3TMMnPep5TxgTaX3xa2bRgjzTX2GM1p6vytNFS4VgmOQlfrTNOtTt_cFZj9bqcJOr7Pq5xGc5d_v_v9uCiomcfInHaw_vUPJ59ttJiBm00\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:TPBFIiD04CRlWRp3W1SjAAAtW53_WXSlzGMsoJPTJ7PbToDMALWl7XG4x-8h16bfy4zzXTatSZQffIXUik6RBz_yPh9jOvcsHPw5WJaJyfnfbaESCMDshTMYMrX-72lP4LSSDfSzKbc-n-ApLAj29ligKnfM3hUFjeuEmY0CwWWupCypDU0ShiC0O1rwGXjxmd8UGOVIPTh8NQ5j_u1Palsp4QyJhiK5JuR0KYeSIyjJhkSr8OKLB1k2CBkn9Li4Uqfbd4dO0QiBoXXw34y9MgHz2wgtmF4XhHQ-k1kSOOLJVALpZ9_k7YU05U0dbkuEItnt3p_gT2vEwApSOzHg-PGQPntmoTrJhN8ZV6yS_XEVEgKUfHkvMoo1MbG-1J_8IKdaViFAHz26BR-q2y0e-Zrpium83Czw6ujzRGmuqwOZPCnFLS86gslBKC_BKn3B1AZZh8QPkSSVoYyYhEeApJWckzV_eVgpRM_p_oAQBvtBfBuPOT2cLxfMtm00\" \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=\"44769\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam classAttributeIconSize 0\r\nskinparam noteBackgroundColor #E3F2FD\r\n\r\nclass Employee {\r\n  - firstName: String\r\n  - birthDate: Date\r\n  - {derived} age: Integer\r\n  - {initial} isActive: Boolean = true\r\n}\r\n\r\nnote right of Employee\r\n  **\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:**\r\n  \r\n  -- \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\r\n  context Employee::age: Integer\r\n  derive: self.birthDate.yearsSinceToday()\r\n  \r\n  -- \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438\r\n  context Employee::isActive: Boolean\r\n  init: true\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#plantuml:TPBFIiD04CRlWRp3W1SjAAAtW53_WXSlzGMsoJPTJ7PbToDMALWl7XG4x-8h16bfy4zzXTatSZQffIXUik6RBz_yPh9jOvcsHPw5WJaJyfnfbaESCMDshTMYMrX-72lP4LSSDfSzKbc-n-ApLAj29ligKnfM3hUFjeuEmY0CwWWupCypDU0ShiC0O1rwGXjxmd8UGOVIPTh8NQ5j_u1Palsp4QyJhiK5JuR0KYeSIyjJhkSr8OKLB1k2CBkn9Li4Uqfbd4dO0QiBoXXw34y9MgHz2wgtmF4XhHQ-k1kSOOLJVALpZ9_k7YU05U0dbkuEItnt3p_gT2vEwApSOzHg-PGQPntmoTrJhN8ZV6yS_XEVEgKUfHkvMoo1MbG-1J_8IKdaViFAHz26BR-q2y0e-Zrpium83Czw6ujzRGmuqwOZPCnFLS86gslBKC_BKn3B1AZZh8QPkSSVoYyYhEeApJWckzV_eVgpRM_p_oAQBvtBfBuPOT2cLxfMtm00\" \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:RP5FImCn4CNl2_iT1WJHXHRHMq3eV-Z5IyNxD3lT3iqc9Pc8Q-btDzcjHTHB23EFtxnvCmc2Nc9hoY8Ss1xHOmlQO0XJ4S_RABJMpcxua-3XfyOweHdgG-DTjFNS6UVXPlcqUbmjog8iUWGiswDn7H6SoW9W13lsGLwm9GMRHBVDKDwob_q29PNpEnHFDNb-f_eCsAJ6sWerv2yzjYoCvWmSfbgIJC7CEKDeuHd4nyGuPnlP9NXkzW9kTxMJ8LMr6FXmczWz3TxGH0ggghAWdpI2EHeTJNALRK3TMMnPep5TxgTaX3xa2bRgjzTX2GM1p6vytNFS4VgmOQlfrTNOtTt_cFZj9bqcJOr7Pq5xGc5d_v_v9uCiomcfInHaw_vUPJ59ttJiBm00\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"44770\">D. \u041e\u0445\u0440\u0430\u043d\u044b \u043c\u0430\u0448\u0438\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439<\/h3>\n<p data-nodeid=\"44771\">\u041d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043c\u0430\u0448\u0438\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c<strong data-nodeid=\"44930\">\u043e\u0445\u0440\u0430\u043d\u044b<\/strong>\u2014\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430. OCL \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043e\u0445\u0440\u0430\u043d.<\/p>\n<p id=\"rmaKYWP\"><img alt=\"\" class=\"alignnone size-full wp-image-25376\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1911px) 100vw, 1911px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44.png 1911w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44-300x137.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44-1030x469.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44-768x350.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44-1536x700.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44-150x68.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63153146a44-400x182.png 400w\" width=\"1911\"\/><\/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:RP91Qm8n48NlWVo7WHxKXIqjnSkYYzKgz5IfH_6Gkb5Jiqb8ib8f_U-TsTL5r9ncttip-IRiA4JXOrLgpi9U6IUyA06rACTYlTzwMvbYOhNry31xcVPdVSuuMoOhIDCS9bvYiE3iLDJYN9f2cUshSzuUX8OCGlLLgjZjKMiz-YRpozaVkTSwpMi-S7W6osWZgWDuViApkf__bDzo7I_p-R1juAmTHzd5JZbNHmDMH7XMoCKrgSDO9FPgkujWDzVed04aoQBUwjqSX5V2n2n9I5zR4-LFX0zVI4-2CWUyIUhD8pr35M08dTEy3gZIQIK3KB0-JR1-ErndV4np99cMBXu95Dk0o6u9pnisQ7CROeeaXOhA6l95utTxzp2phBN9SzXzWto-e0C28LhU9dPgBzxeHGOvc4hhIzeHblYx_GC0\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:RPB1Qi9048RlWRp3G0zgmD9Il0GDLglNblOe7bApwjPaTzbif58ArJw0rzxw2b8e24MVOVD6dKsYYBg7CFdddvblbct6ofSgYKBRYYUK2L_w4Q2cICiVJ4QI9oneyv1BkEZUT6hTcctPLi_fGxNgGLiID0QsLGIP-41OGDdeLWZ9ftu8BiJ9SqHLkM9AizOddZVRUZVPOztqot-mkGiznHMgTRY-mjC_xtyaBsIW3lrUOrzWM_jsnliqfa9arXWZGxXJJ1RND1MC8x6aex42FZn6joq0nz5VUgD_z2hzq6kzqfjq0UbSRzDvki3l4fFhTEawZd4FE5FaLS6z38Wq0cLJd4_2uQMvd2I61fIAAIMWaGWfYS4OivCRinl59LkpgeTydKYecS77CZ2yfzoxlGlWxvmk_KJEFxr5-BN-1JytbIldM5rtdpOvmMDrmhsRKW8VIVRGkQqe3-xC4wXxm98mF4HkOeWlyHy0\" \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=\"44772\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam stateBackgroundColor #F3E5F5\r\n\r\n[*] --&gt; Created\r\nCreated --&gt; PendingApproval : submit()\r\n\r\nstate PendingApproval {\r\n}\r\n\r\nPendingApproval --&gt; Approved : [total &lt; 10000]\r\nPendingApproval --&gt; Rejected : [total &gt;= 10000]\r\n\r\nApproved --&gt; Shipped : ship()\r\nShipped --&gt; [*]\r\n\r\nnote right of PendingApproval\r\n  **\u0418\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:**\r\n  context Order\r\n  inv: self.status = 'Pending' implies \r\n       self.submittedBy-&gt;notEmpty()\r\nend note\r\n\r\nnote right of Approved\r\n  **\u041f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u0435 approve():**\r\n  context Order::approve()\r\n  post: self.status = 'Approved' and \r\n        self.approvedDate &lt;&gt; null\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#plantuml:RPB1Qi9048RlWRp3G0zgmD9Il0GDLglNblOe7bApwjPaTzbif58ArJw0rzxw2b8e24MVOVD6dKsYYBg7CFdddvblbct6ofSgYKBRYYUK2L_w4Q2cICiVJ4QI9oneyv1BkEZUT6hTcctPLi_fGxNgGLiID0QsLGIP-41OGDdeLWZ9ftu8BiJ9SqHLkM9AizOddZVRUZVPOztqot-mkGiznHMgTRY-mjC_xtyaBsIW3lrUOrzWM_jsnliqfa9arXWZGxXJJ1RND1MC8x6aex42FZn6joq0nz5VUgD_z2hzq6kzqfjq0UbSRzDvki3l4fFhTEawZd4FE5FaLS6z38Wq0cLJd4_2uQMvd2I61fIAAIMWaGWfYS4OivCRinl59LkpgeTydKYecS77CZ2yfzoxlGlWxvmk_KJEFxr5-BN-1JytbIldM5rtdpOvmMDrmhsRKW8VIVRGkQqe3-xC4wXxm98mF4HkOeWlyHy0\" \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:RP91Qm8n48NlWVo7WHxKXIqjnSkYYzKgz5IfH_6Gkb5Jiqb8ib8f_U-TsTL5r9ncttip-IRiA4JXOrLgpi9U6IUyA06rACTYlTzwMvbYOhNry31xcVPdVSuuMoOhIDCS9bvYiE3iLDJYN9f2cUshSzuUX8OCGlLLgjZjKMiz-YRpozaVkTSwpMi-S7W6osWZgWDuViApkf__bDzo7I_p-R1juAmTHzd5JZbNHmDMH7XMoCKrgSDO9FPgkujWDzVed04aoQBUwjqSX5V2n2n9I5zR4-LFX0zVI4-2CWUyIUhD8pr35M08dTEy3gZIQIK3KB0-JR1-ErndV4np99cMBXu95Dk0o6u9pnisQ7CROeeaXOhA6l95utTxzp2phBN9SzXzWto-e0C28LhU9dPgBzxeHGOvc4hhIzeHblYx_GC0\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"44773\"\/>\n<h2 data-nodeid=\"44774\">3. \u041a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u044f: \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438<\/h2>\n<p data-nodeid=\"44775\">\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c OCL \u043a \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 UML, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0439<code data-backticks=\"1\" data-nodeid=\"44935\">\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44937\">\u041e\u0442\u0434\u0435\u043b<\/code>, \u0438<code data-backticks=\"1\" data-nodeid=\"44939\">\u041f\u0440\u043e\u0435\u043a\u0442<\/code>. \u042d\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a OCL \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 (<code data-backticks=\"1\" data-nodeid=\"44941\">select<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44943\">forAll<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44945\">size<\/code>).<\/p>\n<p id=\"nWIRDWg\"><img alt=\"\" class=\"alignnone size-full wp-image-25377\" decoding=\"async\" height=\"762\" loading=\"lazy\" sizes=\"auto, (max-width: 949px) 100vw, 949px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315519982f.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315519982f.png 949w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315519982f-300x241.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315519982f-768x617.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315519982f-150x120.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315519982f-400x321.png 400w\" width=\"949\"\/><\/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:dLLjRzem4FwEn7yuCMa3DgBITTeKjQWj50bjQwUX_G2J7E3LiPdjiBAN_xvp73ifwxxi2tBEzzoTdtlkk3IMQLiMejinzrpkc6O5P88PSsMjvglIuY9JSib_89oqVQIoUCso-urMfSodIYWDp-Rp-UpcxLzkIkUeWylrzEHqrkrqErKMk2bsGXqGuMUt0p22vV8sXIMbbXjlM7Djx2qhyB5vnRNTpfWbi_lrnYtNU6mpJ31zI64k5BFEz1BO1lk351RIuWPrj_ExAMU6LBSjKDfGa2oB5UgMTsNygnwXCcQvaeRCQC_zrSJV_QJdyptclq6kT7YmURg0JrfznUn_ipVMAcGajtUI9CCUZ4RG6_VQZqpXkzBtPawjcK0UxKz3_IbKM4Fl925ttjQ6ZIFcE6F197N04CoVShebQCkd1NwKa9HejHAcoMYUJaceQ4x1b3lKUswgHvfoHNhaaWHY74TEeQ3vPcj1hIFAqJeSJXLzuWEnlsUQCsaDF8TRjkSRp_PmwFnSLVXW7s6hjenWdC0rCpo3E4tmkHIL1vTx9yJf5hDxAX75Egbq2PCB6BzhnJXDOagvWIjZLCQzrA3_iHIMxmJFk3qCGjI2FTIKcJfmtQZHnD0SKuhp2pXhPNYTm1VZWYyiQcQLfiXhfQ-46DGUouR1eZGMLbZDMau7SiGZKdqPpk7EJNvTHDjdDF7n-yuP71n-kTyaJB1hb0E5R-StQ9Lybi1KAsD6BJuYjNGVkvyn2KgAGoLMEaNX1349zue3s2roxIR0XlfhnwbtIw4kDV99CvC4GOucN6QYpD6uHxKv7tXONTORObhoRoN28YUXypL73Vtts3IlhAwhBHZUa30X5f8MjSpGz0UHEno_0ZmbudmA7CFvn1auuJZD5uuJYkEDxbHpY3Alrd8K_qfPgmgd_bbh0JZzp_pUQjHxfFZ6Fqt_iTe0_F9B7pCNfFX4EN4MFuMbuae9Io2Eub4fBUUQwu08kp4gLqbquQdZhOttmZGhFFHYpmJFFyJLsX90w7iICOq2VFl3nT4BB-c3_ct_0000\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:dLRTRXf75Bv7uXsEt1kW0HadLQgLWvAO85cgaaX-WWN6UElTMNTcS9EcaHASdmjRZNANYrPfr1V02II407s5sJVgEJCxouBjcru0ksVExtU-SuRRKlb2zQEmM9270J_oXHz19_IblAEK2DfznNOxCTyBVcEmcTVXiM9t_SvXJyHztjs9mrZ0TwrMgtdlvWMrM7IPS2ftTpQtciL2iM2YmBteA8mVCmPFYWM0AkpjtVTW3qFpdXNi1qAg-tx4LiNjGAY3fgzGJDzMU108jYwJVkYBnnwqmjXN9FeU_1uhbJtOvOhrc2WMdYxJQJBCMqMCAvSGxqTj9dBQHdWXdp3k-2g8kKGnKzlsg67Fdc3vmJ7hFWNU5gvWUNa23qNyC-lyt-XBgN6PWRknMQjLDg1QXOtwHhv83twDnQ5iOMiQqCtabvlQ9vTXQlg0e-MHbUNDwfdDUiJ8vzW1YMRsgOkdQ9hJoHcl14GcAX67SXbHNXuIhJAn1x9_nCHn84sHijz6FWOS2I898s8eYA1te23Upwm8raf5Vz3Vz49_rlFaL8z1J_HSVzJ3v1a-3L4uI4vH22WTedoYF-7PApr9tdYL2dcWVDaZjUBLDAmAzHhez-Z86c8KqEVuyWN3VSJF9n8CCG25EazEae4UacN0Zuc-EmUiSuY5iN2_PjWCZLjG_p7dVmlz_xMU5kX_hT_doNEz89axqJCewHaMGjMEyNo0bcDyHmcz9MTb5pxo7wKTaMa6AG-g3Obh0dFPlWKtSgbSnrJUOK2ChRybPscDY1-69r0nrfYGmDy5_k8XbFPZSISCowa7_NToegSfD2DhGQu0Nz0dfQpd261oIfbYbGQsUV8c6PZcW07w7DqFaXDZP93Ge-IrqNjBXQBnIrSZBP87jBNI2lEagJPiSYLI1k8J_4xVDRTzY6HavDv9hvp3uyR5ri-mWC-OpiaLpT4JXyG7KyGpn6Da09oIiMtQ85UcuSuP4AG6yob58PgEB3eB33WbDV9z3GouSqCtmdDY0epr36a_8uAFBI79yOYWHwsPmogTn1qxcnwai6J4mDrISuDRRGIy4_QxJ1A0UVAKhLbQvWy8qJ-sFaoH2g09_4eJIF4nKypnXJssj47wJb7nZ-HrHjG-3txfCtEXk06i-M6uo_7EunqcI-MibQn-3TWMzj5cmUgmtI11W7O1hYfMhw4VAwIdjAMCTyqDb-sHTgnK7D4YQUPsgLabxmss4sI_9N5QqCgChwsDfG_Fk-Bc0B1tYxSAk1l5IrBCLjr3jxDDUk_MLziQJzPIonaxPlwPxes57NHBIZVaAxwMOpitUy-DxIBbz8pw_CLCnHKUl-Qvc2t6OpyCkZzbLs6EY8v_jUoQNZBHqj0Th45s6r_mtz5_\" \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=\"44776\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam classAttributeIconSize 0\r\nskinparam noteBackgroundColor #FFFDE7\r\nskinparam noteBorderColor #FBC02D\r\n\r\nclass Employee {\r\n  - SSN: String\r\n  - firstName: String\r\n  - birthDate: Date\r\n  - hireDate: Date\r\n  - salary: Float\r\n  + age(): Integer\r\n}\r\n\r\nclass Department {\r\n  - number: Integer\r\n  - name: String\r\n  - locations: Set&lt;String&gt;\r\n  - {derived} nbrEmployees: Integer\r\n}\r\n\r\nclass Project {\r\n  - number: Integer\r\n  - name: String\r\n  - location: String\r\n}\r\n\r\nEmployee \"0..*\" -- \"1\" Department : worksFor &gt; department\r\nEmployee \"0..*\" -- \"0..*\" Project : worksOn &gt; project\r\nEmployee \"1\" -- \"0..1\" Department : manages &gt; managedDept\r\nDepartment \"1\" -- \"0..*\" Project : controls &gt; projects\r\nEmployee \"1\" -- \"0..*\" Employee : supervisor &gt; subordinates\r\n\r\nnote right of Employee\r\n  **\u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f:**\r\n  context Employee\r\n  \r\n  -- 1. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\r\n  inv ageCheck: self.age() &gt;= 18\r\n  \r\n  -- 2. \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u044f\u043c (\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c)\r\n  inv maxProjects: self.worksOn-&gt;size() &lt;= 4\r\n  \r\n  -- 3. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 (forAll)\r\n  -- \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0434\u043e \u043f\u043e\u0434\u0447\u0438\u043d\u0451\u043d\u043d\u044b\u0445\r\n  inv hireOrder: self.subordinates-&gt;forAll(\r\n    sub | sub.hireDate &gt; self.hireDate\r\n  )\r\n  \r\n  -- 4. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043c\u0435\u0436\u0434\u0443 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u044f\u043c\u0438\r\n  -- \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u043e\u043c\r\n  inv projectControl: \r\n    self.worksFor.controls-&gt;includesAll(self.worksOn)\r\n    \r\n  -- 5. \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (\u043a\u043b\u044e\u0447)\r\n  inv uniqueSSN: Employee.allInstances()-&gt;forAll(e1, e2 | \r\n    e1 &lt;&gt; e2 implies e1.SSN &lt;&gt; e2.SSN\r\n  )\r\nend note\r\n\r\nnote bottom of Department\r\n  **\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442:**\r\n  context Department::nbrEmployees: Integer\r\n  derive: self.worksFor-&gt;size()\r\nend note\r\n\r\nnote right of Project\r\n  **\u0418\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:**\r\n  context Project\r\n  \r\n  -- \u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u0430\r\n  inv validLocation: \r\n    self.controls.locations-&gt;includes(self.location)\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:dLRTRXf75Bv7uXsEt1kW0HadLQgLWvAO85cgaaX-WWN6UElTMNTcS9EcaHASdmjRZNANYrPfr1V02II407s5sJVgEJCxouBjcru0ksVExtU-SuRRKlb2zQEmM9270J_oXHz19_IblAEK2DfznNOxCTyBVcEmcTVXiM9t_SvXJyHztjs9mrZ0TwrMgtdlvWMrM7IPS2ftTpQtciL2iM2YmBteA8mVCmPFYWM0AkpjtVTW3qFpdXNi1qAg-tx4LiNjGAY3fgzGJDzMU108jYwJVkYBnnwqmjXN9FeU_1uhbJtOvOhrc2WMdYxJQJBCMqMCAvSGxqTj9dBQHdWXdp3k-2g8kKGnKzlsg67Fdc3vmJ7hFWNU5gvWUNa23qNyC-lyt-XBgN6PWRknMQjLDg1QXOtwHhv83twDnQ5iOMiQqCtabvlQ9vTXQlg0e-MHbUNDwfdDUiJ8vzW1YMRsgOkdQ9hJoHcl14GcAX67SXbHNXuIhJAn1x9_nCHn84sHijz6FWOS2I898s8eYA1te23Upwm8raf5Vz3Vz49_rlFaL8z1J_HSVzJ3v1a-3L4uI4vH22WTedoYF-7PApr9tdYL2dcWVDaZjUBLDAmAzHhez-Z86c8KqEVuyWN3VSJF9n8CCG25EazEae4UacN0Zuc-EmUiSuY5iN2_PjWCZLjG_p7dVmlz_xMU5kX_hT_doNEz89axqJCewHaMGjMEyNo0bcDyHmcz9MTb5pxo7wKTaMa6AG-g3Obh0dFPlWKtSgbSnrJUOK2ChRybPscDY1-69r0nrfYGmDy5_k8XbFPZSISCowa7_NToegSfD2DhGQu0Nz0dfQpd261oIfbYbGQsUV8c6PZcW07w7DqFaXDZP93Ge-IrqNjBXQBnIrSZBP87jBNI2lEagJPiSYLI1k8J_4xVDRTzY6HavDv9hvp3uyR5ri-mWC-OpiaLpT4JXyG7KyGpn6Da09oIiMtQ85UcuSuP4AG6yob58PgEB3eB33WbDV9z3GouSqCtmdDY0epr36a_8uAFBI79yOYWHwsPmogTn1qxcnwai6J4mDrISuDRRGIy4_QxJ1A0UVAKhLbQvWy8qJ-sFaoH2g09_4eJIF4nKypnXJssj47wJb7nZ-HrHjG-3txfCtEXk06i-M6uo_7EunqcI-MibQn-3TWMzj5cmUgmtI11W7O1hYfMhw4VAwIdjAMCTyqDb-sHTgnK7D4YQUPsgLabxmss4sI_9N5QqCgChwsDfG_Fk-Bc0B1tYxSAk1l5IrBCLjr3jxDDUk_MLziQJzPIonaxPlwPxes57NHBIZVaAxwMOpitUy-DxIBbz8pw_CLCnHKUl-Qvc2t6OpyCkZzbLs6EY8v_jUoQNZBHqj0Th45s6r_mtz5_\" \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:dLLjRzem4FwEn7yuCMa3DgBITTeKjQWj50bjQwUX_G2J7E3LiPdjiBAN_xvp73ifwxxi2tBEzzoTdtlkk3IMQLiMejinzrpkc6O5P88PSsMjvglIuY9JSib_89oqVQIoUCso-urMfSodIYWDp-Rp-UpcxLzkIkUeWylrzEHqrkrqErKMk2bsGXqGuMUt0p22vV8sXIMbbXjlM7Djx2qhyB5vnRNTpfWbi_lrnYtNU6mpJ31zI64k5BFEz1BO1lk351RIuWPrj_ExAMU6LBSjKDfGa2oB5UgMTsNygnwXCcQvaeRCQC_zrSJV_QJdyptclq6kT7YmURg0JrfznUn_ipVMAcGajtUI9CCUZ4RG6_VQZqpXkzBtPawjcK0UxKz3_IbKM4Fl925ttjQ6ZIFcE6F197N04CoVShebQCkd1NwKa9HejHAcoMYUJaceQ4x1b3lKUswgHvfoHNhaaWHY74TEeQ3vPcj1hIFAqJeSJXLzuWEnlsUQCsaDF8TRjkSRp_PmwFnSLVXW7s6hjenWdC0rCpo3E4tmkHIL1vTx9yJf5hDxAX75Egbq2PCB6BzhnJXDOagvWIjZLCQzrA3_iHIMxmJFk3qCGjI2FTIKcJfmtQZHnD0SKuhp2pXhPNYTm1VZWYyiQcQLfiXhfQ-46DGUouR1eZGMLbZDMau7SiGZKdqPpk7EJNvTHDjdDF7n-yuP71n-kTyaJB1hb0E5R-StQ9Lybi1KAsD6BJuYjNGVkvyn2KgAGoLMEaNX1349zue3s2roxIR0XlfhnwbtIw4kDV99CvC4GOucN6QYpD6uHxKv7tXONTORObhoRoN28YUXypL73Vtts3IlhAwhBHZUa30X5f8MjSpGz0UHEno_0ZmbudmA7CFvn1auuJZD5uuJYkEDxbHpY3Alrd8K_qfPgmgd_bbh0JZzp_pUQjHxfFZ6Fqt_iTe0_F9B7pCNfFX4EN4MFuMbuae9Io2Eub4fBUUQwu08kp4gLqbquQdZhOttmZGhFFHYpmJFFyJLsX90w7iICOq2VFl3nT4BB-c3_ct_0000\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"44777\"\/>\n<h2 data-nodeid=\"44778\">4. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 OCL \u0432 UML<\/h2>\n<h3 data-nodeid=\"44779\">A. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<code data-backticks=\"1\" data-nodeid=\"44949\">let<\/code>\u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438<\/h3>\n<p data-nodeid=\"44780\">\u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 OCL \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u00a0<code data-backticks=\"1\" data-nodeid=\"44952\">let<\/code>\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043a\u0443 UML \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f.<\/p>\n<p id=\"jRJogLz\"><img alt=\"\" class=\"alignnone size-full wp-image-25378\" decoding=\"async\" height=\"870\" loading=\"lazy\" sizes=\"auto, (max-width: 1917px) 100vw, 1917px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc.png 1917w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc-300x136.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc-1030x467.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc-768x349.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc-1536x697.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc-150x68.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a631597c90bc-400x182.png 400w\" width=\"1917\"\/><\/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:LL7DIiD04Bu7yWxVhMqWKX0leGaL4Un9eVW0s-qasMQpKtOdMXNVtKqCKc_BzpipkmsYl0ozJPFG6NTMNlNGLeLmB-BDOH3QQNPxyqbOfqcQJ1mU-xFb3o9yfGcGuvrz5vvTWJt9viNpYRHKQV8zEXmBmPkc5N3zvnnzMVOQZ6kmi2GBrEoXET9qWUN6w2BBHbMi5xh8F-VKckD1MJrO5VE5HLcqFFW0vOxGBUaE1nxSKNb3OJGOzpOD6YkVHc4nnG2n_TS_exlOrv17EVD085lVp3lcbMPhutxBgMsLLs7ebwjPQznL5AeIj-jfdYjmK-8kdf8YEfucJRRn6N_W1m00\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:LL7DIiD04Bu7yWvpQnk85CHBQKCz2FQaq2U8STl6Rh9bi_4NmVPWaHO4Jpv6jKQZnVGLPj_8oH94JpCxtpVVV3lJJPGlLHfnsqh6OJpnfHz1mFqasLTAXYUfOhr0nFtmca7JjcpBO70GJRYuOWnkR0l0XGiXnybHt88-K-rZASvOe3pRkYqxOg4Oo70uKY06lvrbd-FWivxY5WlSw2L-K7p55NvZZXdKE5Crm3U27e5O6qBV2Ilm4ynZJRGlp5kEKsgHISKkrJzzuyq5VD8BFSVSYEHwffT0xI_w0JEQGng5gSynqrCz8mi5q6D5TF83c0DkzPtnbb6i1DQK6glwNY_AGM5yRjOGniD3aSgaPSO3q3T02UNpgjeZdqCceLFX00dZWvrgWwuN2CvfU_LHIM-uNf96zKR53UC_Kk1rOBTP-ljJQtTWZ-x4ubCezsvRNKhfl3y0\" \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=\"44781\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam classAttributeIconSize 0\r\n\r\nclass Employee {\r\n  - worksOn: Set&lt;Project&gt;\r\n}\r\n\r\nnote right of Employee\r\n  **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 'let' \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438:**\r\n  context Employee\r\n  \r\n  -- \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b\r\n  inv workingHours: \r\n    let totalHours: Integer = \r\n      self.worksOn-&gt;collect(hours)-&gt;sum() \r\n    in totalHours &gt;= 30 \u0438 totalHours &lt;= 50\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#plantuml:LL7DIiD04Bu7yWvpQnk85CHBQKCz2FQaq2U8STl6Rh9bi_4NmVPWaHO4Jpv6jKQZnVGLPj_8oH94JpCxtpVVV3lJJPGlLHfnsqh6OJpnfHz1mFqasLTAXYUfOhr0nFtmca7JjcpBO70GJRYuOWnkR0l0XGiXnybHt88-K-rZASvOe3pRkYqxOg4Oo70uKY06lvrbd-FWivxY5WlSw2L-K7p55NvZZXdKE5Crm3U27e5O6qBV2Ilm4ynZJRGlp5kEKsgHISKkrJzzuyq5VD8BFSVSYEHwffT0xI_w0JEQGng5gSynqrCz8mi5q6D5TF83c0DkzPtnbb6i1DQK6glwNY_AGM5yRjOGniD3aSgaPSO3q3T02UNpgjeZdqCceLFX00dZWvrgWwuN2CvfU_LHIM-uNf96zKR53UC_Kk1rOBTP-ljJQtTWZ-x4ubCezsvRNKhfl3y0\" \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:LL7DIiD04Bu7yWxVhMqWKX0leGaL4Un9eVW0s-qasMQpKtOdMXNVtKqCKc_BzpipkmsYl0ozJPFG6NTMNlNGLeLmB-BDOH3QQNPxyqbOfqcQJ1mU-xFb3o9yfGcGuvrz5vvTWJt9viNpYRHKQV8zEXmBmPkc5N3zvnnzMVOQZ6kmi2GBrEoXET9qWUN6w2BBHbMi5xh8F-VKckD1MJrO5VE5HLcqFFW0vOxGBUaE1nxSKNb3OJGOzpOD6YkVHc4nnG2n_TS_exlOrv17EVD085lVp3lcbMPhutxBgMsLLs7ebwjPQznL5AeIj-jfdYjmK-8kdf8YEfucJRRn6N_W1m00\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3 data-nodeid=\"44782\">B. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 (<code data-backticks=\"1\" data-nodeid=\"44955\">@pre<\/code>)<\/h3>\n<p data-nodeid=\"44783\">\u041f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00a0<em data-nodeid=\"44968\">\u043d\u043e\u0432\u043e\u0435<\/em>\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u00a0<em data-nodeid=\"44969\">\u0441\u0442\u0430\u0440\u043e\u0435<\/em>\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c. OCL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u00a0<code data-backticks=\"1\" data-nodeid=\"44966\">@pre<\/code>\u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p id=\"kzEcVyQ\"><img alt=\"\" class=\"alignnone size-full wp-image-25379\" decoding=\"async\" height=\"875\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b.png 1916w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b-300x137.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b-1030x470.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b-768x351.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b-1536x701.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b-150x69.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a6315ba6f75b-400x183.png 400w\" width=\"1916\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Plantuml<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/#plantuml:VL11JiCm4BnRyX_cM585SRQW2a8Sk24L7c2IRREgOrlsHb0GVyUEI0ySkEtCxEpERfV59fadfrK-iOyssGczipdVYoH-cuMU-k3t_4cuqKghHSD3cABrPtnf1RIWARfm9ie6UvBRnr-ug-eM8oTQgKqqMEihhRxhI1-4aFWu2i9X7LsjJVEQsH_HnKHWZ-UGfIrf1XOEFfkcgLs54FgGrMZCF_k09N2Bbv7WwVsI79a4d2653svOu7P1jIjIoi5NQomHJ57TuVfoDEx-43LlksFVktae-JUnR2O_e1wgLLVAyl0V\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 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:VL4xJiD05Emj-GvJ1aT1r1P4GOY2EYSmpYPPOQzNthL4G4Zv2540eg6WuGuX8Y8ambpXxHKu2RjMJ962QjzdtioyjnsbermNQU9xwe8B6ULHYZY9b3hMEkVdXMPdSIQw_8hXmFTyh-hX94jb94QuzZsW1PRA91infa9qcJuytQPjrsrYo7DMbneoH1tl-TwDenIPPiZvOAYHzMjgDne4z68cz4qbRSm3VTXtGNFweXKjqP4v0otWscPYfcPcePiAiZ9FvZOC0iTXpMjsgMlQCFp73L2jqmAzEXvpJv-mQdDwin9ZMFxIwepDZDuh4sk7mi_u6URHJAc4yq5pYzYPRBgaPZHtjDmQNTBQASfCwH2A9VtzlqlYQAVWzcsrkOYJeiV5e26jOIPwSDVplOuDxI_-0W00\" \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=\"44784\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nskinparam classAttributeIconSize 0\r\n\r\nclass Company {\r\n  - employees: Set&lt;Employee&gt;\r\n  + hireEmployee(p: Employee)\r\n}\r\n\r\nnote right of Company\r\n  **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 @pre \u0432 \u043f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445:**\r\n  context Company::hireEmployee(p: Employee)\r\n  \r\n  -- \u041d\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 + \u043d\u043e\u0432\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\r\n  post: self.employees = self.employees@pre-&gt;including(p)\r\nend note\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/#plantuml:VL4xJiD05Emj-GvJ1aT1r1P4GOY2EYSmpYPPOQzNthL4G4Zv2540eg6WuGuX8Y8ambpXxHKu2RjMJ962QjzdtioyjnsbermNQU9xwe8B6ULHYZY9b3hMEkVdXMPdSIQw_8hXmFTyh-hX94jb94QuzZsW1PRA91infa9qcJuytQPjrsrYo7DMbneoH1tl-TwDenIPPiZvOAYHzMjgDne4z68cz4qbRSm3VTXtGNFweXKjqP4v0otWscPYfcPcePiAiZ9FvZOC0iTXpMjsgMlQCFp73L2jqmAzEXvpJv-mQdDwin9ZMFxIwepDZDuh4sk7mi_u6URHJAc4yq5pYzYPRBgaPZHtjDmQNTBQASfCwH2A9VtzlqlYQAVWzcsrkOYJeiV5e26jOIPwSDVplOuDxI_-0W00\" \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:VL11JiCm4BnRyX_cM585SRQW2a8Sk24L7c2IRREgOrlsHb0GVyUEI0ySkEtCxEpERfV59fadfrK-iOyssGczipdVYoH-cuMU-k3t_4cuqKghHSD3cABrPtnf1RIWARfm9ie6UvBRnr-ug-eM8oTQgKqqMEihhRxhI1-4aFWu2i9X7LsjJVEQsH_HnKHWZ-UGfIrf1XOEFfkcgLs54FgGrMZCF_k09N2Bbv7WwVsI79a4d2653svOu7P1jIjIoi5NQomHJ57TuVfoDEx-43LlksFVktae-JUnR2O_e1wgLLVAyl0V\" 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>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Plantuml \u0432 VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<hr data-nodeid=\"44785\"\/>\n<h2 data-nodeid=\"44786\">5. \u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f OCL \u0432 UML<\/h2>\n<ol data-nodeid=\"44787\">\n<li data-nodeid=\"44788\">\n<p data-nodeid=\"44789\"><strong data-nodeid=\"44977\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432\u0430\u0448\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c:<\/strong>\u00a0\u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432\u0430\u0448\u0438\u043c \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0<code data-backticks=\"1\" data-nodeid=\"44975\">inv maxProjects:<\/code>). \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u043f\u0440\u043e\u0449\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<\/li>\n<li data-nodeid=\"44790\">\n<p data-nodeid=\"44791\"><strong data-nodeid=\"44984\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u0438:<\/strong>\u00a0\u0412 PlantUML \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445 UML \u043d\u0435 \u0437\u0430\u0433\u0440\u043e\u043c\u043e\u0436\u0434\u0430\u0439\u0442\u0435 \u043a\u043e\u0440\u043e\u0431\u043a\u0443 \u043a\u043b\u0430\u0441\u0441\u0430 OCL. \u0420\u0430\u0437\u043c\u0435\u0449\u0430\u0439\u0442\u0435 OCL \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0437\u0430\u043c\u0435\u0442\u043a\u0430\u0445. \u042d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u0447\u0438\u0441\u0442\u043e\u0439 \u0438 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li data-nodeid=\"44792\">\n<p data-nodeid=\"44793\"><strong data-nodeid=\"44995\">\u041d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0439\u0442\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f:<\/strong>\u00a0\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435 OCL \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0438\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 UML (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0<code data-backticks=\"1\" data-nodeid=\"44991\">0..1<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44993\">1..*<\/code>) \u0438\u043b\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u043a\u0430\u0436\u0438\u0442\u0435 \u0435\u0433\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li data-nodeid=\"44794\">\n<p data-nodeid=\"44795\"><strong data-nodeid=\"45008\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439:<\/strong>\u00a0\u041e\u0432\u043b\u0430\u0434\u0435\u0439\u0442\u0435\u00a0<code data-backticks=\"1\" data-nodeid=\"45000\">-&gt;select()<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"45002\">-&gt;forAll()<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"45004\">-&gt;exists()<\/code>, \u0438\u00a0<code data-backticks=\"1\" data-nodeid=\"45006\">-&gt;collect()<\/code>. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0435 \u043c\u043e\u0449\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u044f\u043c UML \u0432 OCL.<\/p>\n<\/li>\n<li data-nodeid=\"44796\">\n<p class=\"\" data-nodeid=\"44797\"><strong data-nodeid=\"45021\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043d\u0430 null\/\u043f\u0443\u0441\u0442\u044b\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430:<\/strong>\u00a0\u041f\u0440\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u044f\u043c (\u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0438\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u00a0<code data-backticks=\"1\" data-nodeid=\"45013\">0..1<\/code>\u00a0\u0438\u043b\u0438\u00a0<code data-backticks=\"1\" data-nodeid=\"45015\">0..*<\/code>), \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u00a0<code data-backticks=\"1\" data-nodeid=\"45017\">-&gt;notEmpty()<\/code>\u00a0\u0438\u043b\u0438\u00a0<code data-backticks=\"1\" data-nodeid=\"45019\">-&gt;isEmpty()<\/code>\u00a0\u043f\u0435\u0440\u0435\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u00a0<\/p>\n<h1 class=\"qwen-markdown-heading\" dir=\"ltr\"><span class=\"qwen-markdown-text\" data-spm-anchor-id=\"a2ty_o01.29997173.0.i226.290055fbrGIlFE\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/span><\/h1>\n<div class=\"qwen-markdown-paragraph\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0430\u0433\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u0425\u043e\u0442\u044f UML \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u044b\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (OCL) \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0441\u0442\u0440\u043e\u0433\u0438\u0435, \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/span><\/div>\n<div class=\"qwen-markdown-space\"><\/div>\n<div class=\"qwen-markdown-paragraph\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u041a\u0430\u043a \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435, OCL \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u043c \u043c\u043e\u0441\u0442\u043e\u043c \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041e\u0441\u0432\u043e\u0438\u0432 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0432\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435, \u0447\u0442\u043e \u0432\u0430\u0448\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a PlantUML, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f OCL \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u0439, \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c\u0438 \u0438 \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.<\/span><\/div>\n<div class=\"qwen-markdown-space\"><\/div>\n<div class=\"qwen-markdown-paragraph\" dir=\"ltr\"><span class=\"qwen-markdown-text\">\u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 OCL \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0430\u0448\u0443 \u0440\u043e\u043b\u044c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u00ab\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432 \u0438 \u043b\u0438\u043d\u0438\u0439\u00bb \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0439, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u0440\u0438\u043d\u044f\u0432 \u0441\u0438\u043d\u0435\u0440\u0433\u0438\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u044f\u0441\u043d\u043e\u0441\u0442\u0438 UML \u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 OCL, \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u043d\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u043d\u043e \u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0431\u0438\u0437\u043d\u0435\u0441-\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u043c\u0438\u0440\u0430.<\/span><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0425\u043e\u0442\u044f \u0435\u0434\u0438\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (UML) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u043c \u043e\u0442\u0440\u0430\u0441\u043b\u0435\u0432\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0447\u0442\u043e\u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043d\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445, \u0442\u043e\u043d\u043a\u0438\u0445 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043a\u0430\u043a\u043e\u043d\u0430 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f. \u041e\u043f\u043e\u0440\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b, \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[36],"tags":[],"class_list":["post-9480","post","type-post","status-publish","format-standard","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>\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML - Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439<\/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\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML - Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439\" \/>\n<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0425\u043e\u0442\u044f \u0435\u0434\u0438\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (UML) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u043c \u043e\u0442\u0440\u0430\u0441\u043b\u0435\u0432\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0447\u0442\u043e\u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043d\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445, \u0442\u043e\u043d\u043a\u0438\u0445 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043a\u0430\u043a\u043e\u043d\u0430 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f. \u041e\u043f\u043e\u0440\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b, \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/\" \/>\n<meta property=\"og:site_name\" content=\"Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-24T07:39:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-26T09:31:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png\" \/>\n<meta name=\"author\" content=\"Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c\" \/>\n\t<meta name=\"twitter:data1\" content=\"Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u043c\u0438\u043d\u0443\u0442\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/\",\"url\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/\",\"name\":\"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML - Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439\",\"isPartOf\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png\",\"datePublished\":\"2026-07-24T07:39:20+00:00\",\"dateModified\":\"2026-07-26T09:31:02+00:00\",\"author\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#primaryimage\",\"url\":\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png\",\"contentUrl\":\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.visual-paradigm.com\/ru\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/#website\",\"url\":\"https:\/\/blog.visual-paradigm.com\/ru\/\",\"name\":\"Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.visual-paradigm.com\/ru\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ru-RU\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/ru\/#\/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\/ru\/author\/vpadminuser\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML - Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439","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\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/","og_locale":"ru_RU","og_type":"article","og_title":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML - Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439","og_description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0425\u043e\u0442\u044f \u0435\u0434\u0438\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (UML) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u043c \u043e\u0442\u0440\u0430\u0441\u043b\u0435\u0432\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0447\u0442\u043e\u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043d\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445, \u0442\u043e\u043d\u043a\u0438\u0445 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043a\u0430\u043a\u043e\u043d\u0430 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f. \u041e\u043f\u043e\u0440\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b, \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e [&hellip;]","og_url":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/","og_site_name":"Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439","article_published_time":"2026-07-24T07:39:20+00:00","article_modified_time":"2026-07-26T09:31:02+00:00","og_image":[{"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png","type":"","width":"","height":""}],"author":"Admin","twitter_card":"summary_large_image","twitter_misc":{"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c":"Admin","\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f":"6 \u043c\u0438\u043d\u0443\u0442"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/","url":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/","name":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML - Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439","isPartOf":{"@id":"https:\/\/blog.visual-paradigm.com\/ru\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#primaryimage"},"image":{"@id":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png","datePublished":"2026-07-24T07:39:20+00:00","dateModified":"2026-07-26T09:31:02+00:00","author":{"@id":"https:\/\/blog.visual-paradigm.com\/ru\/#\/schema\/person\/a649c442f11a53040710ddec750926c6"},"breadcrumb":{"@id":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/"]}]},{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#primaryimage","url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png","contentUrl":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63167c3b9c9.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.visual-paradigm.com\/ru\/a-comprehensive-guide-to-using-ocl-in-uml-with-plantuml-examples\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.visual-paradigm.com\/ru\/"},{"@type":"ListItem","position":2,"name":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e OCL \u0432 UML \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 PlantUML"}]},{"@type":"WebSite","@id":"https:\/\/blog.visual-paradigm.com\/ru\/#website","url":"https:\/\/blog.visual-paradigm.com\/ru\/","name":"Visual Paradigm Blog \u0420\u0443\u0301\u0441\u0441\u043a\u0438\u0439","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.visual-paradigm.com\/ru\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru-RU"},{"@type":"Person","@id":"https:\/\/blog.visual-paradigm.com\/ru\/#\/schema\/person\/a649c442f11a53040710ddec750926c6","name":"Admin","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/blog.visual-paradigm.com\/ru\/#\/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\/ru\/author\/vpadminuser\/"}]}},"modified_by":"Admin","_links":{"self":[{"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/posts\/9480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/comments?post=9480"}],"version-history":[{"count":0,"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/posts\/9480\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/media?parent=9480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/categories?post=9480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/ru\/wp-json\/wp\/v2\/tags?post=9480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}