Anteprima
Vedrai una selezione di 13 pagine su 57
Programmazione Java Pag. 1 Programmazione Java Pag. 2
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 6
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 11
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 16
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 21
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 26
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 31
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 36
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 41
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 46
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 51
Anteprima di 13 pagg. su 57.
Scarica il documento per vederlo tutto.
Programmazione Java Pag. 56
1 su 57
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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).

Aggregazioni

Le aggregazioni sono una forma particolare di associazione; una parte è in relazione con un oggetto (part of).

Composizioni

Una 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:
  1. Java
CLASSI COME ASTRAZIONI Classi e oggetti Java è un linguaggio di programmazione a oggetti (Object Oriented Programming); la OOP è una metodologia di programmazione che

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

Dettagli
A.A. 2021-2022
57 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher edoCappelletti99 di informazioni apprese con la frequenza delle lezioni di Ingegneria del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Margara Alessandro.