RICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica

Documenti analoghi
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Riassunto. La programmazione OO. Oggi. Esempio

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via

Esempio 2: Subtyping

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Esempi in Java di program.ne O-O

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Java: Definire Classi e Creare Oggetti

Oggetti e classi. Cos è un oggetto

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione ad Oggetti

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Ingegneria del Software

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Classi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura

16 - Ereditarietà, tipi e gerarchie

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Proprietà delle Classi e degli Oggetti in Java

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Richiami su oggetti e OOP

POO in JAVA e Robot EV3

La classe java.lang.object

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Esercitazione n 2. Obiettivi

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Alberi Binario in Java

Progettazione del Software

Programmazione Java: Polimorfismo

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Classi, Ereditarietà e Polimorfismo. Lezione 7

Le basi del linguaggio Java

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

La programmazione ad oggetti (OOP)

Programmazione con Java

Introduzione alle Classi e agli Oggetti. Prof. Francesco Accarino IIS Altiero Spinelli Via leopardi 132 Sesto San Giovanni

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Programmazione orientata agli oggetti Subtyping e polimorfismo

Introduzione Programmazione Java

Algoritmi di Ricerca. Esempi di programmi Java

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

24 - Possibili approfondimenti

Laboratorio di Programmazione 1 [Java]

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Programmazione a Oggetti. Ereditarieta

L ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Programmazione orientata agli oggetti

Ereditarietà e Polimorfismo

Programmazione ad oggetti

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Programmazione a Oggetti Lezione 10. Ereditarieta

Object-Oriented Programming

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

e il loro uso: esistente e cambiare quel che va cambiato specializzare (per ereditarietà) la classe Counter public class EsempioNuovo {

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione orientata agli oggetti Ereditarietà

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione a Oggetti Modulo B

Laboratorio di Programmazione 1 [Java]

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

In questa lezione. Polimorfismo

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Programmazione a oggetti

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Esercitazione. Docente Ing. Mariateresa Celardo

Tipi di Dati Astratti

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Java: loading dinamico e reflection

Il Linguaggio Java. Le interfacce

Esempio su strutture dati dinamiche: ArrayList

Studente (Cognome Nome):

Astrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse, Ereditarietà e Polimorfismo

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Esempio: Interfacce. Gioco Interfacce

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Transcript:

Università degli Studi di Trieste Corso di Laurea Magistrale in INGEGNERIA CLINICA RICHIAMI DI PROGRAMMAZIONE A OGGETTI Corso di Informatica Medica Docente Sara Renata Francesca MARCEGLIA Dipartimento di Ingegneria e Architettura

PROGRAMMAZIONE ALGORITMICA Dati di input Algoritmo Istruzioni Output = Risultati

PROGRAMMAZIONE ALGORITMICA (2) DATO UN VETTORE IN INGRESSO [2 77 1 935 11 19 773 15 3] VOGLIO IN USCITA IL VETTORE ORDINATO Cerco il minimo Lo metto da parte Lo elimino dal vettore Cerco il minimo nel vettore rimanente VETTORE IN USCITA [1 2 3 11 15 19 77 773 935]

PROGRAMMAZIONE NON STRUTTURATA STRUTTURE DATI PROGRAMMA MAIN

PROGRAMMAZIONE PROCEDURALE PROGRAMMA MAIN 3 1 2 PROCEDURA 1 Trova il minimo 6 5 PROCEDURA 2 4 Crea un nuovo vettore senza il minimo identificato PROCEDURA 3 Verifica se il vettore è vuoto DATI GLOBALI

PROGRAMMAZIONE MODULARE MAIN + DATI GLOBALI MODULO 1 MODULO 2 MODULO n DATI GLOBALI + DATI LOCALI DATI GLOBALI + DATI LOCALI DATI GLOBALI + DATI LOCALI Procedura 1 Procedura 2 Procedura 3 Procedura 1 Procedura 2 Procedura 3 Procedura 1 Procedura 2 Procedura 3

PROGRAMMAZIONE A OGGETTI SISTEMA OGGETTO 1 Proprietà = Un sistema è un insieme di entità interagenti = OGGETTI in cui ogni componente è caratterizzato da PROPRIETÀ = ATTRIBUTI AZIONI = METODI Azioni = OGGETTO 1 Proprietà = OGGETTO 1 Proprietà = Azioni = Azioni = OGGETTO 1 Proprietà = Azioni = OGGETTO 1 Proprietà = Azioni =

ALGORITMI vs OGGETTI PROGRAMMAZIONE ALGORITMICA Sequenza di azioni Basato si DATI e FUNZIONI = PROGRAMMI Obiettivo: risolvere un PROBLEMA PROGRAMMAZIONE A OGGETTI Sistema = Insieme di oggetti Basato su OGGETTI fatti da AZIONI e ATTRIBUTI Obiettivo: gestire un SISTEMA

OGGETTI E CLASSI 9

OGGETTI E CLASSI 10

CLASSE ATTRIBUTI = Caratteristiche ESEMPIO FARMACO Principio attivo Dosaggio Forma Farmaceutica MOMENT Principio Att = Ibuprofene Dosaggio = 200 mg Forma = Compresse Prescrivi Cambia Dosaggio OGGETTI METODI = Comportamenti Prescrivi Cambia Dosaggio OGGETTO = ISTANZA DI UNA CLASSE TACHIPIRINA Principio Att = Paracetamolo Dosaggio = 1000 mg Forma = Compresse effervescenti Prescrivi Cambia Dosaggio

ESEMPIO: OSSERVAZIONI MOMENT Principio Att = Ibuprofene Dosaggio = 200 mg Forma = Compresse I VALORI DEGLI ATTTRIBUTI SONO SPECIFICI DELL OGGETTO ISTANZIATO (ogni oggetto ha il suo insieme di valori) Prescrivi Cambia Dosaggio LE AZIONI SONO COMUNI A TUTTE LE ISTANZE DELLA CLASSE

CLASSI E OGGETTI: DEFINIZIONE CLASSE ATTRIBUTI = Caratteristiche Attributo 1 Attributo 2 Attributo 3 NOME CLASSE Att 1 = Val 1 Att 2 = Val 2 Att 3 = Val 3 Metodo 1 Metodo 2 OGGETTO 1 OGGETTI METODI = Comportamenti Metodo 1 Metodo 2 OGGETTO = ISTANZA DI UNA CLASSE Att 1 = Val 4 Att 2 = Val 5 Att 3 = Val 6 Metodo 1 Metodo 2 OGGETTO 2

ATTRIBUTI E METODI ATTRIBUTI Descrivono le proprietà statiche dell oggetto Nella programmazione gli attributi vengono realizzati attraverso l uso delle variabili utilizzate dall oggetto per memorizzare i dati METODI Descrivono le proprietà dinamiche dell oggetto Nella programmazione i metodi vengono realizzati attraverso la scrittura di codice (procedure e funzioni) che implementano le operazioni dell oggetto

PROPRIETÀ DELLE CLASSI. Ereditarietà e Gerarchia di ereditarietà. Tipi di ereditarietà. Polimorfismo

EREDITARIETÀ Classe genitrice farmaco Principio attivo Dosaggio Forma Farmaceutica Costo SSN Prescrivi Cambia Dosaggio Nuova Classe Farmaco di marca Principio attivo Dosaggio Forma Farmaceutica Nome Commerciale Costo SSN Prezzo Pubblico Prescrivi Cambia Dosaggio Calcola costo paziente

GERARCHIE Superclasse SOSTANZE Classe FARMACI DROGHE DA BANCO EQUIVALENTI ODONTOIATRICI NORMATE ILLEGALI Sottoclasse

TIPI DI EREDITARETÀ Ereditarietà singola Da banco Farmaco Equivalente Ereditarietà multipla Terapia Farmaco Sostanza

ESEMPIO sostanza farmaco Principio attivo farmaco odontoiatrico Principio attivo Dosaggio Forma Farmaceutica Costo SSN Principio attivo Dosaggio Forma Farmaceutica Costo SSN Prescrivi Cambia Dosaggio Indicazione Prescrivi Cambia Dosaggio Cambia Indicazione

PROPRIETÀ DELL EREDITARIETÀ Classe Sottoclasse ESTENSIONE la sottoclasse AGGIUNGE NUOVI METODI/ATTRIBUTI RIDEFINIZIONE la sottoclasse RIDEFINISCE I METODI OVERRIDING = riscrittura del codice del metodo

POLIMORFISMO OVERRIDING = i metodi possono assumere forme diverse (cioè implementazioni diverse) all interno della gerarchia delle classi ES. IL METODO PRESCRIVI SARÀ IMPLEMENTATO DIVERSAMENTE NEL FARMACO DA BANCO E NEL FARMACO GENERICO OVERLOADING = i metodi possono assumere forme diverse (cioè implementazioni diverse) all interno della stessa classe ES. IL METODO CAMBIA DOSAGGIO Può RICHIEDERE O DI CAMBIARE IL NUMERO DI ASSUNZIONI O DI CAMBIARE IL NUMERO DI DOSI PER ASSUNZIONE

INCAPSULAMENTO Incapsulamento = Proprietà dell oggetto di incorporare al suo interno attributi e metodi Information hiding = mascheramento dell informazione all interno dell oggetto à espone solo metodi e attributi della sezione pubblica Parte esposta per il dialogo con gli altri oggetti Sezione Pubblica Sezione Privata Attributi e metodi sono visibilie utilizzabili dagli altri oggetti attributi attributi Oggetto metodi metodi Parte nascosta per l implementazione delle azioni/proprietà Attributi e metodi non sono accessibili dagli altri oggetti

INTERFACCIA INTERFACCIA = insieme dei messaggi inviabili all oggetto/ricevibili dall oggetto L interfaccia non consente di vedere come sono implementati i metodi, ma ne permette il loro utilizzo e l accesso agli attributi pubblici Ambiente esterno Sezione PUBBLICA Prescrivi () Cambia Dosaggio () Calcola costo paziente() Sezione PRIVATA?

INTERAZIONE TRA OGGETTI: MESSAGGI Un programma ad oggetti è caratterizzato dalla presenza di tanti oggetti che interagiscono fra loro attraverso il meccanismo dello scambio di messaggi I messaggi possono: Richiedere un informazione su un oggetto Modificare lo stato di un oggetto Dott Rossi Data Nascita = 3/1/69 Matricola = 12345 Specialità = neurologo Ospedale = maggiore Sinemet Principio attivo = levodopa Dosaggio = 150 mg Forma Farmaceutica = compresse Messaggio: Sinemet.prescrivi() Metodo: prescrivi ()

ESERCIZIO 25 Ambiente di lavoro: Eclipse Se non avete Eclipse: Scaricare e installare JDK (java development kit) da http://www.oracle.com/technetwork/java/javase/downloads/jdk8- downloads-2133151.html [OPZIONALE] Scaricare editor di testo (ad es TextWrang oppure EJE) Scaricare e installare Eclipse (ad es, Eclipse Classic, Juno Package)

ESERCIZIO Implementare le classi: Sostanza Farmaco Farmaco da banco La classe Sostanza ha come attributo solo il principio attivo La classe Farmaco ha: Attributi: nome, principio attivo, dosaggio, forma farmaceutica, costo SSN Metodi: prescrivi, cambia dosaggio, cambia forma farmaceutica La classe Farmaco da Banco ha, rispetto alla classe Farmaco,: Attributi: costo al pubblico Metodi: calcola differenza costo, il metodo prescrivi deve ritornare un allerta in cui si dice che il farmaco non necessita di prescrizione

CLASSE SOSTANZA public class Sostanza { public String principioattivo; private String tiposostanza; //Constructor 1: senza tipo sostanza public Sostanza(String pa) { principioattivo = pa; }; //Constructor 2: con tipo sostanza public Sostanza(String pa, String type) { }; principioattivo = pa; tiposostanza = type;

CLASSE FARMACO (ATTRIBUTI) public class Farmaco extends Sostanza{ public String formafarmaceutica; double dosaggio; int costossn; public String nome; //Constructor con il solo attributo di Sostanza public Farmaco(String pa) { super(pa); // TODO Auto-generated constructor stub } //Constructor con tutti gli attributi --> OVERLOAD public Farmaco (String pa, double dose, int cost, String form, String name) { } super(pa); formafarmaceutica = form; costossn = cost; dosaggio = dose; nome = name;

CLASSE FARMACO (METODI) //Metodo Stampa Farmaco public void stampafarmaco(farmaco f){ System.out.println("Nome farmaco = " + f.nome); System.out.println("Principio Attivo = " + f.principioattivo); System.out.println("Dosaggio = " + f.dosaggio); System.out.println("Forma Farmaceutica = " + f.formafarmaceutica); System.out.println("Costo previsto dal SSN = " + f.costossn); } //Metodo PRESCRIVI public void prescrivi (String nomepaz, String nomedott) { System.out.println("Il Farmaco " + nome + " è stato prescritto a " + nomepaz + " da " + nomedott); }

CLASSE FARMACO (METODI) //Metodo cambia Dosaggio (setter) public void cambiadosaggio (double newdose) { dosaggio = newdose; } //Metodo cambia Forma (setter) public void cambiaforma (String newforma) { formafarmaceutica = newforma; } }

SETTER E GETTER Se impongo che un attributo sia private, per poter accedere devoavere dei metodi appositi public class Farmaco extends Sostanza{ public String formafarmaceutica; public double dosaggio; private intcostossn; public String nome; //Setter à posso cambiare il valoredell attributo public void setcostossn (int newcost){ costossn = newcost;} //Getter à posso leggere il valore dell attrbuto public int getcostossn(){ return costossn;}

CLASSE FARMACO DA BANCO public class FarmacoDaBanco extends Farmaco { public int costoalpubblico; public FarmacoDaBanco(String pa, String name, double dose, String form, int cost, int costopubblico) { super(pa, name, dose, form, cost); } costoalpubblico = costopubblico; // TODO Auto-generated constructor stub public int calcolacosto () { int differenza = costoalpubblico-costossn; return differenza; }

CLASSE FARMACO DA BANCO //Override metodo prescrivi public void prescrivi () { System.out.println("Il farmaco " + nomefarmaco + " non è prescrivibile"); } //Override metodo stampa public void stampafarmaco (){ System.out.println ("Nome farmaco = " + nomefarmaco); System.out.println ("Principio Attivo = " + principioattivo); System.out.println ("Dosaggio = " + dosaggio); } System.out.println ("Forma farmaceutica = " + formafarmaceutica); System.out.println ("Costo per il SSN = " + costossn); System.out.println ("Costo al pubblico = " + costoalpubblico); }

MAIN ESEMPIO public class Primary{ public static void main(string[] args) { Sostanza drug1 = new Sostanza("levodopa"); System.out.println(drug1.principioAttivo); "Gel", 9,10); euro"); Farmaco farmaco1 = new Farmaco ("ibuprofene"); //farmaco1.costossn = 15; farmaco1.setcostossn(21); Farmaco farmaco2 = new Farmaco ("paracetamolo","tachipirina",250,"sciroppo",7); farmaco2.stampafarmaco(); farmaco1.dosaggio = 300; farmaco1.nomefarmaco = "Moment 300 ; farmaco1.cambiaforma("compresse dispersibili"); farmaco1.stampafarmaco(); // int costo1 = farmaco1.costossn; int costo1 = farmaco1.getcostossn(); System.out.println(costo1); FarmacoDaBanco fb = new FarmacoDaBanco ("ketoprofene", "Ketoprofene Sandoz", 5, fb.stampafarmaco(); System.out.println ("SCONTRINO"); System.out.println ("Prezzo farmaco" + fb.nomefarmaco+ " = " + fb.calcolacosto() + " farmaco1.prescrivi("mario Rossi", "Alberto Bianchi"); fb.prescrivi(); }}