webForumDet fria alternativet

Arv, Superklass och Subklasser

6 svar · 497 visningar · startad av axel_k1990

axel_k1990Medlem sedan apr. 20056 inlägg
#1

Hej! Jag har gjort klassen Person. Detta ska nu vara en superklass och det ska finnas två subklasser. Dessa ska vara klassen Lärare och klassen Elev. Lärare ska ha samma egenskaper som Person, men förutom det så har han en lön, och Eleven ska också ha samma egenskaper, med med bidrag istället för lön. Det skall gå att ändra lönen via metoder. Hur ska man göra för att få ihop detta. Hoppas nån kan hjälpa mig. Koden till klassen Person ser ut så här:

#include <string>
using namespace std;

class Person {
private:
string fnamn;
string enamn;
string gatuadr;
string postadr;
int postnr;
int telnr;

public:
Person(string f, string e, string g, int pn, string pa, int t) {
fnamn = f;
enamn = e;
gatuadr = g;
postnr = pn;
postadr = pa;
telnr = t;

}
};

int main() {
Person *p;
p = new Person("Sven", "Karlsson", "Drottninggatan 5", 25486, "Mjölby", 032122231);

}

PeWMedlem sedan juni 200010 432 inlägg
#2

Känns ju verkligen som en skoluppgift. Läs på om arv ;)

axel_k1990Medlem sedan apr. 20056 inlägg
#3

Det är ingen skoluppgift. Jag går i nian. Vi läser inte C++ i skolan än.

PeWMedlem sedan juni 200010 432 inlägg
#4

Okej. Men nån form av bok har du väl? Exemplet är ju som taget ur en kurslitteratur... det du ivf ska göra är att du låter klasserna Elev och Lärare ärva från Person och sen lägger du till de utökade egenskaperna på respektive klass.

Det finns mängder med länkar om grundläggande C++, här är en:
http://www.idt.mdh.se/kurser/cd5250/msl01/msl02/lessons.html

verifierMedlem sedan feb. 200321 inlägg
#5
class Larare : public Person
{
public:
  void SetLon(int lon);
  int GetLon() const;

private:
  int m_lon;
}
Sang-draxMedlem sedan juli 2002581 inlägg
#6

Nej, det blir inte så bra. Lärare måste ha en konstruktor också.

class Lärare : public Person
{
public:
  Lärare(string f, string e, string g, int pn, string pa, int t, int _lön) :
     Person(f,e,g,pn,pa,t),
     lön(_lön) 
     {}
  
  void setLön(int lön);  //Inte så krångliga att implementera
  int getLön() const;

private:
  int lön;
}
verifierMedlem sedan feb. 200321 inlägg
#7

true. Kollade aldrig om Person hade annat än default konstruktorn =)

140 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)