Gästföreläsningen. Synpunkter?

Storlek: px
Starta visningen från sidan:

Download "Gästföreläsningen. Synpunkter?"

Transkript

1 Gästföreläsningen Synpunkter?

2 Erfarenheter från biljardprojektet

3 Var ska koden ligga? Som i labben: anta klasserna Table och Ball En metod bounce() ska skrivas som anger vad som händer när två bollar studsar mot varandra Vi har kodat mekanikformlerna Den anropas av move() i Ball Var ska metoden ligga?

4 I klassen Ball Som static i klassen Ball I klassen Table Som static i klassen Table Samtliga är tänkbara Hur ser metodhuvudet ut? Hur anropas metoden? Vilket är bäst?

5 I klassen Ball En boll gör en studs mot en annan boll

6 I klassen Ball En boll gör en studs mot en annan boll Deklaration (i Ball) private void bounce(ball otherball) { velocity = otherballvelocity =

7 I klassen Ball En boll gör en studs mot en annan boll Deklaration (i Ball) private void bounce(ball otherball) { velocity = otherballvelocity = Anrop i move(): for (Ball ball : balllist) { if (ball!= this) bounce(ball);

8 static i klassen Ball En bollstuds sker mellan två bollar

9 static i klassen Ball En bollstuds sker mellan Deklaration (i Ball) två bollar static private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity =

10 static i klassen Ball En bollstuds sker mellan Deklaration (i Ball) två bollar static private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = Anrop i move(): for (Ball ball : balllist) { if (ball!= this) bounce(this, ball);

11 Bordet gör en studs I klassen Table mellan två bollar

12 Bordet gör en studs I klassen Table mellan två bollar Deklaration (i Table) private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity =

13 Bordet gör en studs I klassen Table mellan två bollar Deklaration (i Table) private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = Anrop i move(): for (Ball ball : balllist) { if (ball!= this) mytablebounce(this, ball);

14 Bordet gör en studs I klassen Table mellan två bollar Deklaration (i Table) private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = Anrop i move(): for (Ball ball : balllist) { if (ball!= this) mytablebounce(this, ball);

15 Bordet gör en studs I klassen Table mellan två bollar Deklaration (i Table) private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = Anrop i move(): Omöjligt om velocity är private i Ball for (Ball ball : balllist) { if (ball!= this) mytablebounce(this, ball);

16 som static i klassen Table En bordsstuds sker mellan två bollar

17 som static i klassen Table Deklaration (i Table) static private void bounce En bordsstuds sker mellan två bollar (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity =

18 som static i klassen Table Deklaration (i Table) static private void bounce En bordsstuds sker mellan två bollar (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = Anrop i move(): for (Ball ball : balllist) { if (ball!= this) Tablebounce(this, ball);

19 som static i klassen Table Deklaration (i Table) static private void bounce En bordsstuds sker mellan två bollar (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = Anrop i move(): for (Ball ball : balllist) { if (ball!= this) Tablebounce(this, ball);

20 som static i klassen Table Deklaration (i Table) static private void bounce (Ball firstball, Ball secondball) { firstballvelocity = secondballvelocity = En bordsstuds sker mellan två bollar Omöjligt om velocity är private i Ball Anrop i move(): for (Ball ball : balllist) { if (ball!= this) Tablebounce(this, ball);

21 Tumregler Lägg den i den klass som beskriver subjektet i en mening där metoden är predikatet En boll gör en studs mot en annan boll En bollstuds sker mellan två bollar Bordet gör en studs mellan två bollar En bordsstuds sker mellan två bollar Lägg den i den klass som innehåller de instansvariabler som används mest Talar för klassen Ball

22 Övning: klassen Hole På biljardbordet ska finnas hål Vi gör alltså en klass Hole för att representera dem Vilka metoder ska finnas där? Vad ska andra objekt kunna göra med hål?

23 class Hole { För att rita upp hålet void paintme (Graphics g) { För att avgöra om en position ligger i hålet boolean isin (Coord position) {

24 I move(): Gå igenom alla hål for (Hole hole : holelist) { if (holeisin(position) falloff(); Låt hålet kolla om bollen ligger i Ny metod som aktiveras när boll faller i hål

25 Tex, om hålet är runt: class Hole { private Coord holeposition; private double radius; void paintme (Graphics g) { gsetcolor() gfilloval() boolean isin (Coord position) { return Coorddistance(holePosition, position) < radius

26 class Hole { private Coord holeposition; private double xsize, ysize; void paintme (Graphics g) { Eller, om hålet är fyrkantigt: gsetcolor() gfillrect() boolean isin (Coord position) { return positionx > holepositionx && positionx < holepositionx + xsize && positiony > holepositiony && positiony < holepositiony + ysize

27 Instansvariabler - klassvariabler - konstanter Vad ska vara static? Vad ska vara final?

28 Instansvariabel private int radius = 30; Varje boll har en radie Den kan vara olika för olika bollar Den kan ändras under programmets gång

29 Instansvariabel Deklaration (i Ball) private int radius = 30; Varje boll har en radie Den kan vara olika för olika bollar Den kan ändras under programmets gång

30 klassvariabel static private int radius = 30; Varje boll har en radie Den är samma för alla bollar Den kan ändras under programmets gång (dvs, då ändras alla bollars radie)

31 klassvariabel Deklaration (i Ball) static private int radius = 30; Varje boll har en radie Den är samma för alla bollar Den kan ändras under programmets gång (dvs, då ändras alla bollars radie)

32 instanskonstant final private int radius; Varje boll har en radie Den kan vara olika för olika bollar (får sitt värde i konstruktorn) Den kan inte ändras under programmets gång

33 instanskonstant Deklaration (i Ball) final private int radius; Varje boll har en radie Den kan vara olika för olika bollar (får sitt värde i konstruktorn) Den kan inte ändras under programmets gång

34 klasskonstant static final private int radius = 30; Varje boll har en radie Den är samma för alla bollar Den kan inte ändras under programmets gång

35 klasskonstant Deklaration (i Ball) static final private int radius = 30; Varje boll har en radie Den är samma för alla bollar Den kan inte ändras under programmets gång

36 static metoder Kopplas till klassen (inte till varje objekt) Har alltså inget aktivt objekt när de kör Kan alltså inte komma åt instansvariabler Inte heller andra icke-static metoder

37 Tumregel: Undvik static metoder så långt du kan

38 Huvudklassens main() måste vara static Alltså: den har inget aktivt objekt när den kör Alltså: de enda metoder den kan anropa är också static Vanligt nybörjarfel: så kallad mainprogrammering: för många metoder och variabler blir static

39 main-programmering public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() {

40 main-programmering public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() {

41 main-programmering public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() {

42 main-programmering public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() {

43 main-programmering public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() {

44 main-programmering public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); Alla variabler och static void initialize() { myball = new Ball() static void moveall() { metoder blir static! Därmed kan inte objektorientering utnyttjas

45 public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() { klassvariabler för MyProject Ball myball boolean simulating = false

46 public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() { klassvariabler för MyProject Ball myball boolean simulating = false

47 public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() { klassvariabler för MyProject Ball myball boolean simulating = false

48 public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() { klassvariabler för MyProject Ball myball boolean simulating = false

49 public class MyProject { static Ball myball; static boolean simulating = true; public static void main(string[] args) { initialize(); while (simulating) moveall(); static void initialize() { myball = new Ball() static void moveall() { klassvariabler för MyProject Ball myball boolean simulating = false

50 Bättre: public class MyProject { public static void main(string[] args) { new Startsimulation(); class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

51 Bättre: public class MyProject { public static void main(string[] args) { new Startsimulation(); Det enda main gör är att skapa en instans av en class Startsimulation() { ny klass Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

52 Bättre: public class MyProject { public static void main(string[] args) { new Startsimulation(); Det enda main gör är att skapa en instans av en class Startsimulation() { ny klass Ball myball; boolean simulating = true; Den nya klassen har instansvariablerna Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

53 Bättre: public class MyProject { public static void main(string[] args) { new Startsimulation(); Det enda main gör är att skapa en instans av en class Startsimulation() { ny klass Ball myball; boolean simulating = true; Den nya klassen har instansvariablerna Startsimulation () { initialize(); while (simulating) moveall(); Konstruktorn gör det som förut gjordes i main void initialize() { void moveall() {

54 Bättre: public class MyProject { public static void main(string[] args) { new Startsimulation(); Det enda main gör är att skapa en instans av en class Startsimulation() { ny klass Ball myball; boolean simulating = true; Den nya klassen har instansvariablerna Startsimulation () { initialize(); while (simulating) moveall(); Konstruktorn gör det som förut gjordes i main void initialize() { void moveall() { metoderna är inte längre static

55 public class MyProject { public static void main(string[] args) { new Startsimulation(); class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

56 public class MyProject { public static void main(string[] args) { new Startsimulation(); class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

57 public class MyProject { public static void main(string[] args) { new Startsimulation(); objekt av typ Startsimulation boolean simulating = true Ball myball void initalize() void moveall() class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

58 public class MyProject { public static void main(string[] args) { new Startsimulation(); objekt av typ Startsimulation boolean simulating = true Ball myball void initalize() void moveall() class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

59 public class MyProject { public static void main(string[] args) { new Startsimulation(); objekt av typ Startsimulation boolean simulating = true Ball myball void initalize() void moveall() class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

60 public class MyProject { public static void main(string[] args) { new Startsimulation(); objekt av typ Startsimulation boolean simulating = true Ball myball void initalize() void moveall() class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

61 public class MyProject { public static void main(string[] args) { new Startsimulation(); objekt av typ Startsimulation boolean simulating = true Ball myball void initalize() void moveall() class Startsimulation() { Ball myball; boolean simulating = true; Startsimulation () { initialize(); while (simulating) moveall(); void initialize() { void moveall() {

62 Array vs ArrayList Array: Påminner om matlabs arrayer ArrayList: påminner om Pythons listor

63 Array ArrayList

64 Array ArrayList Ball [] theballs = new Ball []

65 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>()

66 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball()

67 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball() theballsset(i, new Ball())

68 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball() theballsset(i, new Ball()) theballs[i]

69 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball() theballsset(i, new Ball()) theballs[i] theballsget(i)

70 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball() theballsset(i, new Ball()) theballs[i] theballsget(i) theballsadd(new Ball())

71 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball() theballsset(i, new Ball()) theballs[i] theballsget(i) theballsadd(new Ball()) theballsremove(aball)

72 Array ArrayList Ball [] theballs = new Ball [] ArrayList<Ball> theballs = new ArrayList<Ball>() theballs[i] = new Ball() theballsset(i, new Ball()) theballs[i] theballsget(i) finns inte theballsadd(new Ball()) theballsremove(aball)

73 Tumregler Array är enklare om allt du vet hur stor den är och storleken inte ändras ArrayList behövs om du vill lägga till och ta bort element

74 Kardinalfel: ändra i den struktur du loopar över for (Ball ball : balllist) { balllistremove(ball)

75 Kardinalfel: ändra i den struktur du loopar över Gör aldrig detta (Har du tur får du felmeddelande men det är inte säkert)

76 Exceptions Division med 0 Array index out of bounds File not found onormal I/O-händelse Null reference

77 try - catch Python Java try: a = 1/b except: a = 0 try { a = 1/b; catch (Exception e) { a = 0; except i Python heter catch i Java Inga kolon, men krullparanteser Man måste alltid ange vilka exceptions som avses inom parantes efter catch

78 try statement try block catch block aka catch clause aka exception handler try { a = 1/b; catch (Exception e) { a = 0; Grundidé: Börja köra try block Om ett fel inträffar avbryt, och kör catch block

79 try { c1; c2; catch (Exception e) { c3; c4; c5; Allt OK c1 c2 Exception inträffar c3 c4 c5

80 Exception classes Detta är bara en liten del! Jfr Horstmann s339 En stor hierarki av klasser

81

82 Varje klass svarar mot en typ av exception

83 Varje klass svarar mot en typ av exception Klasserna är ordnade hierarkiskt och underklasserna ärver överklasserna på vanligt sätt

84 Varje klass svarar mot en typ av exception Klasserna är ordnade hierarkiskt och underklasserna ärver överklasserna på vanligt sätt Exempel: Exception är en klass för alla slags exception IOException är en underklass för en del exceptions, nämligen de som orsakas av IO

85 Varje klass svarar mot en typ av exception Klasserna är ordnade hierarkiskt och underklasserna ärver överklasserna på vanligt sätt Exempel: Exception är en klass för alla slags exception IOException är en underklass för en del exceptions, nämligen de som orsakas av IO I varje catch ska man alltid deklarera vilken typ av exception som man ska fånga

86 Varje klass svarar mot en typ av exception Klasserna är ordnade hierarkiskt och underklasserna ärver överklasserna på vanligt sätt Exempel: Exception är en klass för alla slags exception IOException är en underklass för en del exceptions, nämligen de som orsakas av IO I varje catch ska man alltid deklarera vilken typ av exception som man ska fånga Till ett try can finnas flera catch för att fånga olika typer av exception

87 try { Ett kodblock som kan ge upphov till många olika exception catch (IndexOutOfBoundsException e) { Kodblock som hanterar indexeringsfel catch (IOException e) { Kodblock som hanterar IO-fel Beroende på vilket slags exception som inträffar i try blocket kommer man till rätt catch block Try blocket måste ha minst ett catch block

88 Exception objects När exception inträffar skapar Java ett objekt: en instans av klassen Objektet innehåller information om vad som hänt Objektet kan man komma åt i motsvarande catch

89 Typexempel: Exception object catch (IndexOutOfBoundsException e) { Systemoutprintln( Exception + egetmessage() ) Använd exception object för att få felmeddelande Till exempel har ett sådant objekt ett meddelande som nås med metoden getmessage()

90 Objektets namn skrivs efter klassnamnet inom paranteserna efter catch Det ser alltså lite ut som en deklaration Objektnamnet räknas som en lokal variabel med scope som är resten av denna catch clause

91 finally Efter alla catch block får det finnas (men måste inte finnas) ett finally block Det utförs hur try blocket än avslutas - vare sig någon exception inträffat eller ej Även om try blocket avslutas med en return eller break Användning: för att säkerställa att reserverade resurser (tex filer) släpps

92 Grundmönster för IO try { Ett kodblock som öppnar en fil/enhet och försöker läsa/skriva catch (IOException e) { Kod som upplyser användaren om att något gick fel finally { Kod som stänger filen/enheten

93 Checked exceptions

94 Checked exceptions Terminologi: exception inträffar = exception kastas, exception is thrown

95 Checked exceptions Terminologi: exception inträffar = exception kastas, exception is thrown En del exception classes kallas checked

96 Checked exceptions Terminologi: exception inträffar = exception kastas, exception is thrown En del exception classes kallas checked De som programmeraren borde förutse och ta hand om

97 Checked exceptions Terminologi: exception inträffar = exception kastas, exception is thrown En del exception classes kallas checked De som programmeraren borde förutse och ta hand om Typexempel: IOException

98 Checked exceptions Terminologi: exception inträffar = exception kastas, exception is thrown En del exception classes kallas checked De som programmeraren borde förutse och ta hand om Typexempel: IOException En metod som kan kasta ett sådant måste antingen själv ta hand om det i en catch eller tydligt deklarera att anroparen måste ta hand om det

99 En metod som läser fil och hanterar eventuella exception själv: void readfile() { try { Ett kodblock som öppnar en fil och försöker läsa kan kasta ett IOException catch (IOException e) { Kod som upplyser om att något gick fel vid läsning finally { Kod som stänger filen

100 En metod som läser fil och låter anroparen hantera exceptions Ny deklaration i metodhuvudet void readfile() throws IOException { Ett kodblock som öppnar en fil och försöker läsa Notera: ingen try - catch här Med ordet throws följt av exceptiontyp deklareras att metoden kan kasta sådana exceptions utan att själv fånga dem De bör fångas av anroparen

101 En metod som läser fil och låter anroparen hantera exceptions Ny deklaration i metodhuvudet void readfile() throws IOException { Ett kodblock som öppnar en fil och försöker läsa Notera: ingen try - catch här Med ordet throws följt av exceptiontyp deklareras att metoden kan kasta sådana exceptions utan att själv fånga dem De bör fångas av anroparen try { readfile() catch (IOException e) {

102

103 OBS: Java håller jättenoga reda på vad som kan orsaka IOException (och andra checked exceptions)

104 OBS: Java håller jättenoga reda på vad som kan orsaka IOException (och andra checked exceptions) Om du använder något sådant - tex öppnar en fil - så vet Java det

105 OBS: Java håller jättenoga reda på vad som kan orsaka IOException (och andra checked exceptions) Om du använder något sådant - tex öppnar en fil - så vet Java det Du måste ta hand om ett IOException i en catch Annars kompileringsfel (netbeans protesterar och du kan inte ens köra programmet)

106 OBS: Java håller jättenoga reda på vad som kan orsaka IOException (och andra checked exceptions) Om du använder något sådant - tex öppnar en fil - så vet Java det Du måste ta hand om ett IOException i en catch Annars kompileringsfel (netbeans protesterar och du kan inte ens köra programmet) Antingen i samma metod där IOException kan inträffa, eller i den anropande metoden

107 OBS: Java håller jättenoga reda på vad som kan orsaka IOException (och andra checked exceptions) Om du använder något sådant - tex öppnar en fil - så vet Java det Du måste ta hand om ett IOException i en catch Annars kompileringsfel (netbeans protesterar och du kan inte ens köra programmet) Antingen i samma metod där IOException kan inträffa, eller i den anropande metoden I det senare fallet måste du skriva throws IOException i huvudet på den metod som ger upphov till det

108 Sammanfattning try { catch (Exception e) { finally { Får finnas flera catch Varje måste ange felklass lokal variabel e är ett exceptionobjekt finally är bra för att släppa resurser En metod som kan åstadkomma IOException måste antingen fånga dem själv eller deklareras med throws IOException

109 Javas IOsystem Uppbyggt runt så kallade strömmar (stream) En ström: enkelriktad överföring av data Input stream: från något externt till programmet Output stream: från programmet till något externt Externt : ex annan enhet, fil, url, annan dator import javaio*;

110 Lokal användare Systemin Javaprogram Filer Andra datorer via internet xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx

111 Strömtyper Olika slags strömmar för att överföra olika slags saker Byte stream Character stream Data stream Object stream

112 Strömtyper = klasser ObjectOutputStream DataInputStream FileReader Som alltid: omöjligt att lära sig allt Lär dig ett exempel som funkar och var du ska slå upp information

113 Strömmar = objekt

114 Strömmar = objekt Instansiera en klass för att få en ström

115 Strömmar = objekt Instansiera en klass för att få en ström Typiskt: konstruktorn har en parameter som talar om vart strömmen leder

116 Strömmar = objekt Instansiera en klass för att få en ström Typiskt: konstruktorn har en parameter som talar om vart strömmen leder ex: new FileReader("wordstxt")

117 Strömmar = objekt Instansiera en klass för att få en ström Typiskt: konstruktorn har en parameter som talar om vart strömmen leder ex: new FileReader("wordstxt") Detta returnerar en inputström från filen wordstxt

118 Strömmar = objekt Instansiera en klass för att få en ström Typiskt: konstruktorn har en parameter som talar om vart strömmen leder ex: new FileReader("wordstxt") Detta returnerar en inputström från filen wordstxt Den bör bindas till en variabel så att vi kan använda den, ex wordsinput = new FileReader("wordstxt")

119 Strömmar = objekt Instansiera en klass för att få en ström Typiskt: konstruktorn har en parameter som talar om vart strömmen leder ex: new FileReader("wordstxt") Detta returnerar en inputström från filen wordstxt Den bör bindas till en variabel så att vi kan använda den, ex wordsinput = new FileReader("wordstxt") Sådana variabler ska förstås deklareras som alla andra Ofta ligger viktiga strömmar i instansvariabler

120 read / write

121 read / write Inputströmobjekt har metoder för att läsa från strömmen

122 read / write Inputströmobjekt har metoder för att läsa från strömmen Typiskt heter de något med read Exakt vad och vilken signatur beror på strömmen Ex: readobject()

123 read / write Inputströmobjekt har metoder för att läsa från strömmen Typiskt heter de något med read Exakt vad och vilken signatur beror på strömmen Ex: readobject() På samma sätt har outputströmmar metoder för att skriva till strömmen

124 read / write Inputströmobjekt har metoder för att läsa från strömmen Typiskt heter de något med read Exakt vad och vilken signatur beror på strömmen Ex: readobject() På samma sätt har outputströmmar metoder för att skriva till strömmen Alla metoder för att skapa, skriva till eller läsa från strömmar kan kasta IOException, och måste ha exception handlers

125 Exempel: filkopiering FileReader inputstream = null; FileWriter outputstream = null; Skapar strömmar try { till och från filer inputstream = new FileReader("xanadutxt"); outputstream = new FileWriter("characteroutputtxt"); int c; while ((c = inputstreamread())!= -1) { outputstreamwrite(c); catch (IOException e) { Systemoutprintln( Error: +egetmessage()); finally { if (inputstream!= null) inputstreamclose(); if (outputstream!= null) outputstreamclose(); inputstreamread() läser ett tecken i form av heltal Dito för outputstreamwrite() Exception kan kastas när vi skapar, läser eller skriver Se till att stänga filerna när vi är klara

126 Exempel: filkopiering FileReader inputstream = null; FileWriter outputstream = null; Skapar strömmar try { till och från filer inputstream = new FileReader("xanadutxt"); outputstream = new FileWriter("characteroutputtxt"); int c; while ((c = inputstreamread())!= -1) { outputstreamwrite(c); catch (IOException e) { Systemoutprintln( Error: +egetmessage()); finally { if (inputstream!= null) inputstreamclose(); if (outputstream!= null) outputstreamclose(); inputstreamread() läser ett tecken i form av heltal Dito för outputstreamwrite() Exception kan kastas när vi skapar, läser eller skriver Se till att stänga filerna när vi är klara

127 Exempel: filkopiering FileReader inputstream = null; FileWriter outputstream = null; Skapar strömmar try { till och från filer inputstream = new FileReader("xanadutxt"); outputstream = new FileWriter("characteroutputtxt"); int c; while ((c = inputstreamread())!= -1) { outputstreamwrite(c); catch (IOException e) { Systemoutprintln( Error: +egetmessage()); finally { if (inputstream!= null) inputstreamclose(); if (outputstream!= null) outputstreamclose(); inputstreamread() läser ett tecken i form av heltal Dito för outputstreamwrite() Exception kan kastas när vi skapar, läser eller skriver Se till att stänga filerna när vi är klara

128 Exempel: filkopiering FileReader inputstream = null; FileWriter outputstream = null; Skapar strömmar try { till och från filer inputstream = new FileReader("xanadutxt"); outputstream = new FileWriter("characteroutputtxt"); int c; while ((c = inputstreamread())!= -1) { outputstreamwrite(c); catch (IOException e) { Systemoutprintln( Error: +egetmessage()); finally { if (inputstream!= null) inputstreamclose(); if (outputstream!= null) outputstreamclose(); inputstreamread() läser ett tecken i form av heltal Dito för outputstreamwrite() Exception kan kastas när vi skapar, läser eller skriver Se till att stänga filerna när vi är klara

129 Exempel: filkopiering FileReader inputstream = null; FileWriter outputstream = null; Skapar strömmar try { till och från filer inputstream = new FileReader("xanadutxt"); outputstream = new FileWriter("characteroutputtxt"); int c; while ((c = inputstreamread())!= -1) { outputstreamwrite(c); catch (IOException e) { Systemoutprintln( Error: +egetmessage()); finally { if (inputstream!= null) inputstreamclose(); if (outputstream!= null) outputstreamclose(); inputstreamread() läser ett tecken i form av heltal Dito för outputstreamwrite() Exception kan kastas när vi skapar, läser eller skriver Se till att stänga filerna när vi är klara

130 Exempel: ObjectStream Den mest generella strömmen Kan transportera objekt av skilda slag ObjectOutputStream och ObjectInputStream Wrapping: Konstruktorn tar en parameter som är en dataström Returnerar en objektström som använder denna

131 Javaprogram mystream xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx

132 Javaprogram mystream xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx ObjectInputStream myobjectstream = new ObjectInputStream(myStream)

133 Javaprogram myobjectstream mystream xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx xxx xxxxxx xx xx xxxxxxx xxxx xxxxxxxxx xxxxxxxxx xxxxxxxxxxxx xxxxx xxxxxx ObjectInputStream myobjectstream = new ObjectInputStream(myStream)

134

135 ObjectOutputStream har en metod writeobject()

136 ObjectOutputStream har en metod writeobject() Den är void och tar en parameter: det objekt som ska skrivas

137 ObjectOutputStream har en metod writeobject() Den är void och tar en parameter: det objekt som ska skrivas parametern måste implementera det speciella interfacet Serializable

138 ObjectOutputStream har en metod writeobject() Den är void och tar en parameter: det objekt som ska skrivas parametern måste implementera det speciella interfacet Serializable Interfacet är tomt men talar om för Java att finna ett sätt att överföra objekten

139 ObjectOutputStream har en metod writeobject() Den är void och tar en parameter: det objekt som ska skrivas parametern måste implementera det speciella interfacet Serializable Interfacet är tomt men talar om för Java att finna ett sätt att överföra objekten De flesta enkla klasser som String implementerar detta

140 ObjectOutputStream har en metod writeobject() Den är void och tar en parameter: det objekt som ska skrivas parametern måste implementera det speciella interfacet Serializable Interfacet är tomt men talar om för Java att finna ett sätt att överföra objekten De flesta enkla klasser som String implementerar detta Vill du att objekten i en egen klass ska kunna skickas skriv implements Serializable i klasshuvudet

141 ObjectOutputStream har en metod writeobject() Den är void och tar en parameter: det objekt som ska skrivas parametern måste implementera det speciella interfacet Serializable Interfacet är tomt men talar om för Java att finna ett sätt att överföra objekten De flesta enkla klasser som String implementerar detta Vill du att objekten i en egen klass ska kunna skickas skriv implements Serializable i klasshuvudet

142

143 ObjectInputStream har en metod readobject()

144 ObjectInputStream har en metod readobject() Den har inga parametrar och returnerar något av typ Object

145 ObjectInputStream har en metod readobject() Den har inga parametrar och returnerar något av typ Object Object är Javas översta klass i klasshierarkin: alla klasser är underklasser till Object

146 ObjectInputStream har en metod readobject() Den har inga parametrar och returnerar något av typ Object Object är Javas översta klass i klasshierarkin: alla klasser är underklasser till Object Använd casting för att specifiera objektet närmare

147 ObjectInputStream har en metod readobject() Den har inga parametrar och returnerar något av typ Object Object är Javas översta klass i klasshierarkin: alla klasser är underklasser till Object Använd casting för att specifiera objektet närmare Exempel: läs en String message = (String)myObjectStreamreadObject(); Downcasting till String Gör så att högerledet anses ha typ String Om det i själva verket har annan typ kastas ett exception

148 Idiom try { String message = (String)myObjectStreamreadObject(); process the message as a String catch (ClassNotFoundException e) { Systemoutprintln("Unknown object received");

149 class MyData implements Serializable { int a; String name; Exempel: Lagra ett objekt på en fil MyData dataitem = ; ObjectOutputStream output; try { output = new ObjectOutputStream( new FileOutputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { outputwriteobject(dataitem); catch (IOException e) { Systemoutprintln ( Error writing to file );

150 class MyData implements Serializable { int a; String name; Exempel: Lagra ett objekt på en fil MyData dataitem = ; ObjectOutputStream output; try { output = new ObjectOutputStream( new FileOutputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { outputwriteobject(dataitem); catch (IOException e) { Systemoutprintln ( Error writing to file );

151 class MyData implements Serializable { int a; String name; Exempel: Lagra ett objekt på en fil MyData dataitem = ; ObjectOutputStream output; try { output = new ObjectOutputStream( new FileOutputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { outputwriteobject(dataitem); catch (IOException e) { Systemoutprintln ( Error writing to file );

152 class MyData implements Serializable { int a; String name; Exempel: Lagra ett objekt på en fil MyData dataitem = ; ObjectOutputStream output; try { output = new ObjectOutputStream( new FileOutputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { outputwriteobject(dataitem); catch (IOException e) { Systemoutprintln ( Error writing to file );

153 class MyData implements Serializable { int a; String name; MyData dataitem; ObjectInputStream input; try { Exempel: Läs ett objekt från en fil input = new ObjectInputStream( new FileInputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { dataitem = (MyData)inputreadObject(); catch (ClassNotFoundException e) { Systemoutprintln ( Incorrect object on file ); catch (IOException e) { Systemoutprintln ( Error reading from file );

154 class MyData implements Serializable { int a; String name; MyData dataitem; ObjectInputStream input; try { Exempel: Läs ett objekt från en fil input = new ObjectInputStream( new FileInputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { dataitem = (MyData)inputreadObject(); catch (ClassNotFoundException e) { Systemoutprintln ( Incorrect object on file ); catch (IOException e) { Systemoutprintln ( Error reading from file );

155 class MyData implements Serializable { int a; String name; MyData dataitem; ObjectInputStream input; try { Exempel: Läs ett objekt från en fil input = new ObjectInputStream( new FileInputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { dataitem = (MyData)inputreadObject(); catch (ClassNotFoundException e) { Systemoutprintln ( Incorrect object on file ); catch (IOException e) { Systemoutprintln ( Error reading from file );

156 class MyData implements Serializable { int a; String name; MyData dataitem; ObjectInputStream input; try { Exempel: Läs ett objekt från en fil input = new ObjectInputStream( new FileInputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { dataitem = (MyData)inputreadObject(); catch (ClassNotFoundException e) { Systemoutprintln ( Incorrect object on file ); catch (IOException e) { Systemoutprintln ( Error reading from file );

157 class MyData implements Serializable { int a; String name; MyData dataitem; ObjectInputStream input; try { Exempel: Läs ett objekt från en fil input = new ObjectInputStream( new FileInputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { dataitem = (MyData)inputreadObject(); catch (ClassNotFoundException e) { Systemoutprintln ( Incorrect object on file ); catch (IOException e) { Systemoutprintln ( Error reading from file );

158 class MyData implements Serializable { int a; String name; MyData dataitem; ObjectInputStream input; try { Exempel: Läs ett objekt från en fil input = new ObjectInputStream( new FileInputStream( myfile )); catch (IOException e) { Systemoutprintln ( Error opening file ); try { dataitem = (MyData)inputreadObject(); catch (ClassNotFoundException e) { Systemoutprintln ( Incorrect object on file ); catch (IOException e) { Systemoutprintln ( Error reading from file );

159 Nätverksprogrammering Hur man skickar data mellan datorer via internet

160 Internet Protokoll: Serie konventioner för hur kommunikation ska gå till IP: Internet Protocol, ett protokoll som används vid internet Vanligast nu är IPv4 Paketorienterat (jfr skicka avgränsade paket) TCP: Transmission Control Protocol, använder sig av IP Förbindelseorieterat (jfr ett telefonsamtal) Sockets: ett programmeringsgränssnitt för att använda TCP Java har olika Socketklasser import javanet*;

161 IP-adresser

162 IP-adresser Varje internetansluten dator har en IP-adress

163 IP-adresser Varje internetansluten dator har en IP-adress Kan jämföras med telefonnummer För att kontakta datorn måste man ange dess IP-adress

164 IP-adresser Varje internetansluten dator har en IP-adress Kan jämföras med telefonnummer För att kontakta datorn måste man ange dess IP-adress En IP-adress består av 4 bytes separerade av punkt Varje byte är ett tal mellan 0 och 255

165 IP-adresser Varje internetansluten dator har en IP-adress Kan jämföras med telefonnummer För att kontakta datorn måste man ange dess IP-adress En IP-adress består av 4 bytes separerade av punkt Varje byte är ett tal mellan 0 och 255 Exempel: min IP just nu är

166 IP-adresser Varje internetansluten dator har en IP-adress Kan jämföras med telefonnummer För att kontakta datorn måste man ange dess IP-adress En IP-adress består av 4 bytes separerade av punkt Varje byte är ett tal mellan 0 och 255 Exempel: min IP just nu är IP-adressen ändras när datorn rör sig fysiskt mellan olika nät (till skillnad från tex telefonnummer)

167 IP-adresser Varje internetansluten dator har en IP-adress Kan jämföras med telefonnummer För att kontakta datorn måste man ange dess IP-adress En IP-adress består av 4 bytes separerade av punkt Varje byte är ett tal mellan 0 och 255 Exempel: min IP just nu är IP-adressen ändras när datorn rör sig fysiskt mellan olika nät (till skillnad från tex telefonnummer) Den speciella adressen localhost leder alltid tillbaka till samma dator Bra när man testar

168 Vad är min IP? InetAddressgetLocalHost()getHostAddress() Returnerar en String som representerar IPadressen OBS: Den kastar IOException try { title = "I am at IP "+InetAddressgetLocalHost()getHostAddress(); catch (IOException e) { title = "Unable to determine IP";

169 Portar

170 Portar Varje dator har 216 = stycken portar

171 Portar Varje dator har 216 = stycken portar Portarna har ingen fysisk motsvarighet Kan anses vara lokala anknytningar inom datorn

172 Portar Varje dator har 216 = stycken portar Portarna har ingen fysisk motsvarighet Kan anses vara lokala anknytningar inom datorn Varje tillämpning har en specifik port den kan bli kontaktad på

173 Portar Varje dator har 216 = stycken portar Portarna har ingen fysisk motsvarighet Kan anses vara lokala anknytningar inom datorn Varje tillämpning har en specifik port den kan bli kontaktad på För din egen tillämpning: välj ett portnummer Helst inte ett som redan är i bruk Undvik nummer mindre än 1024

174 Sockets

175 Sockets Ett sätt att etablera TCP-förbindelse mellan två datorer

176 Sockets Ett sätt att etablera TCP-förbindelse mellan två datorer Uppkopplingsfasen är asymmetrisk Den ena, Client, kopplar upp aktivt mot ett visst IP och viss port Den andra, Server, lyssnar efter uppkopplingsförsök vid en viss port

177 Sockets Ett sätt att etablera TCP-förbindelse mellan två datorer Uppkopplingsfasen är asymmetrisk Den ena, Client, kopplar upp aktivt mot ett visst IP och viss port Den andra, Server, lyssnar efter uppkopplingsförsök vid en viss port När förbindelsen väl är igång är situationen symmetrisk: Båda datorerna har en inputstream och en outputstream

178 Sockets Ett sätt att etablera TCP-förbindelse mellan två datorer Uppkopplingsfasen är asymmetrisk Den ena, Client, kopplar upp aktivt mot ett visst IP och viss port Den andra, Server, lyssnar efter uppkopplingsförsök vid en viss port När förbindelsen väl är igång är situationen symmetrisk: Båda datorerna har en inputstream och en outputstream Jfr telefonsamtal Den ena ringer och den andra blir uppringd, men sedan är samtalet symmetriskt

179 Klassen Socket Objekt av klassen Socket svarar mot existerande uppkopplingar mot andra datorer De har metoder bla för att ta fram strömmarna och för att stänga sig OutputStream getoutputstream() InputStream getinputstream() För att skicka data, ta fram Outputströmmen och skriv på den Samma för input void close()

180 Uppkoppling Asymmetrisk Det finns en Client sida och en Server sida Client skapar sin socket genom att helt enkelt använda konstruktorn Socket() Den tar två parametrar: 1 IP-numret att koppla upp sig mot (String) 2 Portnumret för tillämpningen (int) mysocket = new Socket( , 12345)

181 OBS: Kastar IOException om uppkopplingen misslyckades try { mysocket = new Socket( , 12345) catch (IOException e) { Systemoutprintln( Could not connect to server )

182

183 Servern använder klassen ServerSocket

184 Servern använder klassen ServerSocket Konstruktorn har en parameter: portnumret den ska betjäna (int)

185 Servern använder klassen ServerSocket Konstruktorn har en parameter: portnumret den ska betjäna (int) Den skapar ett ServerSocket - objekt

186 Servern använder klassen ServerSocket Konstruktorn har en parameter: portnumret den ska betjäna (int) Den skapar ett ServerSocket - objekt Detta objekt har en metod accept() som väntar på anslutningar från en client

187 Servern använder klassen ServerSocket Konstruktorn har en parameter: portnumret den ska betjäna (int) Den skapar ett ServerSocket - objekt Detta objekt har en metod accept() som väntar på anslutningar från en client När en sådan kommer returnerar accept() en Socket

188 Servern använder klassen ServerSocket Konstruktorn har en parameter: portnumret den ska betjäna (int) Den skapar ett ServerSocket - objekt Detta objekt har en metod accept() som väntar på anslutningar från en client När en sådan kommer returnerar accept() en Socket myserver = new ServerSocket(12345); mysocket = myserveraccept();

189 Servern använder klassen ServerSocket Konstruktorn har en parameter: portnumret den ska betjäna (int) Den skapar ett ServerSocket - objekt Detta objekt har en metod accept() som väntar på anslutningar från en client När en sådan kommer returnerar accept() en Socket myserver = new ServerSocket(12345); mysocket = myserveraccept(); OBS: detta kastar också IOException och bör omslutas av try-catch

190 Kommunikation Symmetrisk En förbindelse mellan två datorer använder en socket i vardera datorn, och kan ta fram input och outputströmmar

191 Kommunikation Symmetrisk En förbindelse mellan två datorer använder en socket i vardera datorn, och kan ta fram input och outputströmmar myinput = mysocketgetinputstream()

192 Kommunikation Symmetrisk En förbindelse mellan två datorer använder en socket i vardera datorn, och kan ta fram input och outputströmmar myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream()

193 Client mysocket = new Socket(ipNumber, port) Server myserver = new ServerSocket(port); mysocket = myserveraccept(); Uppkoppling klar myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() objectoutput = new ObjectOutputStream(myOutput) objectoutput = new ObjectOutputStream(myOutput) objectinput = new ObjectInputStream(myInput) Strömmar klara objectinput = new ObjectInputStream(myInput) objectoutputwriteobject( Hello ) m = (String)objectInputread() m = (String)objectInputread() objectoutputwriteobject( Hi )

194 Client mysocket = new Socket(ipNumber, port) Server myserver = new ServerSocket(port); mysocket = myserveraccept(); Uppkoppling klar myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() objectoutput = new ObjectOutputStream(myOutput) objectoutput = new ObjectOutputStream(myOutput) objectinput = new ObjectInputStream(myInput) Strömmar klara objectinput = new ObjectInputStream(myInput) objectoutputwriteobject( Hello ) m = (String)objectInputread() m = (String)objectInputread() objectoutputwriteobject( Hi )

195 Client mysocket = new Socket(ipNumber, port) Server myserver = new ServerSocket(port); mysocket = myserveraccept(); Uppkoppling klar myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() objectoutput = new ObjectOutputStream(myOutput) objectoutput = new ObjectOutputStream(myOutput) objectinput = new ObjectInputStream(myInput) Strömmar klara objectinput = new ObjectInputStream(myInput) objectoutputwriteobject( Hello ) m = (String)objectInputread() m = (String)objectInputread() objectoutputwriteobject( Hi )

196 Client mysocket = new Socket(ipNumber, port) Server myserver = new ServerSocket(port); mysocket = myserveraccept(); Uppkoppling klar myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() objectoutput = new ObjectOutputStream(myOutput) objectoutput = new ObjectOutputStream(myOutput) objectinput = new ObjectInputStream(myInput) Strömmar klara objectinput = new ObjectInputStream(myInput) objectoutputwriteobject( Hello ) m = (String)objectInputread() m = (String)objectInputread() objectoutputwriteobject( Hi )

197 Client mysocket = new Socket(ipNumber, port) Server myserver = new ServerSocket(port); mysocket = myserveraccept(); Uppkoppling klar myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() objectoutput = new ObjectOutputStream(myOutput) objectoutput = new ObjectOutputStream(myOutput) objectinput = new ObjectInputStream(myInput) Strömmar klara objectinput = new ObjectInputStream(myInput) objectoutputwriteobject( Hello ) m = (String)objectInputread() m = (String)objectInputread() objectoutputwriteobject( Hi )

198 Client mysocket = new Socket(ipNumber, port) Server myserver = new ServerSocket(port); mysocket = myserveraccept(); Uppkoppling klar myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() myoutput = mysocketgetoutputstream() myinput = mysocketgetinputstream() objectoutput = new ObjectOutputStream(myOutput) objectoutput = new ObjectOutputStream(myOutput) objectinput = new ObjectInputStream(myInput) Strömmar klara objectinput = new ObjectInputStream(myInput) objectoutputwriteobject( Hello ) m = (String)objectInputread() m = (String)objectInputread() objectoutputwriteobject( Hi )

199 Superviktigt Allt måste omslutas av en try-catch med ett finally block Finally blocket måste göra close() på alla strömmar och sockets I annat fall kan en port forsätta vara reserverad efter att programmet slutat Om det händer, logga ut och logga in

200 Exempel En meddelandesändare: Användaren skriver in en ip, ett portnummer och ett meddelande Meddelandesändaren skickar iväg det Demo

201 Exempel Visades inte på föreläsningen Klassen Sender gör allt jobb public class Main { public static void main(string[] args) { new Sender(); Instansvariabler: sådant som lever mellan metodanrop class Sender { ObjectOutputStream output; Socket socket; String ip; int port; String message;

202 Konstruktor Visades inte på föreläsningen Tre faser, alla i ett try block Sender () { try { getdata(); getconnection(); sendmessage(); catch (IOException e) { Systemoutprintln("Det misslyckades: "+egetmessage()); finally { close();

203 Avslut Visades inte på föreläsningen Stäng allt du kan void close() { try { if (socket!= null) socketclose(); if (output!= null) outputclose(); catch (IOException e) { Systemoutprintln("Error in closing");

204 Avändarinteraktion Använd Swings dialoger Obs att portnumret måste omvandlas till int Visades inte på föreläsningen void getdata () { ip = JOptionPaneshowInputDialog("To what IP?", null); String portstring = JOptionPaneshowInputDialog("To what port?", null); port = IntegerparseInt(portString); message = JOptionPaneshowInputDialog("What message?", null);

205 Kommunikation Visades inte på föreläsningen void getconnection () throws IOException { socket = new Socket(ip,port); output = new ObjectOutputStream(socketgetOutputStream()); outputflush(); flush() sägs vara bra att göra på ny ström void sendmessage () throws IOException { outputwriteobject(message);

Gästföreläsningen. Synpunkter?

Gästföreläsningen. Synpunkter? Gästföreläsningen Synpunkter? Syfte: Att stadfästa Interface överenskommelser mellan flera personer som använder varandras kod. Interface Syfte: Att stadfästa överenskommelser mellan flera personer som

Läs mer

Erfarenheter från biljardprojektet. måndag 23 november 15

Erfarenheter från biljardprojektet. måndag 23 november 15 Erfarenheter från biljardprojektet Gästföreläsningen Synpunkter? Sanningen bakom ordet implements Det underlättar överenskommelser mellan olika programmerare, och gör att java kan se till att de inte bryts!

Läs mer

Klasser som datastrukturer

Klasser som datastrukturer Klasser som datastrukturer Ex: du vill skicka ett meddelande som består av text (String), avsändarnamn (String), klockslag (två int). Du kan förstås skicka alla dessa efter varandra. Bättre är att bygga

Läs mer

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F12:1 OOP Objekt-orienterad programmering Föreläsning 12 Mer om JOptionPane Undantagshantering Vad är det? try catch Kasta egna undantag Filhantering spara objekt mellan körningar Användardialog via

Läs mer

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har

Läs mer

Fördjupad Java. Undantagshantering. Fel

Fördjupad Java. Undantagshantering. Fel Fördjupad Java 1 Undantagshantering Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java

Läs mer

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

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

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker öppna en fil som inte finns, dividera med noll, indexera utanför en array osv. bjectorienterad programmering

Läs mer

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016 Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.

Läs mer

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR Instuderingsuppgifter läsvecka 6 - LÖSNINGAR 1. 2. Om vi använder interfacet List behöver vi inte bry oss om den konkret implementation som används, därför kan implementationen bytas ut genom att endast

Läs mer

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets Surfning Webbklienter och webbservrar Starta Firefox (eller Opera, eller Internet Explorer, eller... ). Skriv en URL i adressfältet: http://www.w3.org/history/1989/proposal.html. Webbläsaren kopplar upp

Läs mer

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Föreläsning 2, vecka 8: Repetition

Föreläsning 2, vecka 8: Repetition TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning

Läs mer

Språkkonventioner och redigering av tal.

Språkkonventioner och redigering av tal. Språkkonventioner och redigering av tal. Kap J3-1 Konventioner för olika språk hanteras med hjälp av klassen java.util.locale Ett objekt i denna klass beskriver en lokal konvention. Lokala konventioner

Läs mer

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 6: Metoder och fält (arrays) TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden

Läs mer

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop Översikt Repetition for-loopar Skriva till och läsa från filer Strömmar Eclipse Hur anpassa till vad du gillar? Skriva och läsa data Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 Kontrollflöde

Läs mer

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

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 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 riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016 Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016 Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se Processer Vad vi i dagligt tal menar när vi pratar

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

Föreläsning 14. Filhantering

Föreläsning 14. Filhantering Föreläsning 14 Filhantering Filhantering Att hantera filer, dvs att läsa eller skriva data till en fil är en viktig del i de flesta program. Ur Javas synvinkel är filer objekt med egenskaper och metoder

Läs mer

Lösningar för tenta 2 DAT043,

Lösningar för tenta 2 DAT043, Lösningar för tenta 2 DAT043, 2018-06-08. Uppgift 1 public class Car{ private String model; private String year; private double price; public Car(String model, String year, double price){ this.model =

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetion: Klasser och objekt Vi definierar nya objekttyper i klasser. Ett objekt

Läs mer

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering

Läs mer

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private. Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker

Läs mer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Strömmar Filer m.m. 1 In- och utmatning Definition: En ström (en.

Läs mer

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Nätverksprogrammering 2004 LÖSNINGAR Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13 DEL 1 - Frågor av teoretisk, principiell eller utredande

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2014 06 02, 8.00 13.00 Del 1 1. a) TCP (Transmission Control Protocol) och UDP (User Datagram

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 04 11, 8.00 13.00 Del 1 1. a) IP-numret identifierar en enskild dator på internet. b) Port-numret

Läs mer

Föreläsnings 9 - Exceptions, I/O

Föreläsnings 9 - Exceptions, I/O Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public

Läs mer

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

Läs mer

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1. Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

F2 Java I/O - strömmar Meddelandesändning med TCP

F2 Java I/O - strömmar Meddelandesändning med TCP F2 Java I/O - strömmar Meddelandesändning med TCP EDA095 Nätverksprogrammering Roger Henriksson Datavetenskap Lunds universitet Java I/O Strömmar och filer Ström (eng. Stream) En ström är en sekvensiell

Läs mer

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Sammanfattning och repetition utgående från typiska tentamensuppgifter (2 mars 2018 F6 1 ) Dagens föreläsning Sammanfattning och repetition utgående från typiska tentamensuppgifter (2 mars 2018 F6 2 ) A-fråga Hur många objekt skapas av nedanstående kod? World w = new World();

Läs mer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1

Läs mer

10 Kommunikation i Java

10 Kommunikation i Java 10 Kommunikation i Java adresser filaccess över nätverk ar och sockets datagram multicasting client-server Skansholm kap 18 Adressering En URL (=Uniform Resource Locator) identifierar en resurs på WWW

Läs mer

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

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.

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. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine. Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 03 14, 8.00 13.00 Del 1 1. Applikationslagret levererar data mellan applikationer och till

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt

Läs mer

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser. (16 februari 2016 F5.1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (16 februari 2016 F5.2 ) Pokertärningar

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Lösningsförslag övning 2.

Lösningsförslag övning 2. Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static

Läs mer

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = Vargtass; System.out.println(namn +   + moms + bodegan.ändra(moms, namn); S Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för M1, K2, Media1 och I1 (1p) 16 december 2000 Hjälpmedel: En Javabok. System.out är ett objekt kopplat till skärmen, dvs samma sak som i labbarna

Läs mer

Skillnader mellan Python och Java

Skillnader mellan Python och Java Java Utvecklat på SUN Microsystems mitten 1990-talet Ursprungligen för Webprogram Nu mycket spritt Massor med läroböcker Vi använder Lewis&Loftus http://javasuncom/javase/6/docs/api/ Skillnader mellan

Läs mer

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, 2017-02-20 Aktiva objekt och trådar Multitasking, parallella program Vanliga datorer har kunna köra flera program skenbart samtidigt

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]

Läs mer

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid: Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-08-30, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag

Läs mer

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 1, 2013 1 Innehåll OO-programmering fortsättning Skapa

Läs mer

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

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ Organisation En array Šr en ordnad lista av všrden Varje všrde har ett numeriskt index - deklaration & anvšndning som parametrar flerdimensionella fšlt N element indexeras med 0 till N-1 0 1 2 3 4 5 6

Läs mer

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Bubblesort, Shakersort, Mergesort Strömmar,

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen , Introduktion till Java, dtaa98, dtea53 Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion

Läs mer

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

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 Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering May 29, 2012 Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga

Läs mer

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Sammanfattning och repetition utgående från typiska tentamensuppgifter (6 mars 2019 F7 1 ) Dagens föreläsning Sammanfattning och repetition utgående från typiska tentamensuppgifter (6 mars 2019 F7 2 ) A-fråga Hur många objekt skapas av nedanstående kod? World w = new World();

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder

Läs mer

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. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

1 Comparator & Comparable

1 Comparator & Comparable 1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics

Läs mer

(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

(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 (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok 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

Läs mer

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall

Läs mer

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new

Läs mer

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer