Scaricare la presentazione
PubblicatoRosetta Riccio Modificato 9 anni fa
1
Oggetti in C# Lezione 2 Metodi e Static Oggetti in C# - Lezione 2
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
3
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
4
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
5
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
6
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
7
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
8
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
9
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
10
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
11
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
12
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
13
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
14
Classi statiche inutile
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) ; } 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
15
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
16
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.