Siste rapport IS 109: modul 4 og 5

Da var alle modulene i IS 109 fullført! JIPPI!

4. modul var den aller mest krevende og tok mye lengre tid enn antatt. Jeg jobbet samtidig med modul 4 og 5, ved at jeg utarbeidet designet på et program først i henhold til metoden som var beskrevet i boka og deretter laget jeg kildekoden i henhold til det.

Ved presentasjonen for foreleser ble det raskt tydelig at jeg hadde planlagt et program som var litt for komplisert i forhold til hvor mye java jeg kunne. Jeg fikk imidlertid mange gode tips og råd om hvordan jeg kunne forenkle og videreutvikle programmet mitt. Det var både morsomt og litt frustrerende på samme tid.

Etter jul tok jeg altså likevel beslutningen om å ikke gå videre til IS 110. Årsaken er rett og slett at faget blir for arbeidskrevende for meg akkurat nå og fordi jeg har bestemt meg for at jeg ikke skal gå videre med systemutvikling som spesialisering på master.

Men ingenting er bortkastet – jeg forstår da endel om programmering med java etter disse 5 modulene!

 

 

Ukesrapport uke 42-44

1. Hvor er jeg?

Jeg hadde som mål å lese gjennom kapittel 4 i boka og gjøre alle oppgavene i løpet av uke 42/43 og så jobbe med innleveringen i uke 44. Nå er det tirsdag kveld i uke 44 og jeg er fortsatt ikke helt ferdig med å lese kapittelet og har bare gjort halvparten av oppgavene i boka så langt. Jeg har gjennomgått læringsmål, materialet som lå som anbefalte ressurser. Den ene forelesningen (av Christian Moen) som var lagt ut, forstod jeg ingenting av og ga litt opp.

