1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Unified Modeling Language
Recupero debito quarto anno Primo incontro
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Programmazione object oriented in C++
Type Checking (1° parte)
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Le gerarchie di tipi.
Semantica Operazionale di un frammento di Java: lo stato
Generalità Linguaggio e Macchina Astratta
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Dispatch.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio Java
Derivazione tra classi
Overriding.
Oggetti e dati primitivi
Gerarchia di classi Java
Approfondimento delle classi
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
memoria gestita staticamente:
Java base IV: Java e la programmazione O.O.
Le funzioni a tempo di esecuzione
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Università degli Studi di Napoli Parthenope programmazione III.
Oggetti in C# Lezione 5 Polimorfismo I Andrea Zoccheddu.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Astrazione di dati Dati Astratti: cosa e perchè Dati Astratti: due meccanismi differenti Dati Astratti: due meccanismi differenti Astrazione e incapsulamento.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
estensione (con piccole varianti) di quella in
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in FONDAMENTI DI PROGRAMMAZIONE.
Ese 1 (del 31 Marzo 2004). Il compilatore Non esegue il programma, non guarda i valori che possono assumere di volta in volta le variabili, non fa assunzioni.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Metodologie di Programmazione Esercizi sulla semantica di Java.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Espressioni 4 dato che non abbiamo previsto inizializzazioni per le variabili (statiche e di istanza) all’interno delle classi, le espressioni possono.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
28/12/2001package 1 Package Pacchetti e interfacce.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Transcript della presentazione:

1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione

2 Struttura di Programma (Java) Classi –Struttura stato degli oggetti –Operazioni sugli oggetti –Regole di accesso e visibilità –(in Java) anche interface Package –Collezione di classi per: Incapsulare (localizzare e condividere classi) Definire un nuovo spazio di nomi

3 Gerarchia di classi: overloading, overriding Extends: Class C” extends C: C > C” Ereditarietà (singola): C > C” C” eredita l’ambiente di C Eccetto: overrinding overriding e overloading: due concetti molto diversi

4 naming e visibilità Naming (e ambienti) tutti gli usi di nomi all’interno dei metodi sono controllati per verificarne l’esistenza in accordo con le regole di visibilità quelle che abbiamo “implementato” nei vari meccanismi di naming con alcune restrizioni che dipendono dal linguaggio (modificatori di Java) Visibilità (spazio dei nomi): modificatori

5 Visibilità: I modificatori di Java Classi Variabili-Metodi- Classi Default Package in cui occorrePackage in cui occorre la classe Public Ovunque Private Non previstoClasse in cui occorre Protected Non previstoPackage in cui occorre la classe + sottoclassi Final Altri significati (non ha sottoclassi) Non modificabili - non overriding Static Altri significati (non ha superclassi) Altri significati (membri della classe)

6 Analisi ed Esecuzione Esecuzione di un programma –Un esecutore che operi in accordo alle regole!! Realizzato –Mediante: Interprete o Compilatore »Una combinazione »Macchina Virtuale –Utilizzando: Macchine di linguaggi di livello più basso prima analisi del programma per: –Scoprire e rimuovere banali errori sintattici –Scoprire e rimuovere errori di uso di nomi ed espressioni

7 Analisi Dipende dal linguaggio In Java: –Controllo dei nomi (Path Id): Tutti i nomi usati siano definiti –Controllo dei tipi: Tutte le espressioni abbiano tipo compatibile con l’uso dell’espressione Type checking statico

8 Analisi in Java Il compilatore C ostruisce delle tabelle R che corrispondono a: A: Ambiente delle classi (con Frames di statiche e istanza, Ambienti metodi statitici e di istanza) Hc: Frames = template per oggetti di classe C (lo troviamo in A stesso) S: record di attivazione = template invocazioni nello stack La tabella A come  (classi) ma contiene tipi invece di valori: –Gli identificatori hanno un tipo (primitivo o nome di classe) –Tipo apparente: definito dalla dichiarazione »R(Id)=T se T Id (variabile) »R(Id)=T’->T se T Id(T’ x){…} (metodo)

9 Analisi dei metodi Ogni metodo –T f (T’ i){…} invocazione fittizia è analizzato, in R, separatamente valutando una invocazione fittizia f(i) in un record: : se f è statico di classe c : se f è di istanza dell’oggetto l di classe c trasmissione dei parametriLa trasmissione dei parametri della fittizia f(i): Aggiunge al frame del record corpoLa valutazione del corpo calcola in accordo alle regole: »Accesso oggetto classe C: template per oggetti di Hc »Accesso parametro di metodo: template del record S »Accesso locale metodo: template frame locali di S l’invocazione fittizia f(i) ha tipo T’’’<T;

10 Analisi dei metodi -continua Tutte le strutture ricevono un tipo: Espressioni: –Path Id –Path Id: R(Path Id); –new C() –new C(): C stesso; –Path Id(e a ) –Path Id(e a ): T se 1) R(Path Id)=T’->T, 2) e a ha tipo T”<T’, e1 op e2 –Invocazioni di e1 op e2 primitivi: T se op ha tipo T1xT2 ->T ed e1 ha tipo T1”<T1 ed e2 ha tipo T2”<T2 Comandi: x = e x = e: V se x ha tipo T, ed e ha tipo T’ tale che T’<T … C1;C C1;C: V se C1 ha tipo V e C ha tipo V Programma: V se tutte le strutture hanno tipo definito

11 Modificabilità e Condivisione Gli oggetti di una classe possono essere: Modificabili : hanno operazioni che modificano valori del loro stato Non modificabili: esempio, le stringhe Un oggetto è condiviso se può essere raggiunto da due o più entità se è modificabile, le modifiche si riflettono su tutte le entità Effetti laterali (all’esterno) in un metodo attraverso i parametri (in Java solo per valori di tipo oggetto) può modificare variabili di istanza e variabili (statiche)

12 Java e affidabilità Affidabilità = Protezione da errori a tempo di esecuzione è garantita in Java da : controllo statico dei nomi a run time non è possibile tentare di accedere un nome non definito controllo statico dei tipi a run time non si possono verificare errori di tipo (ma...) la presenza del garbage collector (run time) non è possibile tentare di accedere oggetti non più presenti nella heap sollevamento di eccezioni (run time) controllo sugli indici per gli arrays accesso a puntatori ad oggetti vuoti (null) conversioni forzate di tipo (casting)