Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Programmering i Java versjon 2000-08-15 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Liknende presentasjoner


Presentasjon om: "Programmering i Java versjon 2000-08-15 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."— Utskrift av presentasjonen:

1 Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3 Bruk av ferdige klasser Objekter som modeller av virkelighetenside 2-3 Klient og tjener, melding og operasjonside 4 Objekter og klasserside 5 Klassediagramside 6 Klassen Bilside 7-9 En referanse settes lik en annen referanseside 10 Brukergrensesnittet er et objektside Klassen mittBibliotek.JavabokGUIside 14 Pakkerside Klassen java.lang.Stringside 17-19

2 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 2 Objekter som modeller av virkeligheten •modell - en forenkling av virkeligheten. Vil fokusere på bestemte sider ved virkeligheten. •objekt - en modell av en ting som problemet vi skal løse, handler om. –fokus på kunnskap, objektet vet en del ting om seg selv: •eksempler på objekter: –En bil har kunnskap om sitt eget registreringsnummer, merke og modell. Den vet hvordan den starter, hvordan den kjører og hvordan den stopper. –En student vet sitt eget studentnummer, sine egne karakterer, navn, fødselsdato og adresse. Han vet hvordan han skal komme seg til studiestedet, og hvordan han skal løse eksamensoppgavene. –Et møte vet hvor det holder til, hvem som skal delta, når det starter og når det er planlagt avsluttet. Etter en tid vet det også hvem som deltok, og når det virkelig sluttet. •ikke akkurat som i virkeligheten, men dette er modeller, og modeller er ikke miniatyrer av virkeligheten

3 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 3 Objekter i virkeligheten og i programmering •Et objekt i en objektorientert modell er vesensforskjellige fra det virkelige objektet som det er en modell av. •Modellobjektet har –mye kunnskap om seg selv –ansvar for å utføre visse oppgaver. •Dette er uavhengig av om det virkelige objektet er levende, dødt eller abstrakt. •Vi tar likevel nesten alltid utgangspunkt i de virkelige objektene, når vi skal lage modellobjektene. •Når vi i fortsettelsen snakker om objekter, mener vi modellobjektene. Dersom vi ønsker å referere til de virkelige objektene, sier vi det i klartekst.

4 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 4 Klient og tjener, melding og operasjon •Klient og tjener er roller som objekter spiller. •Et klientobjekt etterspør en tjeneste ved å sende en melding til et tjenerobjekt. •Tjeneren utfører en operasjon som reaksjon på meldingen. •Tjeneren kan sende svar tilbake til klienten. klient tjener Grethe sender meldingen ”økFarten” til bilen sin. Oppgave 1: Sett opp flere meldinger som Grethe kan sende til bilen. Oppgave 2: Utdyp den kunnskapen som et studentobjekt må ha om seg selv. Hvilke meldinger er det naturlig å kunne sende til et studentobjekt?

5 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 5 Objekter og klasser •Et objekt har –en tilstand: en situasjon i livet til objektet, der objektet tilfredsstiller en betingelse, gjennomfører en aktivitet eller venter på at noe skal skje - eksempler? –attributter: navngitte egenskaper med definerte verdiområder - eksempler? –identitet: et objekt skiller seg fra alle andre objekter –atferd: den mengden operasjoner som objektet kan utføre •Innkapsling er en viktig egenskap ved objekter. –opplysninger om hvordan en oppgave løses er gjemt inne i objektet –klienten forholder seg kun til den atferden som er definert for objektet •En klasse er en beskrivelse av en mengde objekter som har det til felles, at de har de samme attributtene og samme atferd.

6 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 6 Klassediagram •Klasser illustreres ved hjelp av klassediagram. •Klassediagram er en del av UML (Unified Modeling Language). •En klasse beskriver en datatype. Gjør oppgave 2 side 61. klassenavn attributter operasjoner Bil regNr merke årsmodell hastighet start økFarten brems stopp

7 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 7 Grensesnittet til et objekt av klassen Bil •Grensesnittet er en beskrivelse av atferden til objektet, det vil si de meldingene som en klient kan sende til objektet. •Operasjonene programmeres som metoder. Metodene i klassen Bil kan beskrives slik: –void start( ) –void økFarten(int økning) –void brems(int minskning) –void stopp( ) •Operasjonene forteller hvilke meldinger vi kan sende til et objekt av klassen. •Parametrene forteller at vi må sende data sammen med meldingene. I dette tilfelle skal to av meldingene ha med en heltallsverdi. •Det reserverte ordet void forteller at tjenerobjektet ikke sender svar tilbake til klienten. Dersom svar sendes tilbake står datatypen til svaret her. parametre (formelle) parametre

