• No results found

// Överlagrad konstruktor public Vindkraft( String innamn, double ingen, double inradie) { namn = innamn; genstorlek = ingen; radie = inradie; }

N/A
N/A
Protected

Academic year: 2022

Share "// Överlagrad konstruktor public Vindkraft( String innamn, double ingen, double inradie) { namn = innamn; genstorlek = ingen; radie = inradie; }"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

Del 1

Uppgift 1 (6p) En enkel klass

import java.util.Scanner;

public class Vindkraft { private String namn;

private double genStorlek, radie;

// Standardkonstruktor public Vindkraft() {

namn = "Windpower";

genStorlek = 15;

radie = 8;

}

// ¨Overlagrad konstruktor

public Vindkraft( String inNamn, double inGen, double inRadie) { namn = inNamn;

genStorlek = inGen;

radie = inRadie;

}

// Ber¨aknar producerad energi under ett tidsintervall public double prodEnergi(double tid, double medelVind) {

return (radie * genStorlek * tid * medelVind);

}

// Returnerar en str¨ang som inneh˚aller instansvariablernas v¨arden.

public String toString() {

return ("Namn: " + namn +"\nRotorradie: " + radie +

"\nGeneratorstorlek: " + genStorlek);

}

public static void main(String[] args) { double tid, vindHastighet, energi;

// Skapa ett vindkraftverk

Vindkraft vind = new Vindkraft("Vestas", 20, 9);

// Skriv ut information System.out.println(vind);

// L¨as in tid och vindhastighet

Scanner scan = new Scanner(System.in);

(2)

System.out.print("Ge tiden: ");

tid = scan.nextDouble();

System.out.print("Ge vindhastighet: ");

vindHastighet = scan.nextDouble();

// Ber¨akna energi

energi = vind.prodEnergi(tid, vindHastighet);

// Skriv ut energin

System.out.println(energi + " kWh energi har producerats");

} }

Uppgift 2 (totalt 6p) Vad g¨ or koden

uppgift a (1p)

Vektorn ¨ar (3.0, 3.0) Vektorn ¨ar (3.0, 3.0)

a=bg¨or att a och b refererar till samma objekt. b.change(3,3); ¨andrar v¨arde p˚a instansvariablerna f¨or objektet. a.skrivUt(); b.skrivUt(); ger samma utskrift eftersom a och b refererar till samma objekt.

uppgift b (1p)

Villkor tv˚a ¨ar sant

D˚a == anv¨ands vid j¨amf¨orelse av objekt unders¨oks om referenserna ¨ar lika, dvs i den f¨orsta if-satsen om a och b refererar till samma objekt, vilket de inte g¨or.

Tv˚a objekt ¨ar inte ”lika” bara f¨or att de har samma v¨arden p˚a instansvari- ablerna.

uppgift c (1,5p) else

((a-b)==2)¨ar true allts˚a ¨ar !((a-b)==2) false. flag ¨ar ocks˚a false. F¨or logiskt eller g¨aller att false or false ger resultatet false.

uppgift d (1p) 1.0 3.0 4.0 6.0

Observera att heltalsdivision g¨ors. I f¨orsta varvet ber¨aknas 3/2 som ger resul- tatet 1 (int). Resultatet av heltalsdivisionen lagras i variabeln svar. Eftersom svar¨ar en double blir utskriften 1.0 och inte 1.

(3)

uppgift e (1,5p)

****

i=4

***

i=3

**

i=2

* i=1 i=0

Den inre for-loopen utf¨ors i g˚anger. print ger ej radbrytning men det g¨or println.

Uppgift 3 (7p)

okning och sortering

5 13 9 3 1 12 Utg˚angsl¨age 5 9 3 1 12 13 1:a iterationen 5 3 1 9 12 13 2:a iterationen 3 1 5 9 12 13 3:de iterationen 1 2 5 9 12 13 4:de iterationen

I den f¨orst iterationen:

5 och 13 j¨amf¨ors, byte sker ej 13 och 9 j¨amf¨ors, byte sker 13 och 3 j¨amf¨ors, byte sker 13 och 1 j¨amf¨ors, byte sker 13 och 12 j¨amf¨ors, byte sker

Nu har det st¨orsta talet, dvs 13, bubblat hela v¨agen upp til den sista platsen.

Algoritm (i stigande ordning)

1 Bubbel-arrayen ¨ar hela arrayen.

2 J¨amf¨or parvis v¨arden som ligger intill varandra i Bubbel-arrayen, dvs arr[i]

j¨amf¨ors med arr[i+1], f¨or alla i. Om de ligger p˚a fel inb¨ordes plats, dvs arr[i+1] mindre ¨an arr[i], s˚a byter de plats med varandra, annars l˚at vara.

3 Nu finns det st¨orsta elementet l¨angst till h¨oger i Bubbel-arrayen. Om element bytte plats, ”Krymp” bubbel-arrayen med ett element fr˚an h¨oger och g˚a till steg 2.

(4)

Deluppgift c.) En l¨osning bland m˚anga:

// Linj¨ar s¨okning. Vi s¨oker igenom arrayen f˚ar en sida // till den andra.

public static int linearSearch(int [] searchArray, int key) { int i=0;

// While-satsen avbryts n¨ar vi hittar nyckeln.

while((i < searchArray.length) && (key != searchArray[i])) i++;

// Om index i har r¨aknats upp // till storleken av arrayen // ¨ar s¨okningen misslyckad if (i == searchArray.length)

return -1;

else

return i;

}

