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

Relevanta dokument
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.

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.

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

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 tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

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

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

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

Lösningsförslag övning 2.

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

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.

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

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

Malmö högskola 2008/2009 CTS

TENTAMEN OOP

Tentamen i Programmeringsteknik I

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

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

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

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]

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

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.

Tentamen i Programmeringsteknik I

Objektorienterad programmering i Java

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

Del A (obligatorisk för alla)

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

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

TENTAMEN OOP

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

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

Del A (obligatorisk för alla)

Tentamen i Programmeringsteknik I

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

Tentamen. Lösningsförslag

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

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 )

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

LyckaTill önskar Anna

Tentamen i Programmeringsteknik I, ES,

JAVA Mer om klasser och objektorientering

Objekt och klasser - Introduktion

Tentamen OOP

Laboration 1 - Grunderna för OOP i Java

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till 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 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 5-6 Innehåll

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

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

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

2D1339 Programkonstruktion för F1, ht 2004

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Sammanfattning och repetition utgående från typiska tentamensuppgifter

TENTAMEN OOP

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Del A (obligatorisk för alla)

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

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

Objekt och referenser

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

LÖSNINGSFÖRSLAG TENTAMEN

PROGRAMMERING-Java TENTAMINA

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

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

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

Föreläsning 3-4 Innehåll

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

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Mer om klasser och objekt

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

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

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

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

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

Tentamen, EDAA20/EDA501 Programmering

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Klasshierarkier - repetition

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

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 3. Iteration while-satsen

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

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

Enkla variabler kontra referensvariabel

JAVAUTVECKLING LEKTION 11

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Transkript:

Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private. b) Vad är det för skillnad på formella och aktuella parametrar? Formella parametrar är de som deklareras i metodhuvudet. Dessa får värden från de aktuela parametrarna som anges vid metod- eller konstruktoranropet. En formell parameter är alltid en variabel medan en aktuell parameter är ett uttryck som evalueras till ett visst värde. c) Nämn två andra typer av variabler (utöver instansvariabler och parametrar) och ge en kort beskrivning av dem. i. Lokala variabler som deklareras inuti en metod. Dessa kan bara användas i metoden och när metoden är klar glöms värdet bort. ii. Klassvariabler som deklareras med ordet static på översta nivån i klassen. Dessa hör inte till enskilda objekt utan är gemensamma för alla objekt i klassen. Refereras oftas via klassnamnet (inte via en objektreferens). Exempel: Math.PI d) Hur gör man för att anropa en konstruktor? Med det reserverade new följt av klassnamnet och en lista med aktuella parametrar. e) Vad menas med en iteration? Nämn två sätt att uttrycka iterationer i Java. En iteration (eller repetition eller loop ) är en upprepning av kod till något visst villkor är (eller inte är) uppfyllt. Javakonstruktioner för detta är satserna for, while och do f) Vad anger ordet void i Java? Ordet void kan sättas som typ i en metoddeklaration och anger att metoden i fråga inte returnerar något värde. (6p) 1

