{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/old/02-theory/domain_class_diagram",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV607"}},"mdx":{"fields":{"id":"7c7672dd-8432-54de-acfa-de8c95073c40","title":"UML Domain Model","slug":"/old/02-theory/domain_class_diagram"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"UML Domain Model\",\n  \"metaTitle\": \"UML Notation for Domain Model Class Diagrams\",\n  \"metaDescription\": \"Domain Model UML Notation\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"A domain model is used to capture the generic knowledge in a particular area (domain). A domain model is to reflect this domain and is not about software.\"), mdx(\"p\", null, \"A domain model is documented using a subset of the UML class diagram notation. I.e. the notation for domain models are not as detailed as for a design model.\"), mdx(\"h2\", null, \"Class\"), mdx(\"p\", null, \"In a domain model a class only contains a name and attributes, operations are \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"not\"), \" used in domain modeling.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"422px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/courses/object-oriented-analysis-and-design/static/77ff0f38b8c90a024d22594b0589c4d1/fa5c1/uml_domain_class.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"48.64864864864865%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABYlAAAWJQFJUiTwAAABPElEQVQoz3XSbY6CMBAGYO5/GYnSgHFAbCQNKi2aaqLQb1SOsStVom72+dVOOnmnTYOmadqBGLQvAIAQmk6nRVFIKcdjo6ZpAkopY6yu66qqyrL067qu0zQNw3AymQDA4XAY6yNKaUAIiaIoSZLtdhvHcRRFm83GWuucu9/vfd9fr1ellP5kjHkkM8aWy6XPnM/nGGMhRN/33cAYYwfuU9d1UsqgLMssywBgv99nA0op5/w0sP9wzgkhgt1ut16vAYBSSgjBGCOEqqrinBNCpJTWWj+2b/OzPJuLokAIAUAYhovFgnPu33m1WjHG8jyP4zhNU4xxnudJksxms+PxeLvd2rYNpJTGGK21Usq8aK2FEF3XOed8xTnnY33y886Xy8V3KqXkQL28b7/qSqnz+fxIHr+HePO1/es3+QeRd/QjGwq72AAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"UML Domain Model Class\",\n    \"title\": \"UML Domain Model Class\",\n    \"src\": \"/courses/object-oriented-analysis-and-design/static/77ff0f38b8c90a024d22594b0589c4d1/fa5c1/uml_domain_class.png\",\n    \"srcSet\": [\"/courses/object-oriented-analysis-and-design/static/77ff0f38b8c90a024d22594b0589c4d1/a2ead/uml_domain_class.png 259w\", \"/courses/object-oriented-analysis-and-design/static/77ff0f38b8c90a024d22594b0589c4d1/fa5c1/uml_domain_class.png 422w\"],\n    \"sizes\": \"(max-width: 422px) 100vw, 422px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"Association\"), mdx(\"p\", null, \"The primary relation between classes in a domain model. If the requirements indicate that a more or less persistent (time independent) link needs to exist between two objects, then there should likely be an association between the classes.\"), mdx(\"p\", null, \"Domain model associations have a descriptive association name, and multiplicities, the association does \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"not\"), \" have any navigability.\"), mdx(\"p\", null, \"This example shows that a student can attend several courses, and a course can be attended by several students. However, we cannot say e.g. when a student attended the course, just that a student has attended. Dependeing on the actual requirements this could be enough.\\n\", mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"738px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/courses/object-oriented-analysis-and-design/static/5981b5c32780c191f6bef191cddd10e2/774b6/uml_domain_student_course_1.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"13.513513513513512%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAjUlEQVQI1zXNsQ6DIBRAUf7/hxx0cSTiYMAHIaiBdmBiKQQCSJtgerY7XcQ5H8dxGIZ935VSMcbvX0opxthaezLnfJ4nAEzTNM+zlBIBwLIsGGMA2LbNWuu9/3RCCMaYc8531lpKKQAQQtZ15ZwjrfW7M8YcxxFCaK2VUmqtz7B2932HEK7rMsa8Oq31DysgoYOVAjagAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"UML Domain Model Associations\",\n    \"title\": \"UML Domain Model Associations\",\n    \"src\": \"/courses/object-oriented-analysis-and-design/static/5981b5c32780c191f6bef191cddd10e2/774b6/uml_domain_student_course_1.png\",\n    \"srcSet\": [\"/courses/object-oriented-analysis-and-design/static/5981b5c32780c191f6bef191cddd10e2/a2ead/uml_domain_student_course_1.png 259w\", \"/courses/object-oriented-analysis-and-design/static/5981b5c32780c191f6bef191cddd10e2/6b9fd/uml_domain_student_course_1.png 518w\", \"/courses/object-oriented-analysis-and-design/static/5981b5c32780c191f6bef191cddd10e2/774b6/uml_domain_student_course_1.png 738w\"],\n    \"sizes\": \"(max-width: 738px) 100vw, 738px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h3\", null, \"Association Class\"), mdx(\"p\", null, \"In some cases there is a need to add information to an instance of an association. This can be modeled using associations and classes but there is also a special notation for this.\"), mdx(\"p\", null, \"This example captures that a student can attend several courses and that a course can be attended by several students. This model adds information so that we can know when a student attended a course and the grade. The problem here is that it is visually messy to understand that a Student attends Courses.\\n\", mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1035px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/courses/object-oriented-analysis-and-design/static/685e57b5e2b7462dd2dd8b75896ba10e/20751/uml_domain_student_course_2.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"14.285714285714285%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAmElEQVQI1yXNQQqEMAwAQP//Ho+CoognQcEg9OBBDxULTRujYGh2F9z5wGTW2n3fQwiqyszee1Udx7GqqrIsh2EQkZSSiHxfRHQch3MOEbO2beu6BgDnHDPHGM/zLIoiz/N5no0xiGit3bbtui5mBoCu65qmmaYpo1cIQUQ+r+d5+r4HgHVdl2W57/t/qmpKCRFjjETkvf8B0/ui07F2jToAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"UML Domain Model Associations\",\n    \"title\": \"UML Domain Model Associations\",\n    \"src\": \"/courses/object-oriented-analysis-and-design/static/685e57b5e2b7462dd2dd8b75896ba10e/e3189/uml_domain_student_course_2.png\",\n    \"srcSet\": [\"/courses/object-oriented-analysis-and-design/static/685e57b5e2b7462dd2dd8b75896ba10e/a2ead/uml_domain_student_course_2.png 259w\", \"/courses/object-oriented-analysis-and-design/static/685e57b5e2b7462dd2dd8b75896ba10e/6b9fd/uml_domain_student_course_2.png 518w\", \"/courses/object-oriented-analysis-and-design/static/685e57b5e2b7462dd2dd8b75896ba10e/e3189/uml_domain_student_course_2.png 1035w\", \"/courses/object-oriented-analysis-and-design/static/685e57b5e2b7462dd2dd8b75896ba10e/20751/uml_domain_student_course_2.png 1037w\"],\n    \"sizes\": \"(max-width: 1035px) 100vw, 1035px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"This example does the same, but using a more elegant notation using an association class.\\n\", mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"719px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/courses/object-oriented-analysis-and-design/static/bd1b0d1e2a337524c0f79584ca7c1e36/073e9/uml_domain_student_course_association_class.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"37.83783783783784%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAAA4ElEQVQY043PP69GMByGYd//wxAG/2JnkAjhp6JlEdKKMHCiKu1JKu90zpu4pme5h8fIssw0Td/3q6rCGO/7zjm/73uaJgBY11UIcV3XeZ4YYwAIgiAMQwAghBhVVWUaAJRluW3b/vGjPXtZlrIsEUK5VmsGY2zRniGlVJrQ1IeUcp5nSumsUUoZY4b6QwjBOT+O47nAOVdf/BM3TeO6rm3blmU5jpOm6XVdr2IpZZ7nQRBEUYQQIoTUdX2e59u4KArP85IkGYZhHEdCyNtYKYUQiuMYY9z3fdd1bdt+u/0LKDu9+ckkzJAAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"UML Domain Model Association Class\",\n    \"title\": \"UML Domain Model Association Class\",\n    \"src\": \"/courses/object-oriented-analysis-and-design/static/bd1b0d1e2a337524c0f79584ca7c1e36/073e9/uml_domain_student_course_association_class.png\",\n    \"srcSet\": [\"/courses/object-oriented-analysis-and-design/static/bd1b0d1e2a337524c0f79584ca7c1e36/a2ead/uml_domain_student_course_association_class.png 259w\", \"/courses/object-oriented-analysis-and-design/static/bd1b0d1e2a337524c0f79584ca7c1e36/6b9fd/uml_domain_student_course_association_class.png 518w\", \"/courses/object-oriented-analysis-and-design/static/bd1b0d1e2a337524c0f79584ca7c1e36/073e9/uml_domain_student_course_association_class.png 719w\"],\n    \"sizes\": \"(max-width: 719px) 100vw, 719px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"Datatype Class\"), mdx(\"p\", null, \"In some cases you may find yourself modeling a simplistic class that is used by many other classes. This would create a lot of associations that could make it impossible to read the model visually. you may then opt to use the class as a data type class. If so it is treated more like a primitive data type than a class. E.g. you use it as attributes and not associations.\"), mdx(\"p\", null, \"Note that this is an exception and that it should not be abused, i.e. all classes are treated as data type classes and there are no association.\"), mdx(\"h2\", null, \"Generalization\"), mdx(\"p\", null, \"In some cases it can be useful to be able to model hierarchies using generalisation. Typically only specific classes exist in the actual domain. E.g. in reality you only find \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Apple\"), \", \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Pear\"), \", \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Banana\"), \" in a model you may however choose to make an abstraction \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Fruit\"), \" if it is suitable. Sub classes can then be used to either examplify what the abstraction means, add aditional data, or indicate that there is some difference in behavior between the more specific classes.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"701px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/courses/object-oriented-analysis-and-design/static/c42456463e3f3d26cc09406e17b6b21c/49217/uml_domain_generalisation.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"38.22393822393822%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABJElEQVQY04XOTY+CMBCAYf7///HiwXDhQAxV6qKE+NGRWlLrARLpDFXLRrrZbLKb7HPs9M1MNP7gvR/HsWmasiwZY7PZ7GNijPme/hT9jgGAMcY5X6/Xm80mTVOl1P9xgIjdpKqqdkJE41/e8ev1QkQ7QUQiGoaBiI7Ho7XWOUdEYdr3PSKGE7z379g51/d9CEKMiMMwtG0bfgdE9Hg8ENE597VZa80YWy6X1+tVa+29v9/vTdMAQJqml8tFKWWtfT6fWmsASJIkz3OllDEmKssyjuPFYrHdbjnnRCSl5JyvVqs4jouiyLLMGENEeZ5nWTafz5MkKYpit9tFQoi6rqWUQojT6eScu91uh8PhfD5LKQGgqqqu65xz+/0+PNZ1LYQAgE8zWrvsWWLqmQAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"UML Domain Model Class\",\n    \"title\": \"UML Domain Model Class\",\n    \"src\": \"/courses/object-oriented-analysis-and-design/static/c42456463e3f3d26cc09406e17b6b21c/49217/uml_domain_generalisation.png\",\n    \"srcSet\": [\"/courses/object-oriented-analysis-and-design/static/c42456463e3f3d26cc09406e17b6b21c/a2ead/uml_domain_generalisation.png 259w\", \"/courses/object-oriented-analysis-and-design/static/c42456463e3f3d26cc09406e17b6b21c/6b9fd/uml_domain_generalisation.png 518w\", \"/courses/object-oriented-analysis-and-design/static/c42456463e3f3d26cc09406e17b6b21c/49217/uml_domain_generalisation.png 701w\"],\n    \"sizes\": \"(max-width: 701px) 100vw, 701px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"Composition and Aggregation\"), mdx(\"p\", null, \"The composition can be used to describe a physical whole part relation. Aggregation is typically \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"not\"), \" used in a domain model.\"), mdx(\"h2\", null, \"Dependency and Realziation\"), mdx(\"p\", null, \"These relations are typically \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"not\"), \" used in a domain model.\"));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#class","title":"Class"},{"url":"#association","title":"Association","items":[{"url":"#association-class","title":"Association Class"}]},{"url":"#datatype-class","title":"Datatype Class"},{"url":"#generalization","title":"Generalization"},{"url":"#composition-and-aggregation","title":"Composition and Aggregation"},{"url":"#dependency-and-realziation","title":"Dependency and Realziation"}]},"parent":{"relativePath":"old/02-theory/domain_class_diagram.md"},"frontmatter":{"metaTitle":"UML Notation for Domain Model Class Diagrams","metaDescription":"Domain Model UML Notation","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/forelasningar-2026","title":"Föreläsningar 2026"}}},{"node":{"fields":{"slug":"/","title":"Objektorienterad analys och design med UML (1DV607)"}}},{"node":{"fields":{"slug":"/laborationer-2026","title":"Laborationer 2026"}}},{"node":{"fields":{"slug":"/old","title":"Old"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-2-objektorienterad-analys-och-uml","title":"Tema 2 – Objektorienterad analys och modellering med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-3-objektorienterad-design-med-uml","title":"Tema 3 – Objektorienterad design med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/01-kursintroduktion-och-domanmodellering","title":"1. Kursintroduktion och domänmodellering"}}},{"node":{"fields":{"slug":"/forelasningar-2026/02-objektorienterad-analys-och-modellering","title":"2. Objektorienterad analys och modellering"}}},{"node":{"fields":{"slug":"/forelasningar-2026/03-uml-modellering","title":"3. Fortsatt modellering med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/04-grasp","title":"4. GRASP"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-1-grunderna","title":"Tema 1 – Grunderna i objektorienterad analys och design"}}},{"node":{"fields":{"slug":"/laborationer-2026/01-laboration-1","title":"Laboration 1 – Domänmodellering"}}},{"node":{"fields":{"slug":"/old/001-introduction","title":"Course Introduction"}}},{"node":{"fields":{"slug":"/old/01-information","title":"Course Information"}}},{"node":{"fields":{"slug":"/laborationer-2026/02-laboration-2","title":"Laboration 2"}}},{"node":{"fields":{"slug":"/old/02-theory","title":"Theory"}}},{"node":{"fields":{"slug":"/old/03-assignments","title":"Assignments"}}},{"node":{"fields":{"slug":"/old/01-information/01-welcome","title":"Welcome to the Course"}}},{"node":{"fields":{"slug":"/old/01-information/registration","title":"Course Registration"}}},{"node":{"fields":{"slug":"/old/02-theory/01-intro_to_ooad","title":"Introduction to Object Oriented Analysis and Design"}}},{"node":{"fields":{"slug":"/old/01-information/grading","title":"Course Grading"}}},{"node":{"fields":{"slug":"/old/02-theory/03_software_architecture","title":"Software Architecture"}}},{"node":{"fields":{"slug":"/old/02-theory/04_mvc","title":"Model View Controller"}}},{"node":{"fields":{"slug":"/old/02-theory/02-domain_modeling","title":"Domain Modeling"}}},{"node":{"fields":{"slug":"/old/02-theory/06_grasp1","title":"GRASP 1"}}},{"node":{"fields":{"slug":"/old/02-theory/05_layers_components","title":"Layers & Components"}}},{"node":{"fields":{"slug":"/old/02-theory/07_grasp2","title":"GRASP 2"}}},{"node":{"fields":{"slug":"/old/02-theory/09_gof1","title":"GoF 1"}}},{"node":{"fields":{"slug":"/old/02-theory/10_gof2","title":"GoF 2"}}},{"node":{"fields":{"slug":"/old/02-theory/11_solid","title":"SOLID"}}},{"node":{"fields":{"slug":"/old/02-theory/08_grasp3","title":"GRASP 3"}}},{"node":{"fields":{"slug":"/old/02-theory/design_class_diagram","title":"UML Design Class Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/design_class_relations","title":"UML Design Class Relations"}}},{"node":{"fields":{"slug":"/old/02-theory/design_object_diagram","title":"UML Object Diagram Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/99-exercises","title":"Exercises"}}},{"node":{"fields":{"slug":"/old/02-theory/design_package_diagram","title":"UML Package Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/domain_class_diagram","title":"UML Domain Model"}}},{"node":{"fields":{"slug":"/old/02-theory/reading-instructions","title":"Reading Instructions"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1","title":"Assignment 1"}}},{"node":{"fields":{"slug":"/old/03-assignments/02-assignment_2","title":"Assignment 2"}}},{"node":{"fields":{"slug":"/old/03-assignments/03-assignment_3","title":"Assignment 3"}}},{"node":{"fields":{"slug":"/old/03-assignments/04-yahtzee","title":"Yahtzee Assignment"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a","title":"Övningsuppgifter del A"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-b","title":"Övningsuppgifter del B"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1/lending-system-problem-description","title":"Stuff Lending System Problem Description"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1/yacht-club-problem-description","title":"Yacht Club Problem Description"}}},{"node":{"fields":{"slug":"/old/old_template/videologgar","title":"Vlog"}}},{"node":{"fields":{"slug":"/old/old_template/codeblock/1-index","title":"Sub Page"}}},{"node":{"fields":{"slug":"/old/03-assignments/02-assignment_2/test_specification","title":"Test Specification"}}},{"node":{"fields":{"slug":"/old/old_template/codeblock","title":"Syntax Highlighting"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a/01-hello-world","title":"Hello world"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a/02-simple-addition","title":"Enkel addition"}}}]}},"pageContext":{"id":"7c7672dd-8432-54de-acfa-de8c95073c40"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}