La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Java base IV: Java e la programmazione O.O.. Argomenti Classi e oggetti in Java I metodi I costruttori Principi di programmazione O.O. in Java: –Incapsulamento,

Presentazioni simili


Presentazione sul tema: "Java base IV: Java e la programmazione O.O.. Argomenti Classi e oggetti in Java I metodi I costruttori Principi di programmazione O.O. in Java: –Incapsulamento,"— Transcript della presentazione:

1 Java base IV: Java e la programmazione O.O.

2 Argomenti Classi e oggetti in Java I metodi I costruttori Principi di programmazione O.O. in Java: –Incapsulamento, –Ereditarietà, –Polimorfismo. Le classi Astratte Le interfacce Metodi e variabili static

3 Obiettivi Familiarizzare con limplementazione Java dei principi dellO.O. Conoscere i fondamenti della programmazione in Java

4 Ricapitoliamo quanto detto della programmazione ad oggetti… OOP è un paradigma di programmazione nel quale i problemi sono modellati come in insieme di oggetti Un oggetto è una istanza di unaclasse Insieme di oggetti con le stesse caratteristiche e gli stessi comportamenti Agli oggetti si applicano i principi di EreditarietàIncapsulamento Polimorfismo

5 Esempio…un videogioco Attributi Descrivono lo stato delloggetto

6 Oggetti e classi di oggetti Orco Cavaliere Classi Istanze (Oggetti)

