Lösningsförslag övning 2.



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

Enkla variabler kontra referensvariabel

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

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

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.

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

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

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

Malmö högskola 2008/2009 CTS

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

JAVA Mer om klasser och objektorientering

Laboration 1 - Grunderna för OOP i Java

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

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

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

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

Enkla variabler kontra referensvariabel

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

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

Föreläsning 6. Mer om klasser och objekt. Enkla variabler kontra referensvariabel. Omslagsklassen Integer. Referensvariabler

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

TENTAMEN OOP

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

TENTAMEN OOP

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

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

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

JAVAUTVECKLING LEKTION 11

Mer om klasser och objekt

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Objekt och referenser

TENTAMEN OOP

public class BoundedCounter {

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

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

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

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Java, klasser, objekt (Skansholm: Kapitel 2)

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

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

1 Egna klasser. 1.1 En punkt-klass

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

Modeller, Objekt och Klasser

Objektorienterad Programmering DAT043

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

Tentamen i Programmeringsteknik I, ES,

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

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

Klasser och objekt. Henrik Johansson. August 20, 2008

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

Objekt och klasser - Introduktion

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

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

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

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

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

Tentamen. Lösningsförslag

Objektorienterad programmering

Föreläsning 5-6 Innehåll

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

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

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

Institutionen för TENTAMEN CTH HT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

TDA550 - Objektorienterad programvaruutveckling, fk

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

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

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Tentamen OOP

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

Objektorienterad programmering i Java

Objektorienterad programmering Föreläsning 5

Objektorientering: Lagring, räckvidd och livstid

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

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

Objektorientering: Lagring och livstid

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öreläsning 5. Föreläsning 5

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

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

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

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

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

Transkript:

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 double pintperliter = 1.759750; public static double metertoyard(double meter) { return meter * yardspermeter; }//metertoyard public static double yardtometer( double yard) { return yard / yardspermeter; }//yardtometer public static double kilotopound( double kilo) { return kilo * poundperkilo; }//kilotopound public static double poundtokilo( double pound) { return pound / poundperkilo; }//poundtokilo public static double litertopint( double liter) { return liter * pintperliter; }//litertopint public static double pinttoliter( double pint) { return pint / pintperliter; }//pinttoliter }// SIUnits public class TestClassSIUnits { public static void main(string[] a) { System.out.println("Förväntat värde: 10.9361 " + " Erhållet värde: " + SIUnits.meterToYard(10)); + SIUnits.yardToMeter(10.9361)); System.out.println("Förväntat värde: 22.04623 " + " Erhållet värde: " + SIUnits.kiloToPound(10)); + SIUnits.poundToKilo(22.04623)); System.out.println("Förväntat värde: 17.59750 " + " Erhållet värde: " + SIUnits.literToPint(10)); + SIUnits.pintToLiter(17.59750)); }// TestClassSIUnits Övning 2 - lösningsförslag 1 Z1 Objektorienterad programmering, HT12

Uppgift 2 public class CurrencyConverter { private double exangerate; public CurrencyConverter( double exangerate) { this.exangerate = exangerate; public double fromvalue( double foreingnmony) { return foreingnmony/exangerate; }//fromvalue public double tovalue( double domesticmony) { return domesticmony*exangerate; }//tovalue public void setexangerate( double exangerate) { this.exangerate = exangerate; }//setexangerate }//CurrencyConverter public class TestClassCurrencyConverter { public static void main(string[] args) { CurrencyConverter ustoskr = new CurrencyConverter(7.4512); System.out.println("Förväntat värde: 74.512 " + " Erhållet värde: " + ustoskr.tovalue(10)); System.out.println("Förväntat värde: 10 " + " Erhållet värde: " + ustoskr.fromvalue(74.512)); CurrencyConverter rubeltoskr = new CurrencyConverter(0.2551); System.out.println("Förväntat värde: 2.551 " + " Erhållet värde: " + rubeltoskr.tovalue(10)); System.out.println("Förväntat värde: 10 " + " Erhållet värde: " + rubeltoskr.fromvalue(2.551)); ustoskr.setexangerate(7.3852); System.out.println("Förväntat värde: 73.852 " + " Erhållet värde: " + ustoskr.tovalue(10)); System.out.println("Förväntat värde: 10 " + " Erhållet värde: " + ustoskr.fromvalue(73.852)); }//TestClassCurrencyConverter Övning 2 - lösningsförslag 2 Z1 Objektorienterad programmering, HT12

Uppgift 3 a) Om ingen konstruktor definieras i en klass skapas automatiskt en default konstruktor, vilket är den tomma konstruktorn (konstruktorn som saknar parametrar). Om däremot en klass definierar någon annan konstruktor än den tomma konstruktorn, men man även vill ha den tomma konstruktorn så måste klassen definiera denna. Definieras en konstruktor så skapas ingen default konstruktor. När ett objekt skapas nollställs alla bits i det minnesutrymme som objektets instansvariabler kommer att lagras. Är instansvariabeln en int råkar då det nollställda minnesutrymmet motsvara värdet 0. Om en klass innehåller någon instansvariabel, bör man deklarera den tomma konstruktorn om man inte har någon annan konstruktor i klassen (och avsiktligt utelämnat den tomma konstruktorn). En klass utan instansvariabler innehåller endast klass entiteter statiska metoder, statiska variabler och/eller statiska konstanter, och en sådan klass finns det ingen anledning att skapa instanser av. b) Horstmann borde ha deklarerat den tomma konstruktorn enligt: public Counter() { public class BoundedCounter { private int value; private int modulus; public BoundedCounter(int modulus) { this.modulus = modulus; public void count() { value = (value + 1) % modulus; }//count public int getvalue() { return value; }//getvalue public void reset() { }//reset public String tostring() { return "Value: " + value + " Modulus: " + modulus; }//tostring }//BoundedCounter Övning 2 - lösningsförslag 3 Z1 Objektorienterad programmering, HT12

public class TestClassBoundedCounter { public static void main(string[] args) { BoundedCounter counter = new BoundedCounter(5); System.out.println("Förväntat värde : 1 " + " Erhållet värde: " + counter.getvalue()); System.out.println("Förväntat värde : 4 " + " Erhållet värde: " + counter.getvalue()); counter.reset(); }//TestClassBoundedCounter Uppgift 4 public class Shareholding { private String name; private int quantity; private String purchasedate; private double purchaseprice; private double presentprice; public Shareholding(String name, int quantity, String purchasedate, double purchaseprice) { this. name = name; this. quantity = quantity; this.purchasedate = purchasedate; this. purchaseprice = purchaseprice; presentprice = purchaseprice; }//konstruktor public void setpresentprice(double presentprice) { this. presentprice = presentprice; }// setpresentprice public double getprofit(){ return quantity *(presentprice - purchaseprice); }// getprofit public String tostring() { return " Namn: " + name + "\nantal: " + quantity + "\ninköpsdag: " + purchasedate + "\ninköpspris: " + String.format("%.2f",purchasePrice) + "\nnuvarande pris: " + String.format("%.2f", presentprice) + "\nbehållning: " + String.format("%.2fs", getprofit()); }//tostring }// Shareholding Övning 2 - lösningsförslag 4 Z1 Objektorienterad programmering, HT12

Uppgift 5 a) Felet beror på att metoden setcolor är en statisk metod (klassmetod) medan variabeln color som används i denna metod är en instansvariabel. Varje objekt (instans) av klassen BounceBall har alltså sin egen variabel color, det finns alltså många variabler med namnet color och det är omöjligt att avgöra vilken av dessa variabler som avses utan att specificera detta. b) Det finns två lösningar på problemet. Antingen kan man göra instansvariabeln color till en statisk variabel (klassvariabel), men då kommer alla objekt av klassen att ha samma färg. Detta är ingen snyggt objektorienterat tillvägagångssätt!! Lösningen blir därför att göra metoden setcolor till en instansmetod, enligt nedan: import java.awt.color; public class BounceBall { private Color color; public BounceBall() {} //andra ointressanta metoder public void setcolor(color color) { this.color = color; }// setcolor public static void main(string[] arg) { BounceBall boing = new BounceBall(); boing.setcolor(color.pink); } //main }// BounceBall Övning 2 - lösningsförslag 5 Z1 Objektorienterad programmering, HT12