Percorso Formazione Insegnanti — 30 CFU B016

LEZIONE SIMULATA

Programmazione Orientata agli Oggetti: l'ereditarietà

Contesto della classe

🎓 Classe
4° anno · Istituto Tecnico Commerciale - curvatura SIA
🧑‍🤝‍🧑 Composizione
22 studenti  ·  14   ·  8   ·  2 con DSA  ·  1 con disabilità
🔍 Analisi
Il clima è collaborativo e il livello complessivo è soddisfacente, seppur con moderate differenze individuali. L'interesse per la materia è ottimale.
Il contesto di provenienza risulta eterogeneo, con alcune fragilità economiche e culturali.
La nazionalità di origine è perlopiù italiana, con alcuni studenti con background migratorio.
🧑‍🏫 Docenti coinvolti
Tecnico Pratico · Informatica (teoria) · Sostegno
🎯️ Finalità
Gli studenti saranno in grado di definire classi derivate a partire da una superclasse, riconoscere e interpretare gerarchie di classi, e applicare l'ereditarietà in C++
⏱️ Tempi
2 ore (120 min) di lezione tecnico/pratica

Obiettivi di apprendimento

Conoscenze

Definire il concetto di ereditarietà e i suoi vantaggi (riuso del codice, estensibilità)

Distinguere tra classe base (superclasse) e classe derivata (sottoclasse)

Conoscere i principi della OOP: incapsulamento, ereditarietà, polimorfismo

Competenze

Utilizzare correttamente la sintassi dell'ereditarietà in C++

Padroneggiare i concetti e i principi della programmazione ad oggetti

Abilità

Disegnare e interpretare diagrammi di classi con relazioni di ereditarietà

Implementare classi derivate con attributi e metodi ereditati e specifici in C++

📎 Linee Guida Istituti Tecnici (D.P.R. 88/2010) · Indicazioni Nazionali per l'istruzione tecnica

Competenze

🧠 Imparare ad imparare
  • Organizzare il proprio materiale didattico
  • Esprimere in maniera corretta e autonoma i concetti fondamentali della OOP
🤝 Collaborare e partecipare
  • Interagire nel gruppo in attività di pair programming
  • Contribuire alla risoluzione dei problemi proposti
💻 Competenza digitale
  • Applicare la logica formale a un problema reale
  • Interpretare ed elaborare l'output di un processo computerizzato
🧩 Prerequisiti
  • Conoscere la struttura generale di un programma C++ e le strutture di controllo
  • Saper definire classi con attributi e metodi, creare e utilizzare oggetti
  • Conoscere e saper applicare le funzioni e le principali strutture di dati
  • Saper utilizzare Google Classroom e strumenti di presentazione
📎 Raccomandazione del Consiglio UE del 22 maggio 2018 — Competenze chiave per l'apprendimento permanente (2018/C 189/01)

Struttura della lezione

0'
15'
Avvio
Aggancio motivazionale · domanda stimolo · recupero prerequisiti · contestualizzazione dell'argomento
15'
35'
Spiegazione
Ereditarietà, superclasse/sottoclasse, sintassi C++, override dei metodi · esempi di codice alla LIM
35'
90'
Laboratorio
Implementare una gerarchia di classi in C++ a partire da un diagramma UML · pair programming · uso del laboratorio informatico
90'
110'
Consolid.
Correzione collettiva · discussione degli errori comuni/frequenti · riflessione sui concetti appresi
110'
120'
Chiusura
Riepilogo · anticipazione della lezione successiva
 È prevista una pausa di 5 minuti (indicativamente a metà lezione).

Argomento

📋 Contenuto teorico principale

Ereditarietà: meccanismo che permette a una classe (derivata) di ereditare attributi e metodi da un'altra classe (base/superclasse)

Classe base → Classe derivata: la sottoclasse estende la superclasse aggiungendo attributi/metodi propri e può sovrascrivere (override) quelli ereditati


class Veicolo {
public:
    Veicolo(int anno) : anno(anno) {}
    int getAnno() const { return anno; }
    virtual void descrizione() const {
        std::cout << "Veicolo del " << anno << std::endl;
    }
private:
    int anno;
};

class Auto : public Veicolo {
public:
    Auto(int anno, const std::string& modello)
        : Veicolo(anno), modello(modello) {}
    const std::string& getModello() const { return modello; }
private:
    std::string modello;
};
              
🔧 Esercizio / Attività pratica guidata

Dato il diagramma di classi (Mezzi di trasporto → Veicoli a motore → Autobus), implementare la gerarchia in C++ e stampare tutti gli attributi di un oggetto Autobus.

Input: diagramma UML con attributi e metodi di ciascuna classe

Output atteso: programma C++ funzionante con output a video

Vincoli: pair programming · 55 min · IDE in laboratorio

Riflessione / discussione collettiva

"Perché l'ereditarietà favorisce il riuso del codice?"

"In quali situazioni reali la utilizzereste?"

"Quali problemi possono verificarsi?"

Metodologie didattiche

💬 Lezione partecipata

Dialogo socratico, domande stimolo per attivare conoscenze pregresse e verificare prerequisiti.

🔬 Problem solving

Proposta di un problema reale da risolvere step-by-step in laboratorio.

🤝 Cooperative learning

Lavoro in coppie per favorire peer tutoring e collaborazione.

🛠️ Learning by doing

Attività pratica al computer: codice e strumenti digitali specifici dell'argomento.

📎 Approccio STEM / laboratoriale / inclusivo — DM 22/2022 e Indicazioni Nazionali per l'istruzione tecnica.

Inclusione

📋 DSA
Supporto visivo e grafico  ·  IDE con evidenziazione della sintassi  ·  formulari e glossari  ·  sintesi vocale
🌈 BES
Attività differenziate per livello  ·  Affiancamento peer tutoring  ·  Uso di strumenti personalizzati (sintesi vocale · dizionari digitali · periferiche di input)
🌟 PLUS
Attività di potenziamento (approfondimenti autonomi · challenge avanzate · ruolo di tutor per i compagni)
🌍 NAI
Materiali bilingue o inglese  ·  Supporto visivo e grafico  ·  Uso di traduttori
📎 L. 170/2010 (DSA) · D.M. 27/12/2012 (BES) · D.Lgs. 66/2017 (inclusione scolastica) · Modello ICF (OMS) per la lettura dei bisogni educativi

Valutazione

📊formativa
  • Osservazione in itinere
  • Exit ticket fine lezione (3 domande rapide)
  • Autovalutazione digitale
📝sommativa
  • Prova pratica: implementare una gerarchia di classi in C++
  • Quiz Classroom: 10 domande a risposta multipla
🌈inclusiva
  • Tempi estesi e prove semplificate
  • Mappe, formulari, glossari
  • Adattamento dei criteri
10
Conoscenze, abilità e collaborazione eccellenti. Autonoma e sicura anche in contesti nuovi.
9
Conoscenze, abilità e collaborazione ottime. Autonoma e sicura anche in contesti nuovi.
8
Conoscenze, abilità e collaborazione discrete. Autonoma e sicura anche in contesti nuovi.
7
Conoscenze, abilità e collaborazione buone. Autonoma e sicura anche in contesti nuovi.
6
Conoscenze e collaborazione di base. Parzialmente autonoma.
5
Conoscenze e collaborazione parziali. Non autonoma.
4
Lacune significative e mancata collaborazione. Non autonoma.

Strumenti e risorse digitali

🖥️ Hardware
  • Laboratorio informatico / LIM
  • PC per ogni coppia di studenti
💾 Software
  • IDE C++ (OnlineGDB / Code::Blocks / VS Code)
  • Browser + Google Classroom per materiali e quiz
  • Diagrams.net per diagrammi UML delle classi
📖 Materiali
  • Slide della lezione con esempi di codice
  • Scheda con diagramma UML della gerarchia da implementare
  • Libro di testo: capitolo sull'ereditarietà
🌐 Digitale
  • Video introduttivo (2-3 min) sull'ereditarietà OOP
  • Quiz Google Forms
  • IA per generare varianti di esercizi e debugging assistito

Riflessioni

💪 Punti di forza
  • Approccio laboratoriale e pair programming favoriscono l'apprendimento attivo
  • L'uso di esempi concreti (gerarchia veicoli) rende il concetto astratto immediatamente applicabile
⚠️ Possibili criticità
  • Divario tra studenti con diversi livelli di padronanza del C++
  • La compilazione di codice con errori deliberati può generare frustrazione nei più fragili
🔄 Strategie di miglioramento
  • Predisporre materiali di scaffolding differenziati per livello
  • Prevedere snippet di codice parzialmente completati per gli studenti in difficoltà
🚀 Sviluppi futuri
  • Estensione al polimorfismo e alle classi astratte
  • Introduzione dell'ereditarietà multipla e dei design pattern fondamentali
Grazie dell'attenzione

"Condividere la conoscenza è l'atto più fondamentale dell'amicizia. Perché è un modo in cui puoi dare qualcosa senza perdere nulla."

— Richard M. Stallman

Fatto con da Antonio Trabalza