Principi di OOP con JAVA
|
|
|
- Elvira Ranieri
- 8 anni fa
- Visualizzazioni
Transcript
1 Principi di OOP con JAVA lezioni 08 - gen gen Tommaso Di Noia [email protected]
2 OOP (elementi)
3 Programmazione Procedurale e Orientata agli Oggetti. FUNZIONI OGGETTI STRUTTURE DATI METODI
4 Principi di OOP [Alan Kay ](1) Qualsiasi cosa è un OGGETTO. Si può pensare ad un oggetto come ad una strana variabile. Memorizza dati, ma È possibile fare delle richieste a tale oggetto chiedendogli di eseguire operazioni su se stesso.
5 Principi di OOP [Alan Kay ] (2) Un programma è un insieme di oggetti che, tramite messaggi, si dicono l un l altro cosa fare Per fare una richiesta ad un oggetto, si mandano messaggi a tale oggetto. Più concretamente si può pensare ad un messaggio come ad una richiesta per richiamare un metodo che appartiene ad un particolare oggetto.
6 Principi di OOP [Alan Kay ] (3) Ogni oggetto ha una propria memoria composta da altri oggetti È possibile creare un nuovo tipo di oggetto utilizzando altri oggetti già presenti. In tal modo è possibile scrivere programmi complessi nascondendo tale complessità nella semplicità dei singoli oggetti.
7 Principi di OOP [Alan Kay ] (4) Ogni OGGETTO ha un tipo. Ogni oggetto è una istanza di una classe. Dove classe è sinonimo di tipo type h class La caratteristica più importante di una classe è: Quali messaggi è possibile mandargli? Come è possibile interagire con essa?
8 Principi di OOP [Alan Kay ] (5) Tutti gli OGGETTI dello stesso tipo possono ricevere gli stessi messaggi. Ex. Poiché un oggetto di tipo circle è anche un oggetto di tipo shape, un oggetto che istanzia circle sicuramente può accettare anche messaggi per oggetti che istanziano il tipo (classe) shape.
9 Oggetto [Booch] Identità: espressa da un nome Stato: include le proprietà dette attributi che descrivono gli oggetti Comportamento: rappresentato da funzioni dette metodi che utilizzano o cambiano il valore degli attributi
10 Concetti Object Oriented Oggetto: una entità del mondo reale Classe:un insieme di oggetti aventi le stesse caratteristiche Attributi: proprietà di classi ed oggetti che ne definiscono le caratteristiche Metodi: definiscono il comportamento di tutti gli oggetti appartenenti alla stessa classe Operazioni: definiscono il comportamento degli oggetti istanze di una classe
11 Caratteristiche dell OOP Ereditarietà: ciascuna classe può essere definita in termini di una classe esistente. La nuova classe (sottoclasse) contiene automaticamente la definizione di elementi propri della classe originaria (superclasse) Polimorfismo: pluralità di forme, gli oggetti possono ridefinire le operazioni della classe di cui fanno parte Information Hiding (incapsulamento): ciascuna classe nasconde al proprio interno i dettagli implementativi
12 Esempio: ereditarietà Classificazione delle specie animali Vertebrati Pesci Anfibi Rettili Mammiferi Uccelli
13 Classe Un insieme di oggetti aventi le stesse caratteristiche. E caratterizzata da: Identità: definisce il nome della classe Attributi: la classe non ha stato, ma definisce proprietà locali che sono l astrazione delle proprietà comuni agli oggetti istanze della classe Metodi: definiscono il comportamento della classe. Rappresentano i servizi che possono essere richiesti da un oggetto. I metodi sono implementazioni delle operazioni
14 Visibilità delle proprietà Una classe è concettualmente divisa in due parti: Una parte visibile che fornisce l unico modo tramite il quale è possibile operare sugli oggetti della classe e descrive che cosa, in termini di operazioni ammissibili è possibile fare sugli oggetti Una parte nascosta il cui contenuto non è visibile all esterno della classe e che riguarda come le funzionalità visibili sono realizzate
15 JAVA
16 Distribuzioni (java.sun.com) J2SE (Java 2 Standard Edition): Mette a disposizione un compilatore, vari tool per la gestione del codice, un appletviewer ed un ricco set di API per lo sviluppo di applicazioni e applet. J2EE (Java 2 Enterprise Edition): Orientata allo sviluppo di applicazioni distribuite. Mette a disposizione un insieme di semplici tool per la gestione di un application server ed un semplice DBMS (cloudscape) ed un ricco set di API per lo sviluppo di servlet e di tutte le tecnologie che ruotano attorno ad esse. J2ME (Java 2 Micro Edition): Un ambiente altamente ottimizzato per i dispositivi con scarsa disponibilità di risorse hardware (smart card, telefonini, palmari). Mette a disposizione un ricco set di API per lo sviluppo di midlet ed alcuni tool di gestione (tra i quali vari simulatori di dispositivi di telefonini).
17 Documentazione su java Ambienti di sviluppo integrato (IDE): NetBeans IDE Borland JBuilder Sun One Studio (non più supportato da SUN) Documentazione su tutte le librerie presenti nelle distribuzioni: Java Doc documentazione in formato ipertestuale
18 Java - Caratteristiche Portabile: non prevede aspetti dipendenti dalla implementazione es. le dimensioni dei tipi predefiniti sono fisse Indipendente dall architettura: il compilatore genera un bytecode interpretabile in processori diversi (Java è sia compilato che interpretato) Robusto: il compilatore riscontra molti errori che in altri linguaggi sono riscontrabili solo in esecuzione Sicuro: è destinato all uso in ambienti distribuiti e di rete Altamente versatile: grazie ad un ricco set di API è possibile scrivere qualsiasi tipo di applicazione.
19 Il bytecode file HW.java public class HW { public HW() { } public static void main(string[] args) { System.out.println ( Hello, WORLD!"); } } codice sorgente file HW.class compilatore javac 0 0:getstatic #2 <Field PrintStream System.out> bytecode 1 3:ldc1 #3 <String "Io ne ho viste di cose che voi umani\n non potreste nemmeno immaginarvi."> 2 5:invokevirtual #4 <Method void PrintStream.println(String)> 3 8:return Hello, WORLD! interprete java
20 Classi e Oggetti in java Classe è l unità fondamentale dei programmi java definisce la struttura degli oggetti contiene campi e metodi Il file sorgente.java deve avere lo stesso nome della classe. Sintassi per la definizione di una classe: ModificatoreAccesso class Nomeclasse {//definizione dei campi // definizione dei metodi } Creazione di un oggetto creazione di un istanza della classe Sintassi per la creazione di un oggetto NomeClasse oggetto = new CostruttoreClasse(); Metodo costruttore
21 Esempio: HW.java public class HW { public HW() { } public static void main(string[] args){ System.out.println( Hello,WORLD!"); } }
22 Metodi in java Sintassi per definire un metodo ModificatoreAccesso tipo_restituito nome_metodo (Lista argomenti) { // dichiarazioni e statement} Sintassi per chiamare un metodo: oggetto.metodo(argomenti) Metodi costruttori usati per inizializzare gli oggetti di una classe new costruttore permette di creare un nuovo oggetto nella classe hanno lo stesso nome della classe se il codice della classe non specifica alcun costruttore java fornisce costruttori predefiniti - senza argomenti - che inizializzano i valori a quelli predefinti
23 Esempio (1) : Useless.java public class Useless { private String modificata; private String originale; public Useless(String org) { originale = org; modificata = originale+"questa E' LA STRINGA modificata"; System.out.println("E' stato creato un nuovo oggetto appartenente alla classe Useless \n"); } public void showmodificata(){ System.out.println(modificata); } public void showoriginale(){ System.out.println(originale); } }
24 Esempio (2) : UseUseless.java public class UseUseless { } public UseUseless() { } public static void main(string[] args) { } Useless oggetto1 = new Useless("primo oggetto inutile creato \n"); oggetto1.showoriginale(); Useless oggetto2 = new Useless("secondo oggetto inutile creato \n"); oggetto2.showmodificata();
25 Esempio (3) : UseUseless java UseUseless Useless oggetto1 = new Useless("primo oggetto inutile creato\n"); oggetto1.showoriginale(); oggetto1: Useless originale = primo oggetto inutile creato \n E' stato creato un nuovo oggetto appartenente alla classe Useless primo oggetto inutile creato Useless oggetto2 = new Useless("secondo oggetto inutile creato \n"); oggetto2.showmodificata(); oggetto2: Useless originale = secondo oggetto inutile creato \n E' stato creato un nuovo oggetto appartenente alla classe Useless secondo oggetto inutile creato QUESTA E' LA STRINGA modificata
26 Metodi in java Sintassi per definire un metodo ModificatoreAccesso tipo_restituito nome_metodo (Lista argomenti) { // dichiarazioni e statement} Sintassi per chiamare un metodo: oggetto.metodo(argomenti) OSS: Se l argomento è un oggetto, questo viene passato per riferimento. Metodi costruttori usati per inizializzare gli oggetti di una classe new costruttore permette di creare un nuovo oggetto nella classe hanno lo stesso nome della classe un costruttore non restituisce valore. se il codice della classe non specifica alcun costruttore java fornisce costruttori predefiniti - senza argomenti - che inizializzano i valori a quelli predefinti
27 Gli Oggetti in Java (ed altri particolari) (1) A differenza di altri linguaggi di programmazione orientati agli oggetti (es: C++, SmallTalk, Object Pascal) in Java l allocazione degli oggetti è sempre dinamica, tutto viene caricato nella memoria heap. Non esiste un metodo distruttore. Il garbage collector della JVM si occupa di distruggere gli oggetti che non sono più referenziati. (La chiamata al garbage collector può essere forzata dall utente)
28 Gli Oggetti in Java (ed altri particolari) (2) Poiché non sono disponibili i puntatori (croce e delizia di ogni programmatore) per creare le strutture dati dinamiche (alberi, liste, code, ) sono messe a disposizione delle classi container che si occupano di gestire tali strutture (List, Map, Set). Per gestire tali strutture esistono le classi iterator che permettono di separare la struttura dai metodi per accedervi.
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni
Introduzione alla programmazione
Introduzione alla programmazione Cosa è un calcolatore? Hardware Processore Memoria Periferiche Funzionamento Esegue istruzioni elementari Esegue istruzioni molto velocemente Deve essere programmato Il
Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016 Classe: 4^A inf Prof.ssa Lami Carla Prof. Simone Calugi Programma di INFORMATICA GENERALE, APPLICAZIONI
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Concetti introduttivi
Concetti introduttivi La programmazione Programma: sequenza di operazioni semplici (istruzioni e decisioni) eseguite in successione. Un programma indica al computer i passaggi da compiere per svolgere
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION
CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,
OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini
Primi concetti di Java Lorenzo Bettini OO puro Java è object-oriented puro Non come il C+ + (OO ibrido) Per compatibilità col C Ogni cosa è un oggetto Gli oggetti si manipolano tramite riferimenti String
Programmazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
CLASS DIAGRAM PARTE 1
Istituto di Scienza e Tecnologie dell'informazione A. Faedo Software Engineering Laboratory CLASS DIAGRAM PARTE 1 UML The Unified Modeling Language Guglielmo De Angelis [email protected]
Proprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
Object-Oriented Programming
Object-Oriented Programming Una metodologia di programmazione che consente di modellare la realtà in modo più naturale e vicino all uomo Concetti fondamentali Oggetto Incapsulazione Messaggio Classe Ereditarietà
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
La Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
Programmazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi [email protected] Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
Introduzione all OOP!
Introduzione all OOP! Introdurre l evoluzione dei linguaggi di programmazione e la loro classificazione Introdurre l OOP (astrazione, incapsulamento, ereditarietà) Dal C a Java un primo esempio 1 LINGUAGGI
La programmazione ad oggetti: chiamate di metodi. Overloading. This
ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.
Esempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
