
{"id":74,"date":"2014-10-31T10:00:50","date_gmt":"2014-10-31T09:00:50","guid":{"rendered":"http:\/\/home.uia.no\/tanjam14\/?p=74"},"modified":"2014-10-31T10:00:50","modified_gmt":"2014-10-31T09:00:50","slug":"modul-3-litt-om-hva-jeg-har-laert-til-na-og-video","status":"publish","type":"post","link":"https:\/\/home.uia.no\/tanjam14\/2014\/10\/31\/modul-3-litt-om-hva-jeg-har-laert-til-na-og-video\/","title":{"rendered":"Modul 3: Litt om hva jeg har l\u00e6rt til n\u00e5 &#8211; og video."},"content":{"rendered":"<pre>Link til modul 3: https:\/\/screencast.uninett.no\/relay\/student\/tanjam14uia.no\/2014\/30.10\/529600\/Modul3_-_20141030_174115_36.html<\/pre>\n<pre>Dette er det sammenlagte konseptet i <span style=\"font-size: 0.857142857rem;line-height: 1.714285714\">kurset IS-109 som baserer seg p\u00e5 objektorienert programmering. I det f\u00f8lgende skal jeg fortelle litt om l\u00e6ringsm\u00e5lene som er:<\/span><\/pre>\n<pre>\u00c5 \u00e5pne, lagre og lukke prosjekter.\r\nLage objekter.\r\nKalle metoder i objektene, med og uten parametere.\r\nBruke editoren til \u00e5 se p\u00e5 kildekoden til en klasse.\r\nKompilere et prosjekt. \r\n\r\nJeg skal ogs\u00e5 kunne litt grunnleggende i java, som er f\u00f8lgende:\r\nKjenne igjen en klassedefinisjon.\r\nKjenne til forskjellige typer data.\r\nKalle metoder med et objekt som parameter.\r\nKalle metoder som returnerer en verdi.\r\nForskjellen mellom klasse og objekt. \r\n\r\nJeg kan starte denne framf\u00f8ringen med \u00e5 vise hvordan vi \u00e5pnerer, lagrer og lukker prosjekter. Du vil kjenne igjen framgangs\u00e5ten fra tidligere erfaringer. I BlueJ klikker man p\u00e5 \u00abProject\u00bb, deretter klikker man m\u00e5 p\u00e5 \u00abOpen Project\u00bb, og velger da hvilket prosjekt du \u00f8nsker \u00e5 \u00e5pne. N\u00e5r du skal lagre dette prosjektet klikker du igjen p\u00e5 \u00abProject\u00bb, og klikka da p\u00e5 \u00abSave As\u00bb, angir navn, og trykker p\u00e5 lagre. Skal du lukke dette prosjektet m\u00e5 du klikke p\u00e5 det r\u00f8de krysset i h\u00f8yre hj\u00f8rne. \r\n\r\nEtter at du har \u00e5pnet dette prosjektet, ser du at at det finnes noen ruter p\u00e5 skjermen. Dette er klasser. Tar du pilen over denne klassen og h\u00f8yreklikker, ser du at du f\u00e5r en mulighet til \u00e5 lage noe som klasses for et objekt. Objektene vises fram i nedre firkant p\u00e5 BlueJ. Objektene representerer indiviuelle instanser fra en klasse. Det vil si at en klasse ogs\u00e5 kan defineres som en gruppe. Objektene er selve individene i klassen, og disse objektene kan f\u00e5 egne metoder og egenskaper. Eksempel: Du kan en klasse for bil -&gt; Du lager flere forskjellige objekter som representerer forskjellige typer biler. \r\n\r\nDu kan kalle p\u00e5 metodene p\u00e5 forskjellige m\u00e5ter. N\u00e5r du h\u00f8yreklikker p\u00e5 objektet f\u00e5r du opp flere forskjellige muligheter. N\u00e5r du kaller p\u00e5 en metode uten \u00e5 m\u00e5tte oppgi informasjon kaller du p\u00e5 en metode uten parametere, metoder der det er n\u00f8veding med informasjon for \u00e5 kunne gj\u00f8re noe kalles metoder med parameteren.\r\nEn parameter lagrer informasjon om. \r\n\r\nVed \u00e5 dobbeltklikke p\u00e5 en klasse kan du komme til noe som kalles for kildekode. Her kan du se hvordan klassen er bygget opp, og hvilke egenskaper den har. Den \u00f8verste gr\u00f8nne delen gir oss litt informasjonon om klassen. Videre har du konstrukt\u00f8rer som lager metoder og liknende. Den \u00f8verste delen, alts\u00e5 overskriften til en metode kalles for en sigratur. Her st\u00e5r det litt informasjon som er n\u00f8dvendig for \u00e5 kunne kalle p\u00e5 en metode. \r\n\r\nHelt i starten av kildekoden st\u00e5r det public class \u00ab...\u00bb, her er en liten klassedefinisjon som gir opplysninger om hva denne klassen inneholder. \r\n\r\nDu har sikkert lagt merke til at du har muligheten til \u00e5 trykke p\u00e5 \u00abcompile\u00bb. Det betyr at du kan kompilerer prosjektet. Det betyr kort fortalt at du oversetter prosjektet fra Java-spr\u00e5k til PC-spr\u00e5k. En PC forst\u00e5r ikke java, ettersom den benytter seg av et langt mer komplisert spr\u00e5k. \u00c5 kompilerer gj\u00f8r det mulig \u00e5 la PC-en fors\u00e5 prosjektet. Hver gang du gj\u00f8r en endring p\u00e5 prosjektet m\u00e5 du kompliere f\u00f8r du kj\u00f8rer det. \r\n\r\nI java finnes det ogs\u00e5 flerer forskjellige typer data. De to typene vi blir ber\u00f8rt av hyppigst i modul 1 er typene String og int. String er en type som lagrer tektst. \u00c5 bruke String riktig vil si at du m\u00e5 skrive ordet\/teksten med en stor forbokstav, og du m\u00e5 ogs\u00e5 da ha anf\u00f8rselstegnt b\u00e5de f\u00f8r og etter ordet\/teksten. Int er en forkortelse for integer, og denne typen lagrer tall. Her er det ikke noen krav om anf\u00f8rselstegn. \r\n\r\nN\u00e5r du kaller metoder er det ogs\u00e5 mulig \u00e5 kalle metoder som returnerer verdi. Om en metode<span style=\"font-size: 0.857142857rem;line-height: 1.714285714\"> returnerer eller ikke returnerer verdi er spesifisert i signaturen til en metode. St\u00e5r det for eksempel \u00abString\u00bb foran s\u00e5 returnerer den verdi. Void returnerer ingen verdi. <\/span><\/pre>\n<pre><\/pre>\n<pre>Dette er et sammendrag i kapittel to i l\u00e6reboka som handler om modul 2. Vi skal n\u00e5 g\u00e5 litt vekk fra det grunnleggende, og vil g\u00e5 dypere inn p\u00e5 kildekoden til moduler og programmering. I dette sammendraget skal jeg kunne om navn p\u00e5 klasser, hvilke felt de har og hvilke typer de har, og ogs\u00e5 forteller om hvilke metoder den har og hva metodene heter. Jeg skal beskrive parametere \u2013 med navn og type, og returverdi for alle metoder.  I Java skal jeg kunne forskjelen p\u00e5 forskjellige metoder: constructors, getter og setters. Jeg skal ogs\u00e5 vite hva de brukes til. Videre skal jeg kunne skrive en klassedefinisjon med felt og metoder i riktig rekkef\u00f8lge og med metoder som bruker tilordning, if-setninger og utskrifter. \r\n\r\nSelve teksten til klassen kan du dele opp i to hoveddeler: outer-wrapping (class-header) som definerer kalssen, og inner-part som gj\u00f8r selve kodearbeidet. Eks:\r\n\r\n Outer-wrapping --&gt; public class TicketMachine {\r\n                                                                                ---&gt;  Inner-part(kode) of the class\r\n                                                                                         }\r\n\r\nKlassenavn starter alltid med stor forbokstav. \r\n\r\nFeltene lagrer data inni et objekt, samtidig som konstrukt\u00f8ren er ansvalig for \u00e5 sikre at et object er satt opp riktig n\u00e5r det f\u00f8rt er opprettet. Metodene implementerer oppf\u00f8rselen til et objekt: det danner det funskjonalitet. Eks:\r\n\r\npublic class Klassenavn\r\n{\r\n- Felt\r\n- Konstrukt\u00f8r\r\n- Metode\r\n}\r\n\r\nN\u00e5r vi definerer felt-variabler i classer s\u00e5 vet vi at de:\r\nVanligvis starter med order \u00abprivate\u00bb.\r\nDe har inkludert en type \u00abint\/String\/Person etc.\u00bb\r\nDe har inkludert et bruker-valgt navn for felt-variablen.\r\nDe slutter med semikolon.\r\n\r\nKonstrukt\u00f8rer lar bojekter bli satt opp riktig, og s\u00f8rger for at objektet er klart til \u00e5 blu brukt. Konstrukt\u00f8ren har det samme navnet som klassen de er definert i, i dette tilfellet: TicketMachine. Konstrukt\u00f8rens navn kommer etter ordet \u00abpublic\u00bb, uten annet innhold.\r\nVi burde forvente en n\u00e6r sammenheng mellom det som skjer i \u00abbodyen\u00bb i en konstrukt\u00f8r og i klassen sitt felt.\r\nParametere er som tidligere nevnt ogs\u00e5 en type felt som lagrer data. Eks: public Ticketmachine (int cost) = parameteret er cost av type int(integer). En parameter er ogs\u00e5 brukt som en kort og midlertidig beskjed. \r\n\r\n\u00c5 returnere en verdi betyr at en spesifisert type informasjon str\u00f8mmer gjennom mellom to ulike deler av programmet. En del av programmet har etterspur informasjon om objektet via kalling av metoder, og den returnerte verdien er m\u00e5ten objektet gir over informasjonen tilbake til kalleren. \r\n\r\nGet-metoder returnerer verdi fra\/til en av objektenes felt. \r\n\r\nMetoder som insertMoney og printTicket har en st\u00f8rre rolle, f\u00f8rst og fremst fordi de en drer verdien til en eller flere felt i objektet hver gang noen kaller p\u00e5 dem. Metoder som endrer \u00abstate of the object\u00bb kalles for mutator methods. \r\n\r\nSet-metoder tillater at objektet endrer \u00abSate of the object.\u00bb<\/pre>\n<pre>I dette f\u00f8lgende skal jeg summere innholdet i kapittel tre. De seks viktigste punktene i dette kapitelet er: abstraksjon, modularisering, objekt-danning, objekt-diagram, metodekalling og debugging. \r\n\r\nJo lenger ut i l\u00e6reboka vi kommer, jo mer komplekse vil oppgavene bli. Derfor er det et pluss hvis en kan h\u00e5ndtere disse komplekse oppdavene del for del. \r\n\r\nAbstraksjon handler om \u00e5 dele komplekse problemer inn i sub-problemer, og s\u00e5 dele sub-problemer inn i sub-sub-problemer. Hvis det er n\u00f8dvendig kan du videre dele problemene inn i mindre problemer. Dette gj\u00f8res for \u00e5 dele problemene inn i s\u00e5 sm\u00e5 delere at de er lette \u00e5 h\u00e5ndteres med. N\u00e5r vi har l\u00f8st ett av sub-problemene dveler vi ikke lenger ved d\u00e9t problemer, men bruker denne l\u00f8sningen som en blokk videre.\r\nDenne teknikken kalles ofte for \"divide and conquere\". \r\n\r\nModularisering er \u00e5 dele problemet inn i selsvendige moduler\/individer, for s\u00e5 \u00e5 sette ulike personer til \u00e5 l\u00f8se og arbeide med de ulike modulene\/individer. Deretter settes disse sammen igjen til en helhet. \r\n\r\nModularisering og abstraksjon fullf\u00f8rer hverandre. Modularisering er prosessen der du deler store problemer inn i mindre deler, mens abstraksjon er evnen til \u00e5 ignorere detaljer for \u00e5 fokuserer p\u00e5 det st\u00f8rre bildet. \r\n\r\nVi kan lage flere objekter fra samme klasse. Klassediagram viser statisk tilstand. Objektdiagram viser den dynamiske tilstanden. Objektidiagrammet viser en viktig ting: N\u00e5r en variabel er lagret i et objekt, er ikke objektet lagret direkte i variablen, men heller objektreferance. I et diagram er variablen vist i en hvit boks, mens objektet vises i en egen rute med referansebil. \r\n\r\n--------------------------------------------------------------------------------------------------------------------\r\nLogic operators operate on boolean values(true or false) and produce a new boolean value as a result. The tree most important logical operators are and, or and not. They are written in Java as:\r\n\r\n&amp;&amp; (and)\r\n|| (or)\r\n! (not)\r\n\r\nThe expression: a &amp;&amp;(and) b = Is true if both a and b are true, and false in all other cases.\r\nThe expression: a ||(or) b = Is true if either a or b or both are true, and false if they are both false.\r\nThe expression: !(not)a = Is true if a is false and false is a is true.\r\n--------------------------------------------------------------------------------------------------------------------\r\n\r\nThe modulo operator(%).\r\nModulo operat\u00f8ren beregner resten av et heltall dividert. For eksempel resultatet av divisjonen:\r\n27\/6\r\nkan uttrykkes i heltallsantall som\r\nresult = 6, remainder = 3 \r\n\r\nModulo-operat\u00f8ren returnerer bare den resterende del av en slik inndeling. S\u00e5ledes, ville resultatet av uttrykket (27% 4) v\u00e6re 3.<\/pre>\n<pre>Kilden jeg har brukt er boka \u00abObjects First with Java\u00bb av David J. Barnes og Michael K\u00f6lling.<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Link til modul 3: https:\/\/screencast.uninett.no\/relay\/student\/tanjam14uia.no\/2014\/30.10\/529600\/Modul3_-_20141030_174115_36.html Dette er det sammenlagte konseptet i kurset IS-109 som baserer seg p\u00e5 objektorienert programmering. I det f\u00f8lgende skal jeg fortelle litt om l\u00e6ringsm\u00e5lene som er: \u00c5 \u00e5pne, lagre og lukke prosjekter. Lage objekter. Kalle metoder i objektene, med og uten parametere. Bruke editoren til \u00e5 se p\u00e5 kildekoden til en [&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\/74"}],"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=74"}],"version-history":[{"count":3,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":78,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/posts\/74\/revisions\/78"}],"wp:attachment":[{"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/media?parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/categories?post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/home.uia.no\/tanjam14\/wp-json\/wp\/v2\/tags?post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}