2. Hva har jeg lært denne uka

  • Samling av objekter i lister gjør at vi kan behandle alle samtidig, slik at vi slipper å skrive metoden om igjen og om igjen for hvert element vi skal behandle. Vi bruker istedet ulike typer løkker til å behandle alle elementer som er lagt i lista. Det finnes flere typer løkker vi kan bruke, f.eks. for each løkke, while løkke og for løkke.
  • ArrayList, er en klasse fra standardbiblioteket til Java
  • Noen av de metodene jeg kjenner til/ forstår i ArrayList er: constructor (oppretter en ny liste), add (legger til på slutten av listen), remove (fjerner verdien på et bestemt sted, get (henter verdien på et bestemt sted), size (henter lengden på listen). For å forsøke å forstå mer av hva ArrayList inneholder, sjekket jeg ut denne: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
  • Når vi skal bruke ArrayList må vi spesifisere hva slags type objekter listen vår skal inneholde, dvs. hva vi vil lage en liste av, f.eks. String eller int. Dersom vi skal lage en liste av boktitler, må vi definere at listen skal være av typen String. Det kan da se slik ut: private ArrayList <String> bøker = new ArrayList <String> (); bøker blir da en liste av String objekter.
  • Standardbiblioteket i Java består av mange klasser vi kan importere slik at vi slipper å lage alle metoder selv, men kan benytte klasser med metoder som andre Java-programmerere har utarbeidet og som allerede er kvalitetssikret og testet.
  • Import setninger gjør at vi kan hente inn klasser fra standardbiblioteket til Java og deretter benytte bare klassenavnet (kortnavnet) videre i kildekoden, f.eks. vil java.util.ArrayList vise oss at klassen ArrayList ligger i pakken java.util i standardbiblioteket. Legger vi en import setning helt først i kildekoden (før klassen), slipper vi å skrive alt dette og kan bruke bare kortnavnet ArrayList.
  • for each løkke brukes til å gjennomgå en liste av elementer, ett og ett element av gangen. Hver gang vi går gjennom løkka, får variabelen i løkka verdien av det neste elementet i lista. Enkelt sagt: for hvert element i lista – gjøres det som står i kroppen på metoden. Nummereringen starter på 0 (null), dvs. det første elementet i lista ligger på plass nr 0 (null) og ikke plass nr 1 som vi forventer. Dermed må vi være påpasselig når vi skal fjerne elementer i lista eller hente frem et element fra lista at vi faktisk spør på riktig plass.
  • while løkke brukes for å lete gjennom en liste og vurdere om en «påstand» er sann for hvert element i lista – altså gjentakende for hvert element, for deretter å utføre det som står i kroppen i løkken. Hvis «påstanden» ikke er sann, vil gjentakelsen av kroppen stanse og kroppen i løkken utføres ikke.
  • iterasjon: gjentakelse av en tidligere oppgave, f.eks. en blokk med setninger (statements) gjentas til man har oppnådd ønsket resultat. Dette er det som skjer i en while løkke.
  • Definite iteration (bestemt/ begrenset iterasjon?) hvor mange ganger kroppen i løkken utføres avhenger av det totale antallet elementer i listen
  • Indefinite iteration (uendelig iterasjon): hvor mange ganger kroppen i løkken utføres avhenger av hvor i listen den finner det vi er ute etter/ det som gjør setningen (statement) sann.
  • array en type liste som kan inneholde et bestemt antall elementer
  • pseudo kode en måte å beskrive kode på som gjør det lesbart og mer uformelt,  ikke et programmeringsspråk, men med elementer fra programmeringsspråk.

Problemer?

Siden jeg er i full jobb, er utfordringen min å få nok tid til å jobbe kontinuerlig med å lese/ se på forelesningene og gjøre oppgaver. Den siste måneden og noen uker fremover har jeg mye overtid på jobb samtidig og det er dermed vanskelig å få nok tid til dette.

Denne modulen har vært krevende å forstå. Det hjalp litt å se på mini-forelesningene som var lagt ut – helt til jeg så den som var laget av Christian Moen. Da datt jeg fullstendig av og klarte ikke å følge den.

Denne innleveringen klarer jeg ikke å levere innen tidsfristen. Jeg trenger rett og slett mer tid til å lage et prosjekt fra bunnen av og klare å demonstrere at jeg mestrer alle læringsmålene.

 4. Plan:

Jeg må ta en prat med Hallgeir for å se om det er mulig å utsette fristen på både modul 4 og 5 grunnet mye press på jobb i denne perioden. Dersom dette ikke er mulig, må jeg legge IS 109 på is frem til neste gang jeg kan følge kurset.

Ukesrapport uke 39/40

1. Hvor er jeg?

Jeg har jobbet med gjennom Modul 3 i løpet av denne og forrige uke. Jeg har gjennomgått læringsmål, materialet som lå som anbefalte ressurser + lest kapittel 3 i boka og gjort stort sett alle oppgavene som hører til. Jeg har også gjennomgått alle oppgavene i kapittel 2 etter at løsningsforslagene ble lagt ut. Jeg har brukt 3-4 hele dager.

2. Hva har jeg lært denne uka

  • Abstraksjon: å konsentrere seg om de store linjene, helheten, fremfor å fokusere på detaljer.
  • Modularisering: å dele opp helheten i flere elementer/ deler, slik at man kan fokusere på en og en del hver for seg. Dette er nyttig når flere personer er involvert ved utvikling  av en applikasjon, da man kan jobbe med hver sin del av programmet, teste hver for seg og så sette det sammen til en applikasjon når alle delene er ferdigstilt.
  • DIVIDE & CONQUER! Betyr å bryte opp i mindre deler, slik at det blir mer håndterbart.
  • Klassediagram viser sammenhengen/ relasjoner mellom ulike klasser (statisk)
  • Objektdiagram viser sammenhenger mellom felter i objekt og deres relasjoner til andre objekter. Objektdiagram gir et øyeblikksbilde når programmet kjører (dynamisk).
  • Klassediagram og objektdiagram er nyttige verktøy for abstraksjon (overordnet/helhet) og modularisering (bryte opp i mindre deler).
  • Primitive typer er typer som er definert i Java, som f.eks. int (heltall), boolean (true/false), char (bokstaver), double (tall med to desimaler) osv. Primitive typer har ingen metoder.
  • Objekttyper er typer som defineres av klasser. String er et eksempel på det og ellers typer vi skriver inn i kildekoden selv.
  • Debugger er et verktøy man kan bruke for å kjøre program/ kildekode linje for linje, for å undersøke om relasjoner til objekter har blitt korrekt og at koden ikke inneholder feil og at vi får ønsket effekt av å kjøre programmet.
  • PMD er et verktøy for å sjekke kildekoden for feil (som ikke debuggeren klarer å avdekke)
  • Checkstyle er et verktøy for å sjekke at formatet på koden følger anbefalte standarder (eks. angivelse av forfatter, versjon, beskrivelse av felter, metoder osv.)

3. Problemer?

Jeg måtte gjøre en del oppgaver fra kapittel 2 på nytt etter at løsningene forelå, for å forstå mer. Jeg forstod fremdeles ikke oppgave 2.88 og 2.91.

Jeg har hatt mange tekniske utfordringer disse ukene. Problemer med sen respons fra TechSmithRelay. Videoen jeg har spilt inn «ventet på behandling» hos Uninett i flere timer før jeg fikk tilgang til den. Jeg forstår ikke hvorfor. Dette er et program som er anbefalt av UiA å bruke til dette formålet, men det responderer altfor sent.

Da jeg leste gjennom kapittel 3, stod det ingenting om verken PMD eller Checkstyle. Det var da jeg skulle lage videoen at jeg skjønte at dette var programvare jeg måtte installere. Siden jeg bruker jobb-PC’en og ikke kan installere det jeg selv vil, må jeg nå vente på godkjenning fra IT avdelingen på å få lov til å installere disse to. Jeg har derfor laget en video uten demonstrere disse to og må oppdatere videoen med en ny versjon når dette er gjort.

Jeg går glipp av en del slik informasjon siden jeg jobber med dette på egenhånd og det er veldig utfordrende å klare å levere modulene i tide pga. en del slike tekniske ting.

 4. Plan:

Målet er ta alle 5 moduler og bestå IS109 i høst for å kunne bygge videre på dette til våren.

For kommende uke er målet å lese teorien for neste modul ferdig.

Ukesrapport uke 37

1. Hvor er jeg?

Jeg har jobbet med gjennom Modul 2 i dag og vil fortsette på Modul 3 neste uke. Denne uken har jeg ikke fått jobbet jevnlig, men måtte ta en studiedag fra jobb for å gjennomgå kapittel 2 og ferdigstille innleveringen. Jeg har brukt studiedagen til å gjennomgå læringsmål, materialet som lå som anbefalte ressurser + lese kapittel 2 i boka og gjort stort sett alle oppgavene som hører til. Jeg har brukt en hel dag, om lag 7-8 timer.

2. Hva har jeg lært denne uka

  • Opprette en klasse og lese/ definere en klasse.
  • Rekkefølgen man bør gjør ting i, dvs. definere felter, constructor og deretter metoder.
  • Forskjellen mellom Constructor og metode: Constructor er en metode som utføres automatisk ved opprettelsen av et nytt objekt. Constructor må ha samme navn som klassen og skrives med stor forbokstav (til forskjell fra metoden, som skrives med liten forbokstav).
  • At det som står i klammer er kroppen på metoden, dvs. det er dette som blir utført.
  • At det er viktig å legge inn kommentarer som forklarer klassen, constructor og metodene
  • void betyr ingenting/tomt, dvs. returnerer ingen verdi
  • get setninger innebærer at det returneres en verdi fra et felt (accessors i boka)
  • set setninger innebærer at verdien endres (mutators i boka)
  • oppdaget viktigheten av å være nøye med ; og » » og ( ) og /*, */, //
  • lært hvordan feil kan rettes ved å se på feilmelding ved kompillering

3. Problemer?

Strevde mest med tiden denne gangen, ettersom jeg jobber 100%. Og føler meg ikke helt komfortabel med siste del av kapittel 2 ennå. Må jobbe videre med dette.

 4. Plan:

Målet er ta alle 5 moduler og bestå IS109 i høst for å kunne bygge videre på dette til våren.

For kommende uke er målet å lese teorien for neste modul ferdig. Har lagt inn en studiedag i forkant av alle innleveringene for å gjøre oppgaver og ferdigstille innlevering.

Ukesrapport uke 35

1. Hvor er jeg?

Jeg har avsluttet Modul 1 i dag og vil fortsette på Modul 2 neste uke. Denne uken har jeg opprettet hjemmeside med blogg, gjennomgått materialet fra første forelesning, lest læringsmål for Modul 1 og arbeidskrav for faget. Jeg har lest kapittel 1 i boka og gjort en del av oppgavene som hører til + laget demo-video/ innlevering. Mener jeg har brukt ca. 15 timer totalt.

2. Hva har jeg lært denne uka

Jeg kunne ingenting om programmering og ALT er nytt. Jeg har lært litt generelt om JAVA som programmeringsspråk, om de aller enkleste elementene som klasser, objekter, hvordan man kan kalle på ulike metoder, se på/ endre kildekoden, har forstått hva å «kompilere» betyr (oversette fra tekst (eks. JAVA) til binær kode).

3. Problemer?

Ja, jeg fikk litt utfordringer med å legge ut demo-videoen etter at jeg var ferdig med den. Nettsiden ville først ikke godta formatet, så jeg strevde litt med det. Men det ser ut som jeg fikk det til. Jeg ble ferdig kl 22 den 1. september. Ikke ideelt, altså. Men denne innleveringen kom veldig brått på, ettersom jeg er i full jobb ved siden av og ikke følger forelesningene.

 4. Plan:

Målet er ta alle 5 moduler og bestå IS109 i høst for å kunne bygge videre på dette til våren.

For neste uke er målet å lese teorien for neste modul ferdig. Har lagt inn en studiedag noen dager før neste innlevering for å gjøre oppgaver og lage neste video.

Jeg er i gang!

Her vil jeg legge ut informasjon om fremdriften i studiet.

I dag har jeg begynt å sette meg inn i læringsmål i faget IS 109 Objektorientert programmering. Jeg har opprettet denne hjemmesiden, installert BlueJ og Techsmith Relay og lastet ned eksempler fra boka/ house Projects etc. Første innlevering skal skje allerede fredag denne uken.