Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Storlek: px
Starta visningen från sidan:

Download "Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt"

Transkript

1 Föreläsning 15 & 16 ARV Objektorienterad programmering (OOP) Idé: vi ser ett program som en modell av verkligheten Ursprung: Simula-67, Norsk regnesentral, 1960-talet Smalltalk-80: Xerox PARC, 1970-talet C++: AT&T, 1980-talet Java, Sun Microsystems, 1995 Scala, Ruby, C#, Python,... OOP framgångsrikt för utveckling av stora program Klasser och objekt Objekt beskriver saker från verkligheten Ex. en tärning, en kvadrat,... Klasser beskriver det som är gemensamt för objekten Alla tärningar kan kastas (har exempelvis en roll-metod) Alla kvadrater har en sida (har exempelvis ett side-attribut) Klasser för olika slags fordon Antag att vi i ett program hanterar olika slags fordon: public class Car { private String licensenbr; private Person owner; private int maxpassengers;... public class Truck { private String licensenbr; private Person owner; private int maxload;... public class Bus { private String licensenbr; private Person owner; private int maxpassengers;... public class MotorCycle { private String licensenbr; private Person owner;... Konstruktion av större program innefattar modellering

2 Problem Lösning De olika slagen fordon har olika egenskaper och beskrivs i var sin klass: Car, Truck, Bus och MotorCycle. Antag att vi vill simulera en kö framför ett trafikljus. Kön representeras av en lista eller en vektor med fordon. Hur ska vi deklarera en sådan lista eller vektor? Vilken typ har elementen? Vi behöver en klass som beskriver fordon: Vehicle Då kan vi deklarera listor och skapa listor respektive vektorer som kan innehålla fordon: ArrayList<Vehicle> list = new ArrayList<Vehicle>(); Vehicle[] v = new Vehicle[100]; Men får vi sätta in t.ex. Car-objekt i list eller v? Ja, om Car ärver från klassen Vehicle: public class Car extends Vehicle { Fordon igen, nu med arv Arv: exempel på klassdiagram public class Vehicle { private String licensenbr; private Person owner; public class Car extends Vehicle { private int maxpassengers; public class Truck extends Vehicle { private int maxload;... public class Bus extends Vehicle { private int maxpassengers; public class MotorCycle extends Vehicle { superklass: gemensamma egenskaper Car int maxpassengers Bus int maxpassengers Vehicle String licensenbr Person owner MotorCycle Truck int maxload subklasser: specifika egenskaper för bilar, bussar, motorcyklar, lastbilar Denna notation är en del av UML (Unified Modeling Language)

3 Regler för referensvariabler Abstrakta klasser En referensvariabel som deklarerats med typen C får referera till objekt av klassen C och dessutom till objekt av alla subklasser till C. Exempel: En variabel med typen Vehicle får referera till objekt av alla subklasser till Vehicle. Vehicle avehicle; avehicle = new Car("ABC123", p1, 5); avehicle = new Bus("DEF789", p2, 56); I program som använder våra fordonsklasser kommer vi inte att skapa objekt av klassen Vehicle, utan bara av klasserna Car, Truck, Bus och MotorCycle. I verkligheten finns ju bilar, bussar, lastbilar och motorcyklar, men på vägarna kör det ju inte omkring någonting som bara är ett fordon. Klasser man inte skapar objekt av kallas abstrakta klasser. public abstract class Vehicle {... Superklass Subklasser Klassen Vehicle innehåller attribut och metoder som är gemensamma för alla fordon. På så sätt slipper vi duplicerad information. Klasserna Car, Truck, Bus och MotorCycle ärver dessa attribut och metoder från klassen Vehicle. Vehicle är exempel på en superklass. Sådana är ofta också abstrakta klasser. public abstract class Vehicle { private String licensenbr; private Person owner; Kvar i respektive subklass är de attribut och metoder som är specifika för just detta slags fordon. public class Car extends Vehicle { private int maxpassengers;... public class Truck extends Vehicle { private int maxload;... public class Bus extends Vehicle { private int maxpassengers;...

4 Objekt innehåller ärvda attribut Arv: klassdiagram Person p = new Person( Ragnar Vanheden ); Car c = new Car( ABC123, p, 5); Vehicle String licensenbr Person owner c attribut deklarerade i superklassen Vehicle attribut deklarerade i subklassen Car licensenbr ABC123 owner maxpassengers 5 Car int maxpassengers Bus int maxpassengers MotorCycle Truck int maxload Ragnar Vanheden Klassdiagram för alternativ design (med PassengerVehicle) Alternativ design: ännu mer arv PassengerVehicle int maxpassengers Vehicle String licensenbr Person owner MotorCycle Truck int maxload public class PassengerVehicle extends Vehicle { private int maxpassengers; public class Car extends PassengerVehicle { public class Bus extends PassengerVehicle { Car Bus

5 Objekt innehåller ärvda attribut (fallet med PassengerVehicle) Konstruktorer och arv Person p = new Person( Ragnar Vanheden ); Car c = new Car( ABC123, p, 5); Konstruktorn i Vehicle ser ut som vanligt. c attribut deklarerade i superklassen Vehicle deklarerade i superklassen PassengerVehicle licensenbr ABC123 owner maxpassengers 5 Ragnar Vanheden public abstract class Vehicle { private String licensenbr; // registreringsnummer private Person owner; // ägare /** Initierar ett Vehicle-objekt med registreringsnumret licensenbr och ägaren owner. */ protected Vehicle(String licensenbr, Person owner) { this.licensenbr = licensenbr; this.owner = owner; Konstruktorer i subklasser När ska man använda arv? Konstruktorn i subklassen Truck måste först anropa superklassens konstruktor med super(...): public class Truck extends Vehicle { private int maxload; // maxlast /** Skapar ett Truck-objekt med registreringsnumret licensenbr, ägaren owner och maxlasten maxload. */ public Truck(String licensenbr, Person owner, int maxload) { super(licensenbr, owner); this.maxload = maxload; På så sätt får de ärvda attributen sina startvärden. Ska klassen Point vara superklass till klassen Square så att klassen Square kan ärva attributen x, y och metoden move? public class Point { private int x, y; // punktens koordinater public Point(int x, int y) { this.x = x; this.y = y; public void move(int dx, int dy) { x = x + dx; y = y + dy; Nej! En kvadrat är inte en slags punkt.

6 När ska man använda arv? När ska man använda arv? Subklasserna ska vara specialiseringar av superklassen, och kvadrater och cirklar är inte ett speciellt slags punkter. I stället använder vi sammansättning, som tidigare: public class Square { private Point location; private int side; public class Circle { private Point location; private int radius; Arv passar bra när man har en "är-en"-relation mellan klasser. En bil är ett slags fordon. En lastbil är ett slags fordon. En buss är ett slags fordon. Är-en och har-en Figurer med arv superklass En kvadrat har-ett läge som beskrivs av en punkt, men är ingen punkt. Alltså: sammansättning. En kvadrat är-en geometrisk figur. Alltså: arv. En lastbil är-ett fordon. En lastbil har-en motor. En hund är-ett däggdjur. En hund har-en ägare (en människa). En människa är-ett däggdjur. En människa har-en hund. public abstract class Shape { protected Point location; /** Skapa en figur med givna koordinater */ protected Shape(int x, int y) { location = new Point(x, y); /** Flytta figuren */ public void move(int dx, int dy) { location.move(dx, dy);

7 public, private eller protected? I klassen måste man tala om vilka attribut och metoder som ska vara åtkomliga utanför klassen. public åtkomlig utanför klassen private endast åtkomlig inuti i klassen protected åtkomlig i klassen och i dess subklasser Skydd i samband med arv public class A { private int x; protected int y; public int z; // publikt attribut: sällan en bra idé public class B extends A { // här är de ärvda attributen y och z tillgängliga, // x är inte tillgängligt Ofta är attribut och konstruktorer i superklasser deklarerade protected. Exempel på arv: geometriska figurer I ett program ska geometriska figurer (kvadrater och cirklar) hanteras. Figurerna ska kunna flyttas och ritas upp på skärmen. Shape Figurer, superklassen Shape public abstract class Shape { protected Point location; protected Shape(int x, int y) { location = new Point(x, y); public void move(int dx, int dy) { location.move(dx, dy); // figurens läge Square Circle

8 Figurer, subklasser public class Square extends Shape { private int side; // kvadratens sidlängd public Square(int x, int y, int side) { super(x, y); this.side = side; public class Circle extends Shape { private int radius; // cirkelns radie public Circle(int x, int y, int radius) { super(x, y); this.radius = radius; Flytta figurerna Antag att det i en vektor shapes finns 100 figurer lagrade. Flytta alla figurerna 10 pixlar i x-led och 20 pixels i y-led. Shape[] shapes = new Shape[100];... // 100 figurer av olika slag läggs in i vektorn for (int i = 0; i < shapes.length; i++) { shapes[i].move(10, 20); Alla figurer flyttas på samma sätt. Metoden move implementeras därför med fördel i superklassen Shape. Subklassen Square public class Square extends Shape { private int side; // kvadratens sidlängd public Square(int x, int y, int side) { super(x, y); this.side = side; public int getside(){ return side; public void draw(simplewindow w){ int x = location.getx(); int y = location.gety(); w.moveto(x, y); w.lineto(x + side, y); w.lineto(x + side, y + side); w.lineto(x, y + side); w.lineto(x, y); Subklassen Circle public class Circle extends Shape { private int radius; // cirkelns radie public Circle(int x, int y, int radius) { super(x, y); this.radius = radius; public int getradius(){ return radius; public void draw(simplewindow w){ int x = location.getx(); int y = location.gety(); w.moveto(x + radius, y); for (int i = 1; i <= 180; i++) { w.lineto(x + (int)(radius * Math.cos(2*i*Math.PI/180)), y + (int)(radius * Math.sin(2*i*Math.PI/180)));

9 Rita figurerna Problem med metoden draw Antag att det i en vektor shapes finns 100 figurer lagrade. Rita alla figurerna. Shape[] shapes = new Shape[100];... // 100 figurer av olika slag läggs in i vektorn for (int i = 0; i < shapes.length; i++) { shapes[i].draw(w); Kvadrater och cirklar ritas på olika sätt. Metoden draw måste därför implementeras i subklasserna Square respektive Circle. Så här kan vi göra: Square mysquare = new Square(100, 100, 50); mysquare.draw(); Men inte så här: Shape myshape = new Square(100, 100, 50); myshape.draw(); Eftersom myshape är deklarerad med typen Shape så söker kompilatorn efter draw i klassen Shape och därefter uppåt i arvshierarkin. Men metoden draw finns ju inte där! Istället är draw implementerad i subklasserna Square och Circle. Rita figurerna Dynamisk bindning polymorfism Då fungerar ju inte heller detta: Shape[] shapes = new Shape[100];... // 100 figurer av olika slag läggs in i vektorn for (int i = 0; i < shapes.length; i++) { shapes[i].draw(w); The method draw() is undefined for the type Shape Man kan skriva en tom draw-metod i Shape: public abstract class Shape { public void draw(simplewindow w) { Det fungerar eftersom Java använder dynamisk bindning av metodanrop. Det innebär att det är objektets typ som under exekvering avgör vilken metod som ska anropas. När satsen shapes[i].draw(w) ska utföras så tittar Javasystemet alltså på objektet shapes[i]: om det är ett Square-objekt så anropas draw i Square, om det är ett Circle-objekt så anropas draw i Circle.

10 Abstrakta metoder Sammanfattning Det är bättre att specificera draw-metoden som abstrakt i Shape. Man talar då om att implementeringarna av operationen finns i subklasserna: public abstract class Shape {... /** Ritar figuren i fönstret w */ public abstract void draw(simplewindow w); När man skapar en subklass till Shape kommer kompilatorn då att kräva att subklassen har en draw-metod. Att kunna flyttas är en egenskap hos alla figurer. Alla figurer flyttas på samma sätt och därför placerar man moveoperationen i klassen Shape. Operationen ärvs av subklasserna Square och Circle. Att kunna ritas upp är också en egenskap hos alla figurer. Eftersom olika figurer ritas på olika sätt specificerar man drawoperationen som abstrakt i klassen Shape. En implementering av operationen finns i varje subklass till Shape. Att ha en sidlängd och att ha en radie är egenskaper som är specifika för klassen Square respektive Circle. Implementeringarna av de metoder som hanterar motsvarande attribut är också specifika för respektive subklass. Fördelar med arv this och super Gör det lättare att skapa modeller som beskriver det verkliga systemet väl. Gemensamma attribut och operationer behöver bara skrivas en gång i superklassen. Vi kan deklarera referensvariabler som får referera till objekt av alla de olika subklasserna. Exempel: ArrayList<Vehicle> list = new ArrayList<Vehicle>(); list.add(new Car("ABC123", p1, 5)); list.add(new Bus("DEF789", p2, 56)); this: referens till det aktuella objektet. super: referens till det aktuella objektet men har superklassens typ. public abstract class Shape { protected Point location; protected void print() { System.out.print("Läge: " + location.getx() + "," + location.gety()); public class Square extends Shape { private int side; public void print() { System.out.print("Detta är en kvadrat. "); super.print(); // skriv ut läget System.out.print(", sidlängd: " + side);

11 Rekursiva metoder instanceof Definition av fakultet: n! = 1 n = 0 = n *(n-1)! n > 0 public static int factorial(int n) { if (n <= 0) { return 1; else { return n * factorial(n - 1); Ni kan läsa mer om rekursiva metoder i fortsättningskurserna... Räkna figurer av olika slag: Shape[] shapes = new Shape[100]; int nbrsquares = 0; int nbrcircles = 0; for (int i = 0; i < shapes.length; i++) { Shape ashape = shapes[i]; if (ashape instanceof Square) { nbrsquares++; else if (ashape instanceof Circle) { nbrcircles++; System.out.println("Antalet kvadrater: " + nbrsquares); System.out.println("Antalet cirklar: " + nbrcircles); Typkonvertering av referenser Anta att vi vill ha reda på den största cirkelradien i vår vektor av figurer. Då fungerar detta inte: Shape[] shapes = new Shape[100]; int maxradius = 0; for (int i = 0; i < shapes.length; i++) { Shape ashape = shapes[i]; if (ashape instanceof Circle) { int r = ashape.getradius(); // kompileringsfel: if (r > maxradius) { // Shape har ingen maxradius = r; // getradius-metod System.out.println( Störst radie: " + maxradius); Typkonvertering av referenser Vi måste uttryckligen konvertera typen till Circle: Shape[] shapes = new Shape[100]; int maxradius = 0; for (int i = 0; i < shapes.length; i++) { Shape ashape = shapes[i]; if (ashape instanceof Circle) { Circle c = (Circle) ashape; int r = c.getradius(); if (r > maxradius) { maxradius = r; System.out.println( Störst radie: " + maxradius);

12 Typkonvertering av referenser Typkonverteringar av detta slag används då programmeraren vet att det refererade objektet är av en specifik typ. Om så inte är fallet (programmeraren hade fel) avbryts programmet med ett felmeddelande. Man kan bara konvertera en referens till en subklass av referensens typ. Följande fungerar naturligtvis inte: Shape shape = MotorCycle mc = (MotorCycle) ashape; Typregler, igen Shape ashape; Square asquare; Garanterat korrekt: asquare = new Square(...); ashape = new Square(...); ashape = asquare; Säkert fel (ger kompileringsfel): asquare = new Circle(...); asquare = ashape; // samma typ // Square är subklass // till Shape // också korrekt, av // samma orsak // inte samma typ och // Circle är inte subklass // till Square // Shape är inte subklass // till Square Följande beror på vilken slags objekt ashape faktiskt refererar till: asquare = (Square) ashape; // ger ett exekveringsfel om ashape // inte refererar till en kvadrat Klassen Object Metoden tostring i klassen Object I Java finns det en klass Object som är superklass till alla andra klasser. En referensvariabel av typen Object kan alltså referera till objekt av alla klasser. Exempel: Object obj = new Car("ABC123", p1, 5); I klassen Object finns det några metoder (t.ex. tostring och equals) som alla andra klasser ärver. /** Skapar en läsbar representation av objektet. */ String tostring(); När man skriver ut ett objekt på skärmen, t ex: Car c = new Car("ABC123", p1, 5); System.out.println(c); så är det metoden tostring som används inuti println. Man kan definiera om (överskugga, override) metoden tostring så att man får exakt den utskrift man vill ha. Man kan t.ex. lägga till följande metod i klassen Car: public String tostring() { return licensenbr;

13 Metoden equals i klassen Object Att göra Point jämförbar /** Undersöker om detta objekt är lika med obj. */ boolean equals(object obj); Metoden equals i Object fungerar likadant som ==, d.v.s. jämför referenser. Object.equals används för klasser utan egen equals-metod. I följande exempel returnerar equals därför värdet false trots att bägge bilarna har samma värden på attributen: Car c1 = new Car("ABC123", p1, 5); Car c2 = new Car("ABC123", p1, 5); c1.equals(c2); Man kan själv definiera om (överskugga/override) metoden equals så att den jämför innehållet i objekten istället. Detta är gjort i klasserna String och StringBuilder. ArrayList-metoden contains fungerar bara om elementklassen har en equals-metod. Vår klass Polygon har element av klassen Point. public class Point { private int x; private int y; //... konstruktorer och metoder public boolean equals(object obj) { if (! (obj instanceof Point)) { return false; // obj är inte ett Point-objekt Point p = (Point) obj; return x == p.x && y == p.y; Inläsning från tangentbordet Inläsning från fil För att läsa det användaren skriver på tangentbordet använder man ett Scanner-objekt: public class ScannerExample1 { public static void main(string[] args) { Scanner scan = new Scanner(System.in); int sum = 0; while (scan.hasnextint()) { sum = sum + scan.nextint(); System.out.println("Summa: " + sum); Man kan också koppla ett Scanner-objekt till en textfil: public class ScannerExample2 { public static void main(string[] args) { try { Scanner scan = new Scanner(new File("indata.txt")); //... läs som tidigare catch (FileNotFoundException e) { System.out.println("Filen kunde inte öppnas");

14 try-catch-sats Satsen try-catch är till för att hantera vissa felsituationer, exempelvis om en fil inte går att öppna. (Mer om detta i fördjupningskursen.) Under try körs de satser som kan ge upphov till fel. Satserna under catch körs om felet uppstår. try { // Här försöker vi öppna filen indata.txt Scanner scan = new Scanner(new File("indata.txt")); // Här kan vi läsa från filen int n = scan.nextint(); catch (FileNotFoundException e) { // Dessa satser körs om filen inte kan öppnas, // t. ex. om filen indata.txt inte finns Utskrift på fil public class PrintWriterExample { public static void main(string[] args) { try { PrintWriter out = new PrintWriter(new File("utdata.txt")); //... utskrifter med out.print hamnar på filen out.close(); catch (FileNotFoundException e) { System.out.println("Filen kunde inte öppnas"); Inlämningsuppgift 2: redovisas vecka 20 BankApplication Bank Customer ArrayList Lunds Tekniska Högskola Xxxxxxxxxxxxxxxx Xxxxxxxxxxxxxx ÅÅÅÅ-MM-DD

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList Exempel på vad du ska kunna

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList<E> Exempel på vad du ska kunna Föreläsning 13-15 Innehåll Checklista Klassen ArrayList Arv Undervisningsmoment: föreläsning 13-15 övning 5 laboration 9-10 Avsnitt i läroboken: 12.1-3, 12.8, 9.1-9.6, 10 Avsnitt 12.6 och 12.10 ingår

Läs mer

Föreläsning Innehåll. Generisk klass. Några metoder i klassen ArrayList

Föreläsning Innehåll. Generisk klass. Några metoder i klassen ArrayList<E> Föreläsning 13-15 Innehåll Klassen ArrayList Klassen ArrayList Inläsning från textfil, utskrift på textfil Arv Undervisningsmoment: föreläsning 13-15 övning 5 laboration 9-10 Avsnitt i läroboken:

Läs mer

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet

Läs mer

Konstruktion av klasser med klasser

Konstruktion av klasser med klasser Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

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

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk Repetition EDAA10 Objekt-orientering Java är ett objekt-orienterat programmeringsspråk Program byggs upp av klasser och objekt Objekt instantieras från klasser Klasser och objekt innehåller attribut och

Läs mer

Saker du ska kunna Föreläsning 13 & 14

Saker du ska kunna Föreläsning 13 & 14 Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Klasshierarkier. Klasser kan byggas på redan definierade klasser Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen

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

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F11:1 OOP Objekt-orienterad programmering Föreläsning 11 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F11:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Är en-relation. Har en-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande

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

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

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

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1 Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42 Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser

Läs mer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla

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

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

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp Föreläsning 3-4 Innehåll Eempel på program med objekt Klass med main-metod Klasser Implementera (skriva programkod för) egna klasser Datatper Undervisningsmoment: föreläsning 3-4 övning 2 laboration 3-5

Läs mer

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck Josef Svenningsson Tisdag 13/1 Överlagring Ur klassen Math: public static max(int a, int b) public static max(double

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

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

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

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Föreläsning 9: Arv och UML

Föreläsning 9: Arv och UML TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;

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

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

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

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

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

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer! itop F8 Arv (Inheritance) Läsanvisning: arv: i kap 10, exceptions: i kap 15 mer kommer sen UML: tas bara upp i OH Object Kalle Student Person Graduate Lärare! Arv! Object, instanceof! Relationer! UML Nästa

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

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

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

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

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna

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

Laboration 3. Uppgift 1

Laboration 3. Uppgift 1 Laboration 3 Avsikt Avsikten med denna laboration är att öva på arv i objektorienterad programmering. Du ska skapa en klasshierarki som ser ut som figuren till höger: Vehicle MotorVehicle Car Motorcycle

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

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

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2013 08 22, 8.00 13.00 Anvisningar: Denna tentamen består av fyra uppgifter. Preliminärt ger uppgifterna

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (ALP, SRP, OCP, DIP) (, Composite) Att göra denna och

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg 1. a) Figure 1 2015 06 04 GeometryApp GraphicalApp

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F5:1 OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling Vi skall nu titta på ett exempel med myror. Varje myra har ett namn

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

Distanskursen objektorienterad programmering med Java

Distanskursen objektorienterad programmering med Java Tidigare exempel: en fordonshierarki Distanskursen objektorienterad programmering med Java Sven-Olof Nyström Uppsala Universitet 7 april 2005 Fyra klasser: Fordon (abstrakt) Motorfordon (abstrakt) Bil

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

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

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt

Läs mer

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14. Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

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

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

Läs mer

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004 Programmering hh.se/db2004 Föreläsning 11: Objektorienterad programmering - att definiera datatyper Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Datatyper Hittills Vi har lärt

Läs mer

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass). 3 Arv och gränssnitt 3.1 Vad innebär arv? Ett objektorienterat språk bygger på att programmeraren ges möjligheten att modellera verkligheten med hjälp av objekt. Objekt låter sig definieras i form av klasser.

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

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { } Lösning:

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning: Lös koppling mellan programdelar (klasser) eftersträvas ofta i objektorienterad programmering. Om klassen A beror av klassen B, hur kan man lösa upp detta beroende och åstadkomma en lösare koppling mellan

Läs mer

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata

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

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, KVÄLL (ITM - ÖSTERSUND) LÖRDAG 18 JANUARI, 2003, KL. 9-14 TID: 5 TIMMAR ANTAL UPPGIFTER: 9 MAX POÄNG: 45 BETYGSKALA: UNDERKÄND

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

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs:

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs: Övningsuppgifter I kursen ingår 10 övningar (det är ingen övning vecka 7 i läsperiod ht2). Under övningarna ska du självständigt eller tillsammans med en kamrat lösa övningsuppgifterna. Övningsledaren

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

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

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

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Inledning Arv är ett begrepp som är tätt förknippat med objektorientering. Principerna bakom arv är grundade i högst vardagliga relationer mellan olika

Läs mer

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P. Uppgift 1 (2 poäng) Utgå från följande klassdefinition : public class TempKlass public String uttext; public static int svar; LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P. 991122

Läs mer

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt. Tentamen 101213 - LÖSNINGSFÖRSLAG Uppgift 1. a) Ger utskriften c( ) in D b) Ger utskriften true c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt. d) Ger utskriften b( )

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

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

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

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

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

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

Kap J 7-1 Mer om arv. (superklass) (subklass)

Kap J 7-1 Mer om arv. (superklass) (subklass) Mer om arv. Kap J7-1 I Java självt är arv frekvent förekommande. Två exempel är exceptions och components (awt). Arv bygger normalt på en IS-A-relation. Button IS-A Component. NullPointerException IS-A

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda

Läs mer

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

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G91/2 Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Ett större exempel på OOP Objektorienterad Analys (OOA)

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

Tentamen, EDA501 Programmering M L TM W K V

Tentamen, EDA501 Programmering M L TM W K V LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 04 13, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna

Läs mer

Laboration 16. Uppgift 1

Laboration 16. Uppgift 1 Laboration 16 Avsikt Avsikten med denna laboration är att öva på arv i objektorienterad programmering. Du ska skapa en klasshierarki som ser ut som figuren till höger: Fordon MotorFordon Bil Motorcykel

Läs mer