This is an old revision of the document!


Objektorienterad programmering

Om du vill läsa mer om objektorienterad programmering så finns det en tutorial här: Tutorial

1. I denna uppgift ska du skapa en klass Calculator som räknar med positiva tal samt ett huvudprogram som testar klassen.

Klassen Calculator ska ha:

  • Ett attribut som håller reda på värdet. Det ska inte ska gå att komma åt värdet utifrån.
  • En konstruktor som tar ett startvärde som parameter och sätter värdet som startvärdet.
    Om parametern är negativ ska startvärdet bli noll.
  • En metod add($tal) som adderar ett positivt tal till värdet.
    Om talet är negativt ska värdet inte förändras.
  • En metod subtract($tal) som drar bort ett positivt tal från värdet.
    Resultatet ska bli noll om man försöker dra bort mer än vad som finns i attributet.
    Om talet är negativt ska värdet inte förändras.
  • En metod getNumber() som returnerar värdet på attributet.


Huvudprogrammet:

  1. Skapa en Calculator med startvärdet -12.
  2. Skriv ut värdet.

  3. Skapa en ny Calculator med startvärdet 9.
  4. Skriv ut värdet på ny rad.
  5. Lägg till 4 till värdet på kalkylatorn.
  6. Skriv ut värdet på ny rad.
  7. Lägg till -3 till värdet på kalkylatorn.
  8. Skriv ut värdet på ny rad.
  9. Subtrahera 10 från värdet på kalkylatorn.
  10. Skriv ut värdet på ny rad.
  11. Subtrahera -3 från värdet på kalkylatorn.
  12. Skriv ut värdet på ny rad.
  13. Subtrahera 20 från värdet på kalkylatorn.
  14. Skriv ut värdet på ny rad.

Om du gjort rätt borde svaret bli så här: calculator-facit.jpg


2. I denna uppgift ska du skapa en klass Bensintank som kan innehålla ett antal liter bensin samt ett huvudprogram som testar klassen.

Klassen Bensintank ska ha:

  • Ett attribut som håller reda på antal liter bensin i tanken. Det ska inte gå att komma åt värdet utifrån.
  • Ett attribut som håller reda på det maximala antalet liter som ryms i tanken. Det ska inte gå att komma åt värdet utifrån.
  • En konstruktor som tar en parameter. Denna anger antal liter som maximalt ryms i tanken.
    Om parametern är negativ ska maximalt antal liter bli noll.
    Antal liter bensin i tanken ska från början vara noll.
  • En metod tanka($liter)som lägger till ett antal liter bensin i tanken.
    Om det blir mer i tanken än det maximala så ska tanken innehålla maximala antalet liter.
    Om $liter är negativ ska innehållet i tanken inte förändras.
  • En metod forbruka($liter) som drar bort ett antal liter bensin från tanken.
    Resultatet ska bli noll om man försöker dra bort mer än vad som finns i tanken.
    Om $liter är negativ ska innehållet i tanken inte förändras.
  • En metod getLiter() som returnerar antal liter i tanken.


Huvudprogrammet:

  1. Skapa en Bensintank som maximalt rymmer 55 liter.
  2. Skriv ut antal liter bensin i tanken.
  3. Tanka 20 liter bensin.
  4. Skriv ut antal liter bensin i tanken.
  5. Tanka -2 (minus två) liter bensin.
  6. Skriv ut antal liter bensin i tanken.
  7. Förbruka 5 liter bensin.
  8. Skriv ut antal liter bensin i tanken.
  9. Tanka 50 liter bensin.
  10. Skriv ut antal liter bensin i tanken.
  11. Förbruka -4 (minus fyra) liter bensin.
  12. Skriv ut antal liter bensin i tanken.
  13. Förbruka 70 liter bensin.
  14. Skriv ut antal liter bensin i tanken.

  15. Skapa en ny Bensintank med parametern -10 (minus tio).
  16. Tanka 12 liter bensin.
  17. Skriv ut antal liter bensin i tanken.

Om du gjort rätt borde svaret bli så här: bensintank-facit.jpg


3. I denna uppgift ska du testa arv.

  • Du skall med hjälp av din kunskap om klasser göra en klass Fordon. Tänk noga igenom namngivning av klasser, metoder och attribut.
    • Klassen skall ha minst 3 attribut (vikt, topphastighet och registreringsId) som är protected.
    • Klassen Fordon skall ha en konstruktor som tar startvärden för attributen som parametrar.
    • Man skall kunna hämta och ändra klassens attribut via publika metoder. OBS! två metoder per attribut.
    • Klassen Fordon skall ha en metod getInfo() som returnerar information om objektet.

  • Du skall från klassen Fordon ärva minst 3 olika typer av fordon. Välj själv vilka.
    • Varje klass som ärvs skall ha minst ett eget attribut som man kan hämta och ändra via publika metoder.
    • Varje klass som ärvs av Fordon skall “override”:a metoden getInfo() och via den funktionen skall det tydligt framgå vilket typ av fordon det är.

  • Gör ett huvudprogram som testar klasserna du gjort.



I denna uppgift ska du göra klart två klasser som ska fungera tillsammans med den kod du får given. Klassen Die_ motsvarar en tärning och klassen Cup motsvarar en tärningskopp som kan innehålla ett antal tärningar. Se nedan för information om vad klasserna ska innehålla.
Filerna du behöver hittar du här.

Du skall skicka in två filer, die.php och cup.php. Till din hjälp har du filen index.php, den fil jag kommer att använda för att testa din kod. När alla kommentarer är borta ur denna fil och allt fungerar som det är tänkt så är du klar. Jag kommer att kolla att din kod är gjort på ett som jag tycker korrekt sätt. Att bara få allt att fungera räcker inte.

Klassen får bara innehålla ett attribut och tre metoder + en konstruktor. När en tärning skapas skall den få ett slumpat värde mellan 1 och 6.
Metoderna skall heta:

  • value, returnerar värdet på tärningen
  • roll, slår tärningen
  • print_die, OBS! Denna metod är redan gjord och får inte ändras.

Klassen skall hålla ordning på X antal tärningar (av klassen die) och får bara innehålla ett attribut och fem metoder + en konstruktor. När tärningskoppen skapas skall X tärningar skapas (X är ett argument till konstruktorn). Metoderna skall heta:

  • add_die, lägger till en tärning till koppen
  • sum, returnerar summan av alla tärningar i koppen
  • roll, slår om alla tärningar i koppen
  • remove_die, tar bort en tärning från koppen. Ska returnera false om koppen är tom, annars returneras true.
  • print_cup, skriver ut alla tärningar i koppen. Ska returnera false om koppen är tom, annars returneras true.