{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/forelasningar-2026/00-tema-3-objektorienterad-design-med-uml",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV607"}},"mdx":{"fields":{"id":"99d1cc81-2bd1-5d35-ae8a-db0def61e3cd","title":"Tema 3 – Objektorienterad design med UML","slug":"/forelasningar-2026/00-tema-3-objektorienterad-design-med-uml"},"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\": \"Tema 3 – Objektorienterad design med UML\",\n  \"metaTitle\": \"Tema 3 – Objektorienterad design med UML | 1DV607\",\n  \"metaDescription\": \"Syfte, innehåll, läsanvisningar och studiefrågor om objektorienterad design med UML.\",\n  \"order\": 0.75\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, \"Tema 3 behandlar objektorienterad design och hur UML anv\\xE4nds f\\xF6r att beskriva programvarans struktur inf\\xF6r implementationen.\"), mdx(\"h2\", null, \"Kursm\\xE5l\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"A1:\"), \" F\\xF6rst\\xE5 principerna f\\xF6r objektorienterad design.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"B1:\"), \" Utveckla objektorienterade modeller i UML f\\xF6r olika problem.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"B2:\"), \" \\xD6vers\\xE4tta objektorienterade modeller till ett objektorienterat programmeringsspr\\xE5k och omv\\xE4nt.\")), mdx(\"h2\", null, \"Syfte\"), mdx(\"p\", null, \"Temat introducerar \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"objektorienterad design\"), \", d\\xE4r analysmodeller f\\xF6rfinas till detaljerade designmodeller som kan implementeras. Du f\\xE5r l\\xE4ra dig att beskriva ett mjukvarusystems statiska och fysiska struktur med klassdiagram, paketdiagram, komponentdiagram och distributionsdiagram.\"), mdx(\"p\", null, \"Objektorienterad design hj\\xE4lper oss att hantera komplexitet, skapa modul\\xE4ra l\\xF6sningar och \\xF6verbrygga avst\\xE5ndet mellan analys och implementation. Temat introducerar ocks\\xE5 \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"ansvarsdriven design\"), \" som metod f\\xF6r att f\\xF6rdela beteenden och samarbetsansvar mellan objekt.\"), mdx(\"h2\", null, \"Inneh\\xE5ll\"), mdx(\"h3\", null, \"Objektorienterad design\"), mdx(\"p\", null, \"Analysmodellen f\\xF6rfinas till en design med klasser, attribut, metoder och relationer.\"), mdx(\"h3\", null, \"Klassdiagram\"), mdx(\"p\", null, \"Klassdiagram beskriver systemets statiska struktur med bland annat klasser, associationer, beroenden och multiplicitet.\"), mdx(\"h3\", null, \"Paketdiagram\"), mdx(\"p\", null, \"Paketdiagram organiserar klasser i logiska enheter. Det st\\xF6djer modularitet och kan minska kopplingen mellan systemets delar.\"), mdx(\"h3\", null, \"Komponentdiagram\"), mdx(\"p\", null, \"Komponentdiagram beskriver drifts\\xE4ttningsbara mjukvaruenheter och deras gr\\xE4nssnitt.\"), mdx(\"h3\", null, \"Distributionsdiagram\"), mdx(\"p\", null, \"Distributionsdiagram visar hur komponenter placeras p\\xE5 h\\xE5rdvarunoder och beskriver systemets struktur under k\\xF6rning.\"), mdx(\"h3\", null, \"Ansvarsdriven design\"), mdx(\"p\", null, \"Ansvarsdriven design anv\\xE4nds f\\xF6r att identifiera objekts ansvar och samarbeten innan den detaljerade klassdesignen best\\xE4ms. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"CRC-kort\"), \", Class\\u2013Responsibility\\u2013Collaborator, kan anv\\xE4ndas f\\xF6r att utforska klassers ansvar och samarbetspartner.\"), mdx(\"h3\", null, \"Grundl\\xE4ggande designprinciper\"), mdx(\"p\", null, \"Temat introducerar KISS, l\\xE5g koppling och h\\xF6g sammanh\\xE5llning.\"), mdx(\"h2\", null, \"L\\xE4sanvisningar\"), mdx(\"p\", null, \"L\\xE4s f\\xF6ljande avsnitt i Craig Larmans \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Applying UML and Patterns\"), \":\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"kapitel 13 om paketdiagram,\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"kapitel 16 om klassdiagram,\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"avsnitt 17.3 om ansvarsdriven design,\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"avsnitt 37.1 om distributionsdiagram,\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"avsnitt 37.2 om komponentdiagram.\")), mdx(\"h2\", null, \"Studiefr\\xE5gor\"), mdx(\"h3\", null, \"Objektorienterad design\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad \\xE4r syftet med objektorienterad design, och hur f\\xF6rfinar den resultatet fr\\xE5n analysen?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur hj\\xE4lper klassdiagram oss att f\\xF6rst\\xE5 systemets struktur innan vi b\\xF6rjar programmera?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka \\xE4r de viktigaste delarna i ett klassdiagram, och hur relaterar de till objekts ansvar?\")), mdx(\"h3\", null, \"UML-klassdiagram\"), mdx(\"ol\", {\n    \"start\": 4\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka \\xE4r de grundl\\xE4ggande delarna i ett UML-klassdiagram? Lista och beskriv minst fem.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur visas associationer, aggregationer och kompositioner i ett UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilken betydelse har multiplicitet i klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur visas arv i ett UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka roller har attribut och operationer i en UML-klass?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad \\xE4r skillnaden mellan en klass och ett gr\\xE4nssnitt?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"P\\xE5 vilka tv\\xE5 s\\xE4tt kan gr\\xE4nssnitt visas i UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad betyder synlighetsmark\\xF6rerna \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"+\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"-\"), \" och \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"#\"), \" i UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur visas beroenden i UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad \\xE4r associationsklasser, och hur anv\\xE4nds de i UML?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur anv\\xE4nds paket f\\xF6r att organisera UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka vanliga fel b\\xF6r undvikas n\\xE4r man skapar UML-klassdiagram?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur kan UML-klassdiagram underl\\xE4tta kommunikationen i ett utvecklingsteam?\")), mdx(\"h3\", null, \"Paketdiagram\"), mdx(\"ol\", {\n    \"start\": 17\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad \\xE4r ett paketdiagram, och hur st\\xF6djer det modul\\xE4r design?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur p\\xE5verkar beroenden mellan paket systemets underh\\xE5llbarhet?\")), mdx(\"h3\", null, \"Komponent- och distributionsdiagram\"), mdx(\"ol\", {\n    \"start\": 19\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad \\xE4r en komponent i UML, och hur relaterar den till gr\\xE4nssnitt?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur beskriver distributionsdiagram ett systems struktur under k\\xF6rning?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka \\xE4r de viktigaste delarna i ett distributionsdiagram, till exempel noder, artefakter och kommunikationsv\\xE4gar?\")), mdx(\"h3\", null, \"Ansvarsdriven design\"), mdx(\"ol\", {\n    \"start\": 22\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad inneb\\xE4r ansvar inom objektorienterad design?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur skiljer sig ansvarsdriven design fr\\xE5n en traditionell metod d\\xE4r klasserna best\\xE4ms f\\xF6rst?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur hj\\xE4lper CRC-kort oss att identifiera objekts ansvar och samarbeten?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vad \\xE4r huvudfokus f\\xF6r ansvarsdriven design inom mjukvaruutveckling?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilken roll har CRC-kort inom ansvarsdriven design?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur identifieras ansvar f\\xF6r en klass med hj\\xE4lp av ansvarsdriven design?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka f\\xF6rdelar ger ansvarsdriven design n\\xE4r klassers beteenden ska best\\xE4mmas?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur avg\\xF6rs samarbetet mellan klasser inom ansvarsdriven design?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur bidrar ansvarsdriven design till h\\xF6g sammanh\\xE5llning i en mjukvarumodul?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"J\\xE4mf\\xF6r ansvarsdriven design med traditionella procedurorienterade arbetss\\xE4tt.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilken betydelse har roller inom ansvarsdriven design?\")), mdx(\"h3\", null, \"Designbeslut\"), mdx(\"ol\", {\n    \"start\": 33\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Vilka faktorer b\\xF6r v\\xE4gas in n\\xE4r olika designalternativ utv\\xE4rderas?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur kan avv\\xE4gningar p\\xE5verka designbeslut?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Hur p\\xE5verkar begr\\xE4nsningar i budget, tid och teknik designbeslut?\")), mdx(\"p\", null, \"Fr\\xE5gor om temat st\\xE4lls i \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://moodle.lnu.se/mod/url/view.php?id=5194799\"\n  }, \"Zulip f\\xF6r Kalmar campus och distans\"), \".\"));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#kursmål","title":"Kursmål"},{"url":"#syfte","title":"Syfte"},{"url":"#innehåll","title":"Innehåll","items":[{"url":"#objektorienterad-design","title":"Objektorienterad design"},{"url":"#klassdiagram","title":"Klassdiagram"},{"url":"#paketdiagram","title":"Paketdiagram"},{"url":"#komponentdiagram","title":"Komponentdiagram"},{"url":"#distributionsdiagram","title":"Distributionsdiagram"},{"url":"#ansvarsdriven-design","title":"Ansvarsdriven design"},{"url":"#grundläggande-designprinciper","title":"Grundläggande designprinciper"}]},{"url":"#läsanvisningar","title":"Läsanvisningar"},{"url":"#studiefrågor","title":"Studiefrågor","items":[{"url":"#objektorienterad-design-1","title":"Objektorienterad design"},{"url":"#uml-klassdiagram","title":"UML-klassdiagram"},{"url":"#paketdiagram-1","title":"Paketdiagram"},{"url":"#komponent--och-distributionsdiagram","title":"Komponent- och distributionsdiagram"},{"url":"#ansvarsdriven-design-1","title":"Ansvarsdriven design"},{"url":"#designbeslut","title":"Designbeslut"}]}]},"parent":{"relativePath":"forelasningar-2026/00-tema-3-objektorienterad-design-med-uml.md"},"frontmatter":{"metaTitle":"Tema 3 – Objektorienterad design med UML | 1DV607","metaDescription":"Syfte, innehåll, läsanvisningar och studiefrågor om objektorienterad design med UML.","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":"99d1cc81-2bd1-5d35-ae8a-db0def61e3cd"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}