
{"id":58,"date":"2017-09-17T13:43:42","date_gmt":"2017-09-17T12:43:42","guid":{"rendered":"http:\/\/home.uia.no\/mahamy16\/?page_id=58"},"modified":"2018-02-09T01:36:20","modified_gmt":"2018-02-09T00:36:20","slug":"moduler","status":"publish","type":"page","link":"https:\/\/home.uia.no\/mahamy16\/moduler\/","title":{"rendered":"Moduler"},"content":{"rendered":"<h1 style=\"text-align: right\"><strong>Modul 1 Godkjenning<\/strong><\/h1>\n<p>Screenshots og video opptak av modul 1 der jeg forklarer og viser l\u00e6ringsm\u00e5lene til modulet ved bruk av programmet BlueJ. Hensikten med denne modulen var \u00e5 l\u00e6re bruken av programmet blueJ og Java klasser, objekter og metoder.<\/p>\n<p>&nbsp;<\/p>\n<p>Nett: https:\/\/www.youtube.com\/watch?v=V6qL7RDeeFA<\/p>\n<p>Download:\u00a0<a href=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/Screen-Recording-8-19-2017-6-07-00-PM.wmv\">Modul 1 l\u00e6ringsm\u00e5l video optakk<\/a><\/p>\n<p>Screenshots:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-15\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-intrutor-room-and-timedate-exercise-1.25-300x248.png\" alt=\"\" width=\"300\" height=\"248\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-intrutor-room-and-timedate-exercise-1.25-300x248.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-intrutor-room-and-timedate-exercise-1.25-400x331.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-intrutor-room-and-timedate-exercise-1.25-361x300.png 361w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-intrutor-room-and-timedate-exercise-1.25.png 596w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-13\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise-300x244.png\" alt=\"\" width=\"300\" height=\"244\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise-300x244.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise-400x326.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise-367x300.png 367w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise.png 594w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-14\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise1-300x244.png\" alt=\"\" width=\"300\" height=\"244\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise1-300x244.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise1-400x326.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise1-367x300.png 367w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-exercise1.png 594w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-12\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-300x253.png\" alt=\"\" width=\"300\" height=\"253\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-300x253.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-400x338.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students-354x300.png 354w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/print-students.png 580w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-10\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-picture-two-suns-300x197.png\" alt=\"\" width=\"300\" height=\"197\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-picture-two-suns-300x197.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-picture-two-suns-400x262.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-picture-two-suns-456x300.png 456w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-picture-two-suns.png 493w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-11\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-lab-clasess-exercises-300x213.png\" alt=\"\" width=\"300\" height=\"213\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-lab-clasess-exercises-300x213.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-lab-clasess-exercises-400x285.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-lab-clasess-exercises-420x300.png 420w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/project-lab-clasess-exercises.png 774w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-16\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/bluej-picture-house-sun-300x197.png\" alt=\"\" width=\"300\" height=\"197\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/bluej-picture-house-sun-300x197.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/bluej-picture-house-sun-400x263.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/bluej-picture-house-sun-454x300.png 454w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/bluej-picture-house-sun.png 488w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-40\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/sunset-challenge-exercise1.15-300x199.png\" alt=\"\" width=\"300\" height=\"199\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/sunset-challenge-exercise1.15-300x199.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/sunset-challenge-exercise1.15-400x266.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/sunset-challenge-exercise1.15-450x300.png 450w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/sunset-challenge-exercise1.15.png 496w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-9\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/shapes-project-300x223.png\" alt=\"\" width=\"300\" height=\"223\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/shapes-project-300x223.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/shapes-project-400x297.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/shapes-project-402x300.png 402w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/shapes-project.png 776w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h1><strong>Modul 2<\/strong><\/h1>\n<p>Detter er screenshots fra modul 2. Brukt programmet BlueJ for \u00e5 lage en &laquo;Coffe machine&raquo;. Hensikten med modulen var \u00e5 lage en egen kl<\/p>\n<p>asse fra skr\u00e6tsj, ved \u00e5 bruke kunnskap l\u00e6rt i modul 1 og etter \u00e5 ha lest kapittel 1 og 2.<\/p>\n\n\t\n\t\t<div class=\"gallery_clear\"><\/div> \n\t\t<div id=\"gallery_58_1\" class=\"photospace\"> \n\t\n\t\t\t<!-- Start Advanced Gallery Html Containers -->\n\t\t\t<div class=\"thumbs_wrap2\">\n\t\t\t\t<div class=\"thumbs_wrap\">\n\t\t\t\t\t<div id=\"thumbs_58_1\" class=\"thumnail_col \" >\n\t\t\t\t\t\t \n\t\t\t\t\t\t<ul class=\"thumbs noscript\">\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<li><a class=\"thumb\" href=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/inspect-field-kaffe-maskin-400x286.png\" title=\"inspect field kaffe maskin\" >\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/inspect-field-kaffe-maskin-50x50.png\" alt=\"\" title=\"inspect field kaffe maskin\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"caption\">\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<li><a class=\"thumb\" href=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/klasse-modul-2-400x299.png\" title=\"klasse modul 2\" >\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/klasse-modul-2-50x50.png\" alt=\"\" title=\"klasse modul 2\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"caption\">\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<li><a class=\"thumb\" href=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/readme-file-modul-2-400x270.png\" title=\"readme file modul 2\" >\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/readme-file-modul-2-50x50.png\" alt=\"\" title=\"readme file modul 2\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"caption\">\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<li><a class=\"thumb\" href=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/refund-money-method-400x287.png\" title=\"refund money method\" >\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/refund-money-method-50x50.png\" alt=\"\" title=\"refund money method\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"caption\">\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<li><a class=\"thumb\" href=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/totalt-kaffe-maskin-400x177.png\" title=\"totalt kaffe maskin\" >\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/totalt-kaffe-maskin-50x50.png\" alt=\"\" title=\"totalt kaffe maskin\" \/>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"caption\">\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t\t\t<div class=\"photospace_clear\"><\/div>\n\t\t\t\t\t\t\t\t<a class=\"pageLink prev\" style=\"display:none\" href=\"#\" title=\"Previous Page\"><\/a>\n\t\t\t\t\t\t<a class=\"pageLink next\" style=\"display:none\" href=\"#\" title=\"Next Page\"><\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<!-- Start Advanced Gallery Html Containers -->\n\t\t\t<div class=\"gal_content\">\n\t\t\t\t\n\t\t\t\t<div class=\"slideshow-container\">\n\t\t\t\t\t<div id=\"loading_58_1\" class=\"loader\"><\/div>\n\t\t\t\t\t<div id=\"slideshow_58_1\" class=\"slideshow\"><\/div>\n\t\t\t\t\t<div id=\"caption_58_1\" class=\"caption-container\"><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t<\/div>\n\t\n\t<\/div>\n\t\n\t<div class=\"gallery_clear\"><\/div>\n\t\n\t\n\t\n\t<script type='text\/javascript'>\n\t\t\t\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\t\n\t\t\t\t\/\/ We only want these styles applied when javascript is enabled\n\t\t\t\t$('.gal_content').css('display', 'block');\n\t\t\t\t$('.thumnail_col').css('width', '181px');\n\t\t\t\t\n\t\t\t\t\/\/ Initialize Advanced Galleriffic Gallery \n\t\t\t\tvar gallery = $('#thumbs_58_1').galleriffic({ \n\t\t\t\t\tdelay:                     3500,\n\t\t\t\t\tnumThumbs:                 9,\n\t\t\t\t\tpreloadAhead:              9,\n\t\t\t\t\tenableTopPager:            0,\n\t\t\t\t\tenableBottomPager:         false,\n\t\t\t\t\timageContainerSel:         '#slideshow_58_1',\n\t\t\t\t\tcontrolsContainerSel:      '#controls_58_1',\n\t\t\t\t\tcaptionContainerSel:       '#caption_58_1',  \n\t\t\t\t\tloadingContainerSel:       '#loading_58_1',\n\t\t\t\t\trenderSSControls:          true,\n\t\t\t\t\trenderNavControls:         true,\n\t\t\t\t\tplayLinkText:              'Play Slideshow',\n\t\t\t\t\tpauseLinkText:             'Pause Slideshow',\n\t\t\t\t\tprevLinkText:              '&lsaquo; Previous Photo',\n\t\t\t\t\tnextLinkText:              'Next Photo &rsaquo;',\n\t\t\t\t\tnextPageLinkText:          '&rsaquo;',\n\t\t\t\t\tprevPageLinkText:          '&lsaquo;',\n\t\t\t\t\tenableHistory:              0,\n\t\t\t\t\tautoStart:                 \t0,\n\t\t\t\t\tenableKeyboardNavigation:\ttrue,\n\t\t\t\t\tsyncTransitions:           \t1,\n\t\t\t\t\tdefaultTransitionDuration: \t300,\n\t\t\t\t\t\t\n\t\t\t\t\tonTransitionOut:           function(slide, caption, isSync, callback) {\n\t\t\t\t\t\tslide.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0, callback);\n\t\t\t\t\t\tcaption.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0);\n\t\t\t\t\t},\n\t\t\t\t\tonTransitionIn:            function(slide, caption, isSync) {\n\t\t\t\t\t\tvar duration = this.getDefaultTransitionDuration(isSync);\n\t\t\t\t\t\tslide.fadeTo(duration, 1.0);\n\t\n\t\t\t\t\t\t\/\/ Position the caption at the bottom of the image and set its opacity\n\t\t\t\t\t\tvar slideImage = slide.find('img');\n\t\t\t\t\t\tcaption.width(slideImage.width())\n\t\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t\t\/\/'bottom' : Math.floor((slide.height() - slideImage.outerHeight()) \/ 2 - 40),\n\t\t\t\t\t\t\t\t'top' : slideImage.outerHeight(),\n\t\t\t\t\t\t\t\t'left' : Math.floor((slide.width() - slideImage.width()) \/ 2) + slideImage.outerWidth() - slideImage.width()\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.fadeTo(duration, 1.0);\n\t\t\t\t\t\t\n\t\t\t\t\t},\n\t\t\t\t\tonPageTransitionOut:       function(callback) {\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\tsetTimeout(callback, 100); \/\/ wait a bit\n\t\t\t\t\t},\n\t\t\t\t\tonPageTransitionIn:        function() {\n\t\t\t\t\t\tvar prevPageLink = this.find('a.prev').css('display', 'none');\n\t\t\t\t\t\tvar nextPageLink = this.find('a.next').css('display', 'none');\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Show appropriate next \/ prev page links\n\t\t\t\t\t\tif (this.displayedPage > 0)\n\t\t\t\t\t\t\tprevPageLink.css('display', 'block');\n\t\t\n\t\t\t\t\t\tvar lastPage = this.getNumPages() - 1;\n\t\t\t\t\t\tif (this.displayedPage < lastPage)\n\t\t\t\t\t\t\tnextPageLink.css('display', 'block');\n\t\t\n\t\t\t\t\t\tthis.fadeTo('fast', 1.0);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}); \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\/**************** Event handlers for custom next \/ prev page links **********************\/\n\t\t\n\t\t\t\tgallery.find('a.prev').click(function(e) {\n\t\t\t\t\tgallery.previousPage();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t});\n\t\t\n\t\t\t\tgallery.find('a.next').click(function(e) {\n\t\t\t\t\tgallery.nextPage(); \n\t\t\t\t\te.preventDefault();\n\t\t\t\t});\n\t\t\n\t\t\t});\n\t\t<\/script>\n\t\t\n\t\t\n<h1><strong>Modul 3\u00a0<\/strong><\/h1>\n<p>L\u00e6ringsm\u00e5l til Modul 3<\/p>\n<p>Java:<\/p>\n<p>forklare forskjellen p\u00e5 primitive og objekttyper:<\/p>\n<p>primitive typer er bygd inn Java og er allerede definert i programmert, det er data typene som st\u00e5r i boka og jeg\u00a0 har brukt p\u00e5 modul 1 &#8211; 3 s\u00e5 langt, int, double, boolean, flout, char, string etc. Primtive typer tenger ikke ha metoder. Objekttyper derimot er definert av klasser i java og klasser som brukerne selv har skrevet. verdier lagres direkte i primitive typer (variabel), men verdier i non-object typer lagres\u00a0 som referanse til objektet.<\/p>\n<p>kan skrive koder som lager nye objekter:<\/p>\n<p>koder som lager nye nye objekter skrives slik:<\/p>\n<p>Dette er skisse p\u00e5 kode som lager nye objekter.<\/p>\n<p>public class\u00a0 Classname () {<\/p>\n<p>Classname objectname = new Classname ();<\/p>\n<p>objectname1 = new Classname();<\/p>\n<p>objectname2 = new Classname();<\/p>\n<p>objectname3 = new Classname();<\/p>\n<p>}<\/p>\n<p>vi kan se en klar eksempel p\u00e5 &laquo;kode som lager nye objekter&raquo; i ClockDisplay. Hvor nye objekter blir laget av klassen NumberDisplay.<\/p>\n<p>&nbsp;<\/p>\n<p>kan skrive kode som kaller metoder i samme objekt:<\/p>\n<p>Jeg bruker samme eksempel brukt i boka for \u00e5 forklare kode som kaller metoder i samme objekt.<\/p>\n<p>I ClockDisplay klassen har en vi en metode som har private access i klassen, private void updateDisplay(); Denne methoden blir kalt i andre methoder\u00a0 ved hjel av methode navn.<\/p>\n<p>public Class ClockDisplay{<\/p>\n<p>\/\/field declaration<\/p>\n<p>private String displayString;<\/p>\n<p>\/\/metode som kaller annen metode<\/p>\n<p>public void timeTick(){<\/p>\n<p>minutes.increment();<\/p>\n<p>if(minutes.getValue() == 0) {<\/p>\n<p>hours.increment();<\/p>\n<p>}<\/p>\n<p>\/\/metod call<\/p>\n<p>updateDisplay();<\/p>\n<p>}<\/p>\n<p>\/\/metoden updateDisplay<\/p>\n<p>private void updateDisplay(){<\/p>\n<p>displayString = hours.getDisplayValue() + &laquo;:&raquo; + minutes.getDisplayValue();<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Abstraksjon og modularisering:<\/p>\n<p>Abstraksjon: er evnen\u00a0 til \u00e5 ignore detaljer av deler for \u00e5 fokusere p\u00e5 den store problem (del). Tekniken med abstraksjon (ogs\u00e5 kalt divide and conquer p\u00e5 engelsk) g\u00e5r ut p\u00e5 \u00e5 dele en stor problem til en mindre deler og se disse delene invdividuelt, de mindre delene kan ogs\u00e5 deles mer for \u00e5 l\u00f8se de enkelt, etter en del har blitt l\u00f8st brukes denne delen for \u00e5 l\u00f8se neste del.<\/p>\n<p>&nbsp;<\/p>\n<p>modularisering: er prosessen med \u00e5 dele en hel elle<\/p>\n<p>r sammenhengende del i forskjellige deler for \u00e5 lage disse delene hver for seg og til slutt sette sammen disse delene for \u00e5 danne en hel del igjen. Modularisering kan bruks i hverdagslige oppgaver, boka viser til en eksempel p\u00e5 hvordan modularisering kan brukes av ingeni\u00f8rer i bilindustrien for \u00e5 lage de forskjellige bildelene.<\/p>\n<p>abtraksjon er brukt i ClockDisplay og gir et eksempel p\u00e5 hvordan abstraksjon brukes i software.<\/p>\n<p>Klassediagrammer og objektdiagrammer:<\/p>\n<p>klassdiagram: i programmering viser alle k<\/p>\n<p>lassene til et program,\u00a0 hvordan disse klassene er koblet sammen, gir informasjon om kildekoden og viser det som er static view av en program.<\/p>\n<p>objektdiagram: viser objekter n\u00e5r programmet er under execuation, objekdiagram viser alle fields som objektet har og hva som er lagret i disse filene.<br \/>\nclass and objekt diagram of &laquo;coffe machine&raquo;:<\/p>\n<div style=\"width: 640px;height: 480px;margin: 10px\"><\/div>\n<h1 style=\"margin-top: 1.71429rem;margin-bottom: 1.71429rem\"><strong><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-152\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/Skjermbilde-300x153.png\" alt=\"\" width=\"399\" height=\"242\" \/><\/strong><\/h1>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 1rem\">kan bruke debuggeren i Bluej (video)<\/span><\/p>\n<p>video:\u00a0https:\/\/www.youtube.com\/watch?v=w4_MC-yvg6U<\/p>\n<p><a href=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/08\/Screen-Recording-8-19-2017-6-07-00-PM1.wmv\">Screen Recording (8-19-2017 6-07-00 PM)<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-180\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/objekts-300x58.png\" alt=\"\" width=\"300\" height=\"58\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/objekts-300x58.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/objekts-400x78.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/objekts.png 417w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-190 alignleft\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/klassdiagram-1-300x192.png\" alt=\"\" width=\"300\" height=\"192\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/klassdiagram-1-300x192.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/klassdiagram-1-400x256.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/klassdiagram-1.png 524w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-186\" src=\"http:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/whole-program-300x188.png\" alt=\"\" width=\"300\" height=\"188\" srcset=\"https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/whole-program-300x188.png 300w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/whole-program-1024x642.png 1024w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/whole-program-400x251.png 400w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/whole-program-624x392.png 624w, https:\/\/home.uia.no\/mahamy16\/files\/2017\/09\/whole-program.png 1079w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Modul 5<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">L\u00e6ringsm\u00e5l<\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><span style=\"font-weight: 400\">11.16.2017<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0 <\/span><\/p>\n<p><span style=\"font-weight: 400\">Du har fullf\u00f8rt modulen n\u00e5r du :<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">kan bruke verb\/substantiv metoden til \u00e5 finne ut<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">hvilke klasser du trenger for \u00e5 l\u00f8se et problem<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">og hvilke metoder klassene skal ha<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">kan bruke scenarier (evt. med CRC kort) til \u00e5 sjekke at du har funnet klassene og metodene du trenger<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">vet hva et design pattern er<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Se evt p\u00e5 verkt\u00f8y for CRC kort, eller lag det p\u00e5 tavle, papir. \u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>Beskrivelse<\/b><\/p>\n<p><span style=\"font-weight: 400\">This coffee machine should make a coffee for a user, the user can choose a type of coffee offered by the machine. the user can further choose to add some types of sugar and can choose between different milk types \u00a0to add to the coffee. the user is required to pay for the coffee by putting money in the machine.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Finner klasser<\/b><\/p>\n<p><span style=\"font-weight: 400\">Etter \u00e5 ha beskrevet systemet slik, er neste steg \u00e5 g\u00e5 gjennom beskrivelsen for \u00e5 finne alle substantiver og verb. Substantiver i denne sammenhengen vil si klasser\/objekter, mens verb referer til metoder. Alle substantiver blir skrevet i en tall mens verb blir skrevet i flertall, fra tidligere erfaring kan vi se at en klasse alltid skrives i entall, for eksempel Coffee og ikke Coffee\u2019s. Grunnen til dette er at flere klasser kan man lage av flere instanser av en klasse.<\/span><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Nouns (classes\/objects)<\/b><\/td>\n<td><b>Verbs (methods)<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">coffee machine<\/span><\/td>\n<td><span style=\"font-weight: 400\">stores (coffee&#8217;s)<\/span><\/p>\n<p><span style=\"font-weight: 400\">is given (coins)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">coffe<\/span><\/td>\n<td><span style=\"font-weight: 400\">stores(types of coffee)<\/span><\/p>\n<p><span style=\"font-weight: 400\">has(coffee price)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">sugar<\/span><\/td>\n<td><span style=\"font-weight: 400\">stores (types of sugar)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">milk<\/span><\/td>\n<td><span style=\"font-weight: 400\">stores \u00a0(types of milk)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">customer<\/span><\/td>\n<td><span style=\"font-weight: 400\">chooses (coffee, sugar, milk)<\/span><\/p>\n<p><span style=\"font-weight: 400\">payment<\/span><\/p>\n<p><span style=\"font-weight: 400\">is given (refund)<\/span><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><b>Scenario:<\/b><\/p>\n<p><span style=\"font-weight: 400\">La oss ta for oss en eksempel p\u00e5 scenario (use cases\/brukerhistorier):<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">En kunde kommer til kaffemaskinen, kunden \u00f8nsker to kopp kaffe, en for han og en for kollega. Kunden vil ha kaffe cappucino selv mens kollegaen kun drikker kaffe espresso. Kunden vil ikke ha sukker i kaffen, men kun melk og kollegaen \u00f8nsker b\u00e5de sukker og melk i kaffe.<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">jeg begynner \u00e5 tenke meg at maksinen m\u00e5 f\u00f8rste vite hvilken kaffe kunden har valgt. Dermed kan man notere som ansvar p\u00e5 klass Kaffemaskin: <\/span><b>foresp\u00f8rsel til kunde om \u00e5 velge kaffe<\/b><span style=\"font-weight: 400\">. \u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Kunden kan ikke velge kaffetype uten \u00e5 vite om hvilke kaffe maskinen kan lage. Dermed m\u00e5 maskinen vise alle kaffetyper den har. Jeg skriver i ansvar: <\/span><b>lagrer en samling av kaffetyper<\/b><span style=\"font-weight: 400\">. Da m\u00e5 den samarbeide med klasse Kaffe for \u00e5 vite om de forskjellige kaffetypene. Klasse kaffe m\u00e5 da skrives i ansvarsomr\u00e5det: <\/span><b>tilbyr valg av forskjellige type kaffe<\/b><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Kunden velger da kaffe s\u00e5 skriver jeg i ansvar p\u00e5 Kaffemaskin: <\/span><b>aksepterer kundens valg av kaffe<\/b><span style=\"font-weight: 400\">. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I klass Kunde skriver jeg da \u00a0i ansvarsomr\u00e5det: <\/span><b>kan velge kaffetype <\/b><span style=\"font-weight: 400\">og siden Kaffemaskin har en objekt til Kaffe og samarbeider meg begge Kunde og Kaffe, kan Kunde sende foresp\u00f8rsel om \u00e5 velge kaffe til Kaffemaskin som videre sjekker med Kaffe hvilke kaffe som er tilgjengelige.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I Kaffemaskin skriver jeg i ansvarsomr\u00e5det:<\/span><b> sender foresp\u00f8rsel om detalj informasjon til Kaffe <\/b><span style=\"font-weight: 400\">for \u00e5 vite om kaffetype og I kaffe kan jeg skrive i ansvarsomr\u00e5det: <\/span><b>lagrer kaffe status<\/b><span style=\"font-weight: 400\"> (tomt\/ikke tomt).<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><b>CRC kort:<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">CRC st\u00e5r for Class\/Responsibilities\/Collaborators. Det er viktig \u00e5 gj\u00f8re denne prosessen med \u00e5 lage CRC kort p\u00e5 papir og blyant og ikke med pc. Grunnen er at klassene samarbeider med hverandre om \u00e5 hente informasjon og gj\u00f8re noen forandringer s\u00e5 det er det lurt \u00e5 tegne klassene som samarbeider med hverandre n\u00e6r hverandre. Hver klasse har egen boks, \u00f8verste i boksen st\u00e5r klassenavn, under klassenavn er ansvar klassen har og og til h\u00f8yre for ansvar omr\u00e5det er skrevet klassene som denne klassen samarbeider og det er samarbeids feltet.<\/span><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Kaffemaskin<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/p>\n<p><span style=\"font-weight: 400\">Responsibilities<\/span><\/p>\n<p><span style=\"font-weight: 400\">-foresp\u00f8rsel til kunde om \u00e5 velge kaffe.<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8211; lagrer en samling av kaffetyper<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8211; foresp\u00f8rsel til kaffe om tilgjengelige kaffe<\/span><\/td>\n<td><span style=\"font-weight: 400\">Collaborators<\/span><\/p>\n<p><span style=\"font-weight: 400\">Kunde<\/span><\/p>\n<p><span style=\"font-weight: 400\">Kaffe<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Kunde<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><\/p>\n<p><span style=\"font-weight: 400\">-kan velge kaffetype<\/span><\/td>\n<td><span style=\"font-weight: 400\">Kaffemaskin<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Kaffe<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/p>\n<p><span style=\"font-weight: 400\">-tilbyr valg av forskjellige typer kaffe<\/span><\/p>\n<p><span style=\"font-weight: 400\">-har kaffepris<\/span><\/p>\n<p><span style=\"font-weight: 400\">-lagrer kaffe status<\/span><\/td>\n<td><span style=\"font-weight: 400\">Kaffemaskin<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Melk<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/td>\n<td><span style=\"font-weight: 400\">Kunde<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Sukker<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/td>\n<td><span style=\"font-weight: 400\">Kunde<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">En klasse representerer en samling av lignende objekter. Objektet kan v\u00e6re ting, mennesker, sted, hendelse og konsepter som er relevant for systemet som lages. For eksempel i kaffemaskin vil klass representer, kaffe, sukker, melk og kunde. Ansvaret er alt klassen vet og gj\u00f8r. \u00a0For eksempel klass Kaffe har kaffe, pris og kaffe status og det er hva Kaffe vet om. Men det den gj\u00f8r er \u00e5 tilby kaffe. Noen ganger har klasser en ansvar som de skal oppfylle men klarer ikke \u00e5 gj\u00f8re det alene og derfor komme samarbeid inn i bildet. For eksempel Kaffemaskin gi kaffe til kunde men trenger \u00e5 vite om de forskjellige kaffetypene. Samarbeid tar for seg en av disse to tingene en foresp\u00f8rsel om informasjonstilgang eller en om gj\u00f8re noe.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Design pattern<\/b><\/p>\n<p><span style=\"font-weight: 400\">En design pattern forklarer en vanlig problem i softwareutvikling, og forklarer videre l\u00f8sningen p\u00e5 dette problemet som kan brukes i mange forskjellige sammenhenger. For software design patterns, l\u00f8sningen er en forklaring av lite sett av klasser og dere interaksjoner.<\/span><\/p>\n<p><b>Struktur av en pettern<\/b><\/p>\n<p><span style=\"font-weight: 400\">en forklaring av en pattern burde inneholde<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">a name<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">en forklaring av problemet som pattern referer til<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">intent, motivation and applicability<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">en forklaring p\u00e5 l\u00f8sningen <\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">structure, participants and collaborations<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">konsekvensene av \u00e5 bruke den pattern<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">results and trade-offs<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Modul 6<\/p>\n<p><iframe loading=\"lazy\" title=\"Modul 6\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/XU_pfIROtbU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><span style=\"font-weight: 400\">Modul 6 Oppgave <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">1.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Forklarer videre i videon.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">public HashMap&lt;Integer,String&gt; responsMap;<\/span><\/p>\n<p><span style=\"font-weight: 400\">public int index;<\/span><\/p>\n<p><span style=\"font-weight: 400\">public int[] teller;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">responsMap = new HashMap&lt;Integer,String&gt;();<\/span><\/p>\n<p><span style=\"font-weight: 400\">teller = new int[10];<\/span><\/p>\n<p><span style=\"font-weight: 400\">int[ ] teller = {0,0,0,0,0,0,0,0,0,0}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">teller[index] += 1;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">responsMap.put(0, &laquo;That sounds odd. Could you describe this in more detail?&raquo;);<\/span><\/p>\n<p><span style=\"font-weight: 400\">responsMap.put(1, \u201cNo other customer has ever complained about this \\n&raquo; +<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&laquo;before. What is your system configuration?&raquo;);<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u2026.<\/span><\/p>\n<p><span style=\"font-weight: 400\">for (int i = 0; i &lt; 10; i++){<\/span><\/p>\n<p><span style=\"font-weight: 400\">System.out.println(\u201cSvaret \u201c + responder.responsMap.get(i));<\/span><\/p>\n<p><span style=\"font-weight: 400\">System.out.println(\u201cAntall ganger + responder.teller[i]);<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<ol start=\"2\">\n<li><span style=\"font-weight: 400\"> \u00a0<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">Effekten av \u00e5 bruke setSeed er at vi selv bestemer hva seed skal v\u00e6re og bestemmes ikke av klokka.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">public skrivSeed(int seed){<\/span><\/p>\n<p><span style=\"font-weight: 400\">randomGenerator.setSeed(seed);<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Sammenlikner vi seed med Random, bruker Random tilfeldige som f\u00f8lge av klokka, mens seed bruker tilfeldige tall etter hvilke seed vi har valgt.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">3.<\/span><\/p>\n<p><span style=\"font-weight: 400\">tre av klassene i tech-support system er av type private. <\/span><\/p>\n<p><span style=\"font-weight: 400\">To i klassen supportSystem:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">private void printWelcome();<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">private void printGoodbye();<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">En i klassen Responder:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">private void fillResponses();<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Disse klassene er private fordi de kun skriver ut til skjerm og brukes i metodekall i noen av de andre metodene. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Effekten av \u00e5 ha et felt som public er vell at det kan brukes fra andre klasser. Hvis vi har en metode som private er effekten at det kun kan brukes i klassen med unntak hvis den blir brukt i en annen public metode i samme klasse kan det brukes av en annen klasse. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Hensikten med publice og private felt\/metoder er \u00e5 vise eller skjule informasjon fra andre klasser.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">6.<\/span><\/p>\n<p><span style=\"font-weight: 400\">for \u00e5 kunne kj\u00f8re programmet utenfor BlueJ, fra ett kommandovindu \u00a0(cmd) m\u00e5 vi lage en ny klasse med main<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">public static void main (String[]args) i en ny klasse i programmet tech-support2.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Deretter \u00e5pner jeg cmd (norsk ledetekst) og skriver cd som st\u00e5r for change directory. Vi g\u00e5r inn i mappen til der programmet tech-support 2 er lagret og kj\u00f8rer kommandoen java klasse main (klassenavn) i cmd<\/span><\/p>\n<p><span style=\"font-weight: 400\">Steps for \u00e5 kj\u00f8re programmet med main fra kommandoen cmd:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">skriv cd\\<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">cd C:\\Users\\Bruker\\Desktop\\projects\\Moduler\\Modul 6\\Modul 6\\Modul 6<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">dir <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">java klassemain<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\"><\/span><\/p>\n<p><span style=\"font-weight: 400\">L\u00e6ringsm\u00e5l Modul 6<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Kriterier<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Demonstrere bruk av Random klassen, du velger ett egnet eksempel selv.<\/b><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Random klassen er en klasse java klasse bibliotek og brukes i java for \u00e5 velge noe tilfeldig:<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Eksemplet jeg skal bruke her er fra random klassen i tech-support 2 som bruker klokke <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">private Random randomGenerator;<\/span><\/p>\n<p><span style=\"font-weight: 400\">randomGenerator = new Random();<\/span><\/p>\n<p><span style=\"font-weight: 400\">public int test(){<\/span><\/p>\n<p><span style=\"font-weight: 400\">\/\/det returneres et tilfeldig tall ut ifra klokken til datamaskinen<\/span><\/p>\n<p><span style=\"font-weight: 400\">return randomGenerator.nextInt();<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Dette var bare en test, men i v\u00e5r tilfelle har valgt \u00a0\u00e5 hente svarene tilfeldig i tech-support system og valgt \u00e5 skrive slik<\/span><\/p>\n<p><span style=\"font-weight: 400\">int index = randomGenerator.nextInt(responses.size());<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Studenten skal kunne bruke klasser fra standard biblioteket p\u00e5 en fornuftig m\u00e5te i egen kode. Skal i hvert fall kjenne til disse: String, Random, HashMap, HashSet og Iterator<\/b><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Noe av disse klassen kjenner jeg til fra forrige semester som String, og iterator \u00a0som jeg brukte det i Modulene. <\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">String av type \u201cTEKST\u201d, videre betyr alle felt og metoder som har String er kun av type \u201cTEKST\u201d og ikke noe tall.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">F.eks for \u00e5 deklarere en felt med string<\/span><\/p>\n<p><span style=\"font-weight: 400\">private String name;<\/span><\/p>\n<p><span style=\"font-weight: 400\">private ArrayList&lt;String&gt; minArray; \/\/betyr at den inneholder objekter av type string \u201cTEKST\u201d<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Her bruker jeg eksempel fra tech-support 2<\/span><\/p>\n<p><span style=\"font-weight: 400\">\/\/Dette er enkel metode som bruker String som metode type, dermed betyr at metoden kun kan returnere string. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">public String getInput(){<\/span><\/p>\n<p><span style=\"font-weight: 400\">System.out.println(\u201c&gt;\u201d);<\/span><\/p>\n<p><span style=\"font-weight: 400\">String inputline = reader.nextLine();<\/span><\/p>\n<p><span style=\"font-weight: 400\">return inputline;<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Iterator brukte jeg i Modul 4 forrige semester. Iterator brukes i Array sammen med loops. Det brukes for \u00e5 g\u00e5 gjennom en liste p\u00e5 lik linje som loops men har annet funksjonalitet som \u00e5 finne en verdi i listen og dermed fjerne denne. (it.hasNext()) og it.next())<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Iterator&lt;ElementType&gt; it = myCollection.iterator();<\/span><\/p>\n<p><span style=\"font-weight: 400\">while(it.hasNext()){<\/span><\/p>\n<p><span style=\"font-weight: 400\">call it .hasNext() to get the next element<\/span><\/p>\n<p><span style=\"font-weight: 400\">do something with that element<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Random klassen forklarte jeg tidligere og eksempel fra tech-support 2 er brukt.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">HashMap<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Map is a collection similar to list and Set, that stores key\/value pairs as entries. Values can be looked up by providing the key.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Example from tech-support 2<\/span><\/p>\n<p><span style=\"font-weight: 400\">Public HashMap&lt;Integer,String&gt; responsMap;<\/span><\/p>\n<p><span style=\"font-weight: 400\">responsMap = new HashMap&lt;Integer,String&gt;();<\/span><\/p>\n<p><span style=\"font-weight: 400\">\/\/to add something in the Map collection<\/span><\/p>\n<p><span style=\"font-weight: 400\">responsMap.put(0, \u201cthe is the first thing stored in the Map collection\u201d);<\/span><\/p>\n<p><span style=\"font-weight: 400\">ResponsMap.put(1, \u201cthe is the second thing stored in the Map collection\u201d);<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u2026<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">As mentioned earlier Map stores key\/value pairs as entries. in this case our keys <\/span> <span style=\"font-weight: 400\">are the values 0 and 1 of type integer and value the text of type String. If we want <\/span> <span style=\"font-weight: 400\">print for instance the the first text, we refer to the key \u201c0\u201d. Further, also if we do<\/span><\/p>\n<p><span style=\"font-weight: 400\">enter 1, the value related will be printed.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">HashSet:<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Set is similar to ArrayList, but it differs from ArrayList by having the functionality of storying each individual element at most once and it does not maintain any specific order.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Example from tech-support 2<\/span><\/p>\n<p><span style=\"font-weight: 400\">import java.util.HashSet;<\/span><\/p>\n<p><span style=\"font-weight: 400\">HashSet&lt;String&gt; words = new HashSet&lt;String&gt;();<\/span><\/p>\n<p><span style=\"font-weight: 400\">for(String word: wordArray){<\/span><\/p>\n<p><span style=\"font-weight: 400\">words.add(word);<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">return words;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Studenten skal kunne skrive dokumentasjon for egne klasser og metoder som er god nok til at andre kan bruke klassen\/metoden. Kan bruke de viktigste dokumentasjon taggene (@author, @returns, @param)<\/b><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Dokumentasjon viser jeg i videon, de mest viktigste er nettopp disse tre @author,<\/span><\/p>\n<p><span style=\"font-weight: 400\">@returns og @param. \u00a0Ved \u00e5 dokumentere en klasse ved bruk av disse tre kan det v\u00e6re enklere \u00e5 forst\u00e5 hvem som har skrevet programmet og hva slags parameter og verdi de returner i metoder. I Tillegg til s\u00e5 har vi Metode kommentar som forklarer mer hva hensikten med metoden er og vi har klass introduksjon som forklarer fra denne klassen\/programmet gj\u00f8r.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Skj\u00f8nner bruk av private og public, og kan forklare begrepet &laquo;Information hiding&raquo;, og vise dette i praksis. <\/b><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">information hiding is a principle that states that internal details of a class\u2019s implementation should \u00a0be hidden from other classes. It ensures better modularization of an application.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">The private keyword enforces information hiding by not allowing other classes \u00a0\u00a0\u00a0access to this part of the class. This ensures loose coupling and makes an application more modular and easier to maintain.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Kan demonstrere bruk av static og final. <\/b><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">\/\/static<\/span><\/p>\n<p><span style=\"font-weight: 400\">static<\/span><span style=\"font-weight: 400\"> is java\u2019s syntax to define class variables. Class variables are fields that are <\/span><\/p>\n<p><span style=\"font-weight: 400\">stored in a class itself, not in an object.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Class variables are frequently used if a value should always be the same for all<\/span><\/p>\n<p><span style=\"font-weight: 400\">instances of a class.Instead of storing one copy of the same value in each object,<\/span><\/p>\n<p><span style=\"font-weight: 400\">which would be a waste of space and might be hard to coordinate, a single value can<\/span><\/p>\n<p><span style=\"font-weight: 400\">be shared among all instances.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\/\/a line of code that introduces the two new keywords which are used together: static \u00a0\u00a0and final.<\/span><\/p>\n<p><span style=\"font-weight: 400\">private static final int GRAVITY = 3;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">\/\/final<\/span><\/p>\n<p><span style=\"font-weight: 400\">Constants are similar to variables, but they cannot change their value during the execution of an application.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In java, constants are defined with the keyword final<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">private final int SIZE = 10;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">If a value is intended no to change, it is good idea to declare it final. This ensures that it cannot accidentally be changed later. Any attempt to change a constant field will result in a compile-time error message.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modul 1 Godkjenning Screenshots og video opptak av modul 1 der jeg forklarer og viser l\u00e6ringsm\u00e5lene til modulet ved bruk av programmet BlueJ. Hensikten med denne modulen var \u00e5 l\u00e6re bruken av programmet blueJ og Java klasser, objekter og metoder. &nbsp; Nett: https:\/\/www.youtube.com\/watch?v=V6qL7RDeeFA Download:\u00a0Modul 1 l\u00e6ringsm\u00e5l video optakk Screenshots: &nbsp; Modul 2 Detter er screenshots [&hellip;]<\/p>\n","protected":false},"author":1340,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"_links":{"self":[{"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/pages\/58"}],"collection":[{"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/users\/1340"}],"replies":[{"embeddable":true,"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":19,"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/pages\/58\/revisions"}],"predecessor-version":[{"id":235,"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/pages\/58\/revisions\/235"}],"wp:attachment":[{"href":"https:\/\/home.uia.no\/mahamy16\/wp-json\/wp\/v2\/media?parent=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}