La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso Java Lezione 1 5/12/2019.

Presentazioni simili


Presentazione sul tema: "Corso Java Lezione 1 5/12/2019."— Transcript della presentazione:

1 Corso Java Lezione 1 5/12/2019

2 Introduzione Il linguaggio Java è un linguaggio di programmazione di alto livello caratterizzato dal fatto di essere : Semplice Neutrale rispetto all’architettura Object oriented Portabile Multithreaded Dinamico Sicuro 5/12/2019

3 Agenda “Compile once Run everywhere” hello world il metodo main
gli argomenti come si compila come si esegue classpath e classloader Programmare a oggetti package 5/12/2019

4 “Compile once Run everywhere”
I sorgenti sono “testo” I “class” files non contengono codice nativo La virtual machine traduce I class files in istruzioni native 5/12/2019

5 Hello World class HelloWorldApp {
/** * La classe HelloWorldApp è l’implementazione di applicazione * che semplicemente scrive "Hello World!" sullo standard * output. */ class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!");//Visualizza la stringa } 5/12/2019

6 Un’occhiata più approfondita
I commenti Definire una classe Il metodo main Uso di “classi” e “oggetti” Attributi Metodi Uso di variabili Visibilità 5/12/2019

7 Commenti I commenti in java possono essere singole righe precedute da // Blocchi di righe contenute tra /** e */ Blocchi di righe contenute tra /* e */ 5/12/2019

8 Definire una classe Una classe è il mattone di base di ogni linguaggio di programmazione orientato agli oggetti E’ un “template” che descrive i dati e i comportamenti associati alle “istanze” di quella classe Quando si “istanzia” una classe si crea un oggetto che si comporta esattamente nello stesso modo di tutte le altre “istanze” della stessa classe Ogni classe viene istanziata tramite un metodo particolare detto “costruttore” 5/12/2019

9 public static void main( String[] args )
Il metodo main Perché un’applicazione possa essere eseguita da una java virtual machine, essa deve avere almeno una classe che implementa un metodo particolare : il main method la signature è public static void main( String[] args ) 5/12/2019

10 Uso di “classi” e “oggetti”
Non si può accedere ai metodi o agli attributi di una classe senza averla prima istanziata …. a meno che non siano statici Esistono due tipi di metodi : Quelli che ritornano un valore Quelli che non ritornano valori ( void ) Esistono variabili Modificabili Non modificabili 5/12/2019

11 Visibilità Ogni metodo o attributo di una classe può essere
Privato (private) : accessibile solo all’interno della classe Non specificato : accessibile all’interno della classe e del package Protetto (protected) : accessibile dalla classe, dal package e dalle sottoclassi Pubblico (public) : accessibile a tutti Specifier Class Package Subclass Tutti private Y N nothing protected public 5/12/2019

12 Esempio class Persona { String nome; private String cognome;
int annoNascita; public Persona ( String nome, String cognome, int annoNascita ) { this.nome = nome; this.cognome = cognome; this.annoNascita = annoNascita; } public int calcolaEtà( int anno ) { return (anno-annoNascita); public String getCognome ( ) { return cognome; 5/12/2019

13 Esempio class Studente extends Persona { String scuola;
public Studente(String nome, String cognome, int annoNascita) { super(nome, cognome, annoNascita); } public Studente(String nome, String cognome, int annoNascita, String scuola) { this.scuola = scuola; public int calcolaEtà( int anno ) { if ( anno < annoNascita ) throw new RuntimeException("Lo studente non era nato nel " + anno ); return super.calcolaEtà(anno); 5/12/2019

14 Esempio public class Esempio {
public static void main ( String[] args ) { new Esempio(); } public Esempio () { Studente studente = new Studente ( "Luigi","Gialli",1980); System.out.println("Lo studente " + studente.nome + " và a scuola " + studente.scuola); System.out.println("adesso setto scuola = pippo"); studente.scuola = "pippo"; System.out.println("Lo studente " + studente.nome + " và alla scuola " + studente.scuola); System.out.println("Ridefinisco lo studente come persona"); Persona persona = (Persona) studente ; System.out.println("Il cognome della persona è " + persona.cognome); System.out.println("Il cognome dello studente è " + studente.getCognome()); 5/12/2019

15 Come si “compila” Il compilatore prende in input un file di testo con estensione “.java” e restituisce un file “binario” con estensione “.class” Nel caso di HelloWorldApp.java : java HelloWorldApp.java Al termine avremo il file HelloWorldApp.class 5/12/2019

16 Come si esegue In generale : Nel nostro caso
java <nome classe startup> Nel nostro caso java HelloWorldApp 5/12/2019

17 Programmare “a oggetti” in java
La programmazione a oggetti si rifà ai concetti quotidiani Le classi sono i “templates” degli oggetti Gli oggetti sono le implementazioni delle classi Una classe può essere definita in termini di altre classi Gli oggetti parlano tra loro tramite messaggi Oggetti di classi diverse possono parlare tra di sé tramite delle interfacce 5/12/2019

18 Cos’è un oggetto Un oggetto è una collezione ( software ) di variabili e di metodi Tutto quello che un oggetto sa (stato) e che può fare (comportamento) è espressione delle variabili e dei metodi di quell oggetto Un’istanza di un oggetto è la rappresentazione ( software ) di un modello 5/12/2019

19 Esempio L’oggetto bicicletta potrebbe essere definito in questi termini Velocità Numero di pedalate Marcia corrente E avere la possibilità di Cambiare marcia Cambiare il numero di pedalate Frenare 5/12/2019

20 Variabili e metodi di istanza
Le variabili che definiscono lo stato della “bicicletta” sono chiamate variabili di istanza I metodi che modificano lo stato della bicicletta sono chiamati metodi di istanza 5/12/2019

21 Cos’è un messaggio ? Un singolo oggetto, da solo, generalmente serve a poco; normalmente esso è un componente di un programma più vasto. Attraverso l’interazione di più oggetti un programma porta a termine operazioni complesse : una bicicletta non è in grado di compiere nessuna operazione da sola. Diventa utile quando un altro oggetto ( una persona ) interagisce con una bicicletta ( pedalando ) Gli oggetti software interagiscono e comunicano scambiandosi messaggi. Quando l’oggetto A vuole che l’oggetto B compia un’azione specificata in un metodo di B, l’oggetto A manda un messaggio all’oggetto B A volte un oggetto ha bisogno di informazioni per poter sapere esattamente cosa fare : quando l’oggetto persona chiede all’oggetto bicicletta di cambiare marcia, deve specificare quale marcia utilizzare. Queste informazioni sono note come parametri 5/12/2019

22 Quali vantaggi dall’uso dei messaggi ?
Il comportamento di un oggetto è espresso attraverso i suoi metodi; eccezion fatta per le variabili pubbliche, lo scambio di messaggi supporta tutte le interazioni possibili fra due oggetti Gli oggetti non hanno bisogno di essere nello stesso processo ( neanche sulla stessa macchina ) per mandarsi e ricevere messaggi : ad esempio, un’applicazione web potrebbe essere composta da un’ applet sul proprio pc che comunica con un processo, ad esempio una servlet, servito da un server dall’altra parte del mondo 5/12/2019

23 Cos’è l’ereditarietà In generale, gli oggetti sono definiti in termini di classi Si conosce molto di un oggetto conoscendo “la sua classe” Anche se una persona non conosce che cos’è una “scaglietti”, se gli viene detto che è un’automobile, automaticamente sa che ha 4 ruote , un volante, un serbatoio, un accelleratore … 5/12/2019

24 Cos’è l’ereditarietà La programmazione a oggetti porta questo concetto un po’ più in là : posso definire una classe in termini di altre classi Ad esempio : utilitaria, station wagon e cabrio sono tutti tipi di automobile Utilizzando la terminologia della programmazione a oggetti, utilitaria, station wagon e cabrio sono sottoclassi di automobile In maniera analoga, automobile è la superclasse di utilitaria, station wagon e cabrio 5/12/2019

25 Cos’è l’ereditarietà Ogni sottoclasse eredita stato ( nel senso di dichiarazione di variabili ) e comportamento dalla sua superclasse. Da un utilitaria, station wagon e cabrio, come da un automobile generica, ci si aspetta che abbia quattro ruote, che possa frenare, accelerare … Le sottoclassi non sono limitate dalle superclassi in termini sia di stato che di metodi Ad esempio, una monovolume, pur essendo un tipo di automobile, ha un numero normalmente maggiore allo standard di sedute. Le sottoclassi possono fare l’“override” di alcune funzioni delle superclassi, ossia ridefinire il proprio comportamento ridefinendo alcuni metodi Ad esempio, un’ auto con cambio automatico ridefinisce rispetto allo standard, il modo in cui l’operatore passa da una marcia all’altra 5/12/2019

26 Cos’è l’ereditarietà Non si è limitati da un solo livello di ereditarietà, anche se nel mondo reale questo si verifica di rado. Attenzione a forzare l’ereditarietà : a volte la cosa più ovvia non è la più giusta ! Una bicicletta è un mezzo di trasporto; anche un autobus o una macchina sono dei mezzi di trasporto. Se definissi la bicicletta come sottoclasse di “mezzo di trasporto” bicicletta potrebbe ereditare metodi inutili ( tipo apertura bagagliaio ) 5/12/2019

27 Quali vantaggi dall’uso dell’ereditarietà ?
Le sottoclassi forniscono comportamenti specializzati basati su elementi comuni forniti dalle superclassi. Attraverso l’uso dell’ereditarietà si possono riutilizzare porzioni di codice della superclasse molte volte Si possono definire superclassi astratte ( abstract ) che definiscono i comportamenti comuni. Le classi astratte definiscono e possono parzialmente implementare il comportamento, ma la maggior parte della classe non è generalmente implementata. I dettagli “comportamentali” di queste classi vengono definiti in delle classi specializzate 5/12/2019

28 Cos’è un’interfaccia ? In generale, un’ interfaccia è uno strumento o un sistema che entità non correlate usano per comunicare Un telecomando è un interfaccia tra una persona ed un televisore Il linguaggio è un interfaccia tra due persone Il protocollo imposto negli ambienti militari è un’interfaccia tra individui di differente rango 5/12/2019

29 Cos’è un’interfaccia ? Nel linguaggio java un’interfaccia è un tipo, esattamente come una classe. Esattamente come una classe definisce dei metodi Diversamente da una classe, un interfaccia non implementa mai i metodi, che vengono implementati da una classe che implementa l’interfaccia Una classe può implementare più interfacce 5/12/2019

30 Cos’è un’interfaccia ? La classe bicicletta e tutta la sua gerarchia definiscono cosa una bicicletta può fare, in termini di “essere una bicicletta”. Ma la classe dovrebbe poter interagire con il mondo in altri termini : Un sistema di gestione di inventario si disinteressa completamente di che classi deve gestire fintanto che ogni oggetto possa essere interrogato riguardo a certe informazioni ( ad esempio il prezzo ) Invece di forzare la relazione tra oggetti che, altrimenti, non avrebbero alcuna relazione, il sistema mette a disposizione un “protocollo” di comunicazione. Questo protocollo è fornito, dal sistema, in termini di una serie di definizioni di metodi contenuti in una interfaccia da implementare. Per poter lavorare all’interno del sistema di inventario , la classe bicicletta deve conformarsi a questo protocollo implementando un’interfaccia 5/12/2019

31 Quali vantaggi dall’uso delle interfacce ?
“Catturare” le similitudini fra le classi che non hanno relazione le une con le altre, senza forzare artificialmente una relazione Dichiarare un metodo che una o più classi “devono” implementare. Esporre l’interfaccia di programmazione di un oggetto senza dover esporre la classe stessa Modellizzare l’ereditarietà multipla, che fa sì che una classe possa avere più di un padre 5/12/2019

32 I packages I package sono delle collezioni di classi, racchiuse in una collezione che le accomuna. Sono in pratica delle librerie a cui l'utente può accedere e che offrono varie funzionalità. 5/12/2019

33 Quali vantaggi dall’uso dei packages ?
I packages sono la vera forza di java Il nucleo del linguaggio Java contiene solo le parole chiave per la costruzione delle classi, i commenti, i normali costrutti if, switch, while, do-while, for, etichette, break, continue e return (manca il goto),che vedremo in dettaglio prossimamente; Tutto il resto è implementato nei package del linguaggio, comprese le normali primitive di Input e di Output. Facilita la programmazione : Si abbassa il rischio di conflitti fra i nomi di classi Ognuno può ridefinire una classe all’interno di un proprio package Esistono packages già pronti praticamente per qualsiasi cosa 5/12/2019

34 Maggiori informazioni
5/12/2019


Scaricare ppt "Corso Java Lezione 1 5/12/2019."

Presentazioni simili


Annunci Google