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

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

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

"Ä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

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

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

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

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

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

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

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

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

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

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

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

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

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

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

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

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

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

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

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

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

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat

Läs mer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Modern Programmering (2546) Tentamen lördag 30.09.2000

Modern Programmering (2546) Tentamen lördag 30.09.2000 Modern Programmering (2546) Tentamen lördag 30.09.2000 Svara på minst sex frågor. Om du svarar på alla sju frågorna faller den fråga bort som ger minst antal poäng. Maximalt 70 poäng. Det krävs 35 poäng

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

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 1 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 1 Pelle Evensen, Daniel Wetterbro 28 oktober 2009 Sammanfattning Denna vecka ska vi titta på skillnader mellan primitiva typer

Läs mer

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false. Laboration 2. I denna laboration skall ni programmera en robot som modelleras av den givna klassen Robot. En robot vistas i en enkel värld, som modelleras av klassen RobotWorld. Världen består av ett rutmönster

Läs mer

Tentamen i Programmeringsteknik I, ES, 2010-03-18

Tentamen i Programmeringsteknik I, ES, 2010-03-18 Tentamen i Programmeringsteknik I, ES, 2010-03-18 Skriv tid: 14-17. Hjälpmedel: 1. Kurslitteratur, en av följande: Lewis & Loftus, Java Software Solutions Skansholm, Java Direkt Guzdial & Ericson, Intrododuction

Läs mer

Instuderingsfrågor, del D

Instuderingsfrågor, del D Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt

Läs mer

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p) Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet Antal uppgifter: 6 Max: 32 poäng Betyg: 3:a 16 poäng, 4:a 24 poäng, 5:a 28 poäng Hjälpmedel:

Läs mer

Input. Programmering. Andra källor

Input. Programmering. Andra källor Programmering hh.se/db2004 Föreläsning 13: Undantag - med exempel från input klassen Scanner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Input Standard Input Med standard

Läs mer

Obligatorisk uppgift: Banksystem

Obligatorisk uppgift: Banksystem Informationsteknologi Programmeringsteknik I vt10 Obligatorisk uppgift: Banksystem Moment: Öva på att förstå ett lite större program med flera samverkande klasser. Redovisning: Uppgiften redovisas i labbsal.

Läs mer

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt

Läs mer

Föreläsning 3. Arvsmekanismen. Typer och subtyper. Abstraction & Information Hiding. Nested Objects. Separation of concerns. Delegating responsibility

Föreläsning 3. Arvsmekanismen. Typer och subtyper. Abstraction & Information Hiding. Nested Objects. Separation of concerns. Delegating responsibility Föreläsning 3 Encapsulation UML Arvsmekanismen Composition Variabler och typer Typer och subtyper Distribution of Responsibility Message Passing Grundbegreppen i objektorienterad design Inheritance Encapsulation

Läs mer

Institutionen för datavetenskap HT 1 2007/2008. Testning med JUnit

Institutionen för datavetenskap HT 1 2007/2008. Testning med JUnit LUNDS TEKNISKA HÖGSKOLA EDA690 Algoritmer och datastrukturer Institutionen för datavetenskap HT 1 2007/2008 Enhetstestning Testning med JUnit När man implementerat en klass måste man, innan den kan användas,

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540 Tentamen för TDA540 Objektorienterad programmering DAG: 15-04-18 TID: 14:00 18:00 Ansvarig: Joachim von Hacht och Christer Carlsson

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25 Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka

Läs mer

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

PROGRAMMERING-Java TENTAMINA

PROGRAMMERING-Java TENTAMINA PROGRAMMERING-Java TENTAMINA Nicolina Månsson 2010-03-17 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. - För

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30 Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 Tentamen för TDA550 Objektorienterad programvaruutveckling IT, fk DAG: 15-08-19 TID: 8:30 12:30 Ansvarig: Christer Carlsson, ankn 1038

Läs mer

Att öva på och förstå ett program med flera samverkande klasser.

Att öva på och förstå ett program med flera samverkande klasser. Inlämningsuppgift 4 klassen Kund (Customer) Att öva på och förstå ett program med flera samverkande klasser. Redovisning: Uppgiften redovisas i datasal: o Körning av programmet. o Redogöra för vad de olika

