Informatica Recupero debito quarto anno Primo incontro.

32
Informatica Informatica Recupero debito quarto Recupero debito quarto anno anno Primo incontro Primo incontro

Transcript of Informatica Recupero debito quarto anno Primo incontro.

Page 1: Informatica Recupero debito quarto anno Primo incontro.

InformaticaInformatica

Recupero debito quarto annoRecupero debito quarto anno

Primo incontroPrimo incontro

Page 2: Informatica Recupero debito quarto anno Primo incontro.

Obiettivi dell’incontroObiettivi dell’incontro Conoscere la differenza fra linguaggi compilati e linguaggi Conoscere la differenza fra linguaggi compilati e linguaggi

interpretatiinterpretati Conoscere le basi della programmazione ad oggetti:Conoscere le basi della programmazione ad oggetti:

Definizione di classi (attributi e metodi)Definizione di classi (attributi e metodi) Definizione e istanziazione di oggettiDefinizione e istanziazione di oggetti Interazione con gli oggettiInterazione con gli oggetti

Dimostrare la conoscenza di un linguaggio di programmazione ad Dimostrare la conoscenza di un linguaggio di programmazione ad alto livello:alto livello:

oo Tipi di datoTipi di dato oo OperatoriOperatori oo Dati strutturatiDati strutturati oo Input/OutputInput/Output oo Strutture di controlloStrutture di controllo oo Procedure/funzioni/metodiProcedure/funzioni/metodi

Saper utilizzare un linguaggio di programmazione per rendere Saper utilizzare un linguaggio di programmazione per rendere operativi i concetti legati alla programmazione ad oggettioperativi i concetti legati alla programmazione ad oggetti

Page 3: Informatica Recupero debito quarto anno Primo incontro.

Linguaggi compilati e Linguaggi compilati e linguaggi interpretatilinguaggi interpretati

Nei programmi scritti con linguaggi di Nei programmi scritti con linguaggi di programmazione ad alto livello ogni istruzione si programmazione ad alto livello ogni istruzione si traduce in un insieme spesso corposo di traduce in un insieme spesso corposo di istruzioni a livello macchina.istruzioni a livello macchina.

I linguaggi di programmazione si dividono in due I linguaggi di programmazione si dividono in due tipologie:tipologie: linguaggi compilatilinguaggi compilati linguaggi interpretatilinguaggi interpretati

La differenza è il modo in cui il linguaggio ad alto La differenza è il modo in cui il linguaggio ad alto livello viene tradotto in istruzioni in codice livello viene tradotto in istruzioni in codice macchinamacchina

Page 4: Informatica Recupero debito quarto anno Primo incontro.

Linguaggi compilatiLinguaggi compilati

Il compilatore è un software che traduce il codice Il compilatore è un software che traduce il codice sorgente in codice macchina e lo memorizza in un file sorgente in codice macchina e lo memorizza in un file (codice oggetto)(codice oggetto)

Un programma eseguibile contiene istruzioni in codice Un programma eseguibile contiene istruzioni in codice macchina specifiche di un processoremacchina specifiche di un processore

Esempi di linguaggi compilati sono C e C++.Esempi di linguaggi compilati sono C e C++.

Page 5: Informatica Recupero debito quarto anno Primo incontro.

Linguaggi interpretatiLinguaggi interpretati

Il programma viene eseguito direttamente da un Il programma viene eseguito direttamente da un software (software (interpreteinterprete) che esegue le istruzioni in codice ) che esegue le istruzioni in codice macchina necessarie per le funzionalità richieste. macchina necessarie per le funzionalità richieste.

L’interprete simula il funzionamento di un processore.L’interprete simula il funzionamento di un processore. Esempi di linguaggi interpretati:Visual Basic, PerlEsempi di linguaggi interpretati:Visual Basic, Perl

Page 6: Informatica Recupero debito quarto anno Primo incontro.

ConfrontoConfronto I linguaggi I linguaggi interpretatiinterpretati sono generalmente sono generalmente più più

lentilenti dei linguaggi dei linguaggi compilaticompilati Uno stesso programma realizzato mediante un Uno stesso programma realizzato mediante un

