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å objektorienert programmering. I det følgende skal jeg fortelle litt om læringsmålene som er:
Å åpne, lagre og lukke prosjekter.
Lage objekter.
Kalle metoder i objektene, med og uten parametere.
Bruke editoren til å se på kildekoden til en klasse.
Kompilere et prosjekt.
Jeg skal også kunne litt grunnleggende i java, som er følgende:
Kjenne igjen en klassedefinisjon.
Kjenne til forskjellige typer data.
Kalle metoder med et objekt som parameter.
Kalle metoder som returnerer en verdi.
Forskjellen mellom klasse og objekt.
Jeg kan starte denne framføringen med å vise hvordan vi åpnerer, lagrer og lukker prosjekter. Du vil kjenne igjen framgangsåten fra tidligere erfaringer. I BlueJ klikker man på «Project», deretter klikker man må på «Open Project», og velger da hvilket prosjekt du ønsker å åpne. Når du skal lagre dette prosjektet klikker du igjen på «Project», og klikka da på «Save As», angir navn, og trykker på lagre. Skal du lukke dette prosjektet må du klikke på det røde krysset i høyre hjørne.
Etter at du har åpnet dette prosjektet, ser du at at det finnes noen ruter på skjermen. Dette er klasser. Tar du pilen over denne klassen og høyreklikker, ser du at du får en mulighet til å lage noe som klasses for et objekt. Objektene vises fram i nedre firkant på BlueJ. Objektene representerer indiviuelle instanser fra en klasse. Det vil si at en klasse også kan defineres som en gruppe. Objektene er selve individene i klassen, og disse objektene kan få egne metoder og egenskaper. Eksempel: Du kan en klasse for bil -> Du lager flere forskjellige objekter som representerer forskjellige typer biler.
Du kan kalle på metodene på forskjellige måter. Når du høyreklikker på objektet får du opp flere forskjellige muligheter. Når du kaller på en metode uten å måtte oppgi informasjon kaller du på en metode uten parametere, metoder der det er nøveding med informasjon for å kunne gjøre noe kalles metoder med parameteren.
En parameter lagrer informasjon om.
Ved å dobbeltklikke på 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 øverste grønne delen gir oss litt informasjonon om klassen. Videre har du konstruktører som lager metoder og liknende. Den øverste delen, altså overskriften til en metode kalles for en sigratur. Her står det litt informasjon som er nødvendig for å kunne kalle på en metode.
Helt i starten av kildekoden står det public class «...», her er en liten klassedefinisjon som gir opplysninger om hva denne klassen inneholder.
Du har sikkert lagt merke til at du har muligheten til å trykke på «compile». Det betyr at du kan kompilerer prosjektet. Det betyr kort fortalt at du oversetter prosjektet fra Java-språk til PC-språk. En PC forstår ikke java, ettersom den benytter seg av et langt mer komplisert språk. Å kompilerer gjør det mulig å la PC-en forså prosjektet. Hver gang du gjør en endring på prosjektet må du kompliere før du kjører det.
I java finnes det også flerer forskjellige typer data. De to typene vi blir berørt av hyppigst i modul 1 er typene String og int. String er en type som lagrer tektst. Å bruke String riktig vil si at du må skrive ordet/teksten med en stor forbokstav, og du må også da ha anførselstegnt både før og etter ordet/teksten. Int er en forkortelse for integer, og denne typen lagrer tall. Her er det ikke noen krav om anførselstegn.
Når du kaller metoder er det også mulig å kalle metoder som returnerer verdi. Om en metode returnerer eller ikke returnerer verdi er spesifisert i signaturen til en metode. Står det for eksempel «String» foran så returnerer den verdi. Void returnerer ingen verdi.
Dette er et sammendrag i kapittel to i læreboka som handler om modul 2. Vi skal nå gå litt vekk fra det grunnleggende, og vil gå dypere inn på kildekoden til moduler og programmering. I dette sammendraget skal jeg kunne om navn på klasser, hvilke felt de har og hvilke typer de har, og også forteller om hvilke metoder den har og hva metodene heter. Jeg skal beskrive parametere – med navn og type, og returverdi for alle metoder. I Java skal jeg kunne forskjelen på forskjellige metoder: constructors, getter og setters. Jeg skal også vite hva de brukes til. Videre skal jeg kunne skrive en klassedefinisjon med felt og metoder i riktig rekkefølge og med metoder som bruker tilordning, if-setninger og utskrifter.
Selve teksten til klassen kan du dele opp i to hoveddeler: outer-wrapping (class-header) som definerer kalssen, og inner-part som gjør selve kodearbeidet. Eks:
Outer-wrapping --> public class TicketMachine {
---> Inner-part(kode) of the class
}
Klassenavn starter alltid med stor forbokstav.
Feltene lagrer data inni et objekt, samtidig som konstruktøren er ansvalig for å sikre at et object er satt opp riktig når det ført er opprettet. Metodene implementerer oppførselen til et objekt: det danner det funskjonalitet. Eks:
public class Klassenavn
{
- Felt
- Konstruktør
- Metode
}
Når vi definerer felt-variabler i classer så vet vi at de:
Vanligvis starter med order «private».
De har inkludert en type «int/String/Person etc.»
De har inkludert et bruker-valgt navn for felt-variablen.
De slutter med semikolon.
Konstruktører lar bojekter bli satt opp riktig, og sørger for at objektet er klart til å blu brukt. Konstruktøren har det samme navnet som klassen de er definert i, i dette tilfellet: TicketMachine. Konstruktørens navn kommer etter ordet «public», uten annet innhold.
Vi burde forvente en nær sammenheng mellom det som skjer i «bodyen» i en konstruktør og i klassen sitt felt.
Parametere er som tidligere nevnt også en type felt som lagrer data. Eks: public Ticketmachine (int cost) = parameteret er cost av type int(integer). En parameter er også brukt som en kort og midlertidig beskjed.
Å returnere en verdi betyr at en spesifisert type informasjon strømmer 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åten objektet gir over informasjonen tilbake til kalleren.
Get-metoder returnerer verdi fra/til en av objektenes felt.
Metoder som insertMoney og printTicket har en større rolle, først og fremst fordi de en drer verdien til en eller flere felt i objektet hver gang noen kaller på dem. Metoder som endrer «state of the object» kalles for mutator methods.
Set-metoder tillater at objektet endrer «Sate of the object.»
I dette følgende skal jeg summere innholdet i kapittel tre. De seks viktigste punktene i dette kapitelet er: abstraksjon, modularisering, objekt-danning, objekt-diagram, metodekalling og debugging.
Jo lenger ut i læreboka vi kommer, jo mer komplekse vil oppgavene bli. Derfor er det et pluss hvis en kan håndtere disse komplekse oppdavene del for del.
Abstraksjon handler om å dele komplekse problemer inn i sub-problemer, og så dele sub-problemer inn i sub-sub-problemer. Hvis det er nødvendig kan du videre dele problemene inn i mindre problemer. Dette gjøres for å dele problemene inn i så små delere at de er lette å håndteres med. Når vi har løst ett av sub-problemene dveler vi ikke lenger ved dét problemer, men bruker denne løsningen som en blokk videre.
Denne teknikken kalles ofte for "divide and conquere".
Modularisering er å dele problemet inn i selsvendige moduler/individer, for så å sette ulike personer til å løse og arbeide med de ulike modulene/individer. Deretter settes disse sammen igjen til en helhet.
Modularisering og abstraksjon fullfører hverandre. Modularisering er prosessen der du deler store problemer inn i mindre deler, mens abstraksjon er evnen til å ignorere detaljer for å fokuserer på det større bildet.
Vi kan lage flere objekter fra samme klasse. Klassediagram viser statisk tilstand. Objektdiagram viser den dynamiske tilstanden. Objektidiagrammet viser en viktig ting: Når 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.
--------------------------------------------------------------------------------------------------------------------
Logic 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:
&& (and)
|| (or)
! (not)
The expression: a &&(and) b = Is true if both a and b are true, and false in all other cases.
The expression: a ||(or) b = Is true if either a or b or both are true, and false if they are both false.
The expression: !(not)a = Is true if a is false and false is a is true.
--------------------------------------------------------------------------------------------------------------------
The modulo operator(%).
Modulo operatøren beregner resten av et heltall dividert. For eksempel resultatet av divisjonen:
27/6
kan uttrykkes i heltallsantall som
result = 6, remainder = 3
Modulo-operatøren returnerer bare den resterende del av en slik inndeling. Således, ville resultatet av uttrykket (27% 4) være 3.
Kilden jeg har brukt er boka «Objects First with Java» av David J. Barnes og Michael Kölling.