2013-04-22, 22:29
#1
Hejsan. Sitter och tentapluggar lite och märker att jag har väldigt dålig koll på att just granska kod och vad koden betyder. Jag har en gammal tenta framför mig där jag ska granska kod och avgöra om påståenden som ges är korrekta eller falska och fattar inte så mycket faktiskt, jag förstår om ni inte har tid att gå igenom "alla" svar, men vi kan väl hjälpas åt? ![Smile](https://static.flashback.org/img/smilies2/smile1.gif)
SEGELBÅT
GästHamn
BÅT
MOTORBÅT
TestKlass
Detta är då alla klasser som presenteras i tentan. Frågorna är som lyder:
"testMetoderna" återfinns i TestKlassen.
1.testMetod1 kommer inte att leda till något kompileringsfel (sant)
2.testMetod2 kommer inte att leda till något kompileringsfel (sant)
3.testMetod3 kommer inte att leda till något kompileringsfel (sant)
4.testMetod4 kommer inte att leda till något kompileringsfel (falskt)
5.testMetod5 kommer inte att leda till något kompileringsfel (falskt)
6.testMetod6 kommer inte att leda till något kompileringsfel (falskt)
7.testMetod7 kommer inte att leda till något kompileringsfel (sant)
8.testMetod8 kommer inte att leda till något kompileringsfel (falskt)
Egna funderingar:
1. båtA.getRegNr - I testklassen så skapar vi ju en ny kopia av båt (båtA = new Båt).
går vi då till båtklassen så ser vi att den har skapat en kopia(?) (this.regnr = regNr) av regnummer? Är det så man ska tänka här?
2.båtB.getRegNr - i samma klass skapar vi en ny kopia av segelbåt. Går vi till segelbåtklassen så ser vi att konstruktorn tar in regNr som parameter är det därför detta påstående också är sant?
3.båtC.getRegNr - Skapar kopia motorbåt. I motorbåtklassen tar konstrukorn in parametrar av regNr, rätt?
4.båtC.getRegNr (obs String) - för att motorbåtens konstruktor deklarerar(?) regNr till int? (därför är detta påstende "falskt"?)
5,6,7,8 har jag inte en aning om. Vore bussigt om ni kunde förklara hur det ska tänkas.
Tittar vi på facit (här över) så ser vi att fråga 7 är sann, varför?
Stort tack för all hjälp, mvh.
Edit: Bonusfråga:
9.Klassen Gästhamn ärver från klassen Båt (sant/falskt)
Om en klass ska "ärva" något från en annan klass, innebär det per automatik att gästhamn i den här fallet alltid är en subklass till båt (som då är en superklass)?.
Eller kan klass A ärva från B utan att A är en subklas och B är en superklass?
Hur kan det i så fall se ut? Själva arvet alltså.
Jag vet att om A är en subklass till B så står det i A´s källkod, ex, "Class A extends B".
Kan klasser ärva utan att vi har "extends" med i koden?
![Smile](https://static.flashback.org/img/smilies2/smile1.gif)
SEGELBÅT
Kod:
public class SegelBåt extends Båt { double mastLängd; public SegelBåt(int regNr, double längd, int vikt, double mastLängd) { super(regNr, längd, vikt); this.mastLängd = mastLängd; } public double getMastLängd() { return mastLängd; } }
GästHamn
Kod:
import java.util.ArrayList; public class GästHamn { private ArrayList<Båt> båtarIHamnen; public GästHamn() { båtarIHamnen = new ArrayList<Båt>(); } public void läggTillBåt(Båt aBåt) { båtarIHamnen.add(aBåt); } }
BÅT
Kod:
public class Båt { private int regNr; private double längd; private int vikt; public Båt (int regNr, double längd, int vikt) { this.regNr = regNr; this.längd = längd; this.vikt = vikt; } public double getLängd() { return längd; } public double getRegNe() { return regNr; } public int getVikt() { return vikt; } }
MOTORBÅT
Kod:
public class motorBåt extends Båt { int hästkrafter = 0; public MotorBåt(int regNr, double längd, int vikt, int hästkrafter) { super(regNr, längd, vikt); this.hästkrafter = hästkrafter; } public int getHästKrafter() { return hästKrafter; } }
TestKlass
Kod:
public class TestKlass { private Båt båtA; private SegelBåt båtB; private MotorBåt båtC; private GästHamn enGästhamn; public TestKlass() { båtA = new Båt (101, 4.5, 6); båtB = new SegelBåt (102, 4.5, 6, 6.2); båtC = new MotorBåt (103, 4.5, 6, 85); enGästHamn = new GästHamn(); public double testMetod1() { return båtA.getRegNr(); } public double testMetod2() { return båtB.getRegNr(); } public double testMetod3() { return båtC.getRegNr(); } public String testMetod4() { return båtC.getRegNr(); } public void testMetod5() { båtC = båtA; } public void testMetod6() { båtB = båtC; } public void testMetod7() { båtA = båtC; } public void testMetod8() { båtB = båtA; } }
Detta är då alla klasser som presenteras i tentan. Frågorna är som lyder:
"testMetoderna" återfinns i TestKlassen.
1.testMetod1 kommer inte att leda till något kompileringsfel (sant)
2.testMetod2 kommer inte att leda till något kompileringsfel (sant)
3.testMetod3 kommer inte att leda till något kompileringsfel (sant)
4.testMetod4 kommer inte att leda till något kompileringsfel (falskt)
5.testMetod5 kommer inte att leda till något kompileringsfel (falskt)
6.testMetod6 kommer inte att leda till något kompileringsfel (falskt)
7.testMetod7 kommer inte att leda till något kompileringsfel (sant)
8.testMetod8 kommer inte att leda till något kompileringsfel (falskt)
Egna funderingar:
1. båtA.getRegNr - I testklassen så skapar vi ju en ny kopia av båt (båtA = new Båt).
går vi då till båtklassen så ser vi att den har skapat en kopia(?) (this.regnr = regNr) av regnummer? Är det så man ska tänka här?
2.båtB.getRegNr - i samma klass skapar vi en ny kopia av segelbåt. Går vi till segelbåtklassen så ser vi att konstruktorn tar in regNr som parameter är det därför detta påstående också är sant?
3.båtC.getRegNr - Skapar kopia motorbåt. I motorbåtklassen tar konstrukorn in parametrar av regNr, rätt?
4.båtC.getRegNr (obs String) - för att motorbåtens konstruktor deklarerar(?) regNr till int? (därför är detta påstende "falskt"?)
5,6,7,8 har jag inte en aning om. Vore bussigt om ni kunde förklara hur det ska tänkas.
Tittar vi på facit (här över) så ser vi att fråga 7 är sann, varför?
Stort tack för all hjälp, mvh.
Edit: Bonusfråga:
9.Klassen Gästhamn ärver från klassen Båt (sant/falskt)
Om en klass ska "ärva" något från en annan klass, innebär det per automatik att gästhamn i den här fallet alltid är en subklass till båt (som då är en superklass)?.
Eller kan klass A ärva från B utan att A är en subklas och B är en superklass?
Hur kan det i så fall se ut? Själva arvet alltså.
Jag vet att om A är en subklass till B så står det i A´s källkod, ex, "Class A extends B".
Kan klasser ärva utan att vi har "extends" med i koden?
__________________
Senast redigerad av RompeTodo 2013-04-22 kl. 22:46.
Senast redigerad av RompeTodo 2013-04-22 kl. 22:46.