Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Terminologia
- Tipo di dato astratto: insieme di valori con operazioni per accedere/modificare istanze
- Modulo: collezione di definizioni di dati e codice tra loro collegati
- Tipizzazione statica: informazioni di tipo associate agli identificatori
- Tipizzazione dinamica: informazioni di tipo associate agli oggetti
Esecuzione in un contesto Object-Oriented
Un programma in esecuzione consiste di un insieme di oggetti, che comunicano tra loro inviando e ricevendo messaggi, ed eventualmente eseguendo un metodo (alla ricezione).
Gli oggetti appartengono a classi (definizioni di tipi di dato astratto) e consistono di attributi (dati) e metodi (comportamento).
Le classi definiscono staticamente dati e comportamento di un insieme di oggetti dello stesso tipo.
Unified Modeling Language (UML)
Modellazione
Un modello è una descrizione astratta del sistema, in cui è inclusa anche una descrizione dell'ambiente in cui il sistema dovrà operare.
Modellare un sistema aiuta gli analisti
A capire le funzionalità del sistema e favorisce la comunicazione con i committenti.
Le astrazioni, non hanno lo stesso rigore che può avere l'implementazione stessa.
Sono ignorano dettagli che possono distrarre dall'essenza del problema.
Occorre rendersi conto dell'approssimazione introdotta nel trarre conclusioni.
UML è un tentativo di standardizzazione diversi modelli disponibili per il software, in quanto il software non dispone ancora di tecniche standard efficaci per descriverne la struttura, le funzionalità e le prestazioni.
DIAGRAMMI
- Diagrammi di struttura; mostrano la struttura interna (statica) del programma, sotto qualche punto di vista.
- Diagramma di comportamento; enfatizza gli aspetti dinamici del programma, ovvero come si comporta.
- Diagrammi di intersezione: mostrano sequenze di interazioni tra i diversi moduli.
Un tipo di dato astratto mi fornisce una visione astratta di un concetto nel mio dominio applicazione.
Un tipo di dato astratto si mappa 1 a 1 con il concetto di "classe". Per questo ci concentriamo sul diagramma di struttura delle classi, e sulle interazioni tra di esse.
CASI DI UTILIZZO
Scopo: sono diagrammi comportamentali che descrivono i requisiti del sistema e le funzionalità di alto livello che devono essere offerte, senza affrontare in alcun modo la descrizione di come le funzionalità sono realizzate.
UNIFIED MODELING LANGUAGE (UML)
DIAGRAMMA DELLE CLASSI
UML consente di esprimere graficamente livelli crescenti di dettaglio nella descrizione delle entità. Un grande livello di dettaglio può essere inadeguato o controproducente nella specifica dei requisiti; diventa invece essenziale nella descrizione dell'architettura della soluzione, dove le classi corrispondono esattamente alle classi della soluzione in Java.
- Descrizione statica (come è fatto, non come agisce)
- Rappresenta una classe (una entità del mio dominio)
- Nome
Attributi (stato) o Metodi/operazioni (comportamento) Visibilità (information hiding): quali rappresentazioni interne voglio far vedere dall'esterno
- + public (tutti)
- - private (nessuno)
- # protected (stessa "cartella" e sottotipi)
- ~ friendly
Associazioni di classi
Un'associazione indica una relazione tra classi (anche all'interno della stessa classe), e può avere:
- Nome (solitamente un verbo, "una persona in una casa")
- classi nell'associazione
- I ruoli svolti dalle classi nell'associazione
In un'azienda lavorano persone, ovvero è come se avessi un attributo "array di riferimenti" da 0 a n all'interno del tipo Azienda.
Invece, è come se avessi un attributo "azienda" in Persona.
Una persona lavora in 1 azienda, ovvero è come se avessi un attributo "azienda" in Persona.
Al posto delle linee, possiamo avere delle frecce; significa che teniamo il riferimento solo in uno dei due "tipi" (quello da cui parte la freccia).
AggregazioniLe aggregazioni sono una forma particolare di associazione; una parte è in relazione con un oggetto (part of).
ComposizioniUna relazione di composizione è un'aggregazione forte, ovvero un'aggregazione in cui le parti componenti non esistono senza il contenitore.
UNIFIED MODELING LANGUAGE (UML)
Un triciclo è un particolare tipo (è sottoclasse di...) di bicicletta, mentre una bicicletta è un particolare tipo di veicolo.
Ereditarietà:
Bicicletta è un particolare tipo di veicolo.
Classi astratte:
Non possono essere istanziate (non possono avere esemplari).
Interfacce:
Definiscono un insieme di funzionalità offerte (non possono avere esemplari).
Package:
Sono dei contenitori di entità (oggetti, classi o altri package) che servono per organizzare le classi e limitarne l'ambito di visibilità.
UNIFIED MODELING LANGUAGE (UML)
DIAGRAMMI DI INTERSEZIONE
Sono diagrammi che descrivono il comportamento dinamico di un gruppo di oggetti.
che "interagiscono" per risolvere un problema; quali sono le sequenze di invocazione di funzionalità che avvengono tra i diversi moduli. Diagrammi di sequenza Non sto più rappresentando la struttura, ma il suo comportamento; sto rappresentando un particolare scenario di utilizzo dei suoi oggetti. Il riquadro bianco indica il "ciclo di vita" del particolare oggetto. MACCHINE A STATI FINITI Rappresentano il comportamento dei singoli oggetti di una classe in termini di: - Eventi a cui gli oggetti (la classe) sono sensibili - Azioni prodotte - Transizioni di stato UNIFIED MODELING LANGUAGE (UML) Decomposizione OR: un macro stato equivale ad una scomposizione OR degli stati è uno stato attivo per ogni macrostato, modella operazioni concorrenti Decomposizione AND:- Java
Considera il programma come costituito da oggetti (o istanze) che possono agire da soli e interagire fra loro. Un oggetto è un costrutto programmativo che possiede dati, detti attributi, e che può effettuare certe operazioni, dette metodi.
Una classe contiene dichiarazioni di variabili (attributi) e di funzioni (metodi); il valore degli attributi caratterizza le singole istanze (oggetti) di una classe, mentre i metodi servono per manipolare le istanze, ovvero per modificare il valore degli attributi di un determinato oggetto. Può essere vista come un tipo definito dall'utente.
Una classe che specifica le operazioni utilizzabili sul tipo stesso; in altri termini, una classe definisce un tipo di dato astratto.
Un programma Java è organizzato come un insieme di classi; ogni classe corrisponde a una dichiarazione di tipo. Il programma principale è rappresentato da un metodo speciale di una classe, detto main. Fa pensare all'atto di mettere qualcosa in una.
Il termine incapsulamento rappresenta la caratteristica principale dell'incapsulamento, consiste non solo nel racchiudere oggetti in una capsula, ma nel rendere visibile solamente una parte di questa capsula. Quando si produce un frammento di software, occorre descriverlo in modo che altri programmatori possano utilizzarlo e sorvolare su tutti i dettagli del suo funzionamento.
Il termine polimorfismo vuol dire "molte forme": permette a una stessa istruzione di un programma di avere significati differenti in contesti differenti. In un linguaggio di programmazione come Java, il termine polimorfismo indica che il nome di un metodo, usato come istruzione, può causare azioni differenti a seconda degli oggetti che svolgono l'azione.
L'ereditarietà è un modo di organizzare le classi. Grazie all'ereditarietà è possibile definire una sola volta attributi e metodi comuni per poi...
applicarli ad un intero insieme di classi. Se si definisce una classe generica, si può utilizzare l'ereditarietà a posteriori per definire classi specializzate che L'ereditarietà permette al programmatore di evitare di ripetere le stesse istruzioni per ogni singola classe.
Attributi
Tutti gli oggetti della stessa classe hanno la stessa struttura (attributi e metodi), ma ogni oggetto, in ogni istante dell'esecuzione del programma, è caratterizzato da uno stato, che è dato dal valore degli attributi dell'oggetto.
Lo stato degli oggetti può cambiare nel tempo, attraverso l'invocazione di metodi opportuni; esistono alcuni casi in cui gli oggetti sono immutabili, cioè non possono essere modificati. Per poter modificare lo stato, il metodo deve poter accedere ai campi dell'oggetto (attributi) su cui è stato chiamato.
Attraverso i metodi public di
Una classe è possibile vedere qual è lo stato di un oggetto, ma non posso accedere direttamente ai dati (attributi o metodi) definiti come private.
Java Metodi
Alcune sequenze di istruzioni possono dover essere ripetute più volte all'interno di un programma; riferimento ad esse all'interno risulta comodo poter scrivere tali sequenze una volta sola e poter far del programma tutte le volte che la loro esecuzione è necessaria. Un metodo è una sequenza di istruzioni che realizzano una funzionalità del programma.
Visto che un metodo è una porzione di codice riusabile, è necessario lasciare degli "spazi vuoti" nel metodo e riempirli ad ogni invocazione con valori diversi a seconda del caso specifico; questi spazi vuoti vengono realizzati mediante i parametri formali.
Quando si effettua la chiamata ad un metodo, spesso è richiesto di passare un valore o una variabile al metodo, in modo che la possa utilizzare per
Compiere il suo scopo. Nell'invocazione di un metodo si parla di argomenti, con riferimento alle variabili passate al metodo.
Variabili
In un programma, le variabili sono utilizzate per memorizzare i dati, per esempio numeri e lettere. Possono essere considerate come una sorta di contenitore. Il numero, la lettera, o un qualsiasi altro dato contenuto in una variabile è chiamato il valore della variabile; questo valore può essere modificato a run-time.
Le variabili consentono di accedere agli oggetti, e sono allocate nello stack, mentre gli oggetti referenziati dalle variabili sono allocati sullo heap; le variabili sono deallocate quando il metodo termina.
Ciascuna variabile, sia essa di tipo primitivo o di tipo classe, è implementata come un'area di memoria; se la variabile