appunti3s:possibili_approfondimenti
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | appunti3s:possibili_approfondimenti [2020/06/08 22:19] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ======Possibili approfondimenti====== | ||
+ | Argomenti non indispensabili in questo corso: | ||
+ | * Ereditarietà | ||
+ | * Enumerazioni | ||
+ | * Static | ||
+ | * Altro | ||
+ | ===== Ereditarietà2 ===== | ||
+ | - riutilizzo dei distruttori della classe base | ||
+ | - riutilizzo dei puntatori della classe base | ||
+ | - ereditarietà semplice (private) | ||
+ | - promozione del tipo di accesso da private a public | ||
+ | - ereditarietà multipla | ||
+ | |||
+ | - early binding vs late binding (static binding) | ||
+ | - classi base astratte | ||
+ | - concetto di overloading per funzioni (operatori) con firme diverse | ||
+ | - concetto di overriding (diverso da overloading) per le funzioni ereditate | ||
+ | - ? | ||
+ | - ? | ||
+ | - ereditarietà virtuale (classi virtuali) | ||
+ | |||
+ | |||
+ | =====Enumerazione (enumeration)===== | ||
+ | |||
+ | Le enumerazioni sono tipi di dato definiti dall' | ||
+ | |||
+ | Come dice la parola, le enumerazioni sono utili quando si vuole rappresentare degli oggetti a cui si vuole attribuire in un certo ordine di grandezza. | ||
+ | Le enumerazioni sono quindi costanti numeriche intere che costituiscono un nuovo tipo di dato (diverso da //int//). int è più ampio e contiene le enumerazioni... | ||
+ | |||
+ | ====Definizione==== | ||
+ | |||
+ | Nel seguente esempio viene definita una enumerazione chiama Mese, per rappresentare dodici nuove costanti che rappresentano i mesi dell' | ||
+ | Si deve specificare il valore del primo numero, solo se è diverso da zero. Gli altri numeri si incrementano automaticamente. | ||
+ | < | ||
+ | enum Mese { | ||
+ | | ||
+ | }; // Mese diventa un nuovo tipo di dato. | ||
+ | </ | ||
+ | < | ||
+ | enum Colore { | ||
+ | | ||
+ | }; | ||
+ | </ | ||
+ | ====Utilizzo ==== | ||
+ | < | ||
+ | Mese nuovoMese=apr; | ||
+ | </ | ||
+ | < | ||
+ | Mese nuovoMese=4; | ||
+ | // una variabile tipo Mese può valere solo uno degli elementi definiti in Mese | ||
+ | </ | ||
+ | < | ||
+ | nuovoMese=Mese(4); | ||
+ | </ | ||
+ | < | ||
+ | int numero=nuovoMese; | ||
+ | </ | ||
+ | < | ||
+ | | ||
+ | nuovoColore=apr; | ||
+ | nuovoColore=rosso; | ||
+ | </ | ||
+ | |||
+ | ===== Static ===== | ||
+ | L' | ||
+ | |||
+ | Nel linguaggio C++ possono essere static: | ||
+ | - le variabili locali delle funzioni | ||
+ | - i dati membri delle classi | ||
+ | - le funzioni membro delle classi | ||
+ | |||
+ | - Nel primo caso le variabili locali static sono create solo la prima volta che si incontra la loro dichiarazione e vengono distrutte alla chiusura del programma. Questo comportamento differisce da quello delle tradizionali variabili locali (automatiche). | ||
+ | - Nel secondo caso i dati membri static sono creati all' | ||
+ | - Nel terzo caso le funzioni membro static sono dichiarate tali SE e SOLO SE __non__ accedono ai dati non static. | ||
+ | |||
+ | In un diagramma di classe (UML), gli attributi static sono sottolineati. | ||
+ | |||
+ | |||
+ | ===== altro ===== | ||
+ | - funzioni inline | ||
+ | - external | ||
+ | - costruttore explicit (conversioni implicite a pag 322 stroupstrup) | ||
+ | - oggetti, membri e dati statici | ||
+ | - costruttore di oggetti anonimi | ||
+ | - forward class references (o forward declaration??? | ||
+ | |||
+ | Esercizio | ||
+ | |||
+ | Provare a scrivere un esempio di programma che legge separatamente nome e cognome e poi mette questi dati all' | ||
+ | Provare a scrivere l' | ||
appunti3s/possibili_approfondimenti.txt · Last modified: 2020/06/08 22:19 by 127.0.0.1