{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/old/02-theory/08_grasp3",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV607"}},"mdx":{"fields":{"id":"71faf3cd-06eb-5374-a81d-c2b11ce56905","title":"GRASP 3","slug":"/old/02-theory/08_grasp3"},"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\": \"GRASP 3\",\n  \"metaTitle\": \"Further GRASP Patterns Controller\",\n  \"metaDescription\": \"GRASP, Responsibility Driven Design, Hogh Cohesion, Low Coupling, Polymorphism, Indirection, Protected Variations, Refactoring, Class Diagram, Generalization, Inheritance\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Youtube = makeShortcode(\"Youtube\");\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(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GRASP: High Cohesion\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GRASP: Low Coupling\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GRASP: Polymorphism\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GRASP: Indirection\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GRASP: Protected Variations\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GRASP: Refactoring\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"More Example Design and Implementation (Black Jack)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Refactoring using Generalziation and Inheritance\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Creating a class diagram based on the implementation\")), mdx(\"h2\", null, \"Reading instructions\"), mdx(\"p\", null, \"Applying UML and Patterns: Applying UML and Patterns:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"12 - Requirements to Design Iteratively\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"14 - On to Object Design\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"15 - UML Interaction Diagrams\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"16 - UML Class Diagrams\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"17 - GRASP Designing Objects with Responsibilities\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"18 - Object Design Examples with GRASP\")), mdx(\"h2\", null, \"Materials\"), mdx(\"h3\", null, \"GRASP Advanced Information Expert, Design Reasoning\"), mdx(\"p\", null, \"GRASP advanced information expert design, reasoning and implementation in the Black Jack Game\"), mdx(Youtube, {\n    link: \"https://www.youtube.com/embed/NfMdeqgXTJY\",\n    mdxType: \"Youtube\"\n  }), mdx(\"h3\", null, \"Class Diagram Generation, GRASP\"), mdx(\"p\", null, \"Continues the design, implementation using the GRASP: Information Expert and Controller. Looks into the concept of System Events, Role (Actor) vs. Domain class and the use of sequence diagrams.\"), mdx(Youtube, {\n    link: \"https://www.youtube.com/embed/xrNrbOHW5xQ\",\n    mdxType: \"Youtube\"\n  }));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#reading-instructions","title":"Reading instructions"},{"url":"#materials","title":"Materials","items":[{"url":"#grasp-advanced-information-expert-design-reasoning","title":"GRASP Advanced Information Expert, Design Reasoning"},{"url":"#class-diagram-generation-grasp","title":"Class Diagram Generation, GRASP"}]}]},"parent":{"relativePath":"old/02-theory/08_grasp3.md"},"frontmatter":{"metaTitle":"Further GRASP Patterns Controller","metaDescription":"GRASP, Responsibility Driven Design, Hogh Cohesion, Low Coupling, Polymorphism, Indirection, Protected Variations, Refactoring, Class Diagram, Generalization, Inheritance","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":"71faf3cd-06eb-5374-a81d-c2b11ce56905"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}