Introduzione Le due componenti principali dei programmi



Scaricare 584 b.
Pagina5/9
13.12.2017
Dimensione del file584 b.
1   2   3   4   5   6   7   8   9

// sempre “by-reference”

  • int id=100;

  • hbook1_(id, title, ……) // OK!



  • Parametri del programma

    • Dotando main() di una lista di argomenti, è possibile avere accesso ai parametri passati dalla command line:

    • argc è il numero di parametri passati dalla command line (sempre almeno 1, il nome del programma) mentre il vettore di stringhe argv contiene ogni singolo parametro



    Parametri del programma (2)

    • Lanciato con il comando

      • prompt> mytest questo e un test
    • il programma produrra` il seguente output:

      • argc e` : 5
      • il nome dell’eseguibile e`/user/andrea/myprogram
      • Argomento #1 = questo
      • Argomento #2 = e
      • Argomento #3 = un
      • Argomento #4 = test


    Organizzazione dei files

    • Normalmente, le dichiarazioni delle interfacce e le specifiche sono separate dall’implementazione

      • header files (.h o .hh)
        • inclusi nei file sorgente utilizzando direttive del precompilatore
        • non contengono codice eseguibile (con l’eccezione delle definizioni delle funzioni inline)
        • non devono essere inclusi piu` di una volta, per evitare problemi con il linker


    Organizzazione dei files (2)

      • Files sorgente (.C,.cxx,.cpp,.cc)
        • contengono l’implementazione di funzioni e metodi
        • codice eseguibile
        • includono gli header files utilizzando le direttive del preprocessore
        • vengono compilati
      • Funzioni inline (.icc)
        • La definizione di una funzione inline deve essere visibile là dove viene usata.
        • Normalmente implementate negli header files o in files separati (con estensione .icc) che devono essere inclusi nel files sorgente che ne facciano uso


    C++ e Object Orientation

    • Definizione di nuovi tipi (oltre a int, float, double) come:

        • numeri complessi,
        • vettori,
        • matrici, . . .
    • ma anche:

    • Gli oggetti permettono di modellare una problema che rappresenti la realtà



    …C++ e Object Orientation

    • Object Orientation implementata in C++ attraverso il concetto di classe:

    • I dati privati (o attributi) di una classe definiscono lo stato dell’oggetto

    • Le funzioni (o metodi) di una classe implementano la risposta ai messaggi



    Una classe C++



    Classe Vector2D

    • Un esempio: un vettore bidimensionale



    Interfaccia e implementazione

    • Gli attributi privati non sono accessibili al di fuori della classe

    • I metodi pubblici sono gli unici visibili



    Costruttori e distruttori

    • Un costruttore è un metodo il cui nome è quello della classe a cui appartiene

    • Lo scopo di un costruttore è quello di costruire oggetti del tipo della classe. Questo implica l’inizializzazione degli attributi e, frequentemente, allocazione di memoria dallo heap

    • Un costruttore la cui lista di argomenti è vuota o composta di argomenti di default viene normalmente chiamato costruttore di default



    Costruttori e distruttori (2)

    • Un costruttore del tipo che ha come argomento un riferimento ad un oggetto della stessa classe viene chiamato copy constructor

    • Il copy constructor viene normalmente utilizzato:

      • quando un oggetto è inizializzato per assegnazione
      • quando un oggetto è passato come argomento ad una funzione
      • quando un oggetto è ritornato da una funzione
    • Se non viene fornito esplicitamente dall’utente, il compilatore ne genererà uno automaticamente



    Costruttori e distruttori (3)

    • Gli attributi di una classe possono essere inizializzati nel costruttore per mezzo di una lista di inizializzatori, che precede il corpo della funzione

    • Quando uno degli attributi è esso stesso una classe, il costruttore appropriato viene scelto sulla base dei parametri forniti nell’inizializzazione

    • E` obbligatorio inizializzare gli attributi (non statici) che siano o riferimenti o const



    Costruttori e distruttori (4)

    • Il distruttore è un metodo il cui nome è quello della classe a cui appartiene preceduto da una tilde (~)

    • Il distruttore viene chiamato automaticamente quando un oggetto sta per essere distrutto (sia perchè delete è stato invocato sia perchè l’oggetto è finito fuori scope



    1   2   3   4   5   6   7   8   9


    ©astratto.info 2017
    invia messaggio

        Pagina principale