linguaggio compilato produce in genere migliori linguaggio compilato produce in genere migliori performance rispetto a quando è eseguito con performance rispetto a quando è eseguito con un interprete.un interprete.

I linguaggi I linguaggi interpretatiinterpretati offrono come vantaggio offrono come vantaggio la la rapidità di svilupporapidità di sviluppo. .

Un programma interpretato è eseguibile Un programma interpretato è eseguibile immediatamenteimmediatamente per essere provato dal per essere provato dal programmatore.programmatore.

Page 7: Informatica Recupero debito quarto anno Primo incontro.

I nuovi linguaggi I nuovi linguaggi (compilati e interpretati)(compilati e interpretati)

I linguaggi di programmazione più recenti (Java e i I linguaggi di programmazione più recenti (Java e i linguaggi della piattaforma .NET) sono sia compilato che linguaggi della piattaforma .NET) sono sia compilato che interpretatointerpretato

I file che contengono il codice sorgente di un programma I file che contengono il codice sorgente di un programma sono compilatisono compilati

Il file compilato non contiene codice oggetto specifico di Il file compilato non contiene codice oggetto specifico di un determinato processore ma un di un processore un determinato processore ma un di un processore virtuale (linguaggio intermedio)virtuale (linguaggio intermedio)

Per eseguire il programma compilato è necessario un Per eseguire il programma compilato è necessario un interprete, che traduca il codice oggetto (del processore interprete, che traduca il codice oggetto (del processore virtuale) in istruzioni del processore reale (Java Virtual virtuale) in istruzioni del processore reale (Java Virtual Machine, Framework .NET)Machine, Framework .NET)

Page 8: Informatica Recupero debito quarto anno Primo incontro.

OOPOOP

La La programmazione orientata agli programmazione orientata agli oggettioggetti (Object Oriented Programming) ha (Object Oriented Programming) ha l’obiettivo di formalizzare gli l’obiettivo di formalizzare gli oggettioggetti del del mondo reale e di costruire con questi un mondo reale e di costruire con questi un mondo virtualemondo virtuale. .

Questa parte di mondo che viene Questa parte di mondo che viene ricostruita in modo virtuale è detta ricostruita in modo virtuale è detta dominio applicativodominio applicativo..

Page 9: Informatica Recupero debito quarto anno Primo incontro.

Oggetti e classiOggetti e classi

Per popolare il dominio applicativo Per popolare il dominio applicativo utilizzato dall’applicazione è necessario utilizzato dall’applicazione è necessario creare gli oggetticreare gli oggetti, e per fare questo è , e per fare questo è necessario definire le necessario definire le classiclassi. .

Una classe è lo strumento con cui si Una classe è lo strumento con cui si identifica e si crea un oggetto.identifica e si crea un oggetto.

Page 10: Informatica Recupero debito quarto anno Primo incontro.

Classi e tipi di datoClassi e tipi di dato

Una classe è a tutti gli effetti un tipo di Una classe è a tutti gli effetti un tipo di dato (come gli interi e le stringhe e ogni dato (come gli interi e le stringhe e ogni altro tipo già definito)altro tipo già definito)

Nella programmazione orientata agli Nella programmazione orientata agli oggetti, è quindi possibile sia utilizzare tipi oggetti, è quindi possibile sia utilizzare tipi di dato esistenti, sia definirne di nuovi di dato esistenti, sia definirne di nuovi tramite le classitramite le classi

Page 11: Informatica Recupero debito quarto anno Primo incontro.

Diagramma delle classiDiagramma delle classi

Page 12: Informatica Recupero debito quarto anno Primo incontro.

Diagramma delle classi (UML)Diagramma delle classi (UML)

La prima sezione contiene il nome della classe, la seconda sezione definisce i suoi attributi, mentre più in basso sono definiti i metodi, le operazioni che si possono compiere sull’oggetto di quel tipo

Page 13: Informatica Recupero debito quarto anno Primo incontro.

Classi in JavaClassi in Java

[modificatore] class [nome della classe]{ [attributi] [metodi]}---------------------------------------------------------------class MiaClasse { String mioAttributo; void mioMetodo() { }}

Page 14: Informatica Recupero debito quarto anno Primo incontro.

Gli oggettiGli oggetti

Gli oggetti sono le entità di un programma che Gli oggetti sono le entità di un programma che interagiscono tra loro per raggiungere un interagiscono tra loro per raggiungere un obiettivoobiettivo

Gli oggetti vengono creati in fase di esecuzione Gli oggetti vengono creati in fase di esecuzione ed ognuno di essi fa parte di una categoria (di ed ognuno di essi fa parte di una categoria (di una classe)una classe)

Ogni classe può creare più oggetti, ognuno dei Ogni classe può creare più oggetti, ognuno dei quali pur essendo dello stesso tipo è distinto quali pur essendo dello stesso tipo è distinto dagli altridagli altri

Un oggetto è l’istanza di una classeUn oggetto è l’istanza di una classe

Page 15: Informatica Recupero debito quarto anno Primo incontro.

Un esempio di classeUn esempio di classe

Se vogliamo catalogare i Se vogliamo catalogare i cd musicali in nostro cd musicali in nostro possesso, abbiamo possesso, abbiamo bisogno di implementare bisogno di implementare un programma nel cui un programma nel cui dominio applicativo è dominio applicativo è presente la classe CDpresente la classe CD

I metodi della classe CD I metodi della classe CD servono per impostare e servono per impostare e recuperare i valori degli recuperare i valori degli attributiattributi

Page 16: Informatica Recupero debito quarto anno Primo incontro.

Diagramma degli oggettiDiagramma degli oggetti

I diagrammi che I diagrammi che rappresentano gli rappresentano gli oggetti (Object oggetti (Object Diagram in UML) Diagram in UML)

mettono in luce i valori mettono in luce i valori che assumono gli che assumono gli attributi attributi

Page 17: Informatica Recupero debito quarto anno Primo incontro.

Stato di un oggettoStato di un oggetto

L’insieme dei valori degli attributi di un L’insieme dei valori degli attributi di un oggetto è chiamato stato dell’oggetto e oggetto è chiamato stato dell’oggetto e generalmente può variare in funzione del generalmente può variare in funzione del tempotempo

Page 18: Informatica Recupero debito quarto anno Primo incontro.

Creazione di un oggettoCreazione di un oggetto

Per creare un oggetto si effettua Per creare un oggetto si effettua un’istanziazione di una classe.un’istanziazione di una classe.

In questa fase viene riservato uno spazio In questa fase viene riservato uno spazio di memoria per conservare i valori degli di memoria per conservare i valori degli attributi dell’oggetto che si sta creando attributi dell’oggetto che si sta creando (per mantenere memorizzato da qualche (per mantenere memorizzato da qualche parte lo stato dell’oggetto)parte lo stato dell’oggetto)

Page 19: Informatica Recupero debito quarto anno Primo incontro.

Istanziare un oggetto JavaIstanziare un oggetto Java

A seconda del linguaggio utilizzato si impiegano A seconda del linguaggio utilizzato si impiegano diversi costrutti di programmazione per creare diversi costrutti di programmazione per creare un oggettoun oggetto

In Java la creazione di un oggetto si effettua In Java la creazione di un oggetto si effettua mediante l’istruzione mediante l’istruzione newnew

Esempio: Esempio: Bicchiere calice;Bicchiere calice;calice = new Bicchiere();calice = new Bicchiere();

Oppure:Oppure: Bicchiere calice = new Bicchiere();Bicchiere calice = new Bicchiere();

Page 20: Informatica Recupero debito quarto anno Primo incontro.

Attributi (di istanza)Attributi (di istanza)

Gli attributi di istanza sono quelli posseduti Gli attributi di istanza sono quelli posseduti da un oggetto, chiamati anche più da un oggetto, chiamati anche più semplicemente semplicemente attributiattributi..

L’attributo di un oggetto è una variabile L’attributo di un oggetto è una variabile che ne descrive una caratteristica o che ne descrive una caratteristica o proprietàproprietà

Page 21: Informatica Recupero debito quarto anno Primo incontro.

Attributi di classeAttributi di classe Un attributo di classe è un attributo condiviso da tutte le istanze Un attributo di classe è un attributo condiviso da tutte le istanze

della classe, da tutti gli oggetti creati con essa.della classe, da tutti gli oggetti creati con essa. In Java per dichiarare un attributo di classe si utilizza il modificatore In Java per dichiarare un attributo di classe si utilizza il modificatore

