Object-Oriented Programming Concepts | Cerca per titolo, autore, parola chiave | ||||||||
Object-Oriented Programming Concepts The Java Tutorials, prodotti da Oracle. Cosa sono gli oggetti, intorno ai quali ruota tutta la tecnologia object-oriented? Guardati intorno e vedrai molti esempi di oggetti: il tuo cane, il tuo tavolo, la tua televisione, la tua bicicletta. Gli oggetti, nel mondo reale, condividono, tutti, due caratteristiche: hanno un aspetto ben preciso e hanno determinati comportamenti. L'aspetto dei cani comprende il nome, il colore, la razza, il suo essere sempre affamato, mentre il comportamento comprende l'abbaiare, il riportare il pezzo di legno, lo scodinzolare, l'inseguire. Identificare l'aspetto ed il comportamento degli oggetti del mondo reale è un ottimo esercizio per pensare in termini di programmazione orientata agli oggetti. Gli oggetti software sono concettualmente simili agli oggetti del mondo reale: anche loro hanno un aspetto e una serie di comportamenti. Un oggetto software conserva il suo aspetto in una serie di variabili (o campi), mentre esprime i suoi comportamenti nelle sue funzioni, o metodi. I metodi operano direttamente sull'aspetto interno di un oggetto, oltre a rappresentare il principale meccanismo di comunicazione tra un oggetto e l'altro. Nascondere il proprio aspetto interno ed esigere che tutte le interazioni siano condotte attraverso i propri metodi (funzioni) è un comprtamento noto come "data encapsulation" — un principio fondamentale della programmazione ad oggetti. Definendo il proprio aspetto (per esempio: velocità corrente, cadenza attuale del pedale, rapporto attuale del cambio, nel caso di una bicicletta) e mettendo a disposizione dei metodi per modificare questo aspetto, l'oggetto controlla il modo in cui il mondo esterno può utilizzarlo. Se, per esempio, una bicicletta avesse sei marce, un metodo potrebbe rifiutare qualsiasi valore non compreso tra 1 e 6. Un oggetto, in termini di programmazione object-oriented, è una istanza di una classe (di oggetti). Nel mondo reale, si trovano moltissimi oggetti dello stesso tipo: la mia moto sarà probabilmente diversa dalla moto di Valentino Rossi, ma è pur sempre una moto, cioè un oggetto che tutti chiamano moto. La mia moto e quella di Valentino sono due oggetti appartenenti alla stessa classe di oggetti: la moto. Ecco la definizione di una classe Bicycle, una possibile implementazione di una bicicletta: class Bicycle { int cadence = 0; int speed = 0; int gear = 1; void changeCadence(int newValue) { cadence = newValue; } void changeGear(int newValue) { gear = newValue; } void speedUp(int increment) { speed = speed + increment; } void applyBrakes(int decrement) { speed = speed - decrement; } void printStates() { System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear); } } I campi, o variabili, cadence, speed, gear rappresentano l'aspetto della bicletta (cadenza, velocità, marce), mentre i suoi metodi (changeCadence, changeGear, speedUp etc.) ne definiscono le interazioni con il mondo esterno. Avrete notato che la classe Bicycle non contiene il metodo main. Questo accade perchè la classe Bicycle non rappresenta un'applicazione a sè stante, ma è, più semplicemente, uno stampo che può essere utilizzato da un'altra applicazione per creare degli oggetti Bicycle. La responsabilità di creare e di utilizzare gli oggetti Bicycle appartiene ad una qualche altra classe, all'interno della vostra applicazione, come, per esempio, questa classe BicycleDemo, che crea due distinti oggetti Bicycle, invocandone i metodi: class BicycleDemo { public static void main(String[] args) { // Create two different // Bicycle objects Bicycle bike1 = new Bicycle(); Bicycle bike2 = new Bicycle(); // Invoke methods on // those objects bike1.changeCadence(50); bike1.speedUp(10); bike1.changeGear(2); bike1.printStates(); bike2.changeCadence(50); bike2.speedUp(10); bike2.changeGear(2); bike2.changeCadence(40); bike2.speedUp(10); bike2.changeGear(3); bike2.printStates(); } } L'output di questo testo stampa la cadenza, la velocità ed il cambio di due differenti oggetti Bicycle: cadence:50 speed:10 gear:2 cadence:40 speed:20 gear:3
|
|||||||||
Object-Oriented Programming Concepts | Disclaimer: questo è un link a contenuti ospitati su server esterni. |