Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Le basi della programmazione a oggetti.
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Università di camerino
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.
29 febbraio 2008 Progettare tipi di dato astratti.
MultiSet, Liste Ordinate
Le gerarchie di tipi.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
Allocazione dinamica della memoria
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Array Struttura numerate di dati. Memorizzare molti dati In informatica cè spesso bisogno di memorizzare ed elaborare un insieme costituito da molti dati.
Oggetti e dati primitivi
Approfondimento delle classi
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sincronizzazione fra thread
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
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 nomi in Java F. Bombi 18 novembre novembre 2003.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Programmazione a oggetti
CORSO DI PROGRAMMAZIONE II Lezione 22
Programmazione ad oggetti
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
Oggetti in C# Lezione 2 Metodi e Static Oggetti in C# - Lezione 2.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Il linguaggio C Puntatori e dintorni.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
Programmazione ad oggetti
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Vettori (a una dimensione)
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica II Ingegneria Informatica (A-I) 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.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
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.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
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.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione 14 Marzo Esercizio dell’altra volta Definire un tipo di dato Abbonato i cui oggetti descrivono le informazioni relative ad un abbonato.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1

L’idea degli oggetti Una classe è una categoria di “cose” o di “soggetti” Una classe è un tipo base da cui dichiarare elementi Per esempio Automobile, Cane o Persona Per esempio Rex, Pluto e Lassie sono tutti elementi di Cane Oggetti in C# - Lezione 1

