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



Relevanta dokument
Malmö högskola 2008/2009 CTS

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

Tentamen. Lösningsförslag

Laboration 13, Arrayer och objekt

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

TUTORIAL: KLASSER & OBJEKT

Laboration A Objektsamlingar

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

TENTAMEN OOP

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

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

OOP Objekt-orienterad programmering

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

Objektorienterad programmering D2

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

Övningar Dag 2 En första klass

TENTAMEN OOP

OOP Objekt-orienterad programmering

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

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

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

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

Föreläsning 5-6 Innehåll

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

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

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen OOP

OOP Objekt-orienterad programmering

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

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

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

Lösningsförslag övning 2.

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

Tentamen i Programmeringsteknik I

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

Objektorienterad programmering Föreläsning 5

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

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

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

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

Objektorienterad programmering i Java I

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

OOP Objekt-orienterad programmering

Del A (obligatorisk för alla)

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

Laboration 1 - Grunderna för OOP i Java

Föreläsning 13 Innehåll

Modeller, Objekt och Klasser

Classes och Interfaces, Objects och References, Initialization

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

LÖSNINGSFÖRSLAG TENTAMEN

ID1004 Laboration 4, November 2012

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

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

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

JAVA Mer om klasser och objektorientering

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

Laboration 24 Databasen MySQL och java

JAVAUTVECKLING LEKTION 11

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

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

Objektsamlingar i Java

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

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

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

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

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

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

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

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

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

Tentamen, EDAA20/EDA501 Programmering

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

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

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

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

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

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

