lezione 03

classi e oop moderna

costruttori, encapsulation, polimorfismo e buone pratiche.

livello: intermedio durata: 30 min output: classi robuste badge: oop core

classi

class User {
public:
  User(std::string name) : name_(std::move(name)) {}
  std::string name() const { return name_; }
private:
  std::string name_;
};

costruttori

usa initializer list per efficienza e chiarezza.

ereditarietà

class Actor {
public:
  virtual void act() = 0;
  virtual ~Actor() = default;
};

polimorfismo

usa virtual e override per behavior dinamico.

class Hero : public Actor {
public:
  void act() override { /* ... */ }
};

panoramica

In questo capitolo su classi e oop moderna, costruttori, encapsulation, polimorfismo e buone pratiche. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.

Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).

badge: oop core

obiettivi

  • capire e applicare classi in uno scenario reale
  • capire e applicare costruttori in uno scenario reale
  • capire e applicare ereditarietà in uno scenario reale
  • capire e applicare polimorfismo in uno scenario reale

scheda rapida

#include <iostream>
#include <vector>

int main() {
  std::vector<int> dati{1, 2, 3};
  for (auto &v : dati) {
    v *= 2;
  }
  for (const auto &v : dati) {
    std::cout << v << " ";
  }
  std::cout << "\n";
  return 0;
}

Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.

tips

  • compila con warning elevati
  • preferisci RAII
  • usa const ovunque possibile
  • usa RAII
  • metti virtual sui distruttori base
  • usa override

tip: Una classe che gestisce risorse deve rispettare la regola del 5/0.

mini progetto

Classe Resource con gestione file.

  • costruttore apre file
  • distruttore chiude
  • aggiungi metodo read
  • test con scope

output atteso: uno script o query ripetibile con risultati verificabili.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief