Linguaggio C++

Introduzione

Introduzione ai concetti fondamentali della programmazione orientata agli oggetti in C++, come classe, oggetto e astrazione, e alla modellazione dei problemi attraverso entità che combinano dati e comportamenti.

Durata

20 minuti

Software

Dev-C++ o Visual Studio Code (MinGW)

La Programmazione orientata agli oggetti (in inglese Object-Oriented Programming, spesso abbreviata OOP) è un paradigma di programmazione in cui il software viene organizzato attorno a oggetti, cioè entità che combinano dati e comportamenti.

In pratica, invece di scrivere solo funzioni e procedure, si creano modelli di oggetti che rappresentano elementi del mondo reale o concetti del programma.

Ad esempio, in un programma di gestione degli studenti possiamo definire una classe Studente, che rappresenta il modello con cui descrivere gli studenti all'interno del programma.
La classe definisce alcune caratteristiche (attributi) come:
OOP Classe studente

  • nome
  • cognome
  • matricola
  • media voti

e alcune azioni (metodi) come:
  • visualizzaDati()
  • modificaDati()
  • calcolaMedia()

Gli oggetti sono invece le istanze concrete create a partire dalla classe Studente, che rappresentano i singoli studenti gestiti dal programma. OOP Oggetti studente In questo modo il programma descrive la realtà attraverso oggetti che possiedono dati e comportamenti.

Alla base della OOP vi è il concetto di classe, che può essere considerata come un modello o uno schema da cui vengono creati gli oggetti. Gli oggetti sono quindi istanze di una classe e condividono le stesse proprietà e metodi definiti al suo interno.

Questo paradigma consente di modellare i programmi in modo più vicino alla realtà, rappresentando elementi del mondo reale come oggetti che interagiscono tra loro. Grazie a questa organizzazione, il codice diventa più modulare, riutilizzabile e più facile da mantenere.

La programmazione orientata agli oggetti si basa su alcuni principi fondamentali: incapsulamento, ereditarietà, polimorfismo e astrazione. Questi principi permettono di gestire la complessità dei sistemi software e di sviluppare applicazioni più strutturate.

Oggi la OOP è ampiamente utilizzata in molti linguaggi di programmazione moderni, come Python, Java, C++ e C#, ed è uno dei paradigmi più diffusi nello sviluppo di software e applicazioni.


Il concetto di Astrazione

L’Astrazione è uno dei principi fondamentali della Programmazione orientata agli oggetti. Consiste nel mostrare solo le caratteristiche essenziali di un oggetto, nascondendo i dettagli interni di come queste caratteristiche vengono implementate.
In altre parole, l’astrazione permette di semplificare la complessità di un sistema concentrandosi su cosa fa un oggetto, senza preoccuparsi di come lo fa internamente.
"L'astrazione è il nostro primo atto di design. Prima ancora di scrivere una riga di codice, decidiamo quali pezzi di realtà portare con noi e quali lasciare fuori. È l'arte di semplificare per rendere il software gestibile e comprensibile."

È un processo di selezione dei dati. Quando astrai, ti chiedi: "Quali caratteristiche di questo oggetto sono rilevanti per il mio scopo attuale?". Tutto ciò che non contribuisce alla soluzione del problema specifico viene scartato, che sia un dettaglio tecnico complicato o semplicemente un dato irrilevante.

L'Astrazione come "Filtro dei Dati"

Immagina di dover inserire una Persona nel tuo codice. Una persona reale ha migliaia di dati: DNA, impronte digitali, colore preferito, numero di scarpe, IBAN, allergie, film visto ieri.
A seconda del programma che stai scrivendo, l'astrazione "taglierà" i dati che non servono.

Esempio
Software per un'Anagrafe:
  • Dati utili: Nome, Cognome, Data di nascita, Residenza.
  • Dati inutili (Astratti): Peso, Altezza, Colore degli occhi, Gusto di gelato preferito.

Software per una Clinica Medica:
  • Dati utili: Gruppo sanguigno, Peso, Altezza, Allergie.
  • Dati inutili (Astratti): Titolo di studio, Indirizzo email, Marca dell'auto.

L'astrazione è come una lente d'ingrandimento selettiva:

  • Ingrandisce ciò che serve per risolvere il problema (Dati e Azioni pertinenti).
  • Rende invisibile tutto il resto, non perché non esista, ma perché distrarrebbe il programmatore e renderebbe il sistema inutilmente pesante e confuso.
Astrarre significa ignorare i dettagli non essenziali per concentrarsi su quelli essenziali.




C++, OOP, Classe, Oggetto, Astrazione, B016,