7 Le classi Implementazione di un oggetto Modificatore daccesso 1 Tutti gli attributi della classe 2 Tutti i metodi della classe package it.miopackage.itMaster; import java.util.Iterator; public class Classe{ int attributo; public void metodo(){ //implementazione metodo } 1 2 = nome del file

8 Esempio di classe Java class Auto { public int numeroRuote; public int cilindrata; public int porte; ….. public void frenare(){ //.... } File Auto.java Astrarre il concetto di Auto attraverso la definizione degli attributi/variabili dichiarate di tipo intero ( int ) e pubbliche ( public ) Variabili (di) istanza Vs Variabili locali

9 Modificatori di accesso In Java laccesso (la visibilità) di proprietà e metodi è regolata dal parole chiave programmatore facendo ricorso a parole chiave riconosciute dal compilatore private default protected public Accessibili solo allinterno della classe Accessibili allinterno dello stesso package e da tutte le classi figlie anche se definite in altri package Accessibili da tutte le classi del programma Accessibili allinterno dello stesso package (compilatore) Modificatori public e private

10 Visibilità delle variabili Come C e C++ Java consente di dichiarare variabili in qualunque punto del codice della applicazione Necessario stabilire le regole di visibilità delle variabili SCOPE In generale diremo che una variabile ha scope limitato al blocco allinterno del quale è stata dichiarata

11 I metodi in Java Un Metodo è sinonimo di azione, attraverso cui un programma esegue istruzionigli oggetti comunicano tra loro MAIN Il metodo più importante di Java è il MAIN Permette lesecuzione di un programma Java Almeno uno per applicazione public static void main (String args[]) { }

12 Dichiarazione di un metodo modificatori tipo_di_ritorno nome_del_metodo (parametri) { corpo del metodo } modificatori : parole chiave di Java che possono essere usate per modificare in qualche modo le funzionalità e le caratteristiche di un metodo. tipo di ritorno : il tipo di dato che un metodo restituisce dopo essere stato chiamato nome del metodo : identificatore utilizzato quando si chiama il metodo parametri : dichiarazioni di variabili che potranno essere passate al metodo quindi sfruttate nel corpo del metodo al momento della chiamata corpo del metodo : insieme di comandi che verranno eseguiti quando il metodo sarà chiamato. FIRMA DEL METODO

13 Dichiarazione di un metodo. Esempio public class SerieNumeri { private int serie[ ]; private int n; public SerieNumeri ( String s[ ] ) { n = s.length; serie = new int[n]; for (int i=0 ;i < n; i++){ serie[i] = Integer.parseInt(s[i]); } public double calcoloMedia () { int totale = 0; for(int i=0; i < n; i++){ totale += serie[i]; } return( (float) totale/n); } File SerieNumeri.java Se il metodo ritorna qualche valore

14 Invocazione di un metodo public static void main (String args[ ] ){ SerieNumeri a = new SerieNumeri(args); System.out.println("La media e' "+a.calcoloMedia()); } } //chiusura classe SerieNumeri L accesso al metodo calcoloMedia avviene con loperatore dot (.) La sintassi da utilizzare per linvocazione è nomeOggetto. nomeMetodo; In linea teorica ciò vale anche per le variabili Es. fiat500.cilindrata Vedremo che non è così!

15 Istanziazione di un oggetto: i costruttori Il costruttore è un metodo speciale avente queste caratteristiche: 1. Ha lo stesso nome della classe 2. Non ha tipo di ritorno 3. È chiamato ogni volta che è istanziato un oggetto 4. È presente in ogni classe. Se il programmatore non lo introduce, ne viene generato uno vuoto dal compilatore a run-time. new OggettoX istanzaOggetto = new OggettoX(); Di solito un costruttore è utilizzato per inizializzare le variabili distanza di un oggetto. Esempio Viene allocata la memoria necessaria per il nostro oggetto e viene ritornata la locazione in memoria della entità creata Overloading Overloading dei costruttori. Al programmatore è consentito scrivere più di un costruttore per una data classe a seconda delle necessità di disegno delloggetto

16 I costruttori: esempio class Auto { public int numeroRuote; public Auto(){ this.numeroRuote=4; } public Auto(int numeroRuote){ this.numeroRuote= numeroRuote; } Costruttore vuoto che valorizza di default lattributo numeroRuote Costruttore che valorizza lattributo numeroRuote con il valore del parametro passato Si riferisce al valore dellattributo numeroRuote per listanza che si sta creando

17 Incapsulamento Processo di mascheramento dei dettagli dellimplementazione ad altri oggetti per evitare riferimenti incrociati In Java si ottiene costruendo delle Classi dotate di ATTRIBUTI PRIVATE METODI DI ACCESSO AGLI ATTRIBUTI PUBLIC AGLI ATTRIBUTI PUBLIC Lettura attributo Modifica attributo GETTER SETTER private int attributo; public int getAttributo(){ return this.attributo; } public void setAttributo(int nuovoValore ){ this.attributo= nuovoValore; }

18 Esempio: costruiamo la classe Automobile Quali proprietà possiede? Quali valori possono assumere? Possono essere modificate? Quali azioni può svolgere? … Poniamoci queste domande: Scriviamo la classe in Java Creiamo diagramma della classe secondo standard UML Istanziamola e chiamiamo dei metodi

19 Parentesi necessaria… GC e oggetti non più referenziati 2 tipi di dato Primitivi Oggetti RIFERIMENTI Cambia modalità di memorizzazione int a=5; String b=test; a 5 b valore puntatore test StringHEAPSTACK 0B345 Diversità: Inizializzazione e creazione, Valore di default, Metodi associati alle istanze == confronta indirizzi di memoria NB

20 Riferimento Vs Valore int x = 4; int y; y = x ; System.out.println("x vale : " + x) ; System.out.println("y vale : " + y) ; y = 7 ; System.out.println("x vale : " + x) ; System.out.println("y vale : " + y) ; Qual è loutput?

21 Riferimento Vs Valore (2) Dimension x = new Dimension(4, 4); Dimension y; y = x; System.out.println("x vale : " + x) ; System.out.println("y vale : " + y) ; y.setSize(2, 2); // Modifica le coordinate System.out.println("x vale : " + x) ; System.out.println("y vale : " + y) ; Qual è loutput?

22 Ereditarietà Creazione di una gerarchia tra le classi relazione logica Meccanismo tramite il quale un oggetto è in una relazione logica con un altro Sconveniente scrivere una classe per ogni oggetto che contenga tutte le caratteristiche Definita in modo generico Perfezionata EREDITA EREDITA proprietà e metodi AGGIUNGE AGGIUNGE proprietà e metodi super-classe sotto-classe EXTENDS PADRE FIGLIA Aumenta specificità Esercizio: Mezzi di trasporto. Disegniamo la gerarchia

23 Ereditarietà in Java Parola chiave EXTENDS per definire la relazione di ereditarietà extends class Auto extends MezziDiTrasporto{ ….. } Tutte le classi in Java ereditano da Object. Se non viene specificato, il compilatore lo fa implicitamente. Java non permette lereditarietà Multipla (Vs C++). Eseguita attraverso le INTERFACCE Classe che eredita accede alla classe padre attraverso listruzione SUPER. Classe figlia si distingue dalla classe padre: Per estensione Per ridefinizione Aggiunge nuovi attributi/metodi Implementa in modo diverso i metodi della classe padre

24 Ereditarietà e costruttori public class Persona { String nome; public Persona(){} public Persona(String nome){ this.nome=nome; } public class Studente extends Persona { String matricola; public Studente (){} public Studente (String nome, String matricola){ super(nome); this. matricola = matricola; } Prima operazione di ogni costruttore Chiamata costruttore classe padre Classe estesa Se manca, chiamato costruttore vuoto Object

25 Lavoriamo su questo esempio Creiamo le due classi In una terza classe con Main, istanziamo e lavoriamo sui due oggetti 1 2

26 Ereditarietà e classi Astratte una classe avente anche solo un metodo abstract è astratta, e deve essere dichiarata abstract essa stessa una classe astratta può però anche non avere metodi dichiarati abstract una sottoclasse di una classe astratta è anchessa astratta, se non ridefinisce tutti i metodi che erano astratti nella classe base Lereditarietà porta riflettere sul processo di astrazione e di modellizzazione del dominio GENERICHE Spesso è utile scrivere una o più classi GENERICHE, il cui scopo è predisporre uninterfaccia di metodi implementati diversamente da tutte le classi figlie classe base Progettata soltanto per svolgere la funzione di classe base non viene creata per derivarne istanze ma per derivarne altre classi, che dettaglieranno (specificandole) le operazioni qui solo dichiarate ABSTRACT

27 public abstract class Animale { public abstract String verso(); public abstract String si_muove(); public abstract String vive(); } Esempio di classi Astratte IL REGNO ANIMALE ogni animale ha un qualche verso ogni animale si muove in qualche modo ogni animale vive in un qualche ambiente non esiste il generico animale! perché introdurre una tale classe animali? per fattorizzare aspetti comuniclassificazione degli oggetti del mondo Procediamo con la tassonomia..

28 Java e il Polimorfismo Possibilità per i metodi di assumere forme, cioè implementazioni, diverse allinterno della gerarchia delle classi Tutti i veicoli a motore possiedono il metodo accelera automobile pressione del pedale moto movimento della manopola Consente ad oggetti differenti (ma collegati tra loro) la flessibilità di rispondere in modo differente allo stesso tipo di messaggio. Creiamo classe Aeroporto che implementa un metodo abilita_decollo e che accetta come parametro un velivolo… Nel metodo main proviamo a chiamare il metodo passando i diversi tipi di velivolo e osserviamo cosa succede

29 Le Interfacce in Java Costruttori,Costruttori, Variabili statiche,Variabili statiche, Variabili di istanza,Variabili di istanza, Metodi statici.Metodi statici. La parola chiave interface serve a creare classi astratte pure Può contenere SOLO costantimetodi d'istanza astratti Non può contenere: PRIVI DI IMPLEMENTAZIONE Serve a fornire una FORMA Per crearne una è sufficiente utilizzare la parola chiave interface invece di class Per implementare una interfaccia si utilizza la parola chiave implements Interfacce possono estendere PIU interfacce contemporaneamente. Classe può implementare PIU interfacce contemporaneamente.

30 Interfacce: esempio interface Strumenti { String descrizione = "strumento musicale"; void suona() ; } IMPLICITAMENTE static e final class Flauto implements Strumenti { public void suona() { System.out.println(" fiuuuuuuu "); } PROTOTIPO del metodo: Tipo Ritorno Nome Parametri

31 Metodi e variabili Statiche Abbiamo visto che in Java per usare un metodo che serve sempre una istanza Per fortuna è possibile dichiarare un metodo in modo che non richieda una istanza per essere utilizzata POSSONO ESSERE INVOCATI ACCEDENDO DIRETTAMENTE ALLA CLASSE, SENZA PRIMA ISTANZIARLA Dichiarati con la parola riservata STATIC Esempi di metodi statici classici: Metodo MAIN System.out….


Scaricare ppt "Java base IV: Java e la programmazione O.O.. Argomenti Classi e oggetti in Java I metodi I costruttori Principi di programmazione O.O. in Java: –Incapsulamento,"

Presentazioni simili


Annunci Google