Viope C :n viimeisessä tehtävässä harjoitellaan periytyvän luokan laatimista. Alla näet ohjelman, jossa on määritelty luokka Ajoneuvo. Pääohjelmassa käytetään Ajoneuvo-luokasta periytyvän Auto-luokan oliota. Sinun tehtävänäsi on Auto-luokan ja sen metodien tekeminen.
Vihje:
Tutki alla oleva ohjelma ja erityisesti sen kommentit huolella. Taaskaan alla olevaa koodia ei ole tarkoitus kopioida palautuskenttää, vaan ratkaisuksi riittää luokan ja sen metodien koodit.
#include
#include
using namespace std;
// Luokka Ajoneuvo sisältää saantimetodit
// AnnaPaino(), AnnaHuippunopeus(), AnnaAjetutKilometrit(), joiden avulla
// luokan Ajoneuvo muuttujien arvot voidaan lukea periytetyssä luokassa.
// Lisäksi Ajoneuvo sisältää metodin Aja(matka kilometreinä),
// joka kasvattaa ajoneuvolla ajettuja kilometrejä.
class Ajoneuvo
{
public:
int paino;
int huippu_nopeus;
long ajetut_kilometrit;
Ajoneuvo(int paino, int huippu_nopeus, long ajetut_kilometrit);
void Aja(int ajettava_matka);
int AnnaPaino();
int AnnaHuippunopeus();
long AnnaAjetutKilometrit();
};
// Luokassa on vain yksi alustusmetodi, jossa Ajoneuvon ominaisuudet
// viedään parametrina heti olion muodostamisen yhteydessä.
Ajoneuvo::Ajoneuvo(int Ap, int Ahn, long Akm)
{
paino = Ap;
huippu_nopeus = Ahn;
ajetut_kilometrit = Akm;
}
void Ajoneuvo::Aja(int ajettava_matka)
{
ajetut_kilometrit = ajettava_matka;
}
int Ajoneuvo::AnnaPaino()
{
return paino;
}
int Ajoneuvo::AnnaHuippunopeus()
{
return huippu_nopeus;
}
long Ajoneuvo::AnnaAjetutKilometrit()
{
return ajetut_kilometrit;
}
// Auto-luokka ja sen metodit (sinun ratkaisusi)
//
//
// Luokan ominaisuudet: (suluissa tietotyyppi)
// - merkki (string)
// - malli (string)
// - rekisteri_nro (string)
// - kaynnissa (bool)
// Luokan metodit
// - kaynnista(), muuttaa kaynnissa-muuttujan arvoksi 1
// - sammuta(), muuttaa kaynnissa-muuttujan arvoksi 0
// - katsasta(), tulostaa auton tiedot esimerkkitulosteen mukaisesti
// Muita huomioita
// - Muuttujien arvoihin pääset käsiksi käyttämällä Ajoneuvo-luokan saantimetodeja
// - Mikäli auto on käynnissä, kun se katsastetaan tulostetaan: "Auto käynnissä"
// - Vastaavasti auton ollessa sammutettuna, tulostetaan: "Auto ei ole käynnissä"
// pääohjelma
////////////////////////////////////////
int main()
{
int paino, nopeus;
long km;
string merkki, malli, rekkari;
// kysellään tietoja autosta
cout > merkki;
cout > malli;
cout > rekkari;
cout > paino;
cout > nopeus;
cout > km;
cout
Vihje:
Tutki alla oleva ohjelma ja erityisesti sen kommentit huolella. Taaskaan alla olevaa koodia ei ole tarkoitus kopioida palautuskenttää, vaan ratkaisuksi riittää luokan ja sen metodien koodit.
#include
#include
using namespace std;
// Luokka Ajoneuvo sisältää saantimetodit
// AnnaPaino(), AnnaHuippunopeus(), AnnaAjetutKilometrit(), joiden avulla
// luokan Ajoneuvo muuttujien arvot voidaan lukea periytetyssä luokassa.
// Lisäksi Ajoneuvo sisältää metodin Aja(matka kilometreinä),
// joka kasvattaa ajoneuvolla ajettuja kilometrejä.
class Ajoneuvo
{
public:
int paino;
int huippu_nopeus;
long ajetut_kilometrit;
Ajoneuvo(int paino, int huippu_nopeus, long ajetut_kilometrit);
void Aja(int ajettava_matka);
int AnnaPaino();
int AnnaHuippunopeus();
long AnnaAjetutKilometrit();
};
// Luokassa on vain yksi alustusmetodi, jossa Ajoneuvon ominaisuudet
// viedään parametrina heti olion muodostamisen yhteydessä.
Ajoneuvo::Ajoneuvo(int Ap, int Ahn, long Akm)
{
paino = Ap;
huippu_nopeus = Ahn;
ajetut_kilometrit = Akm;
}
void Ajoneuvo::Aja(int ajettava_matka)
{
ajetut_kilometrit = ajettava_matka;
}
int Ajoneuvo::AnnaPaino()
{
return paino;
}
int Ajoneuvo::AnnaHuippunopeus()
{
return huippu_nopeus;
}
long Ajoneuvo::AnnaAjetutKilometrit()
{
return ajetut_kilometrit;
}
// Auto-luokka ja sen metodit (sinun ratkaisusi)
//
//
// Luokan ominaisuudet: (suluissa tietotyyppi)
// - merkki (string)
// - malli (string)
// - rekisteri_nro (string)
// - kaynnissa (bool)
// Luokan metodit
// - kaynnista(), muuttaa kaynnissa-muuttujan arvoksi 1
// - sammuta(), muuttaa kaynnissa-muuttujan arvoksi 0
// - katsasta(), tulostaa auton tiedot esimerkkitulosteen mukaisesti
// Muita huomioita
// - Muuttujien arvoihin pääset käsiksi käyttämällä Ajoneuvo-luokan saantimetodeja
// - Mikäli auto on käynnissä, kun se katsastetaan tulostetaan: "Auto käynnissä"
// - Vastaavasti auton ollessa sammutettuna, tulostetaan: "Auto ei ole käynnissä"
// pääohjelma
////////////////////////////////////////
int main()
{
int paino, nopeus;
long km;
string merkki, malli, rekkari;
// kysellään tietoja autosta
cout > merkki;
cout > malli;
cout > rekkari;
cout > paino;
cout > nopeus;
cout > km;
cout
Vastaukset 5
Vanhimmat
Meinaatko että jonku pitäis tehdä tämä kotitehtävä puolestasi?
Ok, tässä koodia kun halusit
Yksi yhteen kopio ei ole, mutta tekee samantyyppiset asiat kuin tehtäväsi. Valitettavasti kielenä ei ole c++ mutta ehkäpä osaat soveltaa.. onnea!
ps. rivien alussa olevat välilyönnit korvasin pisteillä koska suomi24 söisi ne. Lopussa myös esimerkkitulostus!
class Vehicle(object):
....def __init__(self, weight, maxspeed, total_distance):
........self._weight = weight
........self._maxspeed = maxspeed
........self._total_distance = total_distance
....def get_weight(self):
........return self._weight
....def get_maxspeed(self):
........return self._maxspeed
....def get_total_distance(self):
........return self._total_distance
....def drive(self, distance):
........self._total_distance += distance
class Bike(Vehicle):
....def __init__(self, weight, maxspeed, total_distance, color, biketype):
........Vehicle.__init__(self, weight, maxspeed, total_distance)
........self._color = color
........self._biketype = biketype
....def get_color(self):
........return self._color
....def get_biketype(self):
........return self._biketype
....def steal(self):
........print 'You stole %s %s!' % (self.get_color(), self.get_biketype())
........total_distance = self.get_total_distance()
........if total_distance < 100:
............print 'Its brand new! - must be very valuable!'
........else:
............print 'too bad its old (driven %d kilometers)' % total_distance
........print 'Bike weighs: %f' % self.get_weight()
if __name__ == '__main__':
....color = raw_input('Give color of the bike:')
....biketype = raw_input('What kind of bike is it?')
....bikeweight = float(raw_input('How much bike weights (kg)?'))
....maxspeed = int(raw_input('What is maximum speed of bike (km/h)?'))
....total_distance = int(raw_input('How many kilometers this bike has been driven to this day?'))
....bike = Bike(bikeweight, maxspeed, total_distance, color, biketype)
....bike.steal()
## D:\temp>bike.py
## Give color of the bike:red
## What kind of bike is it?mountainbike
## How much bike weights (kg)?10.2
## What is maximum speed of bike (km/h)?45
## How many kilometers this bike has been driven to this day?0
## You stole red mountainbike!
## Its brand new! - must be very valuable!
## Bike weighs: 10.200000
Itekin pähkäilen tätä ihan samaa tehtävää. Tää tulostaa oikein siihen asti kunnes selvitetään onko auto käynnissä. Heittää sen todeksi myös silloinkin kun ei pitäisi.
---
class Auto: public Ajoneuvo
{
public:
string merkki;
string malli;
string rekisteri_nro;
bool kaynnissa;
Auto(int paino, long km, int nopeus, string merkki, string malli, string rekkari, bool kaynnissa);
bool kaynnista();
bool sammuta();
void katsasta();
};
Auto::Auto(int paino, long km, int nopeus, string Merkki, string Malli, string rekkari, bool kaynnissa):
Ajoneuvo(paino, km, nopeus)
{
rekisteri_nro = rekkari;
malli = Malli;
merkki = Merkki;
}
bool Auto::sammuta()
{
kaynnissa = 0;
}
bool Auto::kaynnista()
{
kaynnissa = 1;
}
void Auto::katsasta()
{
cout
Helppo juttu. C Raamatun sivulta 550 alkaen lisätietoa. cout
class Auto : public Ajoneuvo
{
public:
string merkki, malli, rekkari;
int nopeus, paino;
long km;
bool kaynnissa;
void kaynnista();
void sammuta();
void katsasta();
Auto(int a_paino, int a_nopeus, long a_km, string a_merkki, string a_malli, string a_rekkari, bool a_kaynnissa);
};
Auto::Auto(int a_paino, int a_nopeus, long a_km, string a_merkki, string a_malli, string a_rekkari, bool a_kaynnissa):
Ajoneuvo(a_paino, a_nopeus, a_km)
{
merkki = a_merkki;
malli = a_malli;
rekkari = a_rekkari;
kaynnissa = a_kaynnissa;
}
void Auto::sammuta()
{
kaynnissa=false;
}
void Auto::kaynnista()
{
kaynnissa=true;
}
void Auto::katsasta()
{
cout