La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Oggetti in C# - Lezione 2 Oggetti in C# Lezione 2.

Presentazioni simili


Presentazione sul tema: "Oggetti in C# - Lezione 2 Oggetti in C# Lezione 2."— Transcript della presentazione:

1 Oggetti in C# - Lezione 2 Oggetti in C# Lezione 2

2 2 Oggetti in C# - Lezione 2 Classi e metodi 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.

3 3 Oggetti in C# - Lezione 2 { Rectangle R = new Rectangle(4, 5); x = R.Area(); //invocazione del metodo } Classi e metodi 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

4 4 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)

5 5 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.

6 6 Oggetti in C# - Lezione 2Riepilogo Una classe può avere costruttori, attributi e metodiUna classe può avere costruttori, attributi e metodi Gli attributi sono i dati dell’oggettoGli attributi sono i dati dell’oggetto I metodi sono i comportamenti dell’oggettoI metodi sono i comportamenti dell’oggetto Metodi e attributi possono essere sia pubblici che privatiMetodi e attributi possono essere sia pubblici che privati I metodi pubblici possono essere invocati dall’esternoI 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)Per invocare un metodo si scrive il nome dell’istanza, seguito dal punto, seguito dal nome del metodo (ed eventuali argomenti)

7 7 Oggetti in C# - Lezione 2Suggerimenti In una buona programmazione per oggetti gli attributi di una classe saranno privatiIn una buona programmazione per oggetti gli attributi di una classe saranno privati Si definiranno qindi metodi pubblici per l’accesso in lettura e scritturaSi 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’esternoLa classe fornirà poi costruttori pubblici e altri metodi pubblici per poterla rendere fruibile dall’esterno

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

9 9 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 side = x; } 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 () { //metodo pubblico double d = 2 * side * side ; return Math.Sqrt(d) ; } public Stretch () { //metodo pubblico side = 0.5 * side ; } public Grow () { //metodo pubblico side = 2 * side ; } }//fine classe

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

11 11 Oggetti in C# - Lezione 2Osservazione In alcuni casi puoi notare che il metodo si invoca a partire dall’istanza, come abbiamo visto prima: int a = R1.Area(); int a = R1.Area(); double d = R1.Diagonal(); double d = R1.Diagonal(); R1.Set(8, 12); R1.Set(8, 12); R2.IsSquare(); R2.IsSquare(); In altri casi però si invoca il metodo direttamente dalla classe, come nel caso di: Math.Sqrt(18);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

12 12 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(); int a = Rectangle.Count(); //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

13 13 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  Per esempio: 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

14 14 Oggetti in C# - Lezione 2 Classi statiche public static class MathClass { public const double PIGRECO = 3.14; public const double NEPERO = 2, ; 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) ; } Una classe statica ammette solo attributi e metodi statici Una classe statica viene usata senza invocare costruttori, peraltro inutili... inutile

15 15 Oggetti in C# - Lezione 2 Parola riservata this 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 Con this è possibile accedere a attributi (NON statici) nonostante la copertura di visibilità... Per esempio, qui si confondono i parametri con gli attributi; il parametro x copre in visibilità l’attributo

16 16 Oggetti in C# - Lezione 2Esercizio Si dichiari una classe Vector che incapsula un privato vettore di interiSi 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 casualePreparare 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 vettorePreparare i metodi per restituire massimo, minimo e media dei valori del vettore Preparare un metodo che dica quanto è lungo il vettorePreparare un metodo che dica quanto è lungo il vettore Preparare un altro costruttore che assegna ad ogni cella il medesimo valore preso come parametroPreparare 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)Preparare un metodo che dica se il vettore è stato istanziato oppure no (usare un nuovo attributo tipo bool per saperlo)


Scaricare ppt "Oggetti in C# - Lezione 2 Oggetti in C# Lezione 2."

Presentazioni simili


Annunci Google