staticstatic..public class Gatto {public class Gatto { public static int numeroDiGatti = 0;public static int numeroDiGatti = 0; public Gatto() {public Gatto() { numeroDiGatti ++;numeroDiGatti ++; }}}}

Ogni volta che viene creato un oggetto di tipo Ogni volta che viene creato un oggetto di tipo GattoGatto, il contatore , il contatore numeroDiGattinumeroDiGatti è automaticamente incrementato di uno. è automaticamente incrementato di uno.

La sintassi per accedere ad un attributo di classe è:La sintassi per accedere ad un attributo di classe è:<NomeClasse>.<NomeAttributo><NomeClasse>.<NomeAttributo>per esempioper esempioSystem.out.print(Gatto.numeroDiGatti);System.out.print(Gatto.numeroDiGatti);

Page 22: Informatica Recupero debito quarto anno Primo incontro.

Metodi (le azioni degli oggetti)Metodi (le azioni degli oggetti)

Un metodo è un’azione che l’oggetto può Un metodo è un’azione che l’oggetto può eseguire.eseguire.

In Java la dichiarazione di un metodo è In Java la dichiarazione di un metodo è composta da:composta da: ModificatoreModificatore Nome del metodoNome del metodo Tipo di dato da ritornareTipo di dato da ritornare Tipo e nome dei parametri di ingresso Tipo e nome dei parametri di ingresso Eventuali eccezioni sollevateEventuali eccezioni sollevate

Tutto questo è detto Tutto questo è detto firma del metodofirma del metodo..

Page 23: Informatica Recupero debito quarto anno Primo incontro.

Metodi (di istanza)Metodi (di istanza)

Un metodo di istanza è un metodo che, Un metodo di istanza è un metodo che, per essere utilizzato, ha bisogno della per essere utilizzato, ha bisogno della creazione di un oggetto della classe a cui creazione di un oggetto della classe a cui appartiene su cui essere invocato.appartiene su cui essere invocato.

Un metodo di istanza è anche chiamato Un metodo di istanza è anche chiamato semplicemente semplicemente metodometodo..

Page 24: Informatica Recupero debito quarto anno Primo incontro.

Un esempioUn esempio

Si vuole realizzare una classe che Si vuole realizzare una classe che permetta di gestire e risolvere equazioni di permetta di gestire e risolvere equazioni di secondo gradosecondo grado

Page 25: Informatica Recupero debito quarto anno Primo incontro.

Equazione: attributiEquazione: attributi

In una equazione individuiamo tre In una equazione individuiamo tre attributiattributi: : a, b, ca, b, c che rappresentano i che rappresentano i coefficienti dicoefficienti di x x22, di , di xx ed il termine noto ed il termine noto

L’equazione L’equazione 3x3x22-2x+1=0-2x+1=0 avrà come avrà come attributi i valori 3, -2 e 1attributi i valori 3, -2 e 1

Page 26: Informatica Recupero debito quarto anno Primo incontro.

Equazione: metodiEquazione: metodi

Definiamo un insieme di metodi che ci Definiamo un insieme di metodi che ci permetta di:permetta di: Modificare i valori dei coefficientiModificare i valori dei coefficienti Ottenere i valori dei coefficientiOttenere i valori dei coefficienti Conoscere il tipo di equazioneConoscere il tipo di equazione Ottenere la prima soluzioneOttenere la prima soluzione Ottenere la seconda soluzioneOttenere la seconda soluzione

Page 27: Informatica Recupero debito quarto anno Primo incontro.

Equazione: diagramma di classeEquazione: diagramma di classe

+setA(in v : double)+getA() : double+setB(in v : double)+getB() : double+setC(in v : double)+getC() : double-delta() : double+pura() : boolean(idl)+spuria() : boolean(idl)+complessa() : boolean(idl)+soluzione1() : double+soluzione2() : double

-a : double-b : double-b : double

Equazione

Page 28: Informatica Recupero debito quarto anno Primo incontro.

EsercizioEsercizio

Implementare in Java o in C++ la classe Implementare in Java o in C++ la classe EquazioneEquazione