Läs mer

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet o entliggörs senast: 2012-05-29. Tillåtna

Läs mer

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28 FactoryCast HMI Premium & Quantum PLC Applets 2004-10-28 INNEHÅLLSFÖRTECKNING 1 OM DETTA DOKUMENT...3 2 FÖRUTSÄTTNINGAR...3 3 PROJEKT I J++...4 3.1 LÄSA PLC-VARIABLER...4 3.1.1 Gränssnittet...4 3.1.2 Upprätta

Läs mer

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Introduktion TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Vi har diskuterat vilka möjligheter till OO som erbjuds i C++. Vilka vill vi använda och varför? Allt har användningsområden

Läs mer

Menyvalen som alltid är numeriska presenteras omgivet av parenteser.

Menyvalen som alltid är numeriska presenteras omgivet av parenteser. Inlämningsuppgift 4 (avancerad) klassen Bank Att öva på och förstå ett lite större program med flera samverkande klasser. Tips på förberedande uppgift: Ett bra steg på vägen till att göra denna uppgift

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

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 2014 04 29, 8.00 13.00 Anvisningar: Denna tentamen består av tre uppgifter. Preliminärt ger uppgifterna

Läs mer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1 Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30 Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 Tentamen för TDA550 Objektorienterad programvaruutveckling IT, fk DAG: 15-08-19 TID: 8:30 12:30 Ansvarig: Christer Carlsson, ankn 1038

Läs mer

Föreläsning 16 Arv. Jan Lönnberg 3.11.2011. T-106.1212 Grundkurs i programmering

Föreläsning 16 Arv. Jan Lönnberg 3.11.2011. T-106.1212 Grundkurs i programmering Föreläsning 16 Arv Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 3.11.2011 Varför? I ett studieregister har vi både studenter och lärare.

Läs mer

Introduktion. Byggstenar TDBA63 2005-11-22

Introduktion. Byggstenar TDBA63 2005-11-22 Introduktion UML står för Unified Modeling Language. Det är tänkt att fungera som hjälpmedel vid modellering av alla tänkbara typer av utvecklingsarbeten, inte bara inom dataomdrådet. Det största värdet

Läs mer

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur Objekt-orienterad utveckling Saker man vill uppnå: Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 en systematisk metod för att gå från problembeskrivning till färdigt

Läs mer

Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5.

Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5. Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5. Planer för läsperiod 3. I GT kap 7 kommer vi att läsa 285

Läs mer

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26 Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623

Läs mer

Föreläsning 8. Undantag Designmönstert Strategy Gränssnittet Comparable Gränssnittet Comparator

Föreläsning 8. Undantag Designmönstert Strategy Gränssnittet Comparable Gränssnittet Comparator Föreläsning 8 Undantag Designmönstert Strategy Gränssnittet Comparable Gränssnittet Comparator Fel i program När man skriver program uppkommer alltid olika typer av fel: Kompileringsfel, fel som beror

Läs mer

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. .0.0 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6 poäng Denna tentamen

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

729G06 Föreläsning 1 Objektorienterad programmering

729G06 Föreläsning 1 Objektorienterad programmering Översikt Formalia Vad är objektorienterad programmering 729G06 Föreläsning 1 Objektorienterad programmering Definieria klasser Skapa och använda objekt Annika Silvervarg Ciltab, IDA, Linköpings universitet

Läs mer

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall. 0 + 1 + 2 +... + (n 1) =

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall. 0 + 1 + 2 +... + (n 1) = LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad design Totala antalet uppgifter: 6 Lärare: Håkan Jonsson, Tomas Johansson, 491700, 491465 Resultatet anslås senast 2006-05-20 i A-huset. Tillåtna

Läs mer

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner

Läs mer

OOP - OBJEKTORIENTERAD PROGRAMMERING

OOP - OBJEKTORIENTERAD PROGRAMMERING OOP - OBJEKTORIENTERAD PROGRAMMERING Det som skiljer objektorienterad programmering, OOP, från den traditionella, imperativa programmeringsstilen, är världssynen. Inom den imperativa traditionen - och

Läs mer

Innehållsförteckning

