Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
C++ for Java-programmerere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Litt mer om PRIMTALL.
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
INF150 Programmering mandag 11.9
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 3 Mer om uttrykk Terminal I/O Forgreninger
Java 11 Programmering med og uten objekter: hva er forskjellen?
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Variabler, datatyper og uttrykk
IS-102 Interaksjon med objekter
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3 Bruk av ferdige klasser Objekter som modeller av virkelighetenside 2-3 Et bankkonto-objektside 4 Objekter og klasserside 5 Klassediagramside 6 Klassen Kontoside 7-8 Tilgangs- og mutasjonsmetoder, mutabel og immutabelside 9 Et fullstendig klientprogramside En referanse settes lik en annen referanseside 15 Datasaneringside 16 Klassen Randomside Pakker og importside Unntaksobjekterside 21 Klassekonstanter- og metoderside 22 Klassemetoder for å omforme tekst til tallside 23 Å lese data fra brukeren – JOptionPaneside Klassen java.lang.Stringside Å tilpasse et program til lokale forholdside Utskrift av desimaltallside 32-33

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 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: –Et bankkonto-objekt vet nummeret sitt, hvem som eier kontoen og saldoen. Det må kunne håndtere innskudd og uttak. –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

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 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.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 4 Et bankkonto-objekt Ole Olsen 2300,50 innskudd uttak finn navn finn saldo finn kontonr faktakunnskap (egenskaper) oppgaver (atferd)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 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 oppgaver (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.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 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 60. klassenavn attributter operasjoner Konto kontonr navn saldo finnKontonr finnNavn finnSaldo innkudd uttak

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 7 Grensesnittet til et objekt av klassen Konto 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 Konto kan beskrives med følgende metodehoder: long finnKontonr() StringfinnNavn() double finnSaldo() void innskudd(double beløp) void uttak(double beløp) Metodekroppene inneholder programkoden som ligger bak (implementasjonen), for eksempel oppdatering av saldoen ved uttak. Parametrene forteller at vi må sende data sammen med meldingene. I dette tilfelle skal to av meldingene ha med en desimalverdi. parametre (formelle) parametre

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 8 Objektet kan sende svar tilbake Sett inn 1000 kroner kr 3300, Ole Olsen 2300,50 Finn saldo klient tjener Ole Olsen 3300,50 tjener ingen returverdi, returtype void desimaltall returneres, returtype double

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 9 Tilgangs- og mutasjonsmetoder long finnKontonr() String finnNavn() double finnSaldo() void innskudd(double beløp) void uttak(double beløp) Tilgangsmetoder, endrer ikke datainnholdet i objektet Mutasjonsmetoder, endrer datainnholdet i objektet Klasser som kun tilbyr tilgangsmetoder kalles immutable klasser (datainnholdet kan ikke forandres). Klasser som tilbyr mutasjonsmetoder kalles mutable klasser (datainnholdet kan forandres).

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 10 Et fullstendig klientprogram class KontoTest { public static void main(String[] args) { /* Oppretter et objekt av klassen Konto. */ Konto olesKonto = new Konto( L, "Ole Olsen", ); /* Setter inn 1000 kroner */ olesKonto.innskudd(1000.0); /* Spør objektet om den nye saldoen */ double saldo = olesKonto.finnSaldo(); /* Skriver ut saldoen */ System.out.println("Etter innskudd er saldoen lik " + saldo); }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 11 Å lage et objekt En klasse skal tilby såkalte konstruktører som gjør det mulig å lage objekter av klassen. Konstruktørhode :Konto(long startKontonr, String startNavn, double startSaldo) Vi lager et objekt ved å bruke konstruktøren Konto olesKonto = new Konto( L, "Ole Olsen", ); parametre argumenter samsvar datatype og rekkefølge

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 12 Objektet i primærminnet olesKonto Konto olesKonto = new Konto( L, "Ole Olsen", ); klassenavn navn på referanse argumenter reservert ord for å skape et objekt Ole Olsen 2300,50 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”.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 13 Sender en melding til et objekt ved å kalle en metode Metodehode :void innskudd(double beløp) Vi bruker metoden for å sende en melding til et bestemt objekt: olesKonto.innskudd(1000.0); parameter argument objekt metodekall

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 14 Typen til argumentet må stemme med parametertypen Typen behøver ikke være den samme, det er nok at argumentet automatisk kan omformes til parametertypen. Eksempel: Metoden –void økPris(double økning) vil akseptere følgende kall: –enVare.økPrisen(20); // argumentets type er int, omformes automatisk til double –enVare.økPrisen(12.50); // argumentets type er double, ingen omforming Også andre talltyper som er mindre enn double aksepteres som argument.

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

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 16 Datasanering Hva skjer med alle objektene etter hvert? Blir minnet fullt til slutt dersom man stadig lager nye objekter? Java bruker en teknikk som kalles automatisk datasanering (engelsk: automatical garbage collection). Med jevne mellomrom rydder Java opp i minnet. Objekter som det ikke lenger eksisterer referanser til, slettes. Ikke alle programmeringsspråk rydder opp selv. En C++- programmerer må for eksempel selv passe på å frigjøre plass som det ikke lenger er behov for. Også Java tilbyr metoder som lar programmereren be om opprydding i spesielle situasjoner.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 17 Klassen Random Et objekt av klassen Random kan generere pseudo-tilfeldige tall klient tjener, objektet randomGen Gi meg et tilfeldig tall i intervallet [0..99]! 76 randomGen.nextInt(100) Random randomGen = new Random(frø); int tall = randomGen.nextInt(grense);

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 18 Programmet ser slik ut import java.util.Random; // OBS! class TestRandom { public static void main(String[] args) { final int grense = 100; // ønsker tall i intervallet [0, 99] final int frø = 17; // frøet bør være et primtall Random randomGen = new Random(frø); int tall1 = randomGen.nextInt(grense); int tall2 = randomGen.nextInt(grense); int tall3 = randomGen.nextInt(grense); int tall4 = randomGen.nextInt(grense); System.out.println( "Her er fire tilfeldige tall i intervallet [0.." + (grense - 1) + "]: " + tall1 + " " + tall2 + " " + tall3 + " " + tall4); } /* Kjøring av programmet: Her er fire tilfeldige tall i intervallet [0..99]: */ Gjør oppgave 1 side 68.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 19 Pakker Java API’et inneholder mange klasser. De organiseres i 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 en navnløs pakke. –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: java.util.Random Vi trenger ikke å oppgi pakkenavn for klasser i pakken java.lang.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 20 import-deklarasjonen I stedet for å skrive det fullstendige klassenavnet hver gang, kan vi sette en import-deklarasjon i begynnelsen av filen: –import java.util.Random; Kan erstatte klassenavnet med *, da er alle klasser i denne pakken tilgjengelig: –import java.util.*; Eksempel: import java.util.*; class TestRandom { public static void main(String[] args) {..... Random randomGen = new Random(frø);

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 21 Unntaksobjekter Setningen –int svar = 6 / 0; kompilerer uten feil. Ved kjøring stopper programmet med følgende melding: Exception in thread "main” java.lang.ArithmeticException: / by zero Et objekt av en ”exception”-klasse kalles et unntaksobjekt. Unntaksobjekt blir laget når visse feil inntreffer. Unntaksobjekt kastes. Det er mulig å fange dem, og håndtere feilen på en fornuftig måte. (se kap.11) klassenavn

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 22 Klassekonstanter og –metoder i Java-biblioteket Den mest vanlige måten å programmere på er å lage objekter og sende meldinger til dem. Vi kaller metodene for objektmetoder. Et bibliotek bør imidlertid tilby enkelte metoder av generell natur, såkalte klassemetoder. Disse kan brukes uten å være knyttet til et objekt: –metoder for matematiske beregninger (kvadratrot, sinus, cosinus, etc.) –metoder for søking og sortering Klassemetoder er merket med modifikatoren static –Fra klassen java.lang.Math: public static double sqrt(double tall) public static double sin(double tall) –Eksempel på bruk: double kvadratroten = Math.sqrt(15678); Biblioteket inneholder også mange konstanter, i klassen java.lang.Math: public static final double PI = ; –Eksempel på bruk: double circumference = Math.PI * 2 * radius;

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 23 Klassemetoder for å omforme tekst til tall Eksempel på bruk: String tekst1 = "2345"; String tekst2 = "45.3"; int tall1 = Integer.parseInt(tekst1); // tolker tekst1 som heltall double tall2 = Double.parseDouble(tekst2); // tolker tekst2 som desimaltall System.out.println(tall1 + " " + tall2); Utskrift: Gjør oppgaven side 72.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 24 Å lese data fra brukeren Vi bruker klassen javax.swing.JOptionPane: String lengdeLest = JOptionPane.showInputDialog( "Lengde (meter): "); String breddeLest = JOptionPane.showInputDialog( "Bredde (meter): "); JOptionPane.showMessageDialog(null, "Arealet av rektangelet er " + arealet + " kvadratmeter");

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 25 Her er hele programmet /* * Arealberegning2.java E.L * Leser inn lengde og bredde av et rektangel, deretter beregnes arealet. */ import javax.swing.JOptionPane; class Arealberegning2 { public static void main(String[] args) { String lengdeLest = JOptionPane.showInputDialog("Lengde (meter): "); String breddeLest = JOptionPane.showInputDialog("Bredde (meter): "); double lengde = Double.parseDouble(lengdeLest); double bredde = Double.parseDouble(breddeLest); double arealet = lengde * bredde; JOptionPane.showMessageDialog(null, "Arealet av rektangelet er " + arealet + " kvadratmeter"); System.exit(0); // OBS! For at programmet skal avsluttes } /* Eksempeldata: Lengde: 5.8 m Bredde: 2.4 m Arealet av rektangelet er kvadratmeter. */

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 26 Flere meldingsbokser JOptionPane.showMessageDialog(null, "Den enkleste meldingsdialogen"); JOptionPane.showMessageDialog(null, "Viser feilmeldingssymbolet", "Metoden med fire parametre", JOptionPane.ERROR_MESSAGE); ImageIcon bilde = new ImageIcon("blaa.gif"); JOptionPane.showMessageDialog(null, "En gif-fil med blå firkant", "Metoden med fem parametre", 0, bilde); Gjør oppgave 1 side 74.

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

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 28 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)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 29 import javax.swing.JOptionPane; class TestString { public static void main(String[] args) throws Exception{ String tekst = JOptionPane.showInputDialog("Skriv en tekst: "); String utenBlankeForanOgbak = tekst.trim(); String resultat = "Blanke fjernet: " + utenBlankeForanOgbak; String store = tekst.toUpperCase(); resultat = resultat + "\nBare store bokstaver: " + store; String små = tekst.toLowerCase(); resultat = resultat + "\nBare små bokstaver: " + små; char førsteBokstav = tekst.charAt(0); resultat = resultat + "\nFørste bokstav: " + førsteBokstav; char andreBokstav = tekst.charAt(1); resultat = resultat + "\nAndre bokstav: " + andreBokstav; int antTegn = tekst.length(); resultat = resultat + "\nLengden til teksten: " + antTegn; JOptionPane.showMessageDialog(null, resultat); System.exit(0); } /* Utskriftvindu: 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 79. En ny og større streng lages i hver tilordningssetning som har resultat på venstre side av tilordningstegnet. utenBlankeForanOgBak Anne Katrine Ås resultat Blanke fjernet: …

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 30 Å tilpasse et program til lokale forhold Med formatering mener vi hvordan for eksempel et tall vises fram på skjermen eller på annen utskriftsenhet. Formatering berører ikke verdien i seg selv. Anta at variabelen tall inneholder verdien 35645,4. Tallverdien kan skrives ut (formateres) på flere måter: –35,645.4 –35 645,4 –35 645,40 –35645 Formatering av tall er en liten del av det vi kaller ”tilpasning til lokale forhold”. Andre tilpasninger er myntenhet og datoformat. I Windows setter vi dette i ”Regionale innstillinger”. I Java kan vi la programmet følge det miljøet programmet kjører i (dvs. regionale innstillinger), eller vi kan selv sette lokalisering (= språk og land). Klassen java.util.Locale hjelper oss med dette: Locale norsk = new Locale("no", "NO"); Locale.setDefault(norsk); Kun bestemte klasser tar hensyn til lokalisering. Eksempel på setning som ikke tar hensyn til lokalisering: System.out.println(tall);

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 31 Eksempel på lokalisering import java.util.Locale; import java.text.NumberFormat; class TestFormatering { public static void main(String[] args) { Locale svensk = new Locale("sv", "SE"); Locale.setDefault(svensk); double tall = 0.757; NumberFormat tallformat = NumberFormat.getNumberInstance(); NumberFormat prosentformat = NumberFormat.getPercentInstance(); NumberFormat pengeformat = NumberFormat.getCurrencyInstance(); System.out.println("Som desimaltall: " + tallformat.format(tall)); System.out.println("Som prosent: " + prosentformat.format(tall)); System.out.println("Som beløp: " + pengeformat.format(tall)); } /* Kjøring av programmet: Som desimaltall: 0,757 Som prosent: 76% Som beløp: 0,76 kr */

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 32 Utskrift av desimaltall Vi bruker klassen java.text.DecimalFormat. Eksempel: DecimalFormat formatet = new DecimalFormat("###0.00"); String tekst = formatet.format(13.4); System.out.println(tekst); tekst = formatet.format( ); System.out.println(tekst); gir utskriften (merk desimalkomma!) 13, ,40 Formatet bygges opp av koder, én kode for hver posisjon: 0 null: Skriv alltid ett siffer på denne plassen. # skigard: Skriv ett siffer på denne plassen, men ikke dersom dette sifferet er en null i begynnelsen eller slutten av tallet.. punktum: Her skal desimalskillet være. Vis minst ett siffer til venstre for desimalskillet, og alltid akkurat to sifre til høyre for desimalskillet.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 3, side 33 Koder for å lage mønster til DecimalFormat-konstruktøren kodetolkes someksempeltallverdi og utskrift 0Et siffer” ”6,7 blir 0006,70 #Et siffer, men vis det ikke dersom det er en null i begynnelsen eller slutten av tallet. ”####.##”6,7 blir 6,7.Plassering av desimalskille (komma på norsk). se over,Plassering av gruppeseparator (mellomrom på norsk). “###,###.##”56786,7 blir ,7