{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/old/03-assignments/01-assignment_1",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV607"}},"mdx":{"fields":{"id":"017ae891-c611-5af8-af9d-a5b25282660d","title":"Assignment 1","slug":"/old/03-assignments/01-assignment_1"},"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\": \"Assignment 1\",\n  \"metaTitle\": \"Assignment 1 Tasks\",\n  \"metaDescription\": \"This is the meta description for this page\"\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, \"This describes the task for the first assignment. Read the full instructions before starting to work, then perform all the steps in order. Be sure to document all assumptions and changes you are making.\"), mdx(\"p\", null, \"Please use English in your models and documents.\"), mdx(\"p\", null, \"All files should be viewable in gitlab and not need download, linking to external tools etc. Do not use word documents etc.\"), mdx(\"p\", null, \"All projects will be generated on gitlab.\"), mdx(\"h2\", null, \"Goals\"), mdx(\"p\", null, \"In this assignment you show that you:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"grasp the use of conceptual classes in domain modeling\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"know how to use attributes in conceptual classes\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"know how to relate conceptual classes with eachother\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"know the difference between analysis and design\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"know the difference between a UML design class diagram and a UML domain model class diagram\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"can create a model for a basic problem \")), mdx(\"h2\", null, \"Requirements for Grade 2 (Passing Grade)\"), mdx(\"h3\", null, \"Working Process\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You work with this grade in your project A1_2 in the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"main\"), \" branch.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Commit and push to your work regularly.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"When done you create a merge request for merging your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"main\"), \"-branch to the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"release\"), \"-branch and select the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"A1 Grade 2\"), \" milestone.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Tick the corresponding check-boxes in the merge request. Do \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" close or merge, this is done by the course administration when the assignment is done.\")), mdx(\"h3\", null, \"Tasks\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Read problem description for the Stuff Lending System\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Perform an object-oriented analysis using \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"domain modeling\"), \" based on the problem description and the use cases. These requirements delimit the domain model. Remember that the only thing certain about requirements is that they are contradictory, has too few details and are generally incorrect :)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"You should create a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"stuff_lending_system.md\"), \" file where you show your diagram(s) and any accompanying notes.\"))), mdx(\"h4\", null, \"Common Misstakes\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"UML Notation Issues\"), \": A domain model uses a subset of the UML class diagram notation. Only attributes, associations and generalization notation is used. The notation for the associtaion is limited to using association name (not role name) and multiplicitiy.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Use of Key/IDs\"), \": Classes should be related via associations \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" keys or IDs\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Flowchart Thinking\"), \": A domain model is a static model it does \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" show a flow or sequence of events (this is shown in the use cases). The domain model should show what information is needed and how the information needs to be connected to perform the requirements.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Time/History\"), \": It is easy to forget about things that needs to be remembered over time, check the requirements carefully.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Reflecting the Requirements\"), \": Showing that someone can do something is not the purpose of the domain model, you should focus on what information is needed so that the requirments can be performed.\")), mdx(\"h2\", null, \"Requirements for Grade 3\"), mdx(\"h3\", null, \"Working Process\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You work with this grade in your project A1_3 in the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"main\"), \" branch.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Commit to your work regularly to your working branch\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"When done you create a merge request for merging your final \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"main\"), \"-branch to the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"release\"), \"-branch and select the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"A1 Grade 3\"), \" milestone.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Tick the corresponding check-boxes in the merge request. Do \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" close or merge, this is done by the course administration when the assignment is done.\")), mdx(\"h3\", null, \"Tasks\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Grade 2 tasks must be done\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Read problem description for the Yacht Club System\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Perform an object-oriented analysis using \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"domain modeling\"), \" based on the problem description and the use cases. These requirements delimit the domain model. Remember that the only thing certain about requirements is that they are contradictory, has too few details and are generally incorrect :)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"You should create a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"yacht_club_system.md\"), \" file where you show your diagram(s) and any accompanying notes.\"))), mdx(\"h2\", null, \"Requirements for Grade 4\"), mdx(\"h3\", null, \"Working Process\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You work with this grade in your project A1_4 in the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"main\"), \" branch.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Commit and push to your work regularly.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"When done you create a merge request for merging your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"main\"), \"-branch to the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"release\"), \"-branch and select the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"A1 Grade 4\"), \" milestone.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Tick the corresponding check-boxes in the merge request. Do \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"not\"), \" close or merge, this is done by the course administration when the assignment is done.\")), mdx(\"h3\", null, \"Tasks\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Grade 2 and Grade 3 tasks must be done\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Construct a comprehensive domain model for any of the following, the domain model should be reasonably general, but also capture the unique. Please visit in real life and study how it works (maybe even an interview with a domain expert if / when you discover ambiguities), to get a deeper understanding. Document carefully any assumptions you make.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Online-media/book store (bokus, amazon, cdon, \\u2026)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"E-commerce site for computer stuff (netonnet, komplett, dustin, \\u2026)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"A library\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Fast food restaurant (mcdonalds, burger king, sibylla, max)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Your own suggestion (please contact Tobias for approval BEFORE you start)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"You should create a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"domain_model.md\"), \" file where you show your diagram(s) and any accompanying notes.\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#goals","title":"Goals"},{"url":"#requirements-for-grade-2-passing-grade","title":"Requirements for Grade 2 (Passing Grade)","items":[{"url":"#working-process","title":"Working Process"},{"url":"#tasks","title":"Tasks","items":[{"url":"#common-misstakes","title":"Common Misstakes"}]}]},{"url":"#requirements-for-grade-3","title":"Requirements for Grade 3","items":[{"url":"#working-process-1","title":"Working Process"},{"url":"#tasks-1","title":"Tasks"}]},{"url":"#requirements-for-grade-4","title":"Requirements for Grade 4","items":[{"url":"#working-process-2","title":"Working Process"},{"url":"#tasks-2","title":"Tasks"}]}]},"parent":{"relativePath":"old/03-assignments/01-assignment_1.md"},"frontmatter":{"metaTitle":"Assignment 1 Tasks","metaDescription":"This is the meta description for this page","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":"017ae891-c611-5af8-af9d-a5b25282660d"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}