Classi e istanze { R = new Rectangle(); } class Rectangle { int side1, side2; //lati del rettangolo } Utilizzo della classe { Rectangle R ; R = new Rectangle(); } Dichiarazione della classe La creazione dell’oggetto è corretta La classe è un tipo di dato La variabile di tipo classe è detta istanza Oggetti in C# - Lezione 1

È una variabile riferimento Ogni variabile punta a una istanza Punti di vista Classe È il tipo di dato Come il progetto di una casa, non è la casa stessa. . . Definisce però come sarà costruita tutta la struttura In alcuni casi può memorizzare dei dati, ma non di istanza Istanza È una porzione di memoria, allocata in heap, che cusodisce i dati. È’ l’oggetto vero e proprio: deve essere istanziato prima di essere usato. Variabile istanza È una variabile riferimento Ogni variabile punta a una istanza Oggetti in C# - Lezione 1

Classi e attributi { R = new Rectangle(); R.side1 = 12; class Rectangle { int side1, side2; //lati del rettangolo } Utilizzo della classe { Rectangle R ; R = new Rectangle(); R.side1 = 12; int x = R.side2; } errore Le variabili interne alla classe sono detti attributi L’accesso agli attributi è errato Le variabili interne sono private ovvero non raggiungibili dall’esterno L’errore c’è perché gli attributi sono privati Oggetti in C# - Lezione 1

Attributi privati e pubblici class Rectangle { int side1, side2; public string Colore; private Boolean attivo; } Utilizzo della classe { Rectangle R ; R = new Rectangle(); R.Colore = “rosso"; R.attivo = true; } errore Le parti interne alla classe possono essere pubbliche o private L’accesso al colore è corretto perché pubblico Quelle pubbliche possono essere accessibili dall’esterno L’accesso ad attivo invece è errato, perché privato Oggetti in C# - Lezione 1

Attributi privati e pubblici class Rectangle { int side1, side2; public string Colore; private Boolean attivo; } Utilizzo della classe { Rectangle R ; R = new Rectangle(); R.side1 = 13; R.attivo = true; } errore Se non si esplicita, si presuppone che le parti siano private Di solito è preferibile nascondere parti all’esterno. Questo impedisce errori ed evita violazioni di accesso. Ci sono altri modi per accedere all’oggetto Questo meccanismo è detto incapsulamento Oggetti in C# - Lezione 1

Costruttori della classe class Rectangle { int side1, side2; public Rectangle() //costruttore vuoto } Utilizzo della classe { Rectangle R ; R = new Rectangle(); } Il costruttore si usa con l’operatore new Una classe deve avere un costruttore Il costruttore serve per creare istanze della classe, ed ha il suo stesso nome Il costruttore alloca memoria per l’istanza e rende l’indirizzo Oggetti in C# - Lezione 1

Costruttori della classe class Rectangle { public int side1, side2; public Rectangle() { } public Rectangle (int x, int y) { side1 = x; side2 = y; } } Utilizzo della classe { Rectangle R ; R.side1 = 17 ; int i = R.side2; } errore Non è possibile usare l’istanza senza invocare prima il costruttore Una classe può avere più costruttori Il sistema avverte che non c’è nessuna struttura associata alla variabile I costruttori devono avere qualche differenza ma lo stesso nome Oggetti in C# - Lezione 1

Costruttori della classe class Rectangle { int side1, side2; public Rectangle() //costruttore vuoto } public Rectangle(int x) side = x ; Utilizzo della classe { Rectangle R1, R2; R1 = new Rectangle(); R2 = new Rectangle(13); } Il sistema riconosce quale costruttore usare dai parametri Una classe può avere molti costruttori; si dice overload del costruttore. Overload vuole dire sovraccarico Il secondo costruttore ha un parametro di tipo int Oggetti in C# - Lezione 1

Costruttori della classe class Rectangle { private int _s1, _s2; private Rectangle (int x, int y) { _s1 = x; _s2 = y; } } Utilizzo della classe { Rectangle R ; R = new Rectangle(); } Non è possibile usare l’istanza senza invocare prima il costruttore È possibile avere costruttori privati Ma se nessun costruttore è più pubblico ho problemi Ma questo impedisce di essere invocati dall’esterno! Oggetti in C# - Lezione 1

Riepilogo Classe è un tipo di dato oggetto Istanza è la variabile di tipo oggetto Ogni classe ha un costruttore; se non esplicito il sistema ne associa uno in automatico Il costruttore serve per allocare memoria per le istanze Il costruttore è omonimo della classe È possibile l’overload dei costruttori Le parti dell’oggetto possono essere private o pubbliche; se non si specifica nessuna opzione si presuppone siano private Il meccanismo di parti private è detto incapsulamento Oggetti in C# - Lezione 1

Esercizio Si dichiari una classe Vector che incapsula un vettore di interi Preparare un costruttore che inserisca in ogni cella uno stesso numero, passato per parametro Preparare un costruttore che inserisca in ogni cella un valore casuale Scrivere un uso di sue istanze Oggetti in C# - Lezione 1

Assegnazioni tra istanze class Rectangle { public int x, y; public Boolean visible ; public Rectangle (int x , int y) this.x = x ; this.y = y ; visible = true ; } Rectangle R1, R2 ; R1 = new Rectangle(2 , 3); R2 = R1 ; //condivisione R2.y = 7 ; R1 e R2 condividono lo stesso spazio; modificare una implica modificare l’altra R1 R2 x = 2 y = 3 Le istanze sono tipi riferimento; sono allocate nello heap L’assegnazione tra istanze implica la condivisione dei dati; l’assegnazione tra attributi non sempre 7 Oggetti in C# - Lezione 1

Assegnazioni tra istanze class Rectangle { public int x, y; public Boolean visible ; public Rectangle (int x , int y) this.x = x ; this.y = y ; visible = true ; } Rectangle R1, R2 ; R1 = new Rectangle(2 , 3); R2 = new Rectangle(2 , 3); R2.y = 7 ; x = 2 y = 3 R1 x = 2 y = 3 R2 7 Se due istanze sono costruite distintamente allora ciascuna avrà il suo spazio di memoria; in questo caso la modifica di una NON coinvolge l’altra; una assegnazione tra istanze fa perdere l’oggetto costruito in precedenza! Ogni volta che si invoca un costruttore si alloca memoria nello heap, ma l’indirizzo della struttura che l’istanza conserva sta nello stack Oggetti in C# - Lezione 1