(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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

Objektorienterad programmering i Java

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Dugga i Grundläggande programmering STS, åk

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

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

Laboration 16. Uppgift 1

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Transkript:

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 paketet laboration9 innan du fortsätter på denna laboration. Kopiera dina lösningar från paketet laboration8 till paketet laboration9. Saknar du någon lösning så finns lösningar längst bak i laboration 8. Glöm inte att ändra paketet i samtliga filer till Uppgift 1 Komplettera klassen Bostad med nedanstående metoder. Men testa metoderna en åt gången tills de fungerar. public double kvmperrum() Metoden ska räkna ut antalet kvadratmeter bostadsyta per rum för aktuellt objekt. Resultatet av beräkningen ska returneras. Bostad b = new Bostad(); b.setbostadsyta(110); b.setantalrum(5); System.out.println(b.kvmPerRum); Ger utskriften: 22.0 public double jämförbostadsyta(bostad b) Metoden ska jämföra två bostäder, aktuellt objekt och inparametern b, avseende deras yta. Beräkna skillnaden mellan ytan i aktuellt objekt och ytan i b. Returnera skillnaden. Detta innebär att * om aktuellt objekt har störst yta så returneras ett positivt värde (>0). * om bostäderna har samma yta så returneras 0. * om bostaden b har störst yta så returneras ett negativt värde (<0). Extrametoder public Bostad copybostad() Metoden ska returnera en kopia av aktuellt objekt. - bostadsyta:double - antalrum:int Bostad + setbostadsyta(double) + setantalrum(int) + getbostadsyta():double + getantalrum():int + tostring():string + kvmperrum() : double +jämförbostadsyta(bostad b) : double + copybostad() : Bostad + flestrum(bostad b) : Bostad public Bostad flestrum(bostad b) Metoden ska returnera en referens till den bostad som har flest rum. Om de har lika många rum ska referens till aktuellt objekt returneras. DA129A, Programmering 1 1

Uppgift 2 Komplettera klassen Bostad med följande konstruktorer: public Bostad() Denna konstruktor ska sätta bostadsytan till 100 m 2 och antalet rum till 4. public Bostad(double inbostadsyta, int inantalrum) Denna konstruktor ska föra över parametrarnas värde till attributen i klassen. Bostad bostad1 = new Bostad(); Bostad bostad2 = new Bostad(55,2); System.out.println(bostad1.toString()); System.out.println(bostad2.toString()); Ger utskriften Bostad med ytan 100.0 m2 och 4 rum. Bostad med ytan 55.0 m2 och 2 rum. - bostadsyta:double - antalrum:int Bostad + Bostad() + Bostad(double, int) + setbostadsyta(double) + setantalrum(int) + getbostadsyta():double + getantalrum():int + tostring():string + kvmperrum() : double +jämförbostadsyta(bostad b) : double + copybostad() : Bostad + flestrum(bostad b) : Bostad Uppgift 3 Komplettera klassen Vara med följande metoder: public boolean slut() Metoden ska returnera true om det finns minst ett exemplar av varan. Annars ska metoden returnera false. Extrametod public Vara billigast(vara v) Metoden ska returnera en refere3ns till den billigaste varan. Komplettera klassen Vara med följande konstruktorer: public Vara(String namn, double pris, int antal) Denna konstruktor ska föra över parametrarnas värde till attributen i klassen. public Vara(Vara v) Denna konstruktor ska föra v:s värde (på attributen) till attributen i klassen. Denna kosntruktor kallas ibland för kopieringskonstruktor. Det nya objektet blir en kopia av objektet som används som argument. Vara vara1 = new Vara("Standardmjölk", 8.20, 120); Vara vara2 = new Vara(vara1); vara2.setpris(8.45); System.out.println(vara1.toString()); System.out.println(vara2.toString()); Ger utskriften Standardmjölk: Pris=8.20 kr Antal=120 Standardmjölk: Pris=8.45 kr Antal=120 2

Uppgift 4 I denna uppgift ska du arbeta med klassen Anstalld. Kör testprogrammet nedan. Som du ser blir utskriften inte så snygg. Anstalld a1=new Anstalld(); String res = ""; a1.setnamn("anna Olsson"); a1.setarbetsgivare("sigma"); a1.setlön(25700); res = a1.tostring(); extra.output.meddelande(res); Lägg till metoden public String tostring() i klassen. Metoden ska returnera en sträng på formen: Namn: Sven Austavsson Arbetsgivare: LKAB Lön: 23500.0 kr Antalet decimaler i lönen beror på input. Men det blir alltid minst en decimal då double görs om till sträng. Kör programmet igen. Nu ska utskriften bli snyggare. Förklaring till att den första programkörningen fungerar får du i föreläsningarna om arv om några veckor. Lägg till följande konstruktorer i klassen: public Anstalld(String namn, String arbetsgivare, double lön) Denna konstruktor ska föra över parametrarnas värde till attributen i klassen. public Anstalld(String namn) Denna konstruktor ska skapa objektet anropa konstruktorn Anstalld(String, double). public Anstalld(String namn, double lön) Denna konstruktor ska skapa objektet anropa konstruktorn Anstalld(String, String, double). Anstalld a1=new Anstalld("Rut Andersson"); Anstalld a2=new Anstalld("Ragnar Olsson",20000); Anstalld a3=new Anstalld("Ragnar Olsson","Gambro", 23000); String res = a1.tostring() + "\n" + a2.tostring() + "\n" + a3.tostring(); extra.output.meddelande(res); Ger körresultatet 3

Lösningsförslag public class Bostad { private double bostadsyta; private int antalrum; /* Konstruktorer ***********************************************************/ public Bostad() { bostadsyta = 100; antalrum = 4; public Bostad(double bostadsyta, int antalrum) { this.bostadsyta = bostadsyta; this.antalrum = antalrum; /* Setters och getters + tostring *******************************************/ public void setbostadsyta(double yta) { bostadsyta = yta; public void setantalrum(int antal) { antalrum = antal; public double getbostadsyta() { return bostadsyta; public int getantalrum() { return antalrum; public String tostring() { return "Bostad med ytan " + bostadsyta + " m2 och " + antalrum + " rum."; /* Ordinarie uppgifter ******************************************************/ public double jämförbostadsyta(bostad b) { return bostadsyta - b.getbostadsyta(); public double kvmperrum() { return bostadsyta/antalrum; /* Extrauppgifter ***********************************************************/ public Bostad flestrum(bostad b) { if(antalrum<b.antalrum) return b; return this; public Bostad copybostad() { return new Bostad(bostadsyta, antalrum); 4

import extra.*; public class Vara { private String namn; private double pris; private int antal; /* Konstruktorer *******************************************************/ public Vara(String namn, double pris, int antal) { this.namn = namn; this.pris = pris; this.antal = antal; public Vara(Vara v) { this(v.getnamn(), v.getpris(), v.getantal()); /* Setters och getters + tostring **************************************/ public void setnamn(string varunamn) { namn = varunamn; public void setpris(double varupris) { pris = varupris; public void setantal(int antalvaror) { antal = antalvaror; public String getnamn() { return namn; public double getpris() { return pris; public int getantal() { return antal; public String tostring() { return namn + ": Pris=" + Output.format(pris,0,2) + " kr Antal=" + antal; /* Ordinarie uppgifter *******************************************************/ public boolean slut() { return antal==0; /* Extrauppgifter **********************************************************/ public Vara billigast(vara v) { if(pris<=v.getpris()) return this; return v; 5

public class Anstalld { private String namn; private String arbetsgivare; private double lön; public Anstalld() { // Arbetsgivare: Okänd, Lön: 0 public Anstalld(String namn) { this(namn, 0); // Arbetsgivare: Okänd public Anstalld(String namn, double lön) { this(namn,"okänd arbetsgivare",lön); public Anstalld(String innamn, String inarbetsgivare, double inlön) { namn = innamn; arbetsgivare = inarbetsgivare; lön = inlön; public void setnamn(string n) { namn = n; public void setarbetsgivare(string a) { arbetsgivare = a; public void setlön(double l) { lön = l; public String getnamn() { return namn; public String getarbetsgivare() { return arbetsgivare; public double getlön() { return lön; public double årslön() { return 12*lön; public boolean sammaarbetsgivare(anstalld a) { return arbetsgivare.equals(a.getarbetsgivare()); public String tostring() { return "Namn: " + namn + " Arbetsgivare: " + arbetsgivare + " Lön: " + lön + " kr"; 6