2. Nedanstående klass representerar ett elektriskt motstånd: public class Resistor { private double resistance; // resistans i Ohm private double maxpower; // maximal tillåten effekt public Resistor(double resistance, double maxpower) { // Uppgift d) // Uppgift a) public double current(double u) { return u/resistance; public double power(double u) { // Uppgift c) public Resistor seriesconnection(resistor m) { // Uppgift e) public double maxvoltage() { // Uppgift b) Testprogram: Utskrift: public static void main(string[] args) { Resistor r = new Resistor(10, 40); System.out.println("r: " + r); System.out.println("Ström vid 5V: " + r.current(5)); System.out.println("Max spänning: " + r.maxvoltage()); Resistor s = new Resistor(5, 30); System.out.println("s: " + s); Resistor t = r.seriesconnection(s); System.out.println("r och s i serie: " + t); r = new Resistor(-3, 5); System.out.println("r: " + r); r: <10.0, 40.0> Ström vid 5V : 0.5 Max spänning: 20.0 s: <5.0, 30.0> a) Skriv klart tostring-metoden. Se körexemplen för specifikation! r och s i serie: <15.0, 30.0> Negativ parameter till Resistor r: Vad skrivs här? Uppgift f) return "<" + resistance + ", " + maxpower + ">"; b) Skriv klart metoden maxvoltage() som beräknar och returnerar den största tillåtna spänningen. Formeln w = u 2 /r uttrycker sambandet mellan effekt, spänning och resistans. I formeln är w effekten i watt, u spänningen i volt och r motståndet i ohm. public double maxvoltage() { return Math.sqrt(resistance*maxPower); c) Skriv klart metoden double power(double u) som skall beräkna och returnera den effekt som utvecklas i motståndet vid spänningen u. 2

Även här kommer ovanstående formel väl till pass. public double power(double u) { return u*u/resistance; d) Skriv klart konstruktorn Resistor(double resistance, double maxpower). Om båda parametrarna är icke-negativa skall dessa värden ges till instansvariablerna. Om ena eller båda parametrarna är negativ skall konstruktorn ge en felutskrift och inte göra någon tilldelning till instansvariablerna. public Resistor(double resistance, double maxpower) { if (resistance<0 maxpower<0) { System.out.println("Negativ parameter till Resistor"); else { this.resistance = resistance; this.maxpower = maxpower; e) Skriv klart metoden Resistor seriesconnection(resistor m) som skapar ett nytt resistorobjekt med de egenskaper man får om man seriekopplar det egna objektet med objektet m. (Seriekoppling medför att de ingående resistanserna adderas. Den maximala effekten blir lika med den minsta av de ingående maxeffekterna.) public Resistor seriesconnection(resistor m) { double r = m.resistance + resistance; double maxpower = Math.min(this.maxPower, m.maxpower); return new Resistor(r, maxpower); f) Vad skrivs ut av den sista raden i main-metoden (dvs efter r:)? Motivera ditt svar! När ett objekt skapas får instansvariablerna först sina default-värden (0. i detta fall). Om parametrarna till konstruktorn är felaktiga kommer inte dessa default-värden förändras så utskriften blir <0., 0.> (12p) 3. En prioritetskö är en kö där uttagen styrs av en prioritet i stället för ankomstordning. Denna typ av köer är vanlig t ex vid akutmottagningar på sjukhus. a) Skriv en klass Patient som skall representera en patient med namn (typ String) och prioritet (typ int). Klassen skall ha en konstruktor som tar emot namn och prioritet, en tostring-metod och en int getpriority() som returnerar patientens prioritet. Se main-metoden och dess resulterande utskrift nedan! 3

public class Patient { private String name; private int priority; public Patient(String name, int priority) { this.name = name; this.priority = priority; return "<" + name + ", " + priority + ">"; public int getpriority() { return priority; b) Skriv en klass PriorityQueue som representerar en prioritetskö. Klassen skall ha en konstruktor, en tostring-metod, en metod add(patient p) som lägger in en ny patient i kön samt en metod Patient get(). Metoden skall ta bort patienten med högst prioritet ur kön och returnera den som värde. Om flera patienter har den högsta prioriteten skall den som stått längst i kön väljas. Klasserna du skriver i denna uppgift skall fungera ihop med nedanstående main-metod och ge angivet resultat: public static void main(string[] args) { PriorityQueue pq = new PriorityQueue(); pq.add(new Patient("Kalle", 5)); pq.add(new Patient("Lisa", 10)); pq.add(new Patient("Olle", 7)); System.out.println(pq.get()); pq.add(new Patient("Anna", 7)); System.out.println(pq.get()); Utskrift: [<Kalle, 5>, <Lisa, 10>, <Olle, 7>] <Lisa, 10> [<Kalle, 5>, <Olle, 7>] [<Kalle, 5>, <Olle, 7>, <Anna, 7>] <Olle, 7> [<Kalle, 5>, <Anna, 7>] (12p) 4

import java.util.arraylist; public class PriorityQueue { private ArrayList<Patient> theq; public PriorityQueue() { theq = new ArrayList<Patient>(); public void add(patient p) { theq.add(p); public Patient get() { if (theq.size() == 0) { return null; Patient p = theq.get(0); for (int i=1; i<theq.size(); i++) { if (theq.get(i).getpriority() > p.getpriority()) { p = theq.get(i); theq.remove(p); return p; return theq.tostring(); 5