









Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Studio corso di programmazione ad oggetti classi e oggetti
Tipologia: Appunti
1 / 17
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!










1
ASTRAZIONE SUI DATI Il tipo di dati astratto (ADT) attributi metodo (^) metodo metodo (^) metodo
Programmazione ad Oggetti - Prof. Massimo Ficco
Funzioni Dati:
**- Avviati - Targa
Java è un linguaggio di programmazione orientato agli oggetti ( object oriented ), che si basa sul concetto di classe La classe è identificata univocamente da un nome, che deve essere necessariamente uguale al nome del file che la contiene (affinché la classe possa essere eseguita) La classe ed è caratterizzata da una coppia di parentesi graffe { } che contiene il corpo della classe ossia le istruzioni e le dichiarazioni Esempio : (File sorgente con nome Prova.java ) [modifiers] class Prova { corpo della classe } I nomi delle classi possono essere precedute da parole chiave [modifiers]: public, private, static, …
Programmazione ad Oggetti - Prof. Massimo Ficco
Public class Auto { public int cilindri=4; public int speed; // inizializzazione public String targa; } Auto a=new Auto(); Ho una classe costituita solo di attributi !!!!!! Unica cosa che possiamo fare è accedere agli attributi per modificarli o utilizzarli: a.speed =10; System.out.println ( a.cilindri );
Ogni classe può contenere uno o più metodi I metodi sono caratterizzati da un nome e una coppia di graffe { } che contiene la specifica procedura I nomi dei metodi possono essere precedute da parole chiave [modifiers]: public , private , static, .. Esempio : public class Prova { public void metodo () { …. } }
Programmazione ad Oggetti - Prof. Massimo Ficco
Il termine metodo in Java viene preferito al termine funzione (ovvero un sottoprogramma con un valore di ritorno) _[modifiers] returnType methodName ( / Argument list / ) {/ Method body /}_ I metodi in Java possono essere definiti solo come parti di una classe
// questo metodo ritorna il numero di byte della stringa s public int storage (int s) { return s = 2; } Oggetti e tipi semplici vengono passati allo stesso modo Il parametro si utilizza nel metodo come una qualunque variabile return ha due funzioni: Terminazione Restituisce il valore di ritorno
Programmazione ad Oggetti - Prof. Massimo Ficco 13
La classe String: String str = "abc"; // Stringa costante. Non può essere più cambiata String str = new String(); String str = new String (“ stringa_di_esempio ”); System.out.println(str); I metodi: String str = cde.substring(1, 2); System.out.println(str); int i = str.length(); str.replace(char oldChar, char newChar); // Sostituisce il carattere oldChar con NewChar int i = str.hashCode(); str.concat(String anotherString); str.compareTo(String anotherString); ….
Esempio: Supponimo di avere un metodo f ( ) che non ha parametri e ritorna in tipo int. public int f() Supponendo di aver un oggetto a per il quale è possibile chiamare f( ) int x = a.f(); Il tipo ritornato da f deve essere compatibile con il tipo di x
Programmazione ad Oggetti - Prof. Massimo Ficco 15
Programmazione ad Oggetti - Prof. Massimo Ficco 1919
Programmazione ad Oggetti - Prof. Massimo Ficco 2121
Programmazione ad Oggetti - Prof. Massimo Ficco 25
Hello.java
class Hello { public static void main (String args [ ]) { System.out.println("Hello World!"); } } obbligatorio in questa forma Affinché un applicazione ad oggetti “parta”, devo avere una classe con un metodo statico e pubblico di nome main
Programmazione ad Oggetti - Prof. Massimo Ficco
public static void main (String args []) void indica che main non ritorna nulla, il che è necessario per superare il type-checking del compilatore args[] sono gli argomenti passati a main dalla shell quando si digita: java Hello arg1 arg2 ... argn String dice che gli argomenti sono di classe String public rende il metodo main visibile alle altre classi - e al comando java (interprete) static associa main alla classe Hello , e non alle sue istanze System.out.println("HelloWorld!") invoca il metodo println dell’oggetto out della classe System , che stampa la stringa sul file stdout Per eseguire un applicazione java e passargli un argomento, basta far seguire al nome dell' applicazione il valore desiderato: verrà interpretato come una stringa e memorizzato nell’array di stringhe args[] definito in main Esempio: java Shirt verde // Determina se passata una stinga sulla riga di comando public class Shirt { public static void main(String args[]) { if (args.length < 1) { System.out.println("Nessun argomento"); } else { System.out.println("Stringa digitata: " + args[0]); } } }
Programmazione ad Oggetti - Prof. Massimo Ficco
} 31
public class Prova{ static void accelera(Auto b) { b.setSpeed(b.speed+1); System.out.println("metodo: "+b.speed); } public static void main(String args[]) { Auto a =new Auto(); System.out.println("main1: "+a.speed); accelera(a); System.out.println("main2: "+a.speed); } } Output:
class Contatore { int cont=0; public void incr() { cont++; } public static void main(String args[]) { Contatore a=new Contatore(); Contatore b=new Contatore(); a.incr(); System.out.println(a.cont); output? System.out.println(b.cont); output? b=a; // copia i riferimenti System.out.println(a.cont); output? System.out.println(b.cont); output? b.incr(); System.out.println(a.cont); output? System.out.println(b.cont); output? } }