Uppgift 4 (6p)

Utv¨ ardering av polynom

//metod f¨or att ber¨akna polynomets v¨arde i punkten x public double evaluera(double x){

return a*Math.pow(x,4)+b*Math.pow(x,3)+c*Math.pow(x,2)+d*x+e;

}

I ber¨akningen av polynomets v¨arde anv¨ands instansvariablerna.

Mainmetod i frist˚aende klass public class TestPolynomial{

public static void main(String[] args){

Polynom4 poly = new Polynom4(3.2, -5.1, 0, -1, 9);

double resultat1, resultat2;

resultat1=poly.evaluera(7);

resultat2=Math.sqrt(resultat1);

System.out.println("Polynomets v¨arde ¨ar i punkten sju ¨ar "+resultat1);

System.out.println("Roten ur detta v¨arde ¨ar "+resultat2);

} }

Konstruktorn har 5 inparametrar, vilket vi m˚aste t¨anka p˚a n¨ar Polynom4- objektet skapas. F¨or att anv¨anda matematikfunktioner skriver man Math.funktionens namn, exempelvis Math.sqrt. Math ligger i paketet java.lang och det paketet importeras automatiskt. Om man ¨and˚a vill importera paketet ska import-satsen INTE ligga inne i en metod.

(5)

Uppgift 5 (7p)

Objektorienterad analys av ett bibliotekssystem

UML-diagram som visar klasser och metoder som beh¨ovs (en l¨osning bland m˚anga.). N˚agra viktiga egenskaper som b¨or vara med: en huvudklass f¨or sj¨alv biblioteket, en med personer och en eller flera f¨or olika media. Biblioteksklassen b¨or ha arrayer av de andra klasserna som instansvariabler. Person b¨or ha en instansvariabel som talar om vad personen l˚anat och mediaklassen b¨or ha en instansvariabel som talar om vem som l˚anat ett mediaexemplar. Man kan ocks˚a ha en klass som hanterar tiden, ¨aven om det saknas i det aktuella f¨orslaget.

Uppgift 6 (8p)

SJ:s nya biljettsystem

Metoden tidsSkillnad i klassen Tidpuinkt.

public double tidsSkillnad(Tidpunkt t){

//anrop av metoden ser ut som t1.tidsSkillnad(t2) och d˚a // ber¨aknas t1-t2. (t1 och t2 objekt av typ Tidpunkt) double svar;

svar=timme-t.timme; //skillnad i timmar

svar=svar+(minut-t.minut)/60.0; //skillnad i minuter

//obs delar med 60.0 annars blir det heltalsdivision.

return svar;

}

(6)

Vi antar i denna l¨osning att SJ inte har n˚agra t˚ag som passerar dygnsgr¨ansen.

Metoden vinst i klassen Tagresa.

public double vinst(double grad){

double vinsten=0;

double reslangd; //anger resans l¨angd i timmar double personalkostnad;

reslangd=ankomsttid.tidsSkillnad(avgangstid);

//ber¨aknar kostnad f¨or l¨oner

personalkostnad=forare.getTimlon()*reslangd;

for(int i=0; i<konduktor.length; i++){

personalkostnad=personalkostnad+konduktor[i].getTimlon()*reslangd;

}

//pga skatter ¨ar totala personalkostnaden 2*l¨onekostnaden personalkostnad=personalkostnad*2;

for(int i=0; i<vagnar.length; i++){

//ber¨aknar vinst per vagn

vinsten=vinsten+vagn.vinst(grad, biljettpris, reslangd);

}

vinst=vinst-personalkostnad;

return vinst;

}

Slutligen metoden vinst i klassen Vagn som ber¨aknar vinsten f¨or en t˚agvagn.

public double vinst(double grad, double biljettpris, double reslangd){

double vinsten;

double saldaBiljetter;

saldaBiljetter=grad*antalPlatser;

//Bortser h¨arifr˚an att man egentligen ej kan s¨alja halva biljetter

if(studentvagn)

vinsten=saldaBiljetter*biljettpris/2.0; //halva priset f¨or studenter else

vinsten=saldaBiljetter*biljettpris;

//drar bort kostnaden f¨or vagnen vinsten=vinsten-reslangd*timkostnad;

return vinsten;

}

References

Related documents

When passivized, the equi verb behaves as a raising verb (functional control), and the passive equi verb no longer assigns a semantic role to its subject. b) Overt

Bureaucrats in the government sector have a double role since they are both suppliers and demanders of public employment; they are publicly employed (supply labor) and they have

Instead of abolishing the asymmetry through re-nationalisation, we could smooth out the uneven parts by democratising the powers which has already been centralised and open up

Keywords: double taxation, double tax treaty, capital export neutrality, CEN, capital import neutrality, CIN, exemption, exemption with progression, modified exemption, limitation

Etudes can be intended for beginners or more advanced players. They are usually designed to solve specific technical problems such as intonation, rhythmic, shifting, thumb

This thesis aims to contribute to the understanding of how modern information and telecommunication technologies impacts autocratic stability, through examine whether the

However, Ellen does not tell Catherine during Catherine’s tale about her love for Edgar and how it would degrade her to marry Heathcliff, that Heathcliff is overhearing

While logical algorithms seems to have about half the improvement compared to zone algorithms, search based practically reach the same waiting time using both single- and