{"id":12221,"date":"2026-07-24T15:26:46","date_gmt":"2026-07-24T07:26:46","guid":{"rendered":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/"},"modified":"2026-07-26T17:36:07","modified_gmt":"2026-07-26T09:36:07","slug":"a-comprehensive-guide-to-the-object-constraint-language-ocl","status":"publish","type":"post","link":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/","title":{"rendered":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL)"},"content":{"rendered":"<p data-nodeid=\"44120\">\u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0648\u0627\u062f \u062f\u0631\u0633\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647\u060c \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0633\u0627\u0633\u06cc\u060c \u0646\u062d\u0648 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0645\u062f\u0644\u0633\u0627\u0632\u06cc UML \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p id=\"ELHqSML\"><img alt=\"Objct Constraint Language (OCL)\n\" class=\"alignnone wp-image-25369 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_6a63134535ef7.png\" srcset=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png 1664w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7-300x167.png 300w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7-1030x574.png 1030w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7-768x428.png 768w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7-1536x857.png 1536w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7-150x84.png 150w, https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7-400x223.png 400w\" width=\"1664\"\/><\/p>\n<hr data-nodeid=\"44121\"\/>\n<h2 data-nodeid=\"44122\">1. \u0645\u0639\u0631\u0641\u06cc OCL<\/h2>\n<h3 data-nodeid=\"44123\">\u0686\u0631\u0627 \u0628\u0647 OCL \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<\/h3>\n<p data-nodeid=\"44124\">\u0627\u06af\u0631\u0686\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc UML (\u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633) \u0628\u0631\u0627\u06cc \u0628\u0635\u0631\u06cc \u06a9\u0631\u062f\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0645\u0627\u0645 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u062e\u0635\u0627\u062a \u0631\u0627 \u0628\u06cc\u0627\u0646 \u06a9\u0646\u0646\u062f.<\/p>\n<ul data-nodeid=\"44125\">\n<li data-nodeid=\"44126\">\n<p data-nodeid=\"44127\"><strong data-nodeid=\"44305\">\u0632\u0628\u0627\u0646 \u0637\u0628\u06cc\u0639\u06cc<\/strong>\u0645\u0628\u0647\u0645 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li data-nodeid=\"44128\">\n<p data-nodeid=\"44129\"><strong data-nodeid=\"44310\">\u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0631\u0633\u0645\u06cc \u0633\u0646\u062a\u06cc<\/strong>\u0628\u06cc\u200c\u0627\u0645\u0628\u0647\u0627\u0645 \u0647\u0633\u062a\u0646\u062f \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644\u200c\u0633\u0627\u0632\u0627\u0646 \u0645\u062a\u0648\u0633\u0637 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u0622\u0646\u200c\u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u062f\u0634\u0648\u0627\u0631 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li data-nodeid=\"44130\">\n<p data-nodeid=\"44131\"><strong data-nodeid=\"44323\">OCL<\/strong>\u0627\u06cc\u0646 \u0634\u06a9\u0627\u0641 \u0631\u0627 \u067e\u0644 \u0645\u06cc\u200c\u0632\u0646\u062f: \u0627\u06cc\u0646 \u06cc\u06a9 <strong data-nodeid=\"44324\">\u0632\u0628\u0627\u0646 \u0631\u0633\u0645\u06cc<\/strong>\u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0628\u06cc\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0647\u0645\u0686\u0646\u0627\u0646 <strong data-nodeid=\"44325\">\u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"44132\">\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc OCL<\/h3>\n<ol data-nodeid=\"44133\">\n<li data-nodeid=\"44134\">\n<p data-nodeid=\"44135\"><strong data-nodeid=\"44339\">\u0632\u0628\u0627\u0646 \u0628\u06cc\u0627\u0646\u06cc \u062e\u0627\u0644\u0635:<\/strong>\u0628\u06cc\u0627\u0646\u06cc\u0647\u200c\u0647\u0627 \u0627\u062b\u0631 \u062c\u0627\u0646\u0628\u06cc \u0646\u062f\u0627\u0631\u0646\u062f. \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u06cc\u06a9 \u0628\u06cc\u0627\u0646\u06cc\u0647 OCL \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u0627\u0645\u0627 <em data-nodeid=\"44340\">\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f<\/em>\u0648\u0636\u0639\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u062f\u0647\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f <em data-nodeid=\"44341\">\u0648\u0636\u0639\u06cc\u062a \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0627 \u062a\u0648\u0635\u06cc\u0641 \u06a9\u0646\u062f (\u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u067e\u0633 \u0627\u0632)<\/em>\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a (\u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u06cc\u06a9 \u0634\u0631\u0637 \u067e\u0633 \u0627\u0632)<\/p>\n<\/li>\n<li data-nodeid=\"44136\">\n<p data-nodeid=\"44137\"><strong data-nodeid=\"44346\">\u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0646\u06cc\u0633\u062a:<\/strong>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0646\u0637\u0642 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u06cc\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\/\u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0648\u0636\u0639\u06cc\u062a \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u0646\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44138\">\n<p data-nodeid=\"44139\"><strong data-nodeid=\"44351\">\u0632\u0628\u0627\u0646 \u0646\u0648\u0639\u200c\u062f\u0627\u0631:<\/strong>\u0647\u0631 \u0628\u06cc\u0627\u0646\u06cc\u0647 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u0633\u062a. \u0628\u06cc\u0627\u0646\u06cc\u0647\u200c\u0647\u0627\u06cc \u062f\u0631\u0633\u062a \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0627\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646 \u062a\u0637\u0628\u06cc\u0642 \u0646\u0648\u0639 \u0631\u0627 \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u0646\u062f. \u0647\u0631 \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc UML \u06cc\u06a9 \u0646\u0648\u0639 OCL \u0627\u0633\u062a.<\/p>\n<\/li>\n<li data-nodeid=\"44140\">\n<p data-nodeid=\"44141\"><strong data-nodeid=\"44360\">\u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0644\u062d\u0638\u0647\u200c\u0627\u06cc:<\/strong>\u0648\u0636\u0639\u06cc\u062a \u0627\u0634\u06cc\u0627\u0621 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0637\u0648\u0644 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u06cc\u06a9 \u0628\u06cc\u0627\u0646\u06cc\u0647 OCL \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f.<em data-nodeid=\"44361\">\u062f\u0631 \u0637\u0648\u0644<\/em>\u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u06cc\u06a9 \u0628\u06cc\u0627\u0646\u06cc\u0647 OCL.<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"44142\"\/>\n<h2 data-nodeid=\"44143\">2. \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0648 \u0645\u0639\u0646\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647<\/h2>\n<h3 data-nodeid=\"44144\">\u0645\u062a\u0646 \u0648 \u062e\u0648\u062f<\/h3>\n<p data-nodeid=\"44145\">\u0647\u0631 \u0639\u0628\u0627\u0631\u062a OCL \u062f\u0631 \u0645\u062a\u0646 \u06cc\u06a9 \u0637\u0628\u0642\u0647\u200c\u0628\u0646\u062f\u06cc UML \u062e\u0627\u0635 (\u06a9\u0644\u0627\u0633\u060c \u0631\u0627\u0628\u0637 \u0648 \u063a\u06cc\u0631\u0647) \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<ul data-nodeid=\"44146\">\n<li data-nodeid=\"44147\">\n<p data-nodeid=\"44148\"><strong data-nodeid=\"44369\"><code data-backticks=\"1\" data-nodeid=\"44366\">\u0645\u062a\u0646<\/code><\/strong>: \u06a9\u0644\u0627\u0633\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0628\u0647 \u0622\u0646 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44149\">\n<p data-nodeid=\"44150\"><strong data-nodeid=\"44374\"><code data-backticks=\"1\" data-nodeid=\"44371\">\u062e\u0648\u062f<\/code><\/strong>: \u06a9\u0644\u0645\u0647\u200c\u0627\u06cc \u0631\u0632\u0631\u0648 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u06a9\u0644\u0627\u0633 \u0645\u062a\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f.<\/p>\n<\/li>\n<\/ul>\n<pre class=\"lang-ocl\" data-nodeid=\"44151\"><code data-language=\"ocl\">\u0645\u062a\u0646 \u0634\u062e\u0635\r\n-- '\u062e\u0648\u062f' \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062e\u0627\u0635 \u0627\u0632 \u0634\u062e\u0635 \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44152\">\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 \u0639\u0645\u0644\u06af\u0631\u0647\u0627<\/h3>\n<ul data-nodeid=\"44153\">\n<li data-nodeid=\"44154\">\n<p data-nodeid=\"44155\"><strong data-nodeid=\"44384\">\u062a\u0648\u0636\u06cc\u062d\u0627\u062a:<\/strong>\u0628\u0627 \u0639\u0644\u0627\u0645\u062a<code data-backticks=\"1\" data-nodeid=\"44380\">--<\/code> (\u0645\u062b\u0644\u0627\u064b<code data-backticks=\"1\" data-nodeid=\"44382\">-- \u0627\u06cc\u0646 \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0627\u0633\u062a<\/code>).<\/p>\n<\/li>\n<li data-nodeid=\"44156\">\n<p data-nodeid=\"44157\"><strong data-nodeid=\"44401\">\u0639\u0645\u0644\u06af\u0631\u0647\u0627\u06cc \u0627\u06cc\u0646\u0641\u06cc\u06a9\u0633\u06cc:<\/strong>\u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0639\u0645\u0644\u06af\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0631\u06cc\u0627\u0636\u06cc\/\u0645\u0646\u0637\u0642\u06cc (<code data-backticks=\"1\" data-nodeid=\"44389\">+<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44391\">-<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44393\">=<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44395\">&lt;<\/code>). \u0628\u0647 \u0637\u0648\u0631 \u0645\u0641\u0647\u0648\u0645\u06cc\u060c<code data-backticks=\"1\" data-nodeid=\"44397\">a + b<\/code> \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a<code data-backticks=\"1\" data-nodeid=\"44399\">a.+(b)<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"44158\">\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627<\/h3>\n<p data-nodeid=\"44159\">\u0627\u0632 \u0646\u0645\u0627\u062f \u0646\u0642\u0637\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627 \u06cc\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u067e\u0631\u0627\u0646\u062a\u0632\u0647\u0627 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0636\u0631\u0648\u0631\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u062d\u062a\u06cc \u0627\u06af\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44160\"><code data-language=\"ocl\">\u0645\u062a\u0646 Person\r\nself.age             -- \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc 'age' \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\r\nself.stockPrice()    -- \u0639\u0645\u0644\u06cc\u0627\u062a 'stockPrice' \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\r\n<\/code><\/pre>\n<hr data-nodeid=\"44161\"\/>\n<h2 data-nodeid=\"44162\">3. \u0627\u0646\u0648\u0627\u0639 \u0648 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627<\/h2>\n<h3 data-nodeid=\"44163\">\u0627\u0646\u0648\u0627\u0639 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0635\u0644\u06cc<\/h3>\n<p data-nodeid=\"44164\">OCL \u0627\u0646\u0648\u0627\u0639 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u062e\u0627\u0635 \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-nodeid=\"44165\">\n<li data-nodeid=\"44166\">\n<p data-nodeid=\"44167\"><strong data-nodeid=\"44425\">\u0645\u0646\u0637\u0642\u06cc:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"44411\">\u062f\u0631\u0633\u062a<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44413\">\u0646\u0627\u062f\u0631\u0633\u062a<\/code>\u00a0(\u0639\u0645\u0644\u06cc\u0627\u062a:\u00a0<code data-backticks=\"1\" data-nodeid=\"44415\">\u0648<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44417\">\u06cc\u0627<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44419\">\u0646\u0647<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44421\">\u0646\u062a\u06cc\u062c\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44423\">\u06cc\u0627 \u062c\u0632\u0626\u06cc<\/code>)<\/p>\n<\/li>\n<li data-nodeid=\"44168\">\n<p data-nodeid=\"44169\"><strong data-nodeid=\"44448\">\u0635\u062d\u06cc\u062d \/ \u062d\u0642\u06cc\u0642\u06cc:<\/strong>\u00a0\u0627\u0639\u062f\u0627\u062f (\u0639\u0645\u0644\u06cc\u0627\u062a:\u00a0<code data-backticks=\"1\" data-nodeid=\"44430\">+<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44432\">-<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44434\">*<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44436\">\/<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44438\">\u0645\u0637\u0644\u0642<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44440\">\u0628\u06cc\u0634\u06cc\u0646\u0647<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44442\">\u06a9\u0645\u06cc\u0646\u0647<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44444\">\u062a\u0642\u0633\u06cc\u0645<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44446\">\u0645\u0627\u0646\u062f\u0647<\/code>)<\/p>\n<\/li>\n<li data-nodeid=\"44170\">\n<p data-nodeid=\"44171\"><strong data-nodeid=\"44461\">\u0631\u0634\u062a\u0647:<\/strong>\u0645\u062a\u0646 (\u0639\u0645\u0644\u06cc\u0627\u062a:\u00a0<code data-backticks=\"1\" data-nodeid=\"44453\">\u0627\u0646\u062f\u0627\u0632\u0647<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44455\">\u062a\u0631\u06a9\u06cc\u0628<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44457\">\u0632\u06cc\u0631\u0631\u0634\u062a\u0647<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44459\">\u0628\u0647 \u0639\u062f\u062f \u0635\u062d\u06cc\u062d \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646<\/code>)<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"44172\">\u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627<\/h3>\n<p data-nodeid=\"44173\">\u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627 \u0646\u0648\u0639\u200c\u0647\u0627\u06cc \u0645\u062c\u0631\u062f \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0686\u0646\u062f \u0639\u0646\u0635\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0645\u0627\u062f\u00a0<code data-backticks=\"1\" data-nodeid=\"44464\">-&gt;<\/code>\u00a0\u0646\u0645\u0627\u062f\u06af\u0630\u0627\u0631\u06cc.<\/p>\n<ol data-nodeid=\"44174\">\n<li data-nodeid=\"44175\">\n<p data-nodeid=\"44176\"><strong data-nodeid=\"44471\">\u0645\u062c\u0645\u0648\u0639\u0647:<\/strong>\u00a0\u0645\u062c\u0645\u0648\u0639\u0647 \u0631\u06cc\u0627\u0636\u06cc (\u0628\u062f\u0648\u0646 \u062a\u06a9\u0631\u0627\u0631\u060c \u0628\u062f\u0648\u0646 \u062a\u0631\u062a\u06cc\u0628).\u00a0<code data-backticks=\"1\" data-nodeid=\"44470\">\u0645\u062c\u0645\u0648\u0639\u0647 {1, 2, 5}<\/code><\/p>\n<\/li>\n<li data-nodeid=\"44177\">\n<p data-nodeid=\"44178\"><strong data-nodeid=\"44477\">\u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u0631\u062a\u0628:<\/strong>\u00a0\u0628\u062f\u0648\u0646 \u062a\u06a9\u0631\u0627\u0631\u060c \u0627\u0645\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0648\u0642\u0639\u06cc\u062a \u0645\u0631\u062a\u0628 \u0634\u062f\u0647\u200c\u0627\u0646\u062f.\u00a0<code data-backticks=\"1\" data-nodeid=\"44476\">\u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u0631\u062a\u0628 {5, 4, 3}<\/code><\/p>\n<\/li>\n<li data-nodeid=\"44179\">\n<p data-nodeid=\"44180\"><strong data-nodeid=\"44483\">\u06a9\u06cc\u0633\u0647:<\/strong>\u0627\u062c\u0627\u0632\u0647\u200c\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0628\u062f\u0648\u0646 \u062a\u0631\u062a\u06cc\u0628.<code data-backticks=\"1\" data-nodeid=\"44482\">\u06a9\u06cc\u0633\u0647 {1, 2, 2, 5}<\/code><\/p>\n<\/li>\n<li data-nodeid=\"44181\">\n<p data-nodeid=\"44182\"><strong data-nodeid=\"44489\">\u062f\u0646\u0628\u0627\u0644\u0647:<\/strong>\u0627\u062c\u0627\u0632\u0647\u200c\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0645\u0631\u062a\u0628 \u0634\u062f\u0647.<code data-backticks=\"1\" data-nodeid=\"44488\">\u062f\u0646\u0628\u0627\u0644\u0647 {1, 2, 5, 10}<\/code><\/p>\n<ul data-nodeid=\"44183\">\n<li data-nodeid=\"44184\">\n<p data-nodeid=\"44185\"><em data-nodeid=\"44498\">\u0646\u06a9\u062a\u0647:<\/em>\u00a0\u0627\u06cc\u0646\u00a0<code data-backticks=\"1\" data-nodeid=\"44494\">..<\/code>\u00a0\u0646\u0645\u0627\u062f \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u06cc\u06a9 \u062f\u0646\u0628\u0627\u0644\u0647 \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0635\u062d\u06cc\u062d \u0645\u062a\u0648\u0627\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:\u00a0<code data-backticks=\"1\" data-nodeid=\"44496\">\u062f\u0646\u0628\u0627\u0644\u0647 {1..5}<\/code>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-nodeid=\"44186\">\u0639\u0645\u0644\u06cc\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627<\/h3>\n<ul data-nodeid=\"44187\">\n<li data-nodeid=\"44188\">\n<p data-nodeid=\"44189\"><strong data-nodeid=\"44518\">\u0631\u0627\u06cc\u062c:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"44504\">\u0627\u0646\u062f\u0627\u0632\u0647()<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44506\">\u062e\u0627\u0644\u06cc\u0627\u0633\u062a()<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44508\">\u062e\u0627\u0644\u06cc \u0646\u06cc\u0633\u062a()<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44510\">\u0634\u0627\u0645\u0644(v) \u0627\u0633\u062a<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44512\">\u0634\u0627\u0645\u0644(v) \u0646\u06cc\u0633\u062a<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44514\">\u062a\u0639\u062f\u0627\u062f(v)<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44516\">\u062c\u0645\u0639()<\/code>.<\/p>\n<\/li>\n<li data-nodeid=\"44190\">\n<p data-nodeid=\"44191\"><strong data-nodeid=\"44522\">\u062a\u0631\u06a9\u06cc\u0628\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627 (\u06a9\u0644\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc OCL):<\/strong><\/p>\n<ul data-nodeid=\"44192\">\n<li data-nodeid=\"44193\">\n<p data-nodeid=\"44194\"><code data-backticks=\"1\" data-nodeid=\"44523\">\u0627\u0646\u062a\u062e\u0627\u0628(\u0639\u0628\u0627\u0631\u062a)<\/code>: \u0639\u0646\u0627\u0635\u0631\u06cc \u0631\u0627 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646\u200c\u0647\u0627\u00a0<code data-backticks=\"1\" data-nodeid=\"44525\">\u0639\u0628\u0627\u0631\u062a<\/code>\u00a0\u062f\u0631\u0633\u062a \u0627\u0633\u062a.<\/p>\n<\/li>\n<li data-nodeid=\"44195\">\n<p data-nodeid=\"44196\"><code data-backticks=\"1\" data-nodeid=\"44527\">reject(\u0639\u0628\u0627\u0631\u062a)<\/code>: \u0639\u0646\u0627\u0635\u0631\u06cc \u0631\u0627 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646\u200c\u0647\u0627\u00a0<code data-backticks=\"1\" data-nodeid=\"44529\">\u0639\u0628\u0627\u0631\u062a<\/code>\u00a0\u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0633\u062a.<\/p>\n<\/li>\n<li data-nodeid=\"44197\">\n<p data-nodeid=\"44198\"><code data-backticks=\"1\" data-nodeid=\"44531\">collect(\u0639\u0628\u0627\u0631\u062a)<\/code>: \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u062e\u0627\u0635 \u0631\u0627 \u0627\u0632 \u0647\u0645\u0647 \u0639\u0646\u0627\u0635\u0631 \u0628\u0647 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44199\">\n<p data-nodeid=\"44200\"><code data-backticks=\"1\" data-nodeid=\"44533\">forAll(\u0639\u0628\u0627\u0631\u062a)<\/code>: \u0645\u0642\u062f\u0627\u0631\u00a0<code data-backticks=\"1\" data-nodeid=\"44535\">\u062f\u0631\u0633\u062a<\/code>\u00a0\u0627\u06af\u0631\u00a0<code data-backticks=\"1\" data-nodeid=\"44537\">\u0639\u0628\u0627\u0631\u062a<\/code>\u00a0\u0628\u0631\u0627\u06cc\u00a0<em data-nodeid=\"44543\">\u0647\u0645\u0647<\/em>\u00a0\u0639\u0646\u0627\u0635\u0631 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44201\">\n<p data-nodeid=\"44202\"><code data-backticks=\"1\" data-nodeid=\"44544\">exists(\u0639\u0628\u0627\u0631\u062a)<\/code>: \u0645\u0642\u062f\u0627\u0631\u00a0<code data-backticks=\"1\" data-nodeid=\"44546\">\u062f\u0631\u0633\u062a<\/code>\u00a0\u0627\u06af\u0631\u00a0<code data-backticks=\"1\" data-nodeid=\"44548\">\u0639\u0628\u0627\u0631\u062a<\/code>\u00a0\u0628\u0631\u0627\u06cc\u00a0<em data-nodeid=\"44554\">\u062d\u062f\u0627\u0642\u0644 \u06cc\u06a9<\/em>\u00a0\u0639\u0646\u0635\u0631 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44203\">\n<p data-nodeid=\"44204\"><code data-backticks=\"1\" data-nodeid=\"44555\">iterate(\u0639\u0646\u0635\u0631; \u062d\u0627\u0644\u062a = \u0645\u0642\u062f\u0627\u0631\u0627\u0628\u062a\u062f\u0627\u06cc\u06cc | \u0639\u0628\u0627\u0631\u062a)<\/code>: \u067e\u0627\u06cc\u0647 \u06a9\u0644\u06cc \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u06a9\u0631\u0631\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p data-nodeid=\"44205\"><em data-nodeid=\"44560\">\u062a\u0646\u0648\u0639\u200c\u0647\u0627\u06cc \u0646\u062d\u0648\u06cc \u0645\u06a9\u0631\u0631:<\/em><\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44206\"><code data-language=\"ocl\">self.employee-&gt;select(age &gt; 50)\r\nself.employee-&gt;select(p | p.age &gt; 50)\r\nself.employee-&gt;select(p: Person | p.age &gt; 50)\r\n<\/code><\/pre>\n<hr data-nodeid=\"44207\"\/>\n<h2 data-nodeid=\"44208\">4. \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc UML<\/h2>\n<p data-nodeid=\"44209\">OCL \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0632\u0628\u0627\u0646 \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u0632 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h3 data-nodeid=\"44210\">\u0646\u0627\u0648\u0628\u0631\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f<\/h3>\n<p data-nodeid=\"44211\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0627\u0645 \u0646\u0642\u0634 \u0645\u0642\u0627\u0628\u0644 \u062d\u0631\u06a9\u062a \u06a9\u0646\u06cc\u062f. \u0646\u0648\u0639 \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0686\u0646\u062f\u06af\u0627\u0646\u06af\u06cc \u062f\u0627\u0631\u062f:<\/p>\n<ul data-nodeid=\"44212\">\n<li data-nodeid=\"44213\">\n<p data-nodeid=\"44214\"><strong data-nodeid=\"44573\">\u0686\u0646\u062f\u06af\u0627\u0646\u06af\u06cc\u00a0<code data-backticks=\"1\" data-nodeid=\"44567\">1<\/code>\u00a0\u06cc\u0627\u00a0<code data-backticks=\"1\" data-nodeid=\"44569\">0..1<\/code>:<\/strong>\u00a0\u06cc\u06a9 \u0634\u06cc\u0621 \u0648\u0627\u062d\u062f \u0628\u0627\u0632 \u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44215\">\n<p data-nodeid=\"44216\"><strong data-nodeid=\"44586\">\u0686\u0646\u062f\u06af\u0627\u0646\u06af\u06cc\u00a0<code data-backticks=\"1\" data-nodeid=\"44576\">*<\/code>:<\/strong>\u00a0\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u06cc\u06a9\u00a0<code data-backticks=\"1\" data-nodeid=\"44580\">\u0645\u062c\u0645\u0648\u0639\u0647<\/code>\u00a0(\u06cc\u0627\u00a0<code data-backticks=\"1\" data-nodeid=\"44582\">\u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u0631\u062a\u0628\u200c\u0634\u062f\u0647<\/code>\u00a0\u0627\u06af\u0631 \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u00a0<code data-backticks=\"1\" data-nodeid=\"44584\">{\u0645\u0631\u062a\u0628\u200c\u0634\u062f\u0647}<\/code>).<\/p>\n<\/li>\n<\/ul>\n<pre class=\"lang-ocl\" data-nodeid=\"44217\"><code data-language=\"ocl\">\u0645\u062a\u0646 Company\r\nself.manager.age &gt; 40               -- manager 0..1 \u0627\u0633\u062a\u060c \u06cc\u06a9 \u0634\u06cc\u0621 \u0627\u0632 \u0646\u0648\u0639 \u0634\u062e\u0635 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\r\nself.employee-&gt;notEmpty()           -- employee 0..* \u0627\u0633\u062a\u060c \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\r\n<\/code><\/pre>\n<p data-nodeid=\"44218\"><em data-nodeid=\"44592\">\u0627\u06af\u0631 \u0646\u0627\u0645 \u0646\u0642\u0634 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0648\u0686\u06a9 \u06a9\u0644\u0627\u0633 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f (\u0645\u062b\u0644\u0627\u064b\u00a0<code data-backticks=\"1\" data-nodeid=\"44589\">self.bank<\/code>).<\/em><\/p>\n<h3 data-nodeid=\"44219\">\u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u06cc<\/h3>\n<p data-nodeid=\"44220\">\u0628\u0631\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0647 \u06a9\u0644\u0627\u0633 \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0648\u0686\u06a9 \u06a9\u0644\u0627\u0633 \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44221\"><code data-language=\"ocl\">\u0645\u062a\u0646 Person\r\nself.job-&gt;size() &gt;= 1  -- 'job' \u06a9\u0644\u0627\u0633 \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0628\u06cc\u0646 \u0634\u062e\u0635 \u0648 \u0634\u0631\u06a9\u062a \u0627\u0633\u062a\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44222\">\u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0628\u0627\u0632\u06af\u0634\u062a\u06cc<\/h3>\n<p data-nodeid=\"44223\">\u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0647 \u06a9\u0644\u0627\u0633 \u0647\u0645\u0627\u0646\u200c\u062c\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06af\u0631\u062f\u062f (\u0645\u062b\u0644\u0627\u064b \u0627\u0632\u062f\u0648\u0627\u062c \u0628\u06cc\u0646 \u062f\u0648 \u0634\u062e\u0635)\u060c \u0628\u0627\u06cc\u062f \u062c\u0647\u062a \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0631\u0627\u06a9\u062a\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0639\u06cc \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f\u00a0<code data-backticks=\"1\" data-nodeid=\"44597\">[\u0646\u0627\u0645_\u0646\u0642\u0634]<\/code>.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44224\"><code data-language=\"ocl\">\u0645\u062a\u0646\u0638\u0631 \u0634\u062e\u0635\r\nself.marriage[wife]-&gt;select(m | m.ended = false)-&gt;size() = 1\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44225\">\u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647<\/h3>\n<p data-nodeid=\"44226\">\u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u0634\u062e\u0635\u200c\u06a9\u0646\u0646\u062f\u0647 \u062f\u0631 \u0628\u0631\u0627\u06a9\u062a\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06cc\u06a9 \u0634\u06cc\u0621 \u062e\u0627\u0635 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44227\"><code data-language=\"ocl\">\u0645\u062a\u0646\u0638\u0631 \u0628\u0627\u0646\u06a9\r\nself.customer[12345]  -- \u0634\u06cc\u0621 \u062e\u0627\u0635 \u0634\u062e\u0635 \u0628\u0627 accountNo 12345 \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\r\nself.customer         -- \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0647\u0645\u0647 \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44228\">\u062a\u063a\u06cc\u06cc\u0631 \u0646\u0648\u0639 (\u062a\u0628\u062f\u06cc\u0644)<\/h3>\n<p data-nodeid=\"44229\">\u0627\u0632\u00a0<code data-backticks=\"1\" data-nodeid=\"44603\">oclAsType()<\/code>\u00a0\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u06cc\u06a9 \u0632\u06cc\u0631\u0646\u0648\u0639 \u06cc\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0645\u062e\u0641\u06cc \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44230\"><code data-language=\"ocl\">self.oclAsType(Sub).p       -- \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc 'p' \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631\u0646\u0648\u0639 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\r\nself.oclAsType(Super).p     -- \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc 'p' \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\r\n<\/code><\/pre>\n<hr data-nodeid=\"44231\"\/>\n<h2 data-nodeid=\"44232\">5. \u0646\u0648\u0634\u062a\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627<\/h2>\n<h3 data-nodeid=\"44233\">1. \u0645\u0648\u0627\u0631\u062f \u062b\u0627\u0628\u062a (<code data-backticks=\"1\" data-nodeid=\"44607\">inv<\/code>)<\/h3>\n<p data-nodeid=\"44234\">\u0634\u0631\u0627\u06cc\u0637\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f\u00a0<strong data-nodeid=\"44614\">\u0647\u0645\u06cc\u0634\u0647<\/strong>\u00a0\u062f\u0631\u0633\u062a \u0628\u0627\u0634\u0646\u062f \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44235\"><code data-language=\"ocl\">\u0645\u062a\u0646\u0638\u0631 \u0634\u0631\u06a9\u062a \r\ninv: self.noEmployees &lt;= 50\r\ninv SME: self.stockPrice() &gt; 0  -- 'SME' \u0646\u0627\u0645 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0627\u0633\u062a\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44236\">2. \u0634\u0631\u0627\u06cc\u0637 \u067e\u06cc\u0634 \u0648 \u067e\u0633 \u0627\u0632 (<code data-backticks=\"1\" data-nodeid=\"44616\">pre<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44618\">post<\/code>)<\/h3>\n<p data-nodeid=\"44237\">\u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a.<\/p>\n<ul data-nodeid=\"44238\">\n<li data-nodeid=\"44239\">\n<p data-nodeid=\"44240\"><strong data-nodeid=\"44629\"><code data-backticks=\"1\" data-nodeid=\"44622\">pre<\/code><\/strong>: \u0628\u0627\u06cc\u062f \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u00a0<em data-nodeid=\"44630\">\u0642\u0628\u0644 \u0627\u0632<\/em>\u00a0\u0627\u062c\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a.<\/p>\n<\/li>\n<li data-nodeid=\"44241\">\n<p data-nodeid=\"44242\"><strong data-nodeid=\"44641\"><code data-backticks=\"1\" data-nodeid=\"44632\">post<\/code><\/strong>: \u0628\u0627\u06cc\u062f \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u00a0<em data-nodeid=\"44642\">\u0628\u0639\u062f \u0627\u0632<\/em>\u0627\u062c\u0631\u0627. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<code data-backticks=\"1\" data-nodeid=\"44639\">\u0646\u062a\u06cc\u062c\u0647<\/code>\u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc<\/p>\n<\/li>\n<li data-nodeid=\"44243\">\n<p data-nodeid=\"44244\"><strong data-nodeid=\"44651\"><code data-backticks=\"1\" data-nodeid=\"44644\">@pre<\/code><\/strong>: \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u067e\u0633 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc<em data-nodeid=\"44652\">\u0642\u0628\u0644 \u0627\u0632<\/em>\u0639\u0645\u0644\u06cc\u0627\u062a \u0634\u0631\u0648\u0639 \u0634\u062f.<\/p>\n<\/li>\n<\/ul>\n<pre class=\"lang-ocl\" data-nodeid=\"44245\"><code data-language=\"ocl\">\u0645\u062a\u0646 Person::income(): Integer\r\n\u067e\u06cc\u0634 \u0634\u0631\u0637 adult: self.age &gt;= 18\r\n\u067e\u0633 \u0634\u0631\u0637 resultOK: result &lt; 5000\r\n\r\n\u0645\u062a\u0646 Company::hireEmployee(p: Person)\r\n\u067e\u0633 \u0634\u0631\u0637: employee = employee@pre-&gt;including(p)\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44246\">3. \u0639\u0628\u0627\u0631\u0627\u062a \u0628\u062f\u0646\u060c \u0627\u0648\u0644\u06cc\u0647 \u0648 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647<\/h3>\n<ul data-nodeid=\"44247\">\n<li data-nodeid=\"44248\">\n<p data-nodeid=\"44249\"><strong data-nodeid=\"44658\"><code data-backticks=\"1\" data-nodeid=\"44655\">\u0628\u062f\u0646<\/code><\/strong>: \u0646\u062a\u06cc\u062c\u0647 \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f (\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0628\u0627\u0634\u062f).<\/p>\n<\/li>\n<li data-nodeid=\"44250\">\n<p data-nodeid=\"44251\"><strong data-nodeid=\"44663\"><code data-backticks=\"1\" data-nodeid=\"44660\">\u0627\u0648\u0644\u06cc\u0647<\/code><\/strong>: \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0644\u06cc\u0647 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li data-nodeid=\"44252\">\n<p data-nodeid=\"44253\"><strong data-nodeid=\"44668\"><code data-backticks=\"1\" data-nodeid=\"44665\">\u0645\u0634\u062a\u0642 \u06a9\u0631\u062f\u0646<\/code><\/strong>: \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<pre class=\"lang-ocl\" data-nodeid=\"44254\"><code data-language=\"ocl\">\u0645\u062a\u0646 Person::income(): Integer\r\n\u0628\u062f\u0646: self.job.salary-&gt;sum()\r\n\r\n\u0645\u062a\u0646 Person::isMarried: Boolean\r\n\u0627\u0648\u0644\u06cc\u0647: false\r\n\r\n\u0645\u062a\u0646 Company::noEmployees: Integer\r\n\u0645\u0634\u062a\u0642 \u06a9\u0631\u062f\u0646: self.employee-&gt;size()\r\n<\/code><\/pre>\n<hr data-nodeid=\"44255\"\/>\n<h2 data-nodeid=\"44256\">6. \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 OCL<\/h2>\n<h3 data-nodeid=\"44257\">\u0639\u0628\u0627\u0631\u0627\u062a Let \u0648 Def<\/h3>\n<ul data-nodeid=\"44258\">\n<li data-nodeid=\"44259\">\n<p data-nodeid=\"44260\"><strong data-nodeid=\"44675\"><code data-backticks=\"1\" data-nodeid=\"44672\">let<\/code><\/strong>: \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u0644\u06cc \u062f\u0631\u0648\u0646 \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0648\u0627\u062d\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44261\"><code data-language=\"ocl\">let totHours: Integer = self.worksOn-&gt;collect(hours)-&gt;sum() in totHours &gt;= 30\r\n<\/code><\/pre>\n<\/li>\n<li data-nodeid=\"44262\">\n<p data-nodeid=\"44263\"><strong data-nodeid=\"44680\"><code data-backticks=\"1\" data-nodeid=\"44677\">def<\/code><\/strong>: \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06cc\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u06a9\u0647 \u0628\u0647 \u06cc\u06a9 \u0637\u0628\u0642\u0647 \u0648\u0627\u0628\u0633\u062a\u0647 \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44264\"><code data-language=\"ocl\">def: hasTitle(t: String): Boolean = self.job-&gt;exists(title = t)\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"44265\">\u0645\u0642\u0627\u062f\u06cc\u0631 \u0646\u0627\u0645\u0634\u062e\u0635 (\u0645\u0646\u0637\u0642 \u0633\u0647 \u0627\u0631\u0632\u0634\u06cc)<\/h3>\n<p data-nodeid=\"44266\">\u0627\u06af\u0631 \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0641\u0631\u0639\u06cc \u0646\u0627\u0645\u0634\u062e\u0635 \u0628\u0627\u0634\u062f (\u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u06cc\u06a9 \u0627\u0631\u062a\u0628\u0627\u0637 null)\u060c \u06a9\u0644 \u0639\u0628\u0627\u0631\u062a \u0646\u0627\u0645\u0634\u062e\u0635 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0639\u0645\u0644\u06af\u0631\u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0634\u062f\u0647 \u062f\u0627\u0631\u0646\u062f:<\/p>\n<ul data-nodeid=\"44267\">\n<li data-nodeid=\"44268\">\n<p data-nodeid=\"44269\"><code data-backticks=\"1\" data-nodeid=\"44683\">true \u06cc\u0627 &lt;\u0646\u0627\u0645\u0634\u062e\u0635&gt;<\/code>\u00a0=\u00a0<strong data-nodeid=\"44688\">true<\/strong><\/p>\n<\/li>\n<li data-nodeid=\"44270\">\n<p data-nodeid=\"44271\"><code data-backticks=\"1\" data-nodeid=\"44689\">false \u0648 &lt;\u0646\u0627\u0645\u0634\u062e\u0635&gt;<\/code>\u00a0=\u00a0<strong data-nodeid=\"44694\">\u0646\u0627\u062f\u0631\u0633\u062a<\/strong><\/p>\n<\/li>\n<li data-nodeid=\"44272\">\n<p data-nodeid=\"44273\"><code data-backticks=\"1\" data-nodeid=\"44695\">\u0646\u0627\u062f\u0631\u0633\u062a \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc &lt;\u062a\u0639\u0631\u06cc\u0641\u200c\u0646\u0634\u062f\u0647&gt;<\/code>\u00a0=\u00a0<strong data-nodeid=\"44700\">\u062f\u0631\u0633\u062a<\/strong><\/p>\n<\/li>\n<li data-nodeid=\"44274\">\n<p data-nodeid=\"44275\"><code data-backticks=\"1\" data-nodeid=\"44701\">&lt;\u062a\u0639\u0631\u06cc\u0641\u200c\u0646\u0634\u062f\u0647&gt; \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u062f\u0631\u0633\u062a<\/code>\u00a0=\u00a0<strong data-nodeid=\"44706\">\u062f\u0631\u0633\u062a<\/strong><\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"44276\">\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633 \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0634\u06cc\u0621 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636<\/h3>\n<ul data-nodeid=\"44277\">\n<li data-nodeid=\"44278\">\n<p data-nodeid=\"44279\"><strong data-nodeid=\"44714\"><code data-backticks=\"1\" data-nodeid=\"44711\">allInstances()<\/code><\/strong>: \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u062a\u0645\u0627\u0645 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n<pre class=\"lang-ocl\" data-nodeid=\"44280\"><code data-language=\"ocl\">Person.allInstances()-&gt;size() &lt;= 100\r\n<\/code><\/pre>\n<\/li>\n<li data-nodeid=\"44281\">\n<p data-nodeid=\"44282\"><strong data-nodeid=\"44727\">\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0634\u06cc\u0621:<\/strong>\u00a0<code data-backticks=\"1\" data-nodeid=\"44719\">oclIsTypeOf(\u0646\u0648\u0639)<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44721\">oclIsKindOf(\u0646\u0648\u0639)<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44723\">oclInState(\u062d\u0627\u0644\u062a)<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"44725\">oclIsNew<\/code>\u00a0(\u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u067e\u0633\u200c\u0627\u0632 \u0639\u0645\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f).<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"44283\"\/>\n<h2 data-nodeid=\"44284\">7. \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0648\u0631\u062f\u06cc \u062c\u0627\u0645\u0639: \u0645\u062f\u0644 \u0634\u0631\u06a9\u062a<\/h2>\n<p data-nodeid=\"44285\">\u0628\u0631\u0627\u06cc \u062a\u062b\u0628\u06cc\u062a \u0627\u06cc\u0646 \u0645\u0641\u0627\u0647\u06cc\u0645\u060c \u0627\u06cc\u0646\u062c\u0627 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u06a9\u0647 \u0628\u0631 \u0645\u062f\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0631\u06a9\u062a (\u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646\u060c \u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646\u200c\u0647\u0627\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u060c \u0648\u0627\u0628\u0633\u062a\u06af\u0627\u0646) \u0627\u0639\u0645\u0627\u0644 \u0634\u062f\u0647\u200c\u0627\u0646\u062f\u060c \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<h3 data-nodeid=\"44286\">\u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u067e\u0627\u06cc\u0647<\/h3>\n<pre class=\"lang-ocl\" data-nodeid=\"44287\"><code data-language=\"ocl\">-- \u0633\u0646 \u0628\u0627\u06cc\u062f &gt;= 18 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee inv: self.age() &gt;= 18\r\n\r\n-- \u062a\u0627\u0631\u06cc\u062e \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0627\u06cc\u062f \u067e\u0633 \u0627\u0632 \u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u062f \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee inv: self.hireDate &gt; self.birthDate\r\n\r\n-- \u062a\u0627\u0631\u06cc\u062e \u0634\u0631\u0648\u0639 \u0645\u062f\u06cc\u0631 \u0628\u0627\u06cc\u062f \u067e\u0633 \u0627\u0632 \u062a\u0627\u0631\u06cc\u062e \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee inv: self.manages-&gt;notEmpty() implies self.manages.startDate &gt; self.hireDate\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44288\">\u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0648 \u0631\u0627\u0628\u0637\u0647<\/h3>\n<pre class=\"lang-ocl\" data-nodeid=\"44289\"><code data-language=\"ocl\">-- \u0633\u0631\u067e\u0631\u0633\u062a \u0628\u0627\u06cc\u062f \u067e\u06cc\u0631\u062a\u0631 \u0648 \u062d\u0642\u0648\u0642 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u06a9\u0627\u0631\u0645\u0646\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee \r\ninv: self.supervisor-&gt;notEmpty() implies self.age() &gt; self.supervisor.age()\r\ninv: self.supervisor-&gt;notEmpty() implies self.salary &lt; self.supervisor.salary\r\n\r\n-- \u0633\u0631\u067e\u0631\u0633\u062a \u0628\u0627\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0632\u06cc\u0631\u062f\u0633\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee \r\ninv: self.subordinates-&gt;notEmpty() implies self.subordinates-&gt;forall(e | e.hireDate &gt; self.hireDate)\r\n\r\n-- \u0645\u062f\u06cc\u0631 \u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0645\u0646\u062f \u0627\u06cc\u0646 \u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Department \r\ninv: self.worksFor-&gt;includes(self.manages.employee)\r\n\r\n-- \u0645\u06a9\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u0628\u0627\u06cc\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u06a9\u0627\u0646\u200c\u0647\u0627\u06cc \u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Project \r\ninv: self.controls.locations-&gt;includes(self.location)\r\n\r\n-- \u06a9\u0627\u0631\u0645\u0646\u062f \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u062e\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u06a9\u0627\u0631 \u06a9\u0646\u062f\r\n\u0645\u062a\u0646: Employee \r\ninv: self.worksFor.controls-&gt;includesAll(self.worksOn.project)\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44290\">\u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 \u0648 \u062a\u06a9\u0631\u0627\u0631\u06af\u0631<\/h3>\n<pre class=\"lang-ocl\" data-nodeid=\"44291\"><code data-language=\"ocl\">-- \u0634\u0645\u0627\u0631\u0647 \u0645\u0644\u06cc \u0628\u0627\u06cc\u062f \u0634\u0646\u0627\u0633\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f\u06cc \u062f\u0631 \u0628\u06cc\u0646 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee \r\ninv: Employee.allInstances-&gt;forAll(e1, e2 | e1 &lt;&gt; e2 implies e1.SSN &lt;&gt; e2.SSN)\r\n\r\n-- \u0646\u0627\u0645 \u0648 \u0631\u0627\u0628\u0637\u0647 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u06cc\u062f \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0645\u0646\u062f \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646: Employee \r\ninv: self.dependents-&gt;forAll(e1, e2 | \r\n      e1 &lt;&gt; e2 implies (e1.name &lt;&gt; e2.name or e1.relationship &lt;&gt; e2.relationship))\r\n\r\n-- \u0648\u06cc\u0698\u06af\u06cc \u0645\u0634\u062a\u0642\u200c\u0634\u062f\u0647: \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u062f\u0631 \u06cc\u06a9 \u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646\r\n\u0645\u062a\u0646: Department \r\ninv: self.nbrEmployees = self.worksFor-&gt;size()\r\n\r\n-- \u06a9\u0627\u0631\u0645\u0646\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 \u062f\u0631 4 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\r\n\u0645\u062a\u0646: Employee \r\ninv: self.worksOn-&gt;size() &lt;= 4\r\n<\/code><\/pre>\n<h3 data-nodeid=\"44292\">\u0645\u0646\u0637\u0642 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632\u00a0<code data-backticks=\"1\" data-nodeid=\"44734\">\u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646<\/code>\u0648<code data-backticks=\"1\" data-nodeid=\"44736\">\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646<\/code><\/h3>\n<pre class=\"lang-ocl\" data-nodeid=\"44293\"><code data-language=\"ocl\">-- \u0645\u062c\u0645\u0648\u0639 \u0633\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc \u0628\u0627\u06cc\u062f \u0628\u06cc\u0646 30 \u062a\u0627 50 \u0633\u0627\u0639\u062a \u062f\u0631 \u0647\u0641\u062a\u0647 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646 Employee \r\n\u0645\u062d\u062f\u0648\u062f\u06cc\u062a: \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646 totHours: Integer = self.worksOn-&gt;\u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc(hours)-&gt;\u062c\u0645\u0639 \r\n     \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a totHours &gt;= 30 \u0648 totHours &lt;= 50\r\n\r\n-- \u062d\u062f\u0627\u06a9\u062b\u0631 2 \u06a9\u0627\u0631\u0645\u0646\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u0645\u062a\u0631 \u0627\u0632 10 \u0633\u0627\u0639\u062a \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062e\u0627\u0635 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f\r\n\u0645\u062a\u0646 Project \r\n\u0645\u062d\u062f\u0648\u062f\u06cc\u062a: self.worksOn-&gt;\u0627\u0646\u062a\u062e\u0627\u0628(hours &lt; 10)-&gt;\u0627\u0646\u062f\u0627\u0632\u0647 &lt;= 2\r\n\r\n-- \u062a\u0646\u0647\u0627 \u0645\u062f\u06cc\u0631\u0627\u0646 \u0628\u062e\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u0645\u062a\u0631 \u0627\u0632 5 \u0633\u0627\u0639\u062a \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f\r\n\u0645\u062a\u0646 Employee \r\n\u0645\u062d\u062f\u0648\u062f\u06cc\u062a: self.worksOn-&gt;\u0627\u0646\u062a\u062e\u0627\u0628(hours &lt; 5)-&gt;\u0639\u062f\u0645 \u062e\u0627\u0644\u06cc \u0628\u0648\u062f\u0646 \u0646\u062a\u06cc\u062c\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \r\n     self.worksFor.manages.employee = self\r\n\r\n-- \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u0628\u062f\u0648\u0646 \u0632\u06cc\u0631\u062f\u0633\u062a \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 10 \u0633\u0627\u0639\u062a \u062f\u0631 \u0647\u0645\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f\r\n\u0645\u062a\u0646 Employee \r\n\u0645\u062d\u062f\u0648\u062f\u06cc\u062a: self.subordinates-&gt;\u062e\u0627\u0644\u06cc \u0628\u0648\u062f\u0646 \u0646\u062a\u06cc\u062c\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f self.worksOn-&gt;\u0628\u0631\u0627\u06cc \u0647\u0645\u0647(hours &gt;= 10)\r\n\r\n-- \u0645\u062f\u06cc\u0631 \u0628\u062e\u0634 \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 5 \u0633\u0627\u0639\u062a \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0628\u062e\u0634 \u06a9\u0627\u0631 \u06a9\u0646\u062f\r\n\u0645\u062a\u0646 Department \r\n\u0645\u062d\u062f\u0648\u062f\u06cc\u062a: self.controls-&gt;\u0628\u0631\u0627\u06cc \u0647\u0645\u0647(p: Project | \r\n      self.manages.employee.worksOn-&gt;\u0627\u0646\u062a\u062e\u0627\u0628(hours &gt;= 5)-&gt;\u062f\u0627\u0631\u0627\u06cc(p))<\/code><\/pre>\n<h3 data-nodeid=\"44294\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0686\u0631\u062e\u0647\u200c\u0647\u0627 (\u0645\u0646\u0637\u0642 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc)<\/h3>\n<pre class=\"lang-ocl\" data-nodeid=\"44295\"><code data-language=\"ocl\">-- \u06cc\u06a9 \u06a9\u0627\u0631\u0645\u0646\u062f \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062e\u0648\u062f \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u062f\r\n\u0645\u062a\u0646 Employee \u0645\u062d\u062f\u0648\u062f\u06cc\u062a: self.subordinates-&gt;\u062d\u0630\u0641(self)\r\n\r\n-- \u0633\u0644\u0633\u0644\u0647 \u0645\u0631\u0627\u062a\u0628 \u0646\u0638\u0627\u0631\u062a\u06cc \u0646\u0628\u0627\u06cc\u062f \u0686\u0631\u062e\u0647\u200c\u0627\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\r\n\u0645\u062a\u0646 Employee \r\ndef: allSubordinates = self.subordinates-&gt;\u0627\u062a\u062d\u0627\u062f(\r\n          self.subordinates-&gt;\u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc(e: Employee | e.allSubordinates))\r\n\u0645\u062d\u062f\u0648\u062f\u06cc\u062a: self.allSubordinates-&gt;\u062d\u0630\u0641(self)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0648\u0627\u062f \u062f\u0631\u0633\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647\u060c \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0633\u0627\u0633\u06cc\u060c \u0646\u062d\u0648 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0645\u062f\u0644\u0633\u0627\u0632\u06cc UML \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. 1. \u0645\u0639\u0631\u0641\u06cc OCL \u0686\u0631\u0627 \u0628\u0647 OCL \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f \u0627\u06af\u0631\u0686\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc UML (\u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633) \u0628\u0631\u0627\u06cc \u0628\u0635\u0631\u06cc \u06a9\u0631\u062f\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0645\u0627\u0645 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u062e\u0635\u0627\u062a \u0631\u0627 \u0628\u06cc\u0627\u0646 [&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-12221","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>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) - Visual Paradigm \u0648\u0628\u0644\u0627\u06af<\/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\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/\" \/>\n<meta property=\"og:locale\" content=\"fa_IR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) - Visual Paradigm \u0648\u0628\u0644\u0627\u06af\" \/>\n<meta property=\"og:description\" content=\"\u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0648\u0627\u062f \u062f\u0631\u0633\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647\u060c \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0633\u0627\u0633\u06cc\u060c \u0646\u062d\u0648 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0645\u062f\u0644\u0633\u0627\u0632\u06cc UML \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. 1. \u0645\u0639\u0631\u0641\u06cc OCL \u0686\u0631\u0627 \u0628\u0647 OCL \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f \u0627\u06af\u0631\u0686\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc UML (\u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633) \u0628\u0631\u0627\u06cc \u0628\u0635\u0631\u06cc \u06a9\u0631\u062f\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0645\u0627\u0645 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u062e\u0635\u0627\u062a \u0631\u0627 \u0628\u06cc\u0627\u0646 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/\" \/>\n<meta property=\"og:site_name\" content=\"Visual Paradigm \u0648\u0628\u0644\u0627\u06af\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-24T07:26:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-26T09:36:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png\" \/>\n<meta name=\"author\" content=\"Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u062f\u0633\u062a\" \/>\n\t<meta name=\"twitter:data1\" content=\"Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u062f\u0642\u06cc\u0642\u0647\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/\",\"url\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/\",\"name\":\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) - Visual Paradigm \u0648\u0628\u0644\u0627\u06af\",\"isPartOf\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png\",\"datePublished\":\"2026-07-24T07:26:46+00:00\",\"dateModified\":\"2026-07-26T09:36:07+00:00\",\"author\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#breadcrumb\"},\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#primaryimage\",\"url\":\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png\",\"contentUrl\":\"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.visual-paradigm.com\/fa\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/#website\",\"url\":\"https:\/\/blog.visual-paradigm.com\/fa\/\",\"name\":\"Visual Paradigm \u0648\u0628\u0644\u0627\u06af\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.visual-paradigm.com\/fa\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fa-IR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/#\/schema\/person\/a649c442f11a53040710ddec750926c6\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/blog.visual-paradigm.com\/fa\/#\/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\/fa\/author\/vpadminuser\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) - Visual Paradigm \u0648\u0628\u0644\u0627\u06af","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\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/","og_locale":"fa_IR","og_type":"article","og_title":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) - Visual Paradigm \u0648\u0628\u0644\u0627\u06af","og_description":"\u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0648\u0627\u062f \u062f\u0631\u0633\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647\u060c \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0633\u0627\u0633\u06cc\u060c \u0646\u062d\u0648 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0645\u062f\u0644\u0633\u0627\u0632\u06cc UML \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. 1. \u0645\u0639\u0631\u0641\u06cc OCL \u0686\u0631\u0627 \u0628\u0647 OCL \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f \u0627\u06af\u0631\u0686\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc UML (\u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633) \u0628\u0631\u0627\u06cc \u0628\u0635\u0631\u06cc \u06a9\u0631\u062f\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0645\u0627\u0645 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u062e\u0635\u0627\u062a \u0631\u0627 \u0628\u06cc\u0627\u0646 [&hellip;]","og_url":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/","og_site_name":"Visual Paradigm \u0648\u0628\u0644\u0627\u06af","article_published_time":"2026-07-24T07:26:46+00:00","article_modified_time":"2026-07-26T09:36:07+00:00","og_image":[{"url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png","type":"","width":"","height":""}],"author":"Admin","twitter_card":"summary_large_image","twitter_misc":{"\u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u062f\u0633\u062a":"Admin","\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646":"4 \u062f\u0642\u06cc\u0642\u0647"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/","url":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/","name":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL) - Visual Paradigm \u0648\u0628\u0644\u0627\u06af","isPartOf":{"@id":"https:\/\/blog.visual-paradigm.com\/fa\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#primaryimage"},"image":{"@id":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png","datePublished":"2026-07-24T07:26:46+00:00","dateModified":"2026-07-26T09:36:07+00:00","author":{"@id":"https:\/\/blog.visual-paradigm.com\/fa\/#\/schema\/person\/a649c442f11a53040710ddec750926c6"},"breadcrumb":{"@id":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#breadcrumb"},"inLanguage":"fa-IR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/"]}]},{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#primaryimage","url":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png","contentUrl":"https:\/\/blog.visual-paradigm.com\/wp-content\/uploads\/2026\/07\/img_6a63134535ef7.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.visual-paradigm.com\/fa\/a-comprehensive-guide-to-the-object-constraint-language-ocl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.visual-paradigm.com\/fa\/"},{"@type":"ListItem","position":2,"name":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0632\u0628\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0634\u06cc\u0621 (OCL)"}]},{"@type":"WebSite","@id":"https:\/\/blog.visual-paradigm.com\/fa\/#website","url":"https:\/\/blog.visual-paradigm.com\/fa\/","name":"Visual Paradigm \u0648\u0628\u0644\u0627\u06af","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.visual-paradigm.com\/fa\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fa-IR"},{"@type":"Person","@id":"https:\/\/blog.visual-paradigm.com\/fa\/#\/schema\/person\/a649c442f11a53040710ddec750926c6","name":"Admin","image":{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/blog.visual-paradigm.com\/fa\/#\/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\/fa\/author\/vpadminuser\/"}]}},"modified_by":"Admin","_links":{"self":[{"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/posts\/12221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/comments?post=12221"}],"version-history":[{"count":0,"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/posts\/12221\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/media?parent=12221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/categories?post=12221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.visual-paradigm.com\/fa\/wp-json\/wp\/v2\/tags?post=12221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}