Oggetti in C# Lezione 2 Metodi e Static Oggetti in C# - Lezione 2.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Funzioni Friend Come abbiamo visto non possiamo accedere a membri privati di una classe dall'esterno della classe. Ma a volte abbiamo bisogno di farlo.
Oggetti Java.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
MultiSet, Liste Ordinate
Le gerarchie di tipi.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Introduzione al linguaggio C
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Fondamenti di Informatica
Programmazione Procedurale in Linguaggio C++
FUNZIONI DI BIBLIOTECA
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Programmazione Mod A - Cap 2 - prof. Burattini
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Overriding.
Soluzione Esercizio - Classe Vettore
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Oggetti e dati primitivi
Approfondimento delle classi
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Struct, enum, Puntatori e Array dinamici
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le funzioni.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Unità Didattica 3 Linguaggio C
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.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
Esercizi.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 11 e 12 -
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Programmazione ad oggetti
1 Un esempio con iteratore: le liste ordinate di interi.
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
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.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
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.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
1 Un esempio con iteratore: le liste ordinate di interi.
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.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Oggetti in C# Lezione 2 Metodi e Static Oggetti in C# - Lezione 2

Classi e metodi side1 = x; side2 = y; } return (side1 * side2) ; class Rectangle { int side1, side2; //lati del rettangolo public Rectangle(int x , int y) side1 = x; side2 = y; } public int Area() return (side1 * side2) ; In una classe è possibile definire delle funzioni che svolgono compiti e/o calcoli Le funzioni interne alla classe sono detti metodi. Un metodo può essere privato o pubblico. Oggetti in C# - Lezione 2

Classi e metodi { Rectangle R = new Rectangle(4 , 5); x = R.Area(); //invocazione del metodo } Un metodo pubblico può essere invocato dall’esterno a partire dall’istanza L’invocazione richiede prima il nome dell’istanza, seguito da un punto e dal nome del metodo Oggetti in C# - Lezione 2

Classi e metodi partial class Rectangle { int side1, side2; public Rectangle(int x , int y) side1 = x; side2 = y; } public int Area() return (side1 * side2) ; partial class Rectangle { public void Set(int x , int y) side1 = x; side2 = y; } public double Diagonal() double x Math.Pow(side1 , 2); double y Math.Pow(side2 , 2); return Math.Sqrt(x + y); Se una classe è lunga da definire è possibile spezzarla in parti con la parola partial L’importante è evitare di usare due volte lo stesso nome di attributo (darebbe errore) Oggetti in C# - Lezione 2

Classi e metodi partial class Rectangle { public Boolean IsSquare() if (side1 == side2) return true; else return false; } public Rectangle(int side) side1 = side; side2 = side; Utilizzo dei metodi { . . . Rectangle R1, R2 ; R1 = new Rectangle(4,5); int a = R1.Area(); double d = R1.Diagonal(); R1.Set(8 , 12); R2 = new Rectangle(3); if (R2.IsSquare()) r = 0; } Quando una classe definisce dei metodi pubblici è possibile invocarli dall’istanza. Prima occorre istanziare con un costruttore e poi si può invocare un metodo di istanza. Oggetti in C# - Lezione 2

Riepilogo Una classe può avere costruttori, attributi e metodi Gli attributi sono i dati dell’oggetto I metodi sono i comportamenti dell’oggetto Metodi e attributi possono essere sia pubblici che privati I metodi pubblici possono essere invocati dall’esterno Per invocare un metodo si scrive il nome dell’istanza, seguito dal punto, seguito dal nome del metodo (ed eventuali argomenti) Oggetti in C# - Lezione 2

Suggerimenti In una buona programmazione per oggetti gli attributi di una classe saranno privati Si definiranno qindi metodi pubblici per l’accesso in lettura e scrittura La classe fornirà poi costruttori pubblici e altri metodi pubblici per poterla rendere fruibile dall’esterno Oggetti in C# - Lezione 2

Esercizio Si dichiari una classe Quadrato che abbia il lato come attributo privato Definire un costruttore che prepari il lato del quadrato scelto dall’esterno Definire i metodi per leggere e scrivere il lato del quadrato Definire i metodi opportuni per ottenere l’area, il perimetro e la diagonale Definire dei metodi per raddoppiare e per dimezzare il lato del quadrato Oggetti in C# - Lezione 2

Soluzione dell’esercizio class Square { private double side ; public Square (double x) { //costruttore pubblico side = x; } public Set (double x) { //metodo pubblico scrittura public double Get () { //metodo pubblico lettura return side ; public double Area () { //metodo pubblico return side * side ; public double Perimeter () { //metodo pubblico return 4 * side ; } public double Diagonal () { double d = 2 * side * side ; return Math.Sqrt(d) ; public Stretch () { side = 0.5 * side ; public Grow () { side = 2 * side ; }//fine classe Oggetti in C# - Lezione 2

Esercizio Si dichiari una classe Rettangolo che abbia due lati come attributi privati Definire un costruttore che prepari i lati del rettangolo con parametri Definire i metodi per leggere e scrivere i lati del rettangolo Definire i metodi opportuni per ottenere l’area, il perimetro e la diagonale Definire un metodo che dice se un rettangolo è un quadrato (ha ii due lati uguali) Oggetti in C# - Lezione 2

Osservazione In alcuni casi puoi notare che il metodo si invoca a partire dall’istanza, come abbiamo visto prima: int a = R1.Area(); double d = R1.Diagonal(); R1.Set(8 , 12); R2.IsSquare(); In altri casi però si invoca il metodo direttamente dalla classe, come nel caso di: Math.Sqrt(18); Queste due invocazioni sono MOLTO DIVERSE I primi si riferiscono a metodi di istanza I secondi si riferiscono a metodi di classe Oggetti in C# - Lezione 2

Metodi statici class Rectangle { int side1, side2; static int num = 0; public Rectangle() num++; } public int Area() return (side1 * side2) ; static public int Count() return num ; Utilizzo dei metodi { Rectangle R1, R2 ; int a = Rectangle.Count(); //renderà zero R2 = new Rectangle(); //renderà uno R2.Rectangle.Count(); //errore di compilazione . . . } Una classe può definire metodi ed attributi di istanza oppure statici (detti anche di classe). . . I metodi statici si invocano a partire dalla classe e NON dall’istanza; anche gli attributi si accedono dalla classe Oggetti in C# - Lezione 2

Attributi statici class Circle { private static int radius = 0; public static int HowMany; public const double PIGRECO = 3.14; public Circle() num++; } public int Area() return PIGRECO * (radius * radius ) ; Gli attributi statici sono dati che appartengono alla classe e NON alle istanze È possibile accedervi a partire dal nome della classe stessa, purché pubblico Per esempio: int i = Rectangle.HowMany ; È possibile accedervi in scrittura, purché pubblico int Rectangle.HowMany = i ; Un attributo costante è sempre statico ed è accessibile solo in lettura int i = Rectangle.PIGRECO ; Oltre ai metodi ci sono gli attributi statici (o di classe); Anche gli attributi si accedono dalla classe; le costanti sono casi particolari di attributi statici, invarianti Oggetti in C# - Lezione 2

Classi statiche inutile public static class MathClass { public const double PIGRECO = 3.14; public const double NEPERO = 2,71828182845904523536 ; static public double Sin(double x) . . . } static public double Log(double x) static public double Sqrt(double x) Utilizzo dei metodi { MathClass R1, R2 ; double d = MathClass.PIGRECO; double e = MathClass.NEPERO; double z = MathClass.Sin(3.14) ; double y = MathClass.Log(1) ; double r = MathClass.Sqrt(9) ; } inutile Una classe statica ammette solo attributi e metodi statici Una classe statica viene usata senza invocare costruttori, peraltro inutili. . . Oggetti in C# - Lezione 2

Parola riservata this x = x; y = x; } this.x = x; this.y = y; class Rectangle { int x, y ; //lati del rettangolo public Rectangle(int x) { x = x; y = x; } public Rectangle(int x , int y) this.x = x; this.y = y; Talvolta è utile specificare quandosi usano gli attributi; la parola this vuol dire QUESTA ISTANZA Per esempio, qui si confondono i parametri con gli attributi; il parametro x copre in visibilità l’attributo Con this è possibile accedere a attributi (NON statici) nonostante la copertura di visibilità . . . Oggetti in C# - Lezione 2

Esercizio Si dichiari una classe Vector che incapsula un privato vettore di interi Preparare un costruttore che istanzi il vettore con un certo numero di celle (parametro) ciascuna inizializzata con un valore casuale Preparare i metodi per restituire massimo, minimo e media dei valori del vettore Preparare un metodo che dica quanto è lungo il vettore Preparare un altro costruttore che assegna ad ogni cella il medesimo valore preso come parametro Preparare un metodo che dica se il vettore è stato istanziato oppure no (usare un nuovo attributo tipo bool per saperlo) Oggetti in C# - Lezione 2