Corso Java Lezione 1 5/12/2019.

Slides:



Advertisements
Presentazioni simili
Recupero debito quarto anno Primo incontro
Advertisements

1 Programmazione ad oggetti in Java E.Mumolo, DEEI
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
La Programmazione ad Oggetti
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Programmazione in Java Parte II Lezione 5 Dott. Marco Faella.
La codifica di Huffman Un'implementazione in C++ (parte del materiale è opera di Mark Nelson, Dr. Dobb’s Journal, Gennaio 1996)‏
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Basi di dati - Fondamenti
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Corso per Webmaster base
Introduzione alla programmazione MIDI
© 2007 SEI-Società Editrice Internazionale, Apogeo
Sistemi e Applicazioni per l’Amministrazione Digitale
Java World Introduzione.
ODMG.
Maurizio Cozzetto, Francesco Sarasini
Introduzione al linguaggio C
EasyGraph Dynamic web-based dashboard
Esercizi.
Generazione di codice dinamico per la realizzazione di catene di servizi componibili Matteo Fazi – matr
Programmazione per la Musica | Adriano Baratè
Programmazione a oggetti
Unità didattica 1: Introduzione al linguaggio Java
Programmazione a oggetti
UML Creato da: Enrico Tarantino Alessandro Vilucchi Roberta Barcella.
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
Tecniche di Problem-Solving
Programmazione ad Oggetti per la Fisica
analizzatore di protocollo
Corso di Ingegneria del Web A A Domenico Rosaci 1
Corso Java Introduzione.
istalliamo l’ambiente di sviluppo - ide
Gli oggetti: concetti avanzati
Gli schemi concettuali
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
OBJECT ORIENTED DATABASE
Programmare.
Package Pacchetti e ereditarietà 29/12/2018 package.
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Oggetti Java.
Copia di oggetti il costruttore di copia ha le stesse particolarità della signature di un costruttore ordinario; il primo parametro è una reference ad.
Sommario cos’è un tipo di dato astratto astrazione tramite specifica:
Il passaggio dei parametri Metodi statici Il riferimento this
© 2007 SEI-Società Editrice Internazionale, Apogeo
© 2007 SEI-Società Editrice Internazionale, Apogeo
APPUNTI SUL LINGUAGGIO C
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Eccezioni – Precisazioni e approfondimenti
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Paradigma di programmazione event-driven
Unità 1 Programmi base.
Programmazione e Laboratorio di Programmazione
Corso Java – Intoduzione
Java Introduzione.
UML Diagramma statico di una classe
Array e Stringhe Linguaggio C.
Ese 1 (del 31 Marzo 2004).
Ese 3 (del 3 Aprile 2003).
CLOUD.
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

Corso Java Lezione 1 5/12/2019

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

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

“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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Maggiori informazioni http://java.sun.com/docs/books/tutorial/java/TOC.html#concepts 5/12/2019