Istanziare due equazioni:Istanziare due equazioni: 5x5x22-3x+2=0-3x+2=0 2x2x22-4=0-4=0

a : double = 5b : double = -3b : double = 2

eq1 : Equazionea : double = 2b : double = 0b : double = -4

eq2 : Equazione

Page 29: Informatica Recupero debito quarto anno Primo incontro.

OverloadingOverloading

In alcuni casi è utile avere un metodo che possa essere In alcuni casi è utile avere un metodo che possa essere chiamato sia con parametri, sia senza, oppure con chiamato sia con parametri, sia senza, oppure con numero e tipo di parametri differenti.numero e tipo di parametri differenti.

Nel caso di due o più metodi con lo stesso nome ma con Nel caso di due o più metodi con lo stesso nome ma con parametri differenti si parla di parametri differenti si parla di overloadingoverloadingpublic int somma(int addendo1, int addendo2) {public int somma(int addendo1, int addendo2) { return addendo1 + addendo2;return addendo1 + addendo2;}}public float somma(float addendo1, float addendo2) {public float somma(float addendo1, float addendo2) { return addendo1 + addendo2;return addendo1 + addendo2;}}

L’overloading consente di L’overloading consente di sovraccaricaresovraccaricare il metodo con il metodo con più di un significato.più di un significato.

Page 30: Informatica Recupero debito quarto anno Primo incontro.

Metodo costruttoreMetodo costruttore

Il Il costruttore costruttore è un metodo particolare che è un metodo particolare che viene invocato alla creazione dell’oggetto viene invocato alla creazione dell’oggetto e che contiene tutte le istruzioni da e che contiene tutte le istruzioni da eseguire per la sua inizializzazione.eseguire per la sua inizializzazione.

Page 31: Informatica Recupero debito quarto anno Primo incontro.

ModificatoriModificatori

publicpublic: consente a qualunque classe o oggetto di : consente a qualunque classe o oggetto di qualsiasi tipo di avere accesso all’attributo o al metodo a qualsiasi tipo di avere accesso all’attributo o al metodo a cui è applicato.cui è applicato.

protectedprotected: consente l’accesso solo alle classi e agli : consente l’accesso solo alle classi e agli oggetti il cui tipo è una sottoclasse di quella in cui è oggetti il cui tipo è una sottoclasse di quella in cui è utilizzato. Le sottoclassi saranno trattate in successive utilizzato. Le sottoclassi saranno trattate in successive lezioni.lezioni.

privateprivate: consente l’accesso solo agli oggetti della classe : consente l’accesso solo agli oggetti della classe stessa in cui è utilizzato.stessa in cui è utilizzato.

Visibilità di default: si applica senza anteporre alcun Visibilità di default: si applica senza anteporre alcun modificatore; consente a tutte le classi appartenenti allo modificatore; consente a tutte le classi appartenenti allo stesso package di accedere all’attributo o al metodo.stesso package di accedere all’attributo o al metodo.

Page 32: Informatica Recupero debito quarto anno Primo incontro.

Interazione tra oggettiInterazione tra oggetti

Per comunicare, gli oggetti possono utilizzare i metodi, Per comunicare, gli oggetti possono utilizzare i metodi, scambiandosi messaggi l’uno con l’altro.scambiandosi messaggi l’uno con l’altro.

Quando un oggetto invoca un metodo di un altro, Quando un oggetto invoca un metodo di un altro, quest’ultimo reagisce eseguendo il metodo opportuno.quest’ultimo reagisce eseguendo il metodo opportuno.

L’invocazione dei metodi può richiedere parametri di L’invocazione dei metodi può richiedere parametri di input di qualsiasi tipo, compresi quindi oggetti del nostro input di qualsiasi tipo, compresi quindi oggetti del nostro dominio applicativo. dominio applicativo.

Un oggetto potrà quindi essere in grado di passarne un Un oggetto potrà quindi essere in grado di passarne un altro attraverso un metodo, o addirittura potrà passare se altro attraverso un metodo, o addirittura potrà passare se stesso.stesso.

Un messaggio ha la seguente sintassi:Un messaggio ha la seguente sintassi:<NomeOggetto>.<nomeMetodo>(<paramteri>)<NomeOggetto>.<nomeMetodo>(<paramteri>)