Crea sito

Spieghiamo le differenze tra C e C++

 



Spieghiamo un po’ il linguaggio C e la differenza con il linguaggio C++
Il C non prevede numerose istruzioni ed è molto flessibile. Questo deve essere processato da un compilatore che legge l’elenco d’istruzioni presenti in un file chiamato codice sorgente che ha l’estensione .c e le traduce nel linguaggio del processore. La traduzione da un codice ad un altro è chiamato compilazione.
Dovrete essere molto precisi nello scrivere le istruzioni seguendo regole precise, altrimenti otterrete degli errori di compilazione.

Le regole basilari sono:

  • tutte le istruzioni devono concludersi con un punto e virgola (;);
  • non sono ammessi errori di carattere, quindi bisogna rispettare le maiuscole e le minuscole;
  • esistono un insieme di parole chiave per poter scrivere i programmi, perché esse sono le basi del linguaggio.

Le parole chiave dette keyword del linguaggio C sono:

  • auto
  • break
  • case
  • char
  • const
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • int
  • long
  • register
  • return
  • short
  • signed
  • sizeof
  • static
  • struct
  • switch
  • typedef
  • union
  • unsigned
  • void
  • volatile
  • while

Questo tipo di istruzioni però, nel tempo hanno dimostrato le sue debolezze, perché le tecniche di programmazione sono cambiate nel tempo a causa delle evoluzioni tecnologiche.
Oggi giorno, con le problematiche evolutive riscontrate con questo tipo di linguaggio, hanno fatto nascere il linguaggio a oggetti semplificando così tali programmi.
La differenza tra il rispetto al C++ è proprio questa;
il C++ è definito linguaggio a oggetti.

Il concetto che sta alla base della programmazione ad oggetti è quello della classe. Una classe C++ rappresenta un tipo di dati astratto che può contenere elementi in stretta relazione tra loro e che condividono gli stessi attributi.
Un oggetto, di conseguenza, è semplicemente un’istanza di una classe.

Vediamo un esempio per chiarire questo concetto:

Consideriamo la classe animale. Essa può essere vista come un contenitore generico di dati i quali identificano le caratteristiche (es: il nome, la specie, ecc.) e le azioni (es: mangiare, dormire, ecc.) comuni a tutti gli animali. In particolare le caratteristiche della classe vengono denominate proprietà o attributi, mentre le azioni sono dette metodi o funzioni membro. Una istanza della classe animale è rappresentata, ad esempio, dall’oggetto cane. Il cane è un animale con delle caratteristiche e delle azioni particolari che specificano in modo univoco le proprietà ed i metodi definiti nella classe animale.

Possiamo riassumere i concetti base della programmazione ad oggetti nel seguente modo:

  • Possibilità di dichiarare una funzione come funzione membro di una determinata classe, che significa che tale funzione appartiene strettamente a quella classe e può agire solo sui membri di quella classe o su quelle da essa derivate.
  • Possibilità di dichiarare i singoli attributi e funzioni membro della classe come:
    private: accessibili solo alle funzioni membro appartenenti alla stessa classe
    protected: accessibili alle funzioni membro appartenenti alla stessa classe e alle classi da questa derivate (vedremo tra poco cosa significa classe derivata).
    public: accessibili da ogni parte del programma entro il campo di validità della classe in oggetto.
  • Possibilità di definire in una stessa classe, dati (attributi e/o funzioni membro) con lo stesso identificatore ma con diverso campo di accessibilità (public, protected, public). Tuttavia, si sconsiglia di usare questo approccio per non rendere difficilmente leggibile il programma.
  • Possibilità di overloading delle funzioni (si veda la definizione data nei capitoli precedenti).
  • Incapsulamento. Con tale termine si definisce la possibilità offerta dal C++ di collegare strettamente i dati contenuti in una classe con le funzioni che la manipolano. L’oggetto, è proprio l’entità logica che deriva dall’incapsulamento.
  • Ereditarietà. E’ la possibilità per un oggetto di acquisire le caratteristiche (attributi e funzioni membro) di un altro oggetto.
  • Polimorfismo. Rappresenta la possibilità di utilizzare uno stesso identificatore per definire dati (attributi) o operazioni (funzioni membro) diverse allo stesso modo di come, per esempio, animali appartenenti ad una stessa classe possono assumere forme diverse in relazioni all’ambiente in cui vivono.