8 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 8 Å bruke klassen Bil •I main() lager vi objekter som vi sender meldinger til. •main() fungerer som klient, vi sier at main() er et klientprogram. •Vi må først lage et objekt ved å bruke en konstruktør. •Konstruktøren ligger også i klassen, og den har følgende grensesnitt: –Bil(String regNr, String merke, int årsmodell, int startHastighet) •I klientprogrammet lager vi objektet slik: –Bil grethesBil = new Bil("AA-45456", "Saab", 1995, 0); •Vi kan nå sende meldinger til objektet (metodekall): –grethesBil.start(); –grethesBil.økFarten(20); (aktuelt) argument class Biltur { public static void main(String[] args) { Bil toresBil = new Bil("AA-45456", "Saab", 1995, 0); toresBil.start(); toresBil.økFarten(50); toresBil.brems(20); toresBil.stopp(); } Et fullstendig klientprogram: (aktuelle) argument

9 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 9 Å lage et objekt av en klasse grethesBil Bil grethesBil = new Bil(”VD-12345”, ”Volvo”, 1998, 0); klassenavn navn på referanse argumenter reservert ord for å lage et objekt VD Volvo En referanse er en variabel som inneholder adressen til den plassen der objektet ligger. Vi sier at variabelen tilhører en referansetype. For enkelthets skyld bruker vi variabelnavnet som om det var navnet på objektet, og ikke på en referanse til dette. String er en slik referansetype. De andre datatypene vi hittil har stiftet bekjentskap med tilhører gruppen ”primitive datatyper”.

10 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 10 En referanse settes lik en annen referanse grethesBil annesBil Før: To referanser til hvert sitt bilobjekt Etter at setningen grethesBil = annesBil; er utført: annesBil grethesBil Det eksisterer ikke lenger noen referanse til det andre objektet, det blir derfor fjernet fra primærminnet. Gjør oppgave 1-4, side 66.

11 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 11 Brukergrensesnittet er et objekt JavabokGUI lesTekst lesHeltall lesDesimaltall skrivMelding skrivResultater bakgrunnsfarge forgrunnsfarge skrifttype vindusstørrelse vindusplassering

12 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 12 Forholdet mellom et brukergrensesnittobjekt og et program som beregner arealet av en vegg Argumenter: ”Lengden av veggen (meter):” ”Oppussing” Argumenter: ”Høyden av veggen (meter):” ”Oppussing”

13 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 13 Kildekoden ser slik ut class Veggberegninger2 { public static void main(String[] args) { mittBibliotek.JavabokGUI gui = new mittBibliotek.JavabokGUI("Arealet av en vegg"); gui.show(); double lengde = gui.lesDesimaltall("Oppussing", "Lengden av veggen (meter): "); double høyde = gui.lesDesimaltall("Oppussing", "Høyden av veggen (meter): "); double arealet = lengde * høyde; gui.skrivResultater("Arealet av veggen er " + arealet + " kvadratmeter"); } /* Utskriftvindu: ***Inndata: Lengden av veggen (meter): 5.8 ***Inndata: Høyden av veggen (meter): 2.4 Arealet av veggen er kvadratmeter */

14 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 14 Klassen mittBibliotek.JavabokGUI •Metoder i klassen mittBibliotek.JavabokGUI: –mittBibliotek.JavabokGUI(String tittel) // konstruktør –void show() // vis utskriftsvinduet på skjermen. –int lesHeltall(String tittel, String ledetekst) // les heltall –double lesDesimaltall(String tittel, String ledetekst) // les desimaltall –String lesTekst(String tittel, String ledetekst) // les tekst –void skrivMelding(String tittel, String ledetekst) // skriver meldingsboks –void skrivResultater(String tekst) // skrives i utskriftvinduet Gjør oppgave 1, side 73 - unntatt kjøring.

15 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 15 Pakker •For å kunne bruke JavabokGUI må du vite litt om pakker. •En pakke er en samling med klasser. Standardpakker: –grafikk, lyd og bilder –kommunikasjon over nettverk –databasehåndtering •Alle klasser tilhører en pakke. –De fleste klassene vi lager vil tilhøre den navnløse pakken. –Klasser til mer allmenn bruk bør ligge i en pakke med navn. •Pakkenavnet må være identisk med navnet på den underkatalogen der klassene i pakken ligger. •Pakkenavnet er en del av klassenavnet, eksempel: mittBibliotek.JavabokGUI •Dersom programmet bruker andre klasser enn de som finnes i standardpakkene, må stien til disse ligge i miljøvariabelen CLASSPATH. CLASSPATH må også inneholde stien til aktuell katalog (et punktum). •Eksempel: Hvis katalogen mittBibliotek ligger rett under c:\Java må CLASSPATH se slik ut: –CLASSPATH=.;c:\Java Obs! Merk punktum!

16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 16 Å bruke pakker •I stedet for å skrive det fullstendige klassenavnet hver gang, kan vi sette en import-setning i begynnelsen av filen: –import mittBibliotek.*; •Da kan vi skrive f.eks.: –JavabokGUI gui = new JavabokGUI("Arealet av en vegg"); •import-setningen må også brukes for standardpakkene, unntatt for pakken java.lang. •Alle filer som inneholder klasser som tilhører en navngitt pakke, må ha en package-setning øverst, eksempel: –package mittBibliotek; •Vi bruker vanligvis ikke denne setningen i våre programmer, på grunn av at våre klasser tilhører den navnløse pakken. Oppgave: Last ned pakken mittBibliotek fra bokas web-side, installer den som beskrevet i kapittel 3.5, og kjør programmet fra oppgave 1 side 73.

17 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 17 En av standardklassene: klassen java.lang.String String by = "Trondheim"; er det samme som: String by = new String("Trondheim"); Trondheim by grethesBil VD Volvo grethesBil VD Volvo skal egentlig være slik:

18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 18 Noen få av klassens nærmere 50 metoder •String(String verdi) // konstruktør •char charAt(int posisjon) // returnerer tegnet på den gitte posisjonen // Posisjonene nummereres fra og med 0. •int length() // returnerer antall tegn som teksten består av •String toLowerCase() // lager ny tekst lik den gamle, alle bokstavene små •String toUpperCase() // lager ny tekst lik den gamle, alle bokstavene store •String trim() // lager ny tekst, blanke foran og bak er fjernet •Metoder som søker etter et enkelt tegn eller en delstreng. Søking forfra: –public int indexOf(int tegn) –public int indexOf(int tegn, int fraIndeks) –public int indexOf(String delStreng) •Metoder som søker etter et enkelt tegn eller en delstreng. Søking bakfra: –public int lastIndexOf(int tegn) –public int lastIndexOf(int tegn, int fraIndeks) –public int lastIndexOf(String delStreng) –public int lastIndexOf(String delStreng, int fraIndeks)

19 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 3, side 19 import mittBibliotek.*; class TestString { public static void main(String[] args) { JavabokGUI gui = new JavabokGUI("Prøver String-metoder"); gui.show(); String tekst = gui.lesTekst("", "Skriv en tekst: "); String utenBlankeForanOgbak = tekst.trim(); gui.skrivResultater("Blanke fjernet: " + utenBlankeForanOgbak); String store = tekst.toUpperCase(); gui.skrivResultater("Bare store bokstaver: " + store); String små = tekst.toLowerCase(); gui.skrivResultater("Bare små bokstaver: " + små); char førsteBokstav = tekst.charAt(0); gui.skrivResultater("Første bokstav: " + førsteBokstav); char andreBokstav = tekst.charAt(1); gui.skrivResultater("Andre bokstav: " + andreBokstav); int antTegn = tekst.length(); gui.skrivResultater("Lengden til teksten: " + antTegn); } /* Utskriftvindu: ***Inndata: Skriv en tekst: Anne Katrine Ås Blanke fjernet: Anne Katrine Ås Bare store bokstaver: ANNE KATRINE ÅS Bare små bokstaver: anne katrine ås Første bokstav: A Andre bokstav: n Lengden til teksten: 15 */ tekst Anne Katrine Ås store ANNE KATRINE ÅS små anne katrine ås A førsteBokstav n andreBokstav 15 antTegn Eksempel på bruk av klassen String Gjør oppgave 1-3 side 80.


Laste ned ppt "Programmering i Java versjon 2000-08-15 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."

Liknende presentasjoner


Annonser fra Google