Klasser og OOP i C++
Computerspace · FGU · Programmering i C++
🏗️ Hvad er klasser og OOP i C++?
Objektorienteret programmering (OOP) organiserer kode i klasser – skabeloner der kombinerer data (attributter) og adfærd (metoder).
Klassedefinition:
```cpp
class Elev {
private:
std::string navn; // Private: kun tilgængelig indefra klassen
int alder;
public:
// Konstruktør – køres ved oprettelse
Elev(std::string n, int a) : navn(n), alder(a) {}
// Destruktør – køres ved sletning
~Elev() {}
// Getter-metoder (accessor)
std::string getNavn() const { return navn; }
int getAlder() const { return alder; }
// Setter-metoder
void setAlder(int a) { if (a > 0) alder = a; }
// Metode
void præsentér() const {
std::cout << "Jeg hedder " << navn << " og er " << alder << " år." << std::endl;
}
};
// Brug af klassen
Elev e("Anna", 19);
e.præsentér();
```
Nedarvning:
```cpp
class Person {
public:
std::string navn;
virtual void præsentér() { std::cout << "Person: " << navn; }
};
class Lærer : public Person {
public:
std::string fag;
void præsentér() override { // override er eksplicit
std::cout << "Lærer: " << navn << " underviser i " << fag;
}
};
```
Polymorfi med virtual:
```cpp
Person* p = new Lærer(); // Pointer til base class
p->præsentér(); // Kalder Lærer::præsentér() pga. virtual!
delete p;
```
---
🎓 Læringsmål for Klasser og OOP i C++
Læringsmål
- Definere klasser med private og public medlemmer
- Skrive konstruktører og destruktører
- Implementere indkapsling med getters og setters
- Bruge nedarvning til at genbruge og udvide klasser
- Forstå polymorfi med virtual funktioner og override
Sådan kan du arbejde med emnet
- Hvad er forskellen på public og private i en klasse?
- Hvad er en konstruktør og hvornår køres den?
- Hvad er nedarvning i C++?
- Hvad betyder virtual og override?
⚠️ Typiske fejl at undgå
- Glemmer virtual destruktør – i en base class skal destruktøren være
virtualhvis du bruger polymorfisme - Object slicing – gem afledte objekter som pointere/referencer, ikke som værdier
- Mangler include-guard – brug
#pragma onceeller#ifndefi header-filer
---
💡 Tips til at komme i gang
- Modellér noget fra den virkelige verden – fx en BankKonto med deposit() og withdraw()
- Øv dig på nedarvning – lav en Dyr-klasse og afled Hund og Kat fra den
- Forstå RAII – Resource Acquisition Is Initialization er et kernepricip i moderne C++
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis