Visibilità dei Membri di una Classe

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Visibilità dei Membri di una Classe"

Transcript

1 Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce un proprio scope locale, contenuto nello scope della classe All interno dello scope della classe è possibile accedere ai membri senza utilizzare l operatore di selezione Per accedere ai membri di una classe dall esterno dello scope si deve usare l operatore di selezione /02 1

2 Dichiarazione dei Membri Le dichiarazioni contenute nella definizione della classe introducono i nomi dei membri nello scope della classe Nella definizione della classe si può far riferimento solo a membri che sono stati precedentemente dichiarati l ordine di dichiarazione dei membri è cruciale class String { typedef int index_type; char& operator[](index_type); // OK const char& operator[](ind); // ERRORE typedef int ind; 2 Metodi Inline Gli attributi utilizzati all interno di un metodo inline possono essere dichiarati anche dopo la definizione del metodo Il corpo del metodo viene esaminato dopo aver letto tutta la definizione della classe class String { typedef int index_type; char& operator[](index_type elem) { return _string[elem]; } private: char* _string; /02 2

3 Parametri per Default Le variabili utilizzate per inizializzare per default i parametri di un metodo sono esaminate dopo la definizione della funzione class Video { typedef int index_type; Video& pulisci(char = sfondo); private: static const char sfondo = ; 4 Definizione di Metodi I metodi sono definiti al di fuori della definizione della classe il nome del metodo deve essere qualificato con l operatore di scope La porzione di codice dal nome della funzione alla fine del corpo della funzione appartiene allo scope della classe È possibile accedere ai membri della classe senza l operatore di selezione inline char Video::dammi(index_type elem) { return _string[elem]; } /02 3

4 Risoluzione di un nome in Un nome usato nella definizione della classe viene risolto nel seguente modo Controlla i nomi dei membri della classe dichiarati fino a questo punto Verifica gli scope dei namespace in cui è contenuta la definizione della classe 6 Risoluzione di un nome in Un nome usato nella definizione di un metodo della classe viene risolto nel seguente modo controlla i nomi dichiarati nello scope locale del metodo controlla i nomi dei membri della classe verifica gli scope dei namespace in cui è contenuta la definizione della classe /02 4

5 Risoluzione di un nome in Nell esempio quale valore viene stampato? int altezza = 0; class Foo { Foo(long altezza) { altezza = 10; cout << altezza; } private: short altezza; Foo F(3L); La risposta è 10 8 Risoluzione di un nome in Nell esempio quale valore viene stampato? int altezza; class Foo { Foo(long altezza = 100) { this->altezza = 10; } void f(); private: short altezza; void Foo::f() { int altezza = 100; cout << Foo::altezza << endl; } Foo F; F.f(); La risposta è /02 5

6 Membri static di una Classe 1 Un membro dato static opera come variabile globale per tutti gli oggetti della classe esiste un unica copia della variabile e tutti gli oggetti della classe fanno riferimento a quest unica copia il membro static appartiene allo scope della classe può essere reso privato 10 Membri static di una Classe 2 Si definisce un membro dato static facendo precedere la definizione dalla parola static class Foo { static int cont;... } S, T; S.cont = 0; cout << T.cont << endl; // stampa /02 6

7 A Cosa Servono i Membri static Contatore del numero di oggetti della classe esistenti nel programma Informazione comune a tutti gli oggetti che può essere inizializzata una sola volta Puntatore ad una funzione di recupero da errori Puntatore a risorse condivise da tutti gli oggetti della classe 12 Membri static di una Classe Un membro dato static viene creato al momento della definizione della classe esiste anche se non è stata definita nessuna variabile può essere referenziato sia tramite l operatore di selezione che tramite l operatore di visibilità Foo::cont = 10; I membri static possono essere usati per inizializzare per default parametri di un metodo Un membro static può essere dello stesso tipo della classe di appartenenza /02 7

8 Definizione di Membri static I membri dato static devono essere inizializzati all esterno della definizione della classe L inizializzazione va inserita nel file di implementazione class ContoCorrente { ContoCorrente(double t, string& x); string intesta(); private: static double _tassointeresse; double _totale; string _intestatario; ContoCorrente::tassoInteresse = 0.05; Membri static costanti di tipo integrale possono essere inizializzati esplicitamente dentro la definizione della classe 14 Metodi static Un metodo static viene utilizzato per accedere ai dati static della classe Un metodo static può essere invocato senza utilizzare l operatore di selezione Possibile accedere ai dati static anche se nessun oggetto della classe è stato creato class ContoCorrente { static double interesse() { return _tassointeresse; } private: static double _tassointeresse; } ContoCorrente::interesse(); /02 8

9 Metodi static I metodi static non hanno this come parametro Non possono accedere implicitamente agli attributi della classe Possono accedere ai membri non static della classe solo utilizzando l operatore di selezione Non possono essere definiti sicuri 16 Union 1 La union è un tipo particolare di classe Il concetto di union del C traslato in C++ Tutti i membri dato della union sono memorizzati sulla stessa area di memoria La memoria assegnata ad una union è sufficiente a contenere il più grande dei suoi membri I membri di una union possono essere dichiarati privati, pubblici o protetti /02 9

10 Union 2 La union è un tipo particolare di classe All interno della union possono essere definiti metodi La union non può contenere al suo interno un membro statico un riferimento un oggetto di una classe che definisca un costruttore, un distruttore o un operatore di assegnamento per copia Si usa la parola chiave union invece di class 18 Esempio union ProvaVideo { Video s; // ERRORE Video ha costruttore Video *s; static int is; // ERRORE int &rfi; // ERRORE } /02 10

11 Union In ogni istante solo un membro della union contiene un valore L ultimo membro a cui è stato assegnato un valore Ogni scrittura distrugge il valore precedente Bisogna stare attenti a leggere il valore della union attraverso una variabile del tipo esatto 20 Classi Annidate È possibile definire una classe in un qualsiasi scope Una classe definita nello scope di un altra classe è detta annidata La classe annidata è visibile solo nello scope in cui è definita La definizione di una classe annidata può essere privata o pubblica (da evitare) Se è privata possono definire oggetti del tipo della classe annidata solo i metodi della classe contenitore ed i suoi amici Una classe dovrebbe essere annidata soltanto se si è sicuri che gli oggetti della classe contenitore saranno gli unici utenti della classe /02 11

12 Classi Annidate I metodi della classe contenitore non hanno nessun privilegio di accesso sui membri della classe annidata Possono accedere ai membri privati solo se sono amici I metodi della classe annidata non possono accedere ai membri non statici della classe contenitore (nemmeno ai pubblici) Per farlo devono avere un puntatore o una variabile che referenziano l oggetto contenitore 22 Esempio Classi Annidate class Nodo { int deg = 0; class Albero { class Nodo { Nodo* left, *right; Nodo() { left = right = 0; } Nodo *albero; // si riferisce alla classe interna } T; cout << T.(albero->deg) << endl; // ERRORE /02 12

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI di Luca Carnini Tesina presentata per la discussione del diploma di laurea in Ingegneria informatica Politecnico di Milano sede

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un

Dettagli

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

Dettagli

Struttura di un programma Java. Package. Uso dei package

Struttura di un programma Java. Package. Uso dei package Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Struttura di un programma

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Dipartimento del Tesoro

Dipartimento del Tesoro Dipartimento del Tesoro POWER POINT AVANZATO Indice 1 PROGETTAZIONE DELL ASPETTO...3 1.2 VISUALIZZARE GLI SCHEMI...4 1.3 CONTROLLARE L ASPETTO DELLE DIAPOSITIVE CON GLI SCHEMI...5 1.4 SALVARE UN MODELLO...6

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

2. GESTIONE DOCUMENTI NON SBN

2. GESTIONE DOCUMENTI NON SBN Istituto centrale per il catalogo unico delle biblioteche italiane e per le informazioni bibliografiche APPLICATIVO SBN-UNIX IN ARCHITETTURA CLIENT/SERVER 2. GESTIONE DOCUMENTI NON SBN Manuale d uso (Versione

Dettagli

CREAZIONE E INVIO OFFERTA DI APPALTO DA FORNITORE

CREAZIONE E INVIO OFFERTA DI APPALTO DA FORNITORE CREAZIONE E INVIO OFFERTA DI APPALTO DA FORNITORE 1 SOMMARIO 1 OBIETTIVI DEL DOCUMENTO...3 2 OFFERTA DEL FORNITORE...4 2.1 LOG ON...4 2.2 PAGINA INIZIALE...4 2.3 CREAZIONE OFFERTA...6 2.4 ACCESSO AL DOCUMENTALE...8

Dettagli

CATALOGAZIONE IN SOL. A cura del Gruppo formatori per la catalogazione

CATALOGAZIONE IN SOL. A cura del Gruppo formatori per la catalogazione CATALOGAZIONE IN SOL A cura del Gruppo formatori per la catalogazione SOL Sebina Open Library NOTE INTRODUTTIVE Interfaccia WEB (passando per la rete UniTS) Piena condivisione con Indice 2 senza dover

Dettagli

UNIVERSITA DEGLI STUDI DI TORINO WORD

UNIVERSITA DEGLI STUDI DI TORINO WORD WORD SOMMARIO 1. Muoversi nel testo... 1 2. Taglia, copia e incolla... 2 3. Aprire, salvare e chiudere... 3 4. Trovare e sostituire... 4 5. Visualizzare in modi diversi... 6 6. Formattare e incolonnare...

Dettagli

Schema Tipologia a Stella

Schema Tipologia a Stella Cos'e' esattamente una rete! Una LAN (Local Area Network) è un insieme di dispositivi informatici collegati fra loro, che utilizzano un linguaggio che consente a ciascuno di essi di scambiare informazioni.

Dettagli

Il Tutorial per BlueJ

Il Tutorial per BlueJ Il Tutorial per BlueJ Versione 1.4 per BlueJ Versione 1.2.x Michael Kölling Mærsk Institute University of Southern Denmark Tradotto in italiano da Vito Di Viggiano, Orlando Demauro, Gianluca Leo, Gianpaolo

Dettagli

Istruzioni operative per la gestione delle Non Conformità e delle Azioni Correttive. https://nonconf.unife.it/

Istruzioni operative per la gestione delle Non Conformità e delle Azioni Correttive. https://nonconf.unife.it/ Istruzioni operative per la gestione delle Non Conformità e delle Azioni Correttive https://nonconf.unife.it/ Registrazione della Non Conformità (NC) Accesso di tipo 1 Addetto Registrazione della Non Conformità

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

L apposizione di firme e informazioni su documenti firmati

L apposizione di firme e informazioni su documenti firmati L apposizione di firme e informazioni su documenti firmati Il presente documento si pone l obiettivo di chiarire alcuni aspetti generali dei formati di firma CAdES (file con estensione p7m) e PAdES (file

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Figura 1 - Schermata principale di Login

Figura 1 - Schermata principale di Login MONITOR ON LINE Infracom Italia ha realizzato uno strumento a disposizione dei Clienti che permette a questi di avere sotto controllo in maniera semplice e veloce tutti i dati relativi alla spesa del traffico

Dettagli

TeamViewer 7 Manuale Controllo remoto

TeamViewer 7 Manuale Controllo remoto TeamViewer 7 Manuale Controllo remoto TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni sul

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Fondamenti della Tecnologia ad Oggetti

Fondamenti della Tecnologia ad Oggetti Fondamenti della Tecnologia ad Oggetti Serafino Cicerone Dipartimento di Ingegneria Elettrica Università degli Studi dell Aquila I-67040 Monteluco di Roio, L Aquila, Italy cicerone@ing.univaq.it Sommario

Dettagli