Föreläsningar 11, 12 (okt 08, okt 12 v 40). Poster och Abstrakta datatyper.

Storlek: px
Starta visningen från sidan:

Download "Föreläsningar 11, 12 (okt 08, okt 12 v 40). Poster och Abstrakta datatyper."

Transkript

1 Föreläsningar 11, 12 (okt 08, okt 12 v 40). Poster och Abstrakta datatyper. Komplexa tal definierade med en klass med publika instansvariabler. Vi ska implementera en ny egendefinerad typ Complex för komplexa tal i en klass Complex med publika instanvariabler, en publik instanvariabel för det komplexa talets realdel och en publik instanvariabel för det komplexa talets realdel. Detta kan göras genom att skriva denna klass (på filen Complex.java) och kompilera: public class Complex { public double re; public double im; //instansvariabel, ej static! //instansvariabel, ej static! Alla typer bortsett från dom inbyggda primitiva typerna (int, long, short, byte, char, boolean, double, float) och arrayer definieras i Java av klasser. Detta är den normala användningen av klasser. Tidigare har vi använt klasser för att hysa en eller flera klassmetoder. Detta är en mindre vanlig användning av klasser, men i en applikation kan man använda en klass på detta sätt för att hysa main-metoden (som ju är en klassmetod, det står static framför en klassmetod). Ett annat exempel på en klass med bara klassmetoder (statiska metoder) är Math. Ordet Complex kan användas som en typ i andra klasser i samma katalog som där Complex.class finns. När man skapar ett nytt komplex tal eller flera nya komplexa tal så representeras varje komplext tal av en referens till ett objekt. I varje objekt kommer det att finnas de två flyttalsvariablerna re och im, som kallas för instansvariabler. Märk att det inte står static framför double! Vi ska som förut implementera algebran för komplexa tal i en klass Comp, men nu med hjälp av den nya typen Complex. I klassen skall finnas definitioner för samma statiska metoder som fanns när vi skrev Comp med hjälp av tvåelementssarrayer. Detta kan göras på detta vis:

2 public class Comp { public static Complex mkcomplex(double ire, double iim) { Complex result = new Complex(); result.re = ire; result.im = iim; return result; public static boolean isequal(complex z1, Complex z2){ return (z1.re == z2.re) && (z1.im == z2.im); public static Complex add(complex z1, Complex z2){ /* Complex result = new Complex(); result.re = z1.re + z2.re; result.im = z1.im + z2.im; return result; */ return mkcomplex(z1.re + z2.re, z1.im + z2.im); public static Complex sub(complex z1, Complex z2){ return mkcomplex(z1.re - z2.re, z1.im - z2.im); public static Complex mult(complex z1, Complex z2){ Complex result = new Complex(); return mkcomplex(z1.re*z2.re - z1.im*z2.im, z1.re*z2.im + z1.im*z2.re); public static Complex conjugate(complex z1){ return mkcomplex( z1.re, - z1.im); public static double modulus(complex z1){ return Math.sqrt(z1.re*z1.re + z1.im*z1.im); public static Complex div(complex z1, Complex z2){ if (isequal(z2, mkcomplex(0,0))) { throw new RuntimeException("Tried to divid by 0 + 0i"); else { double mo = modulus(z2); double dd = mo*mo; Complex zz = mult(z1, conjugate(z2)); return mkcomplex( zz.re/dd, zz.im/dd); public static double re(complex z1){ return z1.re;

3 public static double im(complex z1){ return z1.im; public static String tostring(complex z1) { return z1.re + " + " + z1.im + "i"; En komplext tal är i vår lösning (vi ska kommande veckor göra på många andra sätt, bättre sätt) en referens till ett objekt. Objektet innehåller realdelen i re och med imaginärdelen i im. Vi kan nu göra beräkningar på komplexa tal med TestComplex, samma program som vi använde förut när vi lät komplexa tal vara av typen double [][]. public class TestComplex { public static void main(string [] iargs) { System.out.println(" (3+4i)= " + Comp.toString(Comp.mkComplex(3, 4))); System.out.println(" (3+4i)/(1-2i) = " + Comp.toString( Comp.div(Comp.mkComplex(3, 4), Comp.mkComplex(1, -2)))); System.out.println(" (3+2i)(4+5i) = " + Comp.toString( Comp.mult(Comp.mkComplex(3, 2), Comp.mkComplex(4, 5)))); System.out.println(" Ex = " + Comp.toString( Comp.sub( Comp.div(Comp.mkComplex(1, -2), Comp.mkComplex(3, 4)), Comp.div(Comp.mkComplex(2, 1), Comp.mkComplex(0, 5))))); Om vi i en metod gör denna deklaration Complex result; händer detta: Datorns primärminne lokala variabler parametrar objekt metoder result null

4 Om vi i en metod gör detta: Complex result; result = new Complex(); eller (samma sak): Complex result = new Complex(); händer detta: Datorns primärminne lokala variabler parametrar objekt Complex-objektets två komponenter metoder result re im I resten av metoden och i andra metoder, kan vi i uttryck använda resultat.re och resultat.im för att räkna på komponternas värden, och resultat.re =.. och resultat.im =.. för att ge komponeterna nya värden. Om vi i en metod i en annan klass definierar Complex z = new Complex() ; kan vi även i den metoden i den klassen använda z.re och z.im på samma sätt. Så här ser det ut i datorn just före return result; i metoden mkcomplex när main gjort anropet Comp.mkComplex(3, 4)). Datorns primärminne statiska variabler lokala variabler parametrar frame : main iargs frame :mkcomplex ire iim result objekt re im metoder TestComplex main Comp mkcomplex isequal add sub... Körresultat när vi kör TestComplex : (3+4i)= i (3+4i)/(1-2i) = i (3+2i)(4+5i) = i Ex = i

5 Det sätt på vilket vi nu använt Java motsvarar vad som i t ex programspråket Pascal kallas (en pekare till) en post, eller på engelska a record. En post kan innehålla många delar av olika typer, dvs instansvariablerna kan deklareras med valfri typ. I arrayer måste alla komponter vara av samma typ. Att vi i vårt fall med komplexa tal kan välja mellan en array-implemetation och en "record"-implementation beror på att både realdel och imaginärdel är flyttal, dvs double. Det vi lärt oss fram till nu motsvarar ungefär en första kurs i programmering med ett traditionelt imperativt språk, som Pascal eller C. Traditionell imperativ programmering i Java innebär att man använder klassmetoder och klassvariabler, dvs static. Vi kommer nu att gradvis gå över till att använda Java på ett objekt-inriktat sätt, det vanliga sättet att använda Java. Komplexa tal definierade med en klass med privata instansvariabler. Vi ska implementera en ny egendefinerad typ Complex för komplexa tal i en klass Complex med privata instanvariabler, en privat instansvariabel för det komplexa talets realdel och en privat instansvariabel för det komplexa talets imaginärdel. Detta göres genom att skriva private istället för public när vi definierar instansvariablerna. I resten av metoden och i andra metoder i samma klass kan vi som förut i uttryck använda resultat.re och resultat.im för att räkna på komponternas värden, och resultat.re =.. och resultat.im =.. för att ge komponeterna nya värden, men.re och.im kan inte användas för att komma åt realdel och imaginärdel i andra klasser, eftersom instansvariablerna är "privata" för klassen. Att på detta sätt skydda instansvariablerna kallas att man gör Complex till en abstarkt datatyp (ADT). Men vi måste fortfarande kunna skapa nya komplexa tal och kunna få tillgång till ett komplext tals realdel och imaginärdel. Vi ändrar därför klassen Complex på detta sätt: public class Complex { private double re; private double im; public Complex(double ire, double iim) { // En "Konstuktor" re = ire; // Används för att skapa nya komplexa tal im = iim; // med startvärden för instansvariblerna public double re(){ //instansmetod för att få realdelen return re; public double im(){ //instansmetod för att få imaginärdelen return im;

6 I den tidigare lösningen hade vi en "default" konstruktor Complex() som om vi skrivit den själva sett ut så här : public Complex() { // Java framställer själv denna definition Märk att en konstruktor har samma namn som klassen och att det inte står void eller någon returtyp i konstruktorns rubrik! I ett användande program när man skapar nya objekt används alltid ett anrop till en konstruktor efter det reserverade ordet new. Skriver man en egen konstruktor får man ingen "default" konstruktor Complex(). De två metoderna för att "komma åt" realdel respektive imaginärdel är instansmetoder, metoder som hör till varje komplext tal (dvs till varje instans av typen Complex). Märk att det i metodrubrikernad inte står static! Man kan (förenklat) tänka sig att i varje objekt (varje komplext tal) kommer det att finnas de två metoderna re() och im(). Om vi i en metod gör detta: eller (samma sak): Complex result; Complex result = new Complex(3.0, 4.0); result = new Complex(3.0, 4.0); händer detta: Datorns primärminne lokala variabler parametrar objekt Complex-objektets två komponenter metoder result re im Complex(double ire, double iim) {.. re() {.. im() {... Complex-objektets konstuktor och två instansmetoder Vi ska implementera algebran för komplexa tal i en klass Comp med hjälpa av den nya typen Complex. I klassen skall finnas definitioner för samma klassmetoder som fanns när vi skrev Comp med hjälp av en klass med publika klassvariabler eller med tvåelementssarrayer: public class Comp { public static Complex mkcomplex(double ire, double iim) { return new Complex(ire, iim); public static boolean isequal(complex z1, Complex z2){ return (re(z1) == re(z2)) && (im(z1) == im(z2));

7 public static Complex add(complex z1, Complex z2){ return new Complex(re(z1) + re(z2), im(z1) + im(z2)); public static Complex sub(complex z1, Complex z2){ return new Complex(re(z1) - re(z2), im(z1) - im(z2)); public static Complex mult(complex z1, Complex z2){ return new Complex(re(z1)*re(z2) - im(z1)*im(z2), re(z1)*im(z2) + im(z1)*re(z2)); public static Complex conjugate(complex z1){ return new Complex(re(z1), - im(z1)); public static double modulus(complex z1){ return Math.sqrt(re(z1)*re(z1) + im(z1)*im(z1)); public static Complex div(complex z1, Complex z2){ if (isequal(z2, new Complex(0,0))) { throw new RuntimeException("Tried to divid by 0 + 0i"); else { double mo = modulus(z2); double dd = mo*mo; Complex zz = mult(z1, conjugate(z2)); return new Complex( re(zz)/dd, im(zz)/dd); public static double re(complex z1){ return z1.re(); public static double im(complex z1){ return z1.im(); public static String tostring(complex z1) { return re(z1) + " + " + im(z1) + "i"; Märk att anrop till en instansmetod i en annan klass föregås av namnet på det objekt som "rår om metoden" följt av en punkt! Anrop till en klassmetod i en annan klass föregås normalt av namnet på klassen där metoden definierats följt av en punkt! Jämför hur metoderna ritas i minnesbilderna!

8 Vi kan nu göra beräkningar på komplexa tal med TestComplex, samma program som vi använde förut. Men vi kan även skriva om TestComplex och direkt använda konstruktorn Complex(..,...) istället för mkcomplex(..,...) : public class TestComplex { public static void main(string [] iargs) { System.out.println(" (3+4i)= " + Comp.toString(new Complex(3, 4))); System.out.println(" (3+4i)/(1-2i) = " + Comp.toString( Comp.div(new Complex(3, 4), new Complex(1, -2)))); System.out.println(" (3+2i)(4+5i) = " + Comp.toString( Comp.mult(new Complex(3, 2), new Complex(4, 5)))); System.out.println(" Ex = " + Comp.toString( Comp.sub( Comp.div(new Complex(1, -2), new Complex(3, 4)), Comp.div(new Complex(2, 1), new Complex(0, 5))))); Skulle man inte kunna tänka sig att flytta alla klassmetoder i Comp till Complex och göra dem till instansmetoder istället? Jo, det är detta som är Objekt-inriktad (objekt-orienterad, OO) programmering och är det vanliga sättet att använda Java. Att göra komplexa tal på ett objektorienterat sätt kommer vi att göra kommande vecka. Först ytterligare ett exempel på olika implementationer av en typ Time. Denna typ definieras i DD kapitel 8 direkt på ett objekt-orienterat sätt, men här kommer typen att defineras på flera olika sätt motsvarande de olika sätt vi implementerat Complex.

9 Tid (timmar, minuter, sekunder) definierade med arryer. import java.text.decimalformat; // used for number formatting // This class maintains the time in 24-hour format in an int [] public class Ti { public static int [] mktime(int ih, int im, int is) { int [] result = new int [3]; result[0] = ih; result[1] = im; result[2] = is; return result; public static int [] mktime() { int [] result = new int [3]; return result; // Change a time value using universal time. Perform // validity checks on the data. Set invalid values to zero. public static void settime(int[] itime, int h, int m, int s ){ itime[0] = ( ( h >= 0 && h < 24 )? h : 0 ); itime[1] = ( ( m >= 0 && m < 60 )? m : 0 ); itime[2] = ( ( s >= 0 && s < 60 )? s : 0 ); // Convert a time to a String in universal-time format public static String touniversalstring(int [] itime){ DecimalFormat twodigits = new DecimalFormat( "00" ); return twodigits.format( itime[0] ) + ":" + twodigits.format( itime[1] ) + ":" + twodigits.format( itime[2]); Ett testprogram: public class TimeTest { public static void main( String args[] ) { int [] t1 = Ti.mkTime(); System.out.println("Klockan är " + Ti.toUniversalString(t1)); int [] t = Ti.mkTime(9, 15, 00); System.out.println("Klockan är " + Ti.toUniversalString(t)); Ti.setTime(t, 10, 0,0); System.out.println("Klockan är " + Ti.toUniversalString(t)); /*Körresultat : Klockan är 00:00:00 Klockan är 09:15:00 Klockan är 10:00:00 */

10 Tid definierad med en klass med publika instansvariabler. // This class maintains the time in 24-hour format public class Time { public int hour; public int minute; public int second; import java.text.decimalformat; // used for number formatting // This class contains time methods public class Ti { public static Time mktime(int ih, int im, int is) { Time result = new Time(); result.hour = ih; result.minute = im; result.second = is; return result; public static Time mktime() { Time result = new Time(); return result; // Change a time value using universal time. Perform // validity checks on the data. Set invalid values to zero. public static void settime(time itime, int h, int m, int s ){ itime.hour = ( ( h >= 0 && h < 24 )? h : 0 ); itime.minute = ( ( m >= 0 && m < 60 )? m : 0 ); itime.second = ( ( s >= 0 && s < 60 )? s : 0 ); // Convert a time to a String in universal-time format public static String touniversalstring(time itime){ DecimalFormat twodigits = new DecimalFormat( "00" ); return twodigits.format( itime.hour ) + ":" + twodigits.format( itime.minute) + ":" + twodigits.format( itime.second); public class TimeTest { //Testprogram public static void main( String args[] ) { Time t1 = Ti.mkTime(); System.out.println("Klockan är " + Ti.toUniversalString(t1)); Time t = Ti.mkTime(9, 15, 00); System.out.println("Klockan är " + Ti.toUniversalString(t)); Ti.setTime(t, 10, 0,0); System.out.println("Klockan är " + Ti.toUniversalString(t)); // Samma resultat som förut

11 Tid definerad med en klass med privata instanvariabler. // This class maintains the time in 24-hour format public class Time { private int hour; private int minute; private int second; public Time() { //Constructor public Time(int ih, int im, int is) { //Constructor (another) hour = ih; minute = im; second = is; public int gethour() { return hour; public int getminute() { return minute; public int getsecond() { return second; public void sethour(int ih) { hour = ih; public void setminute(int im) { minute = im; public void setsecond(int is) { second = is; import java.text.decimalformat; // used for number formatting // This class contains time methods public class Ti { public static Time mktime(int ih, int im, int is) { return new Time(ih, im, is); public static Time mktime() { return new Time(); // Change a time value using universal time. Perform // validity checks on the data. Set invalid values to zero.

12 public static void settime(time itime, int h, int m, int s ) { itime.sethour( ( h >= 0 && h < 24 )? h : 0 ); itime.setminute( ( m >= 0 && m < 60 )? m : 0 ); itime.setsecond( ( s >= 0 && s < 60 )? s : 0 ); // Convert a time to a String in universal-time format public static String touniversalstring(time itime) { DecimalFormat twodigits = new DecimalFormat( "00" ); return twodigits.format( itime.gethour() ) + ":" + twodigits.format( itime.getminute() ) + ":" + twodigits.format( itime.getsecond() ); Samma testprogram som förut kan användas : public class TimeTest { public static void main( String args[] ) { Time t1 = Ti.mkTime(); System.out.println("Klockan är " + Ti.toUniversalString(t1)); Time t = Ti.mkTime(9, 15, 00); System.out.println("Klockan är " + Ti.toUniversalString(t)); Ti.setTime(t, 10, 0,0); System.out.println("Klockan är " + Ti.toUniversalString(t)); Testprogramet kan också direkt använda konstruktorerna: public class TimeTest { public static void main( String args[] ) { Time t1 = new Time(); System.out.println("Klockan är " + Ti.toUniversalString(t1)); Time t = new Time(9, 15, 00); System.out.println("Klockan är " + Ti.toUniversalString(t)); Ti.setTime(t, 10, 0,0); System.out.println("Klockan är " + Ti.toUniversalString(t));

13 Tid definerad med en OO-klass. Skulle man inte kunna tänka sig att flytta alla klassmetoder i Ti till Time och göra dem till instansmetoder istället? Jo, det är detta som är objekt-inriktad (objekt-orienterad, OO) programmering och är det vanliga sättet att använda Java. Att programera Time på detta sätt görs i DD i kapitel 8. Vi kommer också att i kommande föreläsningar programmera Complex på detta sätt. // This class maintains the time in 24-hour format public class Time { private int hour; private int minute; private int second; public Time() { //Constructor public Time(int ih, int im, int is) { //Constructor hour = ih; minute = im; second = is; public int gethour() { return hour; public int getminute() { return minute; public int getsecond() { return second; public void sethour(int ih) { hour = ih; public void setminute(int im) { minute = im; public void setsecond(int is) { second = is; // Change a time value using universal time. Perform // validity checks on the data. Set invalid values to zero. public void settime(int h, int m, int s ) { //Parmetern av typ hour = ( ( h >= 0 && h < 24 )? h : 0 ); // Time borta! minute = ( ( m >= 0 && m < 60 )? m : 0 ); // Arbetar med second = ( ( s >= 0 && s < 60 )? s : 0 ); // detta (this) // objekt, med // "sig själv"

14 // Convert a time to a String in universal-time format public String tostring() { //DD touniversalstring DecimalFormat twodigits = new DecimalFormat( "00" ); return twodigits.format( hour ) + ":" + twodigits.format( minute ) + ":" + twodigits.format( second ); Testprogramet måste nu skrivas om så att tidsobjekten använder "sina egna" metoder: public class TimeTest { public static void main( String args[] ) { Time t1 = new Time(); System.out.println("Klockan är " + t1.tostring()); Time t = new Time(9, 15, 00); System.out.println("Klockan är " + t.tostring()); t.settime(10, 0,0); System.out.println("Klockan är " + t.tostring());

15 Hemuppgifter redovisning v CBA-hemuppgift : Vi ska implementera linjär-algebra-vektorer i planet med klassdefinition med enbart publika instanvariabler och inga metoder. Gör så här : Skapa lämpligen en egen katalog vectorrecord för denna uppgift. Skriv en ny klass Vector.java utan instansmetoder med en publik instansvariabel för vektorns x-komponent och en publik instansvariabel för vektorns y-komponent. Kopiera filen med klassen Vect från hemuppgift 1 i förra hemupggifterna. Modifiera sedan den filen så att den istället för typen double [] använder typen Vector definierad med klassen Vector.java. Detta kan göras snabbt om du lär dig använda Query Replace i Emacs-menyn Search. Testkör klassen Vect med samma testprogram som förut. 2. CBA-hemuppgift : Linjär-algebra-vektorer i planet implementerade med klassdefinition med enbart privata instansvariabler och access- metoder ("Get-metoder"). Skapa lämpligen en egen katalog vectoradt för denna uppgift. Skriv i denna hemuppgift klassen Vector.java med en privat instanvariabel för vektorns x-komponent och en privat instanvariabel för vektorns y-komponent. För att "komma åt" x-komponenten rerspektive y-komponenten behövs också två publika acessmetoder. Dessutom måste en konstruktor skrivas för att skapa nya vektorer i planet. Kopiera filen med klassen Vect från hemuppgift 1 ovan. Kan den kompileras med vår nya variant av klassen Vector.java? Pröva! Förklara varför det inte går. Modifiera sedan den filen med klassen Vect så att den använder typen Vector definierad med vår nya variant av klassen Vector.java. Testkör klassen Vect med samma testprogram som förut. Sriv och testa också en variant av testprogrammet som inte använder Vect.mkVector(..) utan i stället använder new och en konstruktor i Vector.

16 3. B-hemuppgift : Lös uppgift 7.38 i DD sid 369 som en applikation. Det är OK om labyrinten definieras in med arrayinitiering, dvs med...= {{.., {...,... ; Lösningen skall förutom main-metod och metoden mazetraverse innehålla en metod för utskrift. Exempel på körning, som hemuppgift 4 men all inmatning saknas, dvs startlabyrinten visas och sedan ritas labyrinten om och om igen med ett nytt X för varje ny utskrift tills man "fastnar" eller kommer ut ur labyrinten.. 4. A-hemuppgift : Som hemuppgift 3, men labyrinten skall vid körningen kunna definieras antingen genom ett slumpförfarande eller genom inmatning från tangentbordet. Lösningen skall förutom mainmetod och metoden mazetraverse innehålla en metod för utskrift, en metod för inläsning och en metod för slumpgenerering av en labyrint. Exempel på körning (inmatning kursiverat):...>java MazeTraversalA Vill du slumpa fram en labyrint ge 1 : 1 Ge antalet rader i labyrinten : 5 Ge antalet kolonner i labyrinten : 20 Ge sannolikheten p för vägg i viss ruta i labyrinten (0.0<= p <=1.0): 0.25 #..#..#.###..#......##...#.#... ###.##..##.#...#.#.#.#...#...#.#...#....#...##.#...# Ge startrad i labyrinten : 2 Ge startkolonn i labyrinten : 1 #..#..#.###..#... X..##...#.#... ###.##..##.#...#.#.#.#...#...#.#...#....#...##.#...# #..#..#.###..#... XX.##...#.#... ###.##..##.#...#.#.#.#...#...#.#...#....#...##.#...#..osv. Vill man istället mata in labyrinten från tangentbordet så svarar man inte 1 på första frågan. Inmatning sker sedan ungefär som inmatningen av biotopen i sista hemuppgiften förra veckan, du kan bestämma detaljerna själv.

17

Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7.

Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7. Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7. Vad som menas med arrayer, element och [] se DD 7.1, 7.2, 7.3. Arrayer som parametrar DD 7.5, 7.6. Jag kommer att förklara samma sak med

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

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

Malmö högskola 2008/2009 CTS

Malmö högskola 2008/2009 CTS Laboration 8 Avsikten med laborationen är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom

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

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

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

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

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

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

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-03-17 Skrivtid: 1400 1900 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

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

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

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

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

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 )

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 ) (26 januari 2018 F3 1 ) 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 2 ) Arrayer En array är en datatyp

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

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

JAVAUTVECKLING LEKTION 11

JAVAUTVECKLING LEKTION 11 JAVAUTVECKLING LEKTION 11 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Mer om klasser och objekt Statiska/instans-metoder Överlagrade metoder Inkapsling Konstruktorer 1 UPPGIFT

Läs mer

Programmering för språkteknologer II, HT2011. Rum

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

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

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

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

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-03-17 Skrivtid: 1400 1900 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

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

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,

Läs mer

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

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

Enkla variabler kontra referensvariabel

Enkla variabler kontra referensvariabel Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som används för att representera en primitiv datatyp kallas för enkel variabel. Deklarationssatsen

Läs mer

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans

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

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

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 8 Avsikten med denna laboration är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom

Läs mer

C++ Objektorientering - Klasser. Eric Elfving

C++ Objektorientering - Klasser. Eric Elfving C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande

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

Mer om klasser och objekt

Mer om klasser och objekt Klassvariabler och klassmetoder En klass kan innehålla klassvariabler och klassmetoder. TDA143 I1 Programmerade system Föreläsning 5 (OH-bilder 5) Mer om klasser och objekt Christer Carlsson Det som skiljer

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

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

Läs mer

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90 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

Laboration 3, uppgift En klass för en räknare

Laboration 3, uppgift En klass för en räknare Laboration 3, uppgift 1 3.1 En klass för en räknare Ursprungligen skriven av Erland Holmström. Magnus Myreen har uppdaterat vissa delar. Hösten 2014 Anvisningar: Programmet skall utformas enligt de principer

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl 14.00 17.00 Hjälpmedel: En Javabok. För betyget godkänt krävs att a- eller b-delen av varje fråga (uppgift 1 4) samt

Läs mer

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

2 b) Följande finns definierat: public class Käk String titel = Chili con carne; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda(Svartpe Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för I1, K2, L1, M1, Media1 och T1. Tentamen (1p) 6 april 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas

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

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

Objekt och klasser - Introduktion

Objekt och klasser - Introduktion Objekt och klasser - Introduktion Begreppet objekt Hur klasser används för att skapa objekt Fördefinierade klasser Metoder och parameteröverföring Definiera klasser Modifierare Statiska variabler och metoder

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Chapter 4: Writing Classes/ Att skriva egna klasser. Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad

Läs mer

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

2 b) Följande finns definierat: public class Spel String titel = Spel; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice(Röd); tärningar[1] Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B2 och V1. Tentamen (1p) 12 januari 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas som en javabok.

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

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

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

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

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,

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

Objektorienterad Programmering DAT043

Objektorienterad Programmering DAT043 Objektorienterad Programmering DAT043 Föreläsning 3 22/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Kom ihåg: Visa Javas API. Nämn att slidesens också har tillhörande text på kurshemsidan.

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 2012-06-04 Skrivtid: 1400-1700 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

Idag ska vi gå igenom. Programmeringsteknik för S, 2004 Grupp IV. Vad är en klass? Klasser och instanser

Idag ska vi gå igenom. Programmeringsteknik för S, 2004 Grupp IV. Vad är en klass? Klasser och instanser Programmeringsteknik för S, 2004 Grupp IV Idag ska vi gå igenom Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Anteckningar i pdf format: http://www.nada.kth.se/ hjorth/teaching/

Läs mer

Modeller, Objekt och Klasser

Modeller, Objekt och Klasser Modeller, Objekt och Klasser Bildserie 3 Objekt Orienterad Programmering OO-programmering bygger på att vi som människor uppfattar tillvaron i termer av objekt - Bastu, pizza, öl,... Det borde vara lättare

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack 725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer

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

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Satsen double x = (int)(1 + 3/2.0) + 3.; resulterar i b) Satsen int x = (int)(1 + 3/2.0) + 3.; resulterar

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa

Läs mer

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap C++ Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 23 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med

Läs mer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många

Läs mer

Tentamen. Lösningsförslag

Tentamen. Lösningsförslag Sida 1/8 Tentamen Grundläggande programmering i Java A 5p, DTAA32 2002-03-22 Lösningsförslag Uppgift 1 ( 3p ) Utskriften blir: Skriv in ett tal 24 47 48 intal=471 Uppgift 2 ( 6p ) a.) b.) c.) d.) e.) falskt

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras

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

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-01-19 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

Objekt och referenser

Objekt och referenser Objekt och referenser Antag att vi har följande enkla klass: public class Person { private String namn; private String adress; private String personnummer; public Person() { namn = NN ; adress = ; personnummer

Läs mer

Föreläsning 8: Exempel och problemlösning

Föreläsning 8: Exempel och problemlösning TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och

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 2012-09-01 Skrivtid: 0900-1200 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

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data

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

DD1342 Programkonstruktion för F1,

DD1342 Programkonstruktion för F1, DD1342 Programkonstruktion för F1, 2007-2008 Lappskrivning 2 Tisdag 5/2 2008 kl 14.15 15.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar Namn: Personnr: 1 2D1310 Programmeringsteknik i Java Tentamen (1p) den 22:a augusti 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas som en javabok). Förklarande

Läs mer

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) 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/2d1310/

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num

Läs mer

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Uppgift 1 a) class används för en klassdeklaration

Läs mer

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016 Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer