Hur ser ett Java-program ut?



Relevanta dokument
public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Objektorienterad programmering i Java

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Vad var C? okontrollerade brutala typomvandlingar tillåts. void * typinformation kvar, vild adressering, arraygränser, odenierade variabelvärden...

SMD 134 Objektorienterad programmering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

OOP Objekt-orienterad programmering

Sammanfattning. Sammanfattning, arrayer, inre och nästlade klasser, undantagshantering, wrapperklasser mm. Metodefinition

Föreläsning 3-4 Innehåll

Tentamen OOP

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Att skriva till och läsa från terminalfönstret

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Introduktion till Java

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Övning2. Variabler. Data typer

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

OOP Objekt-orienterad programmering

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Grundläggande programmering med C# 7,5 högskolepoäng

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Programmering A. Johan Eliasson

OOP Objekt-orienterad programmering

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Enkla variabler kontra referensvariabel

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Språkkonventioner och redigering av tal.

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Del A (obligatorisk för alla)

F4. programmeringsteknik och Matlab

Tentamen , Introduktion till Java, dtaa98, dtea53

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Typkonvertering. Java versus C

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

TENTAMEN OOP

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Del A (obligatorisk för alla)

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Klasser och Objekt i Java. C++ använder beteckningarna datamedlem resp. medlemsfunktion. Klassdefinition. Exempel: Variabler

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Classes och Interfaces, Objects och References, Initialization

"if"-satsen. Inledande programmering med C# (1DV402)

Föreläsning 1 & 2 INTRODUKTION

Objektorienterad programmering D2

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Objektorienterad Programmering (TDDC77)

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Objektorienterad Programmering (TDDC77)

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Malmö högskola 2008/2009 CTS

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

JAVAUTVECKLING LEKTION 7

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Arrayer. results

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Konstruktion av klasser med klasser

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Föreläsning REPETITION & EXTENTA

Transkript:

(27 augusti 2012 Repetitionsmaterial 1 ) Hur ser ett Java-program ut? // Ett första Java-program som skriver // ut ett meddelande på terminalen public class HelloWorld { public static void main(string [] args) { System.out.println("Hello world!");

(27 augusti 2012 Repetitionsmaterial 2 ) Programstruktur och terminologi Ett program består av en eller flera klasser Varje klass lagras på en fil med samma namn En klass innehåller data (attribut) och metoder För att en klass skall kunna köras som ett eget program måste det finnas metod med namnet main

Exempel: en funktion public class Factorial { public static long fact(int n) { long result = 1; for ( int i= 1; i<=n; i++ ) result *= i; return result; public static void main(string [] args) { for ( int i = 0; i <= 10; i++ ) { System.out.println( i + "! = " + fact(i) ); Två metoder, inga dataattribut, lokala variabler i metoderna. (27 augusti 2012 Repetitionsmaterial 3 )

(27 augusti 2012 Repetitionsmaterial 4 ) Frågor Vad betyder 1. public 2. static 3. int 4. long 5. void 6. for 7. String[] args?

(27 augusti 2012 Repetitionsmaterial 5 ) Enkla datatyper Typ värden storlek exempel byte heltal 1 byte -127, 47 short heltal 2 byte 4711 int heltal 4 byte -748471 long heltal 8 byte 434112345L float flyttal 4 byte -4.57e10f double flyttal 8 byte 3.123e-128 boolean logisk 1 byte true, false char tecken 2 byte x, 4, +

(27 augusti 2012 Repetitionsmaterial 6 ) Utmatning i terminalfönstret System.out.print(String s) System.out.println(String s) System.out.println() Enbart radbyte För formattering används antingen klassen NumberFormat eller (fr o m Java 5) metoden format (även benämnd printf).

(27 augusti 2012 Repetitionsmaterial 7 ) Scanner-klassen Kan användas för att läsa ord, tal mm (s.k. tokens ) från tangentbordet. Koppla ett Scanner-objekt till inströmmen: Scanner sc = new Scanner(System.in) Några metoder: sc.hasnext() sc.next() sc.nextline() sc.hasnextint() sc.nextint() sc.hasnextdouble() sc.nextdouble() boolean String String boolean int boolean double

(27 augusti 2012 Repetitionsmaterial 8 ) Exempel: Tabell med funktionsvärden // TableIO.java // Demonstrerar användning av Scanner Resultat import java.util.scanner; class TableIO { public static void main(string [] args) { double x, xlow, xhigh; int number; Scanner sc = new Scanner(System.in); System.out.print("Undre gräns: "); xlow = sc.nextdouble(); System.out.print("Övre gräns: "); xhigh = sc.nextdouble(); System.out.print("Antal värden: "); number = sc.nextint(); double step = (xhigh - xlow) / (number-1); for ( int i = 1; i<=number; i++ ) { x = xlow + (i-1)*step; System.out.print(x); System.out.println("\t" + Math.log(x)); vega$ java TableIO Undre gräns: 0 Övre gräns: 10 Antal värden: 11 0.0 -Infinity 1.0 0.0 2.0 0.6931471805599453 3.0 1.0986122886681096 4.0 1.3862943611198906 5.0 1.6094379124341003 6.0 1.791759469228055 7.0 1.9459101490553132 8.0 2.0794415416798357 9.0 2.1972245773362196 10.0 2.302585092994046 vega$

(27 augusti 2012 Repetitionsmaterial 9 ) Vad händer vid felaktiga indata? vega$ java TableIO Undre gräns: 0 Övre gräns: 10 Antal värden: 12.3 Exception in thread "main" java.util.inputmismatchexception at java.util.scanner.throwfor(scanner.java:819) at java.util.scanner.next(scanner.java:1431) at java.util.scanner.nextint(scanner.java:2040) at java.util.scanner.nextint(scanner.java:2000) at TableIO.main(TableIO.java:16) vega$ Uppgift 1

(27 augusti 2012 Repetitionsmaterial 10 ) Klasser och objekt Ett program består oftast av flera klasser En klass beskriver någon typisk enhet i programmet När ett program exekverar så kan det skapa en eller flera instanser av klasserna så kallade objekt Objekten kommunicerar med varandra genom att anropa varandras metoder

(27 augusti 2012 Repetitionsmaterial 11 ) Exempel: En punkt i planet public class Point { private double x, y; public Point() { this.x = 0; this.y = 0; public Point( double x, double y ) { this.x = x; this.y = y; // Konstruktor // Konstruktor Observera: 1. Privata attribut 2. Två konstruktorer - överlagring 3. Skillnaden mellan x och this.x

(27 augusti 2012 Repetitionsmaterial 12 ) Exempel: klassen Circle public class Circle { private Point center; private double radius; public Circle( Point center, double radius ) { this.center = center; this.radius = radius; public void scale(double sf) { this.radius = sf*this.radius; public double area() { return Math.PI*this.radius*this.radius;

(27 augusti 2012 Repetitionsmaterial 13 ) Exempel: klassen TestCircle public class TestCircle { public static void main(string [] args) { Point p = new Point( 0.5, -3.5 ); Circle c = new Circle( p, 1.0 ); Circle d = c; System.out.println("Area of c: " + c.area()); c.scale(2.0); System.out.println("Area of d: " + d.area());

(27 augusti 2012 Repetitionsmaterial 14 ) Klasser och objekt Objekt skapas med new Referensvariabler håller reda på objekt En referensvariabel kan vara null Punktnotation används för att referera attribut och metoder Exekveringen börjar i main Klassen Math Uppgift 2

Exempel: Tärning public class Die { private int nosides; private int value; public Die() { nosides = 6; public Die(int ns) { nosides = ns; public int roll() { return value = (int) (Math.random()*noSides) + 1; public int get() { return value; (27 augusti 2012 Repetitionsmaterial 15 )

(27 augusti 2012 Repetitionsmaterial 16 ) Observationer på klassen Die Två konstruktorer - s.k. överlagring Skyddsnivåer: public, private Fler finns: paket (eng. package) och protected Privata attribut, publika metoder Tilldelning har värde Skulle kunna ändra antal sidor om t ex public void setnosides(int n) och, ev. public int getnosides() Typecast som t ex (int) Uppgift 3

(27 augusti 2012 Repetitionsmaterial 17 ) Exempel på användning av klassen Die import java.util.scanner; public class CheckDie { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.print("Number of sides: "); int nsides = sc.nextint(); int[] freq = new int[nsides]; Die d = new Die(nSides); for (int i= 1; i<=1000; i++ ) { freq[d.roll()-1]++; for (int i= 0; i<nsides; i++) System.out.println( (i+1) + "\t" + freq[i] );

(27 augusti 2012 Repetitionsmaterial 18 ) Observationer Användning av en array Arrayer skapas dynamiskt med new Arrayer hanteras med referenser Minsta index 0 i array Använde data som index Uppgift 4 och 5

(27 augusti 2012 Repetitionsmaterial 19 ) Mer om referenser När ett objekt skapas med new returneras en referens (dvs en pekare eller adress) till det skapade objektet. Deklarationen Die t; gör inte t till en Die utan till en referens till en Die Referenser kan tilldelas till referensvariabler (av rätt typ) och jämföras med == och!= Instansvariabler av referenstyp initieras till null this är en referens till det egna objektet

(27 augusti 2012 Repetitionsmaterial 20 ) Mer om referenser Flera referenser kan peka till samma objekt. Blir resultatet av tilldelningen t1 = t2; Observera att relationsoperatorerna == och!= jämför adresserna dvs som de står för fysiskt samma objekt inte huruvida objekten ser lika ut Om ingen referens till ett objekt är det borttappat. Borttappade objekt samlas ihop automatiskt av skräpsamlaren.

(27 augusti 2012 Repetitionsmaterial 21 ) Ännu mer om referenser Referenser kan skickas som parametrar till en metod (objekt kan naturligtvis inte skickas) Om objektet förändras av metoden så har det effekt Man kan säga att objekten existerar globalt och är åtkomliga överallt där man har en referens till dem En metod kan returnera referenser som funktionsvärden

(27 augusti 2012 Repetitionsmaterial 22 ) Exempel Skapa kopior av objekt public class Circle { Point center; double radius; public Circle( Point cen, double rad ) { center = cen; radius = rad; public Circle( Circle c) { // konstruktor center = c.center; radius = c.radius; public Circle copy() { // metod return new Circle( center, radius ); public static void main(string [] args) { Circle c = new Circle( new Point(0.,0.), 1.0 ); Circle d = c; Circle e = new Circle(c); Circle f = c.copy(); Uppgift 6

(27 augusti 2012 Repetitionsmaterial 23 ) Jämförelser av objekt Igen: Relationsoperatorerna == och!= jämför bara referenserna! Alla objekt har en metod equals() som jämför objekt innehållsmässigt byte för byte I regel definierar man dock en egen equals() Referenser kan inte jämföras storleksmässigt men man kan naturligtvis definiera egna metoder för att jämföra objekt

(27 augusti 2012 Repetitionsmaterial 24 ) Några exempel på jämförelsefunktioner public class Circle { Point center; double radius; public boolean equals(circle c) { return Math.abs(radius-c.radius) < 1.e-10; public boolean identical(circle c) { if ( radius==c.radius && center.getx() == c.center.getx() && center.gety() == c.center.gety()) return true; else return false; public int compareto(circle c) { if ( radius == c.radius ) return 0; else if (radius < c.radius) return -1; else return 1; public boolean lessthan(circle c) { return radius < c.radius;

(27 augusti 2012 Repetitionsmaterial 25 ) Klassvariabler Hittills har alla dataattribut varit instans-variabler dvs varje objekt har sin egen upplaga av dessa Man kan också ha klass-variabler som är gemensamma för alla objekt i klassen vilket anges med static En klassvariabel kan referas på samma sätt vanliga attribut men vanligen genom klassnamn.variabelnamn Det går också att ha klass-metoder som alltså kan användas utan frikopplat från objekten (ex Math.sin() och main()) En klassmetod kan inte referera objektattribut och ej heller anropa andra objektmetoder utan att gå via en objektreferens

(27 augusti 2012 Repetitionsmaterial 26 ) Exempel public class Circle1 { Point center; double radius; int id; static int ncircles = 0; public Circle1( Point cen, double rad ) { center = cen; radius = rad; id = ++ncircles; public static void report() { System.out.println( "Antal skapade cirklar: " + ncircles ); public static void main(string [] args) { Circle1 c; for ( int i = 1; i<=10; i++ ) c = new Circle1( new Point( 10*i, 15*i ), 5*i ); report();

(27 augusti 2012 Repetitionsmaterial 27 ) Mer om arrayer Fält (arrayer) är ett slags objekt och hanteras således med referenser och har attribut och metoder. Deklaration typ [] namn typ [] namn = fältreferens typ [] namn = {v 0, v 1,... v n Skapas med new typ [antal] eller, som en kopia av annat fält med (typ[])fältreferens.clone()

(27 augusti 2012 Repetitionsmaterial 28 ) Exempel public class Circles { Circle [] thecs; int ncs; public Circles() { ncs = 0; thecs = new Circle[5] ; public void add(circle c) { thecs[ncs++] = c; public static void main(string [] args) { Circles circles = new Circles(); Point p = new Point(0,0); for ( int i = 1; i<=10; i++ ) circles.add( new Circle( p, 10*i ) ); kursa$ java Circles java.lang.arrayindexoutofboundsexception: 5 at Circles.add(Compiled Code) at Circles.main(Compiled Code) kursa$

(27 augusti 2012 Repetitionsmaterial 29 ) En bättre add-metod public class Circles { Circle [] thecs; int ncs; public void add(circle c) { if ( thecs.length == ncs ) { Circle [] newarr = new Circle[2*theCs.length]; System.arraycopy( thecs, 0, newarr, 0, thecs.length ); thecs = newarr; thecs[ncs++] = c;... OBS: length och System.arraycopy Uppgift 7

(27 augusti 2012 Repetitionsmaterial 30 ) Exempel: Instickssortering public class InsertionSort { public static void sort( int [] a ) { int i, j; for ( i = 1; i<a.length; i++ ) { int x = a[i]; for ( j = i - 1; j>=0 && x<a[j]; j-- ) a[j+1] = a[j]; a[j+1] = x; public static void main(string [] args ) { int a[] = {5, 17, 3, 19, 10, 12, 2; sort(a); for (int i= 0; i<a.length; i++ ) System.out.print( a[i] + " " ); System.out.println(); Uppgift 8

(27 augusti 2012 Repetitionsmaterial 31 ) Typkonverteringar Java konverterar automatiskt när det kan ske riskfritt Explicit med s.k. typecasts. Ex: (short) Vid aritmetik omvandlas byte, short till int Om en operand är long så omvandlas den andra till long (om den är av heltalstyp) Funktioner i Math returnerar double

(27 augusti 2012 Repetitionsmaterial 32 ) Omslagsklasser Till var och en av de primitiva datatyperna finns en omslagsklass (eng wrapper class) Klasserna har samma namn som de primitiva typerna men med inleds med en versal (de som hör till int och char heter dock Integer och Character) Dessa klasser innehåller Ett antal klass-attribut med konstanter (t ex max och minvärde) Ett antal klass-metoder för t ex konverteringar Ett antal instansmetoder för motsvarande för ett objekt

(27 augusti 2012 Repetitionsmaterial 33 ) Tecken import java.io.*; public class Tecken { public static void main(string [] args ) throws IOException { int nupper=0, nlower=0, nothers=0; char c; BufferedReader inf = new BufferedReader(new InputStreamReader(System.in)); System.out.print("> "); System.out.flush(); while( (c=(char)inf.read())!= \n ) { if ( Character.isUpperCase(c) ) nupper++; else if ( Character.isLowerCase(c) ) nlower++; else nothers++; System.out.println( "Stora: " + nupper + ", små: " + nlower + ", övriga: " + nothers );

(27 augusti 2012 Repetitionsmaterial 34 ) Observera 1. Scanner-klassen passar inte för att läsa tecken (ingen nextchar ) 2. Använder en BufferedReader som via en InputStreamReader kopplas till System.in. Ett standardsätt. 3. java.jo.* måste importeras 4. Raden throws IOException i början av main (Varför behövs inte den raden när man använder Scanner?) Uppgift 9

(27 augusti 2012 Repetitionsmaterial 35 ) Klassen String Ett objekt ur klassen String består av en följd av char Strängkonstanter omges med citationstecken String s = Omge strängar med \! Objekt av typen String är oföränderliga. Alla operationer nedan som resulterar i strängar skapar nya sådana. Operatorn + konkatenerar strängar Tecknen i strängen numreras från 0

(27 augusti 2012 Repetitionsmaterial 36 ) Några metoder i klassen String length() charat(n) substring(n) substring(n,m) compareto(s) equals(s) indexof(c) indexof(s) replace(c1,c2) touppercase() tolowercase()

(27 augusti 2012 Repetitionsmaterial 37 ) Exempel: Palindromcheck import java.util.scanner; public class Palindrom { public static void main(string[] args) { String w; int n; boolean pal; Scanner sc = new Scanner(System.in); while (sc.hasnext()) { w = sc.next(); w = w.touppercase(); if ( w.equals("stop") w.equals("quit")) break; n = w.length(); pal = true; for ( int i=0; i < n/2; i++) { if (w.charat(i)!=w.charat(n-1-i)) { pal = false; break; if ( pal ) System.out.println(w + " palindrom"); else System.out.println(w + " ej palindrom");

(27 augusti 2012 Repetitionsmaterial 38 ) Arrayer med strängar Parametern till main är ett exempel på en array av strängar. När programmet startas kommer orden på kommandoraden att lagras som element i denna array. Exempel: public class Echo { public static void main( String [] args ) { for ( int i = 0; i<args.length ; i++ ) System.out.print( args[i] + ); System.out.println(); kursa$ java Echo hej du glade! hej du glade! kursa$ Uppgift 10

(27 augusti 2012 Repetitionsmaterial 39 ) Konvertering av objekt till String Man kan definiera omvandlig av objekt till typen String för t ex utskriftsändamål genom att definiera en metod tostring(): public class Circle { Point center; double radius; public String tostring() { return "Circle(" + center + ", " + radius + ") "; public static void main(string [] args) { Circle c = new Circle( new Point(0.,0.), 1.0 ); System.out.println( c ); kursa$ java Circle Circle(Point@1fa4d404, 1.0) kursa$ Uppgift 11

Mer om klasser class namn { deklarationer av instansvariabler definition av metoder Ingen speciell ordning krävs men... Instansvariablerna synlighet är sällan publika utan privata eller skyddade (protected) eller, möjligen, paketsynliga. Instansvariabler har defaultvärden beroende på typ (typiskt 0) Instansvariabler kan initieras i deklarationen till godtyckliga uttryck (ingående variabler måste vara definierade) Instansvariabler kan anges som final vilket förhindrar ändring (dvs en konstant (27 augusti 2012 Repetitionsmaterial 40 )

(27 augusti 2012 Repetitionsmaterial 41 ) Metodefinition modifierare typ namn(typ 1 p 1, typ 2 p 2,... ) { lokala variabler och satser Modifierarna anger t.ex. synlighet Lokala variabler har inga defaultvärden! Om typen inte är void så måste en sats return u; där u är ett uttryck av rätt typ. Metoder kan ha samma namn om de har olika signatur dvs skiljer sig i parameterantal och/eller typ (överlagring)

(27 augusti 2012 Repetitionsmaterial 42 ) Metodanrop Från metod i samma klass: metodnamn(argumentlista) Från metod i annan klass: referens.metodnamn(argumentlista) Om static-metod i annan klass: klassnamn.metodnamn(argumentlista) (Ex: Math.exp(x))

(27 augusti 2012 Repetitionsmaterial 43 ) Konstruktorer Attributen kan tilldelas värden direkt i deklarationen (alternativt erhålla defaultvärden) Man kan definiera en eller flera konstruktorer för mer komplicerade initieringar En konstruktor är en metod som har samma namn som klassen och som saknar typ Om man inte definierar någon konstruktor tillhandahåller systemet en defaultkonstruktor som saknar parametrar och inte gör någonting Om man definierar en eller flera konstruktorer så tillhandahåller inte systemet någon defaultkonstruktor om man vill ha en parameterlös konstruktor så får man skriva en själv

(27 augusti 2012 Repetitionsmaterial 44 ) Parameter och resultatöverföring Vid anrop sker 1. De uttryck som givits som argument beräknas 2. De beräknade värdena förs över till parametrarna 3. Internt i metoden används parametrarna lokala variabler de kan t.ex. tilldelas nya värden 4. Inga värden återföres via parametrarna vi return Metoden kallas värdeanrop (eng. call by value) och möjliggör således ej returparametrar. (Kan dock åstadkommas genom att skicka referenser till objekt.)