1 / 9

Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003

Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003. Template. Una delle problematiche più attuali del software è il riutilizzo del codice in altri contesti.

connor
Download Presentation

Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fondamenti di Informatica 2Ingegneria InformaticaDocente: Giovanni Macchiaa.a. 2002-2003

  2. Template Una delle problematiche più attuali del software è il riutilizzo del codice in altri contesti. La possibilità del riuso del software comporta una notevole economia a livello di produzione, consentendo una immissione anticipata sul mercato del prodotto software. Il C++ favorisce il riuso del software tramite lo strumento dei template. I template consentono di creare delle funzioni template e delle classi template.

  3. Template: Funzioni template Se le operazioni compiute su ogni tipo di dato sono le stesse, si utilizzano le funzionitemplate. Una funzione template prende la forma generale con la parola chiave template: template <class Tipo1, class Tipo2, ..> tipo_ritorno funzione (lista_parametri) {corpo della funzione} Tipo1, Tipo2,… sono dei tipi che possono essere usati dalla funzione ed essere impiegati all’interno della funzione.

  4. Template: Funzioni template Es: template <class X> void swap(X &a, X&b) { X tmp; tmp =a; a = b; b= tmp; } int a,b; float c,d; swap (a,b); swap (c,d);

  5. Template: Funzioni template Quando il compilatore crea una versione specifica di una funzione template, si parla di creazione di specializzazione, chiamata anche funzione generata. L’atto di generare una funzione viene definito con il termine istanziare. Una funzione generata è quindi un’istanza specifica di una funzione template. E’ possibile usare parametri standard com parametri di tipo generico in una funzione template. E’ possibile effettuare l’overloading delle funzioni template.

  6. Template: Classi template Le classi template consentono di definire delle classi che sfruttano una logica che può essere generalizzata. Una classe template prende la forma generale: template <class Tipo1, class Tipo2, ..> class nome_classe {corpo della classe} Tipo1, Tipo2,… sono dei tipi che possono essere usati dalla classe ed essere impiagati all’interno della classe.

  7. Template: Classi template Per istanziare un oggetto di classe template, si usa la forma nome_classe <Tipo1, Tipo2...> nome_oggetto; Es.: template <class X> class queue { X q[100]; int r,s; public: queue ( ) ; void qput(X i); X qget ( ); } queue <int> a; queue <char> b;

  8. Template: Classi template E’ possibile avere argomenti di default ad uno o più tipi generici. Es.: template <class X=int> class queue { X q[100]; int r,s; public: queue ( ) ; void qput(X i); X qget ( ); } queue <> a; // viene creata una coda di interi queue <char> b;

  9. Template: Classi template E’ possibile usare argomenti non di tipo nella specifica di template. template <class X, int SIZE=20> class queue { X q[SIZE]; int r,s; public: queue ( ) ; void qput(X i); X qget ( ); } queue <int,10> a; queue <char,100> b; queue<float> c;

More Related