
{"id":79,"date":"2014-11-12T14:14:37","date_gmt":"2014-11-12T13:14:37","guid":{"rendered":"http:\/\/home.uia.no\/tanjam14\/?p=79"},"modified":"2014-11-12T14:14:37","modified_gmt":"2014-11-12T13:14:37","slug":"kapitel-13-modul-5","status":"publish","type":"post","link":"https:\/\/home.uia.no\/tanjam14\/2014\/11\/12\/kapitel-13-modul-5\/","title":{"rendered":"Kapitel 13: Modul 5"},"content":{"rendered":"<p>Chapter 13: Designing applications<\/p>\n<p>L\u00c6RINGSM\u00c5L:<\/p>\n<ul>\n<ul>\n<ul type=\"disc\">\n<li>Kan bruke verb\/substantiv metoden til \u00e5 finne ut<\/li>\n<li>Hvilke klasser du trenger for \u00e5 l\u00f8se et problem og hvilke metoder klassene skal ha<\/li>\n<li>Kan bruke scenarier (evt. med CRC kort) til \u00e5 sjekke at du har funnet klassene og metodene du trenger<\/li>\n<li>Vet hva et design pattern er<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>VERB\/SUBSTANTIV &#8211; METODE:<\/strong><\/p>\n<p>I virkelighetens liv er det vanskelig \u00e5 finne ut av hvilke klasser vi trenger for \u00e5 lage et prosjekt. Trinnene som brukes for \u00e5 laget er Software-system kalles for analyse og design. Mer forklarende analyserer vi problemet, og designer en l\u00f8sning.<\/p>\n<p>Men for \u00e5 kunne lage et Software-system m\u00e5 vi finne ut av hvilke klasser vi trenger, og hva klassene m\u00e5 inneholde for \u00e5 kunne l\u00f8se v\u00e5rt problem.<\/p>\n<p>For \u00e5 oppdage og finne klasser, bruker vi verb-subjektiv-metoden. Deretter bruker vi noe som kalles for CRC-kort for \u00e5 utf\u00f8re designet.<\/p>\n<p>Ved \u00e5 ta i bruk kjennbare definisjoner som verb og substantiv ser vi at vi kan f\u00e5 hjelp til \u00e5 l\u00f8se programmeringsproblemet.<\/p>\n<p>I en skildring av Software-programmet vil subjektivene referere til klasser og objekter, mens verbene vil referere til objektenes metoder (handlinger).<\/p>\n<p>&nbsp;<\/p>\n<p>Her er en forklaring av et av mine prosjekt, som er et parkeringssystem:<\/p>\n<p>Parkeringssystemet kan brukes i flere systemer og sammenhenger.\u00a0 En bil skal kunne sjekkes inn i dette systemet. Hvert parkeringssystem har et sett med parkeringsplasser som er organisert etter felt- og plassnummer. Kunden kan parkere sin bil p\u00e5 flere selvvalgte og ledige parkeringsplasser.<\/p>\n<p>&nbsp;<\/p>\n<p>Det som prim\u00e6rt blir brukt som informasjonskapsel er kundens skiltnummer, men flere parameter m\u00e5 legges inn: bilmerke, bilmodell, farge, skiltnummer.<\/p>\n<p>Parkeringsplassen skal v\u00e6re synlig &#8211; og en skal ogs\u00e5 har muligheten til \u00e5 se om plassen allerede er reservert eller eid av en kunde. N\u00e5r det er \u00f8nskelig skal kunden ha muligheten til \u00e5 fjerne sin bil fra plassen, og sjekke ut av den.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Deretter m\u00e5 vi sortere verbene og subjektivene i klasser for seg selv.<\/p>\n<p>&nbsp;<\/p>\n<p>VERB:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SUBJEKTIV:<\/p>\n<p>Parkere\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Parkeringssystem<\/p>\n<p>Reservere\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Bil<\/p>\n<p>Eie\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Parkeringsplasser<\/p>\n<p>Fjerne\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Plassnummer<\/p>\n<p>Sjekke ut\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Kunde<\/p>\n<p>Skiltnummer<\/p>\n<p>Bilmerke<\/p>\n<p>Bilmodell<\/p>\n<p>Farge<\/p>\n<p>&nbsp;<\/p>\n<p>Det vil se ut som om vi har mange kandidater for klasser og metoder. Forel\u00f8pig bruker vi alle, og ekskluderer ikke noen kandidater. Akkurat n\u00e5 er vi i en tidlig fase av utviklingen, og vi vet ikke hva vi har bruk for, og hva vi ikke har bruk for.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>CRC-KORT og SCENARIOER:<\/strong><\/p>\n<p>Neste punkt er \u00e5 ta i bruk CRC-kort. Disse kortene skal hjelpe oss med \u00e5\u00a0 lage interaksjoner og forbindelser mellom klasser.<\/p>\n<p>Det beste er \u00e5 lage fysiske kort, og ikke lage illustrasjoner p\u00e5 PC\u00a0 eller tegne useri\u00f8se tegninger p\u00e5 ark n\u00e5r du skal bruke CRC-kort.<\/p>\n<p>Strukturen er f\u00f8lgende:<\/p>\n<p>Tre ruter i ett kort; et areal i \u00f8verste, venstre rute som inneholder class name; et areal under f\u00f8rste areal som inneholder responsibilities; en rute p\u00e5 h\u00f8yre side langs rute \u00e9n og to som inneholder collaborations (classer som denne bruker);<\/p>\n<p>&nbsp;<\/p>\n<p>En ting som ogs\u00e5 er sentral i modul 5 er scenarioer. Et scenario er et eksempel p\u00e5 en oppgave som systemet skal kunne takle.<\/p>\n<p>For eksempel:<\/p>\n<p>En kunde sjekker bilen inn p\u00e5 parkeringssystemet, og finner en ledig plass. Kunden ser at plassen ikke eies av noen, men at den er reservert til en annen kunde. Kunden kj\u00f8rer videre til h*n finner en ledig plass.<\/p>\n<p>&nbsp;<\/p>\n<p>Vi sp\u00f8r oss selv f\u00f8lgende: Hvordan kan du l\u00f8se dette problemet?<\/p>\n<p>Vi kan tenke slik: Det er i klassen ParkeringsSystem hele handlinger prim\u00e6rt foreg\u00e5r. F\u00f8r vi kan sjekke inn en bil er det viktig \u00e5 lage et bil-objekt ut i fra klasse Bil: her legger vi inn n\u00f8dvendige parameter. N\u00e5r bilen da skal sjekkes inn, velger vi hvilken parkeringsplass bil-objektet skal plasseres p\u00e5 i klasse plass. Deretter f\u00e5r vi beskjed om at plassen i klasse plass er opptatt: dette kom fram ved \u00e5 sammenlikne skiltnummeret til bi l- objektet og skiltnummeret som var lagret i plassen. Bilen g\u00e5r videre og finner en ledig plass.<\/p>\n<p>Slike brukerscenarioer er vanlig \u00e5 gj\u00f8re sammen i grupper, og hvert medlem har en egen &laquo;klasse&raquo;, og forteller h\u00f8yt hva den gj\u00f8r, hva den mangler og hva den burde ha med.<\/p>\n<p>\u00c5 lage scenarioer tar ofte veldig lang tid, men en f\u00e5r igjen for det.<\/p>\n<p>Som nybegynner er det viktig at jeg tar meg tid til \u00e5 fullf\u00f8re og \u00f8ve meg p\u00e5 slike scenarioer, og ogs\u00e5 se p\u00e5 hver eneste detalj &#8211; uansett om jeg mener den er viktig eller ikke.<\/p>\n<p>Neste fase er \u00e5 g\u00e5 fra CRC-kort og scenario til \u00e5 designe Java-klassene<\/p>\n<p>Jeg har n\u00e5 tre klasser som jeg bruker: ParkeringSystem, Plass og Bil. Hver av disse inneholder constructors, metoder, og felt.\u00a0 \u00c5 bruke CRC-kortene en gang til vil v\u00e6re til hjelp &#8211; denne gangen kan du spesifisere litt mer hva klassen skal inneholde, og s\u00e5 skrive det litt mer n\u00f8yaktig og etter programmerings-skikk. Dette vil f\u00f8re til at du vil ha en mindre jobb \u00e5 gj\u00f8re n\u00e5r disse klassene skal skrives i Java. P\u00e5 denne m\u00e5ten kan du tidlig unng\u00e5 un\u00f8dvendige feil.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>DESIGN PATTERN:<\/strong><\/p>\n<p>Et design pattern er en beskrivelse av et felles eller gjentatt problem som ofte oppst\u00e5r under programmering, og en beskrivelse av en l\u00f8sning p\u00e5 dette problemet. L\u00f8sningen kan ofte brukes p\u00e5 flere forskjellige m\u00e5ter.<\/p>\n<p>L\u00f8sningen er ofte beskrevet i en liten sammensetning av klasser og deres interaksjoner.<\/p>\n<p>&nbsp;<\/p>\n<p>Design pattern dokumenterer for gode l\u00f8sninger for problemer, s\u00e5 disse kan bli gjenbrukt av andre.<\/p>\n<p>Design pattern har ogs\u00e5 egne navn slik at det ikke er vanskelig \u00e5 bruke eller snakke om det.<br \/>\nDisse patterns er vanligvis laget slik at de inneholder et minimun-set av informasjon. Ikke bare om struktur av klasser, men ogs\u00e5 informasjon om problemet som blir adressert<\/p>\n<p>En forklaring av patterns inneholder som oftest:<\/p>\n<ul>\n<ul>\n<ul type=\"disc\">\n<li>Et navn som kan bli brukt for \u00e5 snakke om patternet.\u00a0 For eksempel: Singleton<\/li>\n<li>Et problem som patternet adresserer for. Dette er ofte delt opp i mindre seksjoner som: hensikt, motivasjon og egnethet.<\/li>\n<li>En forklaring p\u00e5 l\u00f8sningen. Ofte listet opp i struktur, deltakere og samarbeid.<\/li>\n<li>Konsekvenser av \u00e5 bruke patternet, inkludert resultater og kompromisser.<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chapter 13: Designing applications L\u00c6RINGSM\u00c5L: Kan bruke verb\/substantiv metoden til \u00e5 finne ut Hvilke klasser du trenger for \u00e5 l\u00f8se et problem og hvilke metoder klassene skal ha Kan bruke scenarier (evt. med CRC kort) til \u00e5 sjekke at du har funnet klassene og metodene du trenger Vet hva et design pattern er &nbsp; &nbsp; [&hellip;]<\/p>\n","protected":false},"author":499,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/posts\/79"}],"collection":[{"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/users\/499"}],"replies":[{"embeddable":true,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/comments?post=79"}],"version-history":[{"count":3,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/posts\/79\/revisions"}],"predecessor-version":[{"id":82,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/posts\/79\/revisions\/82"}],"wp:attachment":[{"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/media?parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/categories?post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/tags?post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}