Innehållsförteckning Innehållsförteckning Ämne Sida Program Hur ska man lära sig programmering med Java? 11 Kapitel 1 Introduktion till programmering 13 1.1 Vad är programmering? 14 1.2 Vad är en algoritm? 16 1.3 Olika sätt

Läs mer

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde. Programmering hh.se/db2004 Föreläsning 7: Funktioner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Funktioner Statiska metoder 1 Kan ta 0 eller flera argument. 2 Kan producera

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Institutionen för TENTAMEN CTH VT-14 Datavetenskap 2014-04-23 TDA540. Tentamen för TDA540 Objektorienterad programmering

Institutionen för TENTAMEN CTH VT-14 Datavetenskap 2014-04-23 TDA540. Tentamen för TDA540 Objektorienterad programmering Institutionen för TENTAMEN CTH VT-14 Datavetenskap 2014-04-23 TDA540 Tentamen för TDA540 Objektorienterad programmering DAG: 14-04-23 TID: 14:00 18:00 Ansvarig: Joachim von Hacht och Christer Carlsson

Läs mer

PROV. 10 Uppräknade datatyper

PROV. 10 Uppräknade datatyper 10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi

Läs mer

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning. Introduktion Upplägg Kursen heter konstruktion, ej design eller formgivning. det handlar främst om att lära sig att bygga gränssnitt som är sunda den är praktiskt orienterad; vetenskapliga teorier finns,

Läs mer

Föreläsningsanteckningar Java

Föreläsningsanteckningar Java Lunds universitet DAT312 Datavetenskap vt 03 Föreläsningsanteckningar Java 0 Introduktion 0.1 Vem undervisar? Vem är jag? Leif Lönnblad, Lektor i Teoretisk Elementarpartikelfysik. Var är jag? Sölvegatan

Läs mer

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Övningsuppgift Bankkonton Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering

Läs mer

Institutionen för TENTAMEN CTH VT-13 Datavetenskap 2013-03-14 TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM DAG: 13-03-14 TID: 8:30 13:30

Institutionen för TENTAMEN CTH VT-13 Datavetenskap 2013-03-14 TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM DAG: 13-03-14 TID: 8:30 13:30 Institutionen för TENTAMEN CTH VT-13 Datavetenskap 2013-03-14 TDA143 Tentamen för TDA143 PROGRAMMERADE SYSTEM DAG: 13-03-14 TID: 8:30 13:30 Ansvarig: Christer Carlsson, ankn 1038 Förfrågningar: Resultat:

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

Läs mer

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. 1(9) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Fr 28/1 och kan då hämtas på

Läs mer

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Föreläsning 1 Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Deitel: 1.1-1.9, 2.1-2.3 DA101A Programmering Programmering, DA101A Kursansvarig:

Läs mer

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3. LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet offentliggörs senast: 2011-04-02. Tillåtna

Läs mer

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008 DD1311 meringsteknik för S1 Laborationer läsåret 2007-2008 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är Linda Kann, linda@nada.kth.se. Namn... Personnr... Laborationer Labb

Läs mer

kind spelling Scanning

kind spelling Scanning sats terminal Kompilatorteknik 2015 källprogram! Exempel program let var v : integer; const t ~ 3 in v := v + t kind spelling Scanning LET let föreläsningsfilmer Scannerns eller den lexikala analysatorns

Läs mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN-20520 Åbo, Finland e-mail: tczarnec@abo.fi url: www.abo.

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN-20520 Åbo, Finland e-mail: tczarnec@abo.fi url: www.abo. UML Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN-20520 Åbo, Finland e-mail: tczarnec@abo.fi url: www.abo.fi/~tczarnec Abstrakt The Unified Modeling Language, UML, är ett visuellt

Läs mer

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

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

Läs mer

Labbinstruktioner för Java/Swing

Labbinstruktioner för Java/Swing Labbinstruktioner för Java/Swing Grafik- och interaktionsprogrammering 2008 Martin Berglund Allmänt Dessa instruktioner är på intet sett den enda möjliga lösningen på labben, tvärtom finns

Läs mer

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt (2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september

Läs mer

Att använda Java SE JDK 6

Att använda Java SE JDK 6 Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).

Läs mer

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Testning med JUnit 1 Inledning JUnit är ett ramverk för enhetstestning av Javakod. Det är utvecklat

Läs mer