T-106.1212 Grundkurs i programmering

Rond 8, uppgift 3

Nivå och poängvärde:C 50
Kort beskrivning:Vi kombinerar projekten EnglishAuction och DutchAuction.
Vad vi lär oss:Att eliminera onödig kod med hjälp av arv, omstrukturering av ett program.
Frihet i implementationen:Liten. Här skapar man inte egentligen ny kod, utan kombinerar delar av existerande kod.
Realism:Hög. Att redigera gammal kod och att bygga om på nytt är vanligt.
Utmaning:Medel. Man måste förstå arv-konceptet för att klara av uppgiften.
Arbetsmängd:Tämligen lätt. Borde gå på ett par timmar om den tidigare EnglishAuction-uppgiften är gjord. I annat fall tar det lite längre tid att sätta sig in i hur auktionerna fungerar.

Uppgiftsbeskrivning

I uppgift 8.1 var klassen EnglishAuction aktuell. Bland projekten finns också ett liknande projekt DutchAuction, som innehåller en klass med samma namn. Båda klasserna beskriver auktioner, och har därför mycket gemensamt. De har dock även märkbara skillnader, eftersom det är två olika sätt att bedriva auktioner. I DutchAuction-projektet finns också klassen AuctionHouse, som beskriver auktionshus som ordnar "holländska" auktioner.

Vi antar att du redan har gjort EnglishAuction-uppgiften och du har nu två klasser, EnglishAuction och DutchAuction. Det är uppenbart att det är mycket kod som "dubbleras" i de två klasserna. T.ex. är instansvariabeln som beskriver auktionen och metoden get_price_ratio samma, osv. Det är nu meningen att bli av med dessa upprepningar med hjälp av arv.

Det är också praktiskt att ändra klassen AuctionHouse så att den blir mera allmän, så att man kan använda andra sorts auktioner i den än de holländska. Uppgiften lyder alltså:

Kom ihåg att EnglishAuction behöver modulen bid.

Målen är mera specifikt beskrivna i dokumentationen.

Testa din kod.

Inlämning

Lämna in er kod i Goblin.