Controllo degli accessi



Documenti analoghi
Il linguaggio Java. Concetti base. I packages

Oggetti Lezione 3. aspetti generali e definizione di classi I

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Parola chiave extends

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Java: Compilatore e Interprete

Modulo 4: Ereditarietà, interfacce e clonazione

Esercitazione n 4. Obiettivi

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione a Oggetti Lezione 10. Ereditarieta

Test di unità con JUnit4

Esercizi della lezione 5 di Java

Algoritmi di Ricerca. Esempi di programmi Java

UML Diagrammi delle classi. UML Diagramma classi 1

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

GESTIONE INFORMATICA DEI DATI AZIENDALI

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Object Oriented Software Design

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione a Oggetti Modulo B

SAPIENZA Università di Roma, Facoltà di Ingegneria

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

Abstract Data Type (ADT)

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

13. Chain of Responsibility

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Object Oriented Programming

Java Virtual Machine

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Realizzazione di una classe con un associazione

Programmazione ad Oggetti: JAVA. Esercitazione

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Inizializzazione, Assegnamento e Distruzione di Classi

Un esercizio d esame. Flavio De Paoli

Programmazione 1 A.A. 2015/2016

Concetto di Funzione e Procedura METODI in Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Esempi di esercizi d esame

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Telematica II 17. Esercitazione/Laboratorio 6

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Le variabili. Olga Scotti

Il tipo di dato astratto Pila

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

costruttori e distruttori

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Scope e visibilità per classi

Prova d Esame Compito B

Esempio: il conto bancario

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Definizione di classi con array di oggetti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Programmazione Orientata agli Oggetti in Linguaggio Java

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

GESTIONE DEI PROCESSI

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Java threads (2) Programmazione Concorrente

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Introduzione a Classi e Oggetti

Laboratorio di programmazione

Prova d Esame Compito A

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Corso di Informatica

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Tipi astratti di dato e loro realizzazione in Java

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Programmazione in Java Parte I: Fondamenti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

public int gety() { return y;

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Architettura MVC-2: i JavaBeans

Algebra di Boole ed Elementi di Logica

Visibilità dei Membri di una Classe

Transcript:

Il linguaggio Java Il controllo degli accessi alle classi ed ai membri di una classe Controllo degli accessi Accesso alle classi

Accesso alle classi package package miopackage; public public class class A {{ B b = new new B(); B(); class class B {{...... unità di compilazione package package miopackage; public public class class C {{ B b = new new B(); B(); class class D {{ C c c = new new C(); C(); A.class B.class D.class C.class miopackage TIGA 3 Accesso alle classi Accesso pubblico. Il modificatore di accesso public specifica che la classe è accessibile da qualunque parte del programma Accesso a livello di package. L assenza del modificatore di accesso public specifica che la classe è accessibile solo all interno del package In questo caso è buona norma definire private i campi membro dare alle funzioni membro l accessibilità a livello di package Non è possibile dichiarare private o protected una classe TIGA 4

Controllo degli accessi Accesso ai membri di una classe Motivazioni Incapsulamento L utilizzatore di una classe non deve vedere come la classe è stata implementata interferire con l implementazione della classe Sicurezza Alcuni dati servono per l implementazione della classe ma non devono essere accessibili all utilizzatore (ad oggetti di altre classi) TIGA 6

Livelli e specificatori di accesso Quattro livelli di accesso membri di una classe privato pubblico protetto pacchetto L accesso ai membri di una classe è controllato attraverso gli specificatori di accesso private public protected nessun specificatore TIGA 7 La tabella di accesso LIVELLO DI ACCESSO specificatore classe sottoclasse package pubblico private X protected X X* X public X X X X nessuno X X TIGA 8

Livello di accesso pubblico e privato Livello di accesso pubblico (parola chiave public) Un membro pubblico non è un segreto per nessuno Un membro pubblico di una classe è accessibile da qualunque classe in qualunque pacchetto Livello di accesso privato (parola chiave private) Un membro privato è un segreto personale Un membro privato è accessibile solo dalla classe nel quale è definito (restrizione a livello di classe) Due oggetti istanza della stessa classe, hanno accesso l uno alle variabili private dell altro TIGA 9 Accesso privato: accesso da altri tipi class A { private int varpriv; private void metodoprivato() { System.out.println( A: Metodo privato ); class B { void metodoaccesso() { A a = new A(); a.varpriv = 1; a.metodoprivato(); // illegale // illegale I membri privati di un oggetto non possono essere acceduti da oggetti di tipo diverso TIGA 10

Accesso privato: accesso dallo stesso tipo class A { private int varpriv; boolean isequalto(a altro) { if (this.varpriv == altro.varpriv) return true; else return false; I membri privati di un oggetto possono essere acceduti da oggetti dello stesso tipo TIGA 11 Livello di accesso protetto Il livello di accesso protetto (parola chiave protected) Un membro protetto è un segreto di famiglia noto anche ad alcuni amici fidati Un membro protetto è accessibile dalla classe in cui è definito, dalle sue sottoclassi (*) e da tutte le classi che appartengono allo stesso package (*) Con una importante limitazione. Vedere più avanti. TIGA 12

Livello protetto: accesso dal pacchetto Un membro protetto definito in una classe è accessibile da tutte le classi che appartengono allo stesso package della classe in cui il membro è definito public class A { protected int pv; protected void pm() { System.out.println( metodo protetto ); public class B { void accesso() { A a = new A(); a.pv = 1; // legale a.pm(); // legale TIGA 13 Livello protetto: accesso da sottoclasse Un membro protetto di una classe è accessibile da tutte le sottoclassi (anche appartenenti a diversi pacchetti) ma una sottoclasse può accedere solo al membro protetto dei suoi oggetti o di quelli delle sue sottoclassi public class A { protected int pva; protected void pm() { System.out.println( metodo protetto ); package Nero; import Bianco; public class C extend A { void accesso(a a, C c) { a.pva = 1; // illegale a.pm(); // illegale c.pva = 1; // legale c.pm(); // legale TIGA 14

Livello protetto: accesso da sottoclasse import Nero; public class A { protected int pva; protected void pm() { C c = new C(); c.pva = 10; // legale c.pvc = 1; // illegale package Nero; import Bianco; public class C extend A { protected int pvc; void accesso(a a, C c) { a.pva = 1; // illegale a.pm(); // illegale c.pva = 1; // legale c.pm(); // legale TIGA 15 Livello pacchetto Un membro di una classe senza specificatori di accesso è accessibile da tutte le classi che appartengono allo stesso pacchetto della classe Un membro senza specificatori è un segreto noto ad un ristretto gruppo di amici fidati ma non alla propria famiglia public class A { int packv; void packm() { System.out.println( metodo protetto ); public class B { void accesso() { A a = new A(); a.packv = 1; // ok a.packm(); // ok TIGA 16