Tässä harjoituksessa opiskellaan vahvaa koostetta(kompositiota) ja UML-luokkakaavion tulkintaa. Harjoituksessa Car-luokan olio luo Engine-luokan olion ja neljä Wheel-luokan oliota. Car-luokka on siis koosteluokka.
Miksi tässä käytetään koostetta eikä perintää?
HUOM! Luo kullekin luokalle erillinen h-tiedosto ja cpp-tiedosto.
Tässä tehtävässä tarkoituksena on mallintaa yksinkertainen auton rakenne C++:ssa käyttämällä kompositiota.
Luo luokat Engine, Wheel ja Car siten, että Car-olio koostuu yhdestä Engine-oliosta ja neljästä Wheel-oliosta. Nämä osat kuuluvat autoon ja tuhoutuvat sen mukana.
classDiagram
class Engine {
-horsepower: int
-displacement: double
+Engine()
+Engine(int, double)
+getHorsepower() int
+setHorsepower(int)
+getDisplacement() double
+setDisplacement(double)
}
class Wheel {
-size: int
-type: string
+Wheel()
+Wheel(int, string)
+getSize() int
+setSize(int)
+getType() string
+setType(string)
}
class Car {
-objEngine: Engine
-objWheel1: Wheel
-objWheel2: Wheel
-objWheel3: Wheel
-objWheel4: Wheel
-model: string
-brand: string
+Car()
+Car(string, string)
+setEngine()
+setWheels()
+getModel() string
+setModel(string)
+getBrand() string
+setBrand(string)
+printDetails()
}
Engine --* Car
Wheel --* Car
Luo C++-projekti nimeltään h4
Engine toteutus:
Engine, joka sisältää seuraavat ominaisuudet:int horsepower: moottorin hevosvoimat.double displacement: moottorin tilavuus litroissa.Wheel toteutus:
Wheel, joka sisältää seuraavat ominaisuudet:int size: renkaan koko (esim. tuumina).string type: renkaan tyyppi (esim. "kesärengas" tai "talvirengas").Car toteutus:
Car, joka koostuu seuraavista osista:Engine-olio.Wheel-oliota.string model: auton malli.string brand: auton merkki.void printDetails(), joka tulostaa auton tiedot, mukaan lukien moottorin ja renkaiden tiedot (katso mallia esimerkkitulosteesta alla).