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

  • Upload
    connor

  • View
    48

  • Download
    1

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

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

Fondamenti di Informatica 2Ingegneria Informatica

Docente: Giovanni Macchiaa.a. 2002-2003

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

TemplateTemplate

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.

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

Template: Funzioni templateTemplate: Funzioni templateSe le operazioni compiute su ogni tipo di dato sono le stesse, si utilizzano le funzioni template. 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.

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

Template: Funzioni templateTemplate: Funzioni templateEs: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);

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

Template: Funzioni templateTemplate: Funzioni templateQuando 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.

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

Template: Classi templateTemplate: Classi templateLe 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.

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

Template: Classi templateTemplate: Classi templatePer 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;

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

Template: Classi templateTemplate: Classi templateE’ 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 interiqueue <char> b;

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

Template: Classi templateTemplate: Classi templateE’ 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;