Mitthögskolan ITM Institutionen för Informationsteknologi och medier. Bertil Danielsson 060-14 86 82 Jan-Erik Jonsson 060-14 87 90 Tentamen i Java A Sida 1/6 Tentamen Grundläggande programmering i Java A 5p, Tid: Hjälpmedel: Maxpoäng: Preliminära betygsgränser: 5 timmar Dessa 2 böcker: Java Software Solutions av John Lewis och William Loftus Java Direkt av Jan Skansholm eller kopior ur dessa böcker. 36 3 50% G 50% 4 68% VG 75% 5 86% Sven Svensson Kodnr: 00 Sven Svensson Sven Svensson Svensson Kodnr: Kodnr: 00 00 123456-1234 Sven 123456-1234 Blad 123456-1234 Svensson Blad 1 Blad Kodnr: 123456-1234 Blad 1/4 2 00 123456-1234 123456-1234 123456-1234 Blad 1/4 Blad Blad 1/43 Skriv namn, kodnummer, personnummer och bladnumrering som på exemplet, på varje blad du lämnar in. Skriv enkelt och tydligt, och notera alla (lämpliga) antaganden. Skriv bara på ena sidan. Skriv max en uppgift per papper, flera deluppgifter går dock bra. Du får inte använda röd penna! JavaA T.doc
Sida 2/6 Uppgift 1 ( 2p ) Vad blir det för utskrift när detta program exekveras? class MagisktNummer private int a=10; public static void main( String[] args ) int a = 11; MagisktNummer sok = new MagisktNummer(); sok.vadblir( a ); System.out.println( "Det magiska numret är: " + a ); // slut main() public int vadblir( int b ) int a = b*b; return a; // slut vadblir() // klass - MagisktNummer Uppgift 2 ( 2p ) I klassen Kalle i metoden pelle() så finns programsatsen super.nisse();. Vad krävs för att det ska fungera?
Sida 3/6 Uppgift 3 ( 4p ) Vad blir utskriften när klassen AdderaTest körs? class Addera public Addera() public void add() for( int i=1; i<4; i++ ) for( int k=1;!(k>=4); k++ ) if( i+k!= 5 ) System.out.println( i*k ); // slut inre for // slut yttre for // slut add() // klass - Addera class AdderaTest public static void main( String[] args ) Addera a = new Addera(); a.add(); // klass - AdderaTest
Sida 4/6 Uppgift 4 ( 2p ) Vilken/vilka av följande parameterlistor är giltiga för public static void main-metoden? a) String args[] b) String[] anka c) String[] args d) Strings args Uppgift 5 ( 1p ) Följande enkla arvshierarki ger kompileringsfel. Vad är det som är fel? Ge en förklaring till varför det är fel. class Parent public Parent( int x ) class Child extends Parent private int m; public Child( int y ) m = y; super( y );
Sida 5/6 Uppgift 6 ( 10p ) Dessa klasser används för att lagra bilar och deras topphastigheter. a.) b.) Skriv metoden antalsnabbareän i klassen BilTabell. Den ska ta en hastighet som inparameter och returnera antalet bilar i BilTabell som är snabbare än den som är angiven i inparametern. Du ska nu kontrollera att din nya kod fungerar som det är tänkt. Skriv en testklass som lägger in minst tre objekt av typen Bil i ett objekt av klassen BilTabell och som testar metoderna i klassen BilTabell. import java.util.vector; class Bil private String regnr; private int topphast; public Bil( String regnrin, int topphastin ) regnr = regnrin; topphast = topphastin; // metod - KONSTRUKTOR public String getregnr() return regnr; // metod getregnr() public int gettopphast() return topphast; // metod gettopphast() // class - Bil class BilTabell private Vector tab; public BilTabell() tab = new Vector(); // metod - KONSTRUKTOR public void add( Bil bilin ) tab.addelement( bilin ); // method add() // class BilTabell
Sida 6/6 Uppgift 7 ( 15p ) Du ska skapa klasser för att hantera varuförpackningar. Arvshierarkin ska se ut enligt figuren. Förpackning Låda Burk a) Skapa en klass Förpackning som representerar det som är gemensamt för förpackningarna. Klassen ska innehålla data om förpackningarna enligt följande: innehåll ( sträng ) Ovan nämnda data ska lagras som attribut i klassen. Alla attribut ska endast vara tillgängliga genom användandet av metoder i klassen. De metoder som ska finnas i klassen är följande: Konstruktor som ger värden till alla ingående attribut. setinnehåll, som ger värde till attributet innehåll. getinnehåll, som returnerar en sträng som svar. getvolym, ska vara abstrakt och returnera ett flyttal som svar. b) Skapa en klass Burk med följande attribut: diameter ( flyttal, double ) höjd ( flyttal, double ) Ovan nämnda data ska lagras som attribut i klassen. Alla attribut ska endast vara tillgängliga genom användandet av metoder i klassen. De metoder som ska finnas i klassen är följande: Konstruktor som ger värden till alla ingående attribut. getvolym, som beräknar och returnerar volymen av burken, se nedan för formler. c) Skapa även en klass Låda med följande attribut: höjd ( flyttal, double ) bredd ( flyttal, double ) djup ( flyttal, double ) Ovan nämnda data ska lagras som attribut i klassen. Alla attribut ska endast vara tillgängliga genom användandet av metoder i klassen. De metoder som ska finnas i klassen är följande: Konstruktor som ger värden till alla ingående attribut. lådan getvolym, som beräknar och returnerar volymen av burken, se nedan för formler. Volymen för en burk: Volym = π radie 2 höjd Volymen för en låda: Volym = höjd bredd djup