• Non ci sono risultati.

RAPPRESENTAZIONE E STUDIO DI

N/A
N/A
Protected

Academic year: 2022

Condividi "RAPPRESENTAZIONE E STUDIO DI"

Copied!
18
0
0

Testo completo

(1)

Favero Michael, Roveda Daniele, Simoni Tommaso, Venturini Leonardo

Classe 4B informatica

Anno scolastico 2019-2020

FUNZIONI MATEMATICHE

Progetto per il calcolo del grafico e dello studio di funzioni matematiche, classe 4B informatica

Il progetto vuole produrre un programma il cui scopo è quello di, a partire da una o più funzioni matematiche inserite dall’utente, disegnarne il grafico e svolgerne parte dello studio.

(2)

Sommario

Introduzione ... 2

Strumenti utilizzati ... 2

Per lo sviluppo ... 2

Per la condivisione... 2

Analisi e progettazione ... 2

Diagramma dei casi d’uso ... 2

Diagramma delle classi ... 4

Scenari ... 9

Sviluppo ... 10

Architettura del sistema ... 10

Layout delle pagine ... 11

Risultati raggiunti e sviluppi futuri ... 12

Riferimenti ... 13

(3)

I NTRODUZIONE

Il progetto vuole unire le competenze informatiche ottenute nel nostro percorso scolastico

parallelamente a quelle di analisi matematica, fornendo un’interfaccia che permetta all’utente che la fruisce di eseguire uno studio parziale di una funzione matematica, o anche più di una

contemporaneamente. Il programma permetterà a chi ne fa uso di inserire come stringa la funzione da studiare e di visualizzare a schermo il grafico su piano cartesiano, oltre che lo studio di funzione svolto.

Il programma vuole dare la possibilità all’utente di mettere a confronto più grafici di funzione, visualizzandoli contemporaneamente sul piano cartesiano.

S TRUMENTI UTILIZZATI

Per la realizzazione del nostro programma abbiamo utilizzato l’IDE Eclipse, strumento di cui

conosciamo in modo sufficiente e concreto le funzionalità e che ci ha permesso di realizzare il codice e la documentazione del nostro progetto.

Per lo sviluppo

Come linguaggio di programmazione abbiamo adottato Java, studiato a livello scolastico e sufficiente per ricreare un’interfaccia grafica gradevole e comprensibile all’utente. Ci siamo avvalsi inoltre di un linguaggio a noi precedentemente sconosciuto per la scrittura in notazione scientifica delle espressioni matematiche: il Latex. Abbiamo sfruttato questo nuovo linguaggio tramite una libreria Java apposita, utile all’esportazione di formule Latex come immagini bufferizzate inseribili Runtime nell’interfaccia utente. Ci siamo avvalsi di plugin Eclipse per la modellazione automatica dei diagrammi UML utili alla documentazione finale, e per realizzare, tramite il plugin JBuilder, l’interfaccia grafica in maniera più agile dal punto di vista realizzativo rispetto alla stesura del codice manualmente, che poi è stato modificato o ritoccato in base alle esigenze.

Per la condivisione

Per la condivisione dai file prodotti da ogni componente del nostro team ci siamo avvalsi di servizio cloud di Mega. La comunicazione tra i membri del gruppo è stata facilitata da un coordinamento tramite chat di gruppo WhatsApp, mentre gli incontri vocali, tra parti del gruppo o per la comunicazione generale per il proseguo delle attività progettuali, sono stati svolti su piattaforma Zoom e Discord.

A NALISI E PROGETTAZIONE

Per la realizzazione del nostro progetto ci siamo ispirati all’ idea di un componente del nostro team, insieme ci siamo confrontati sulla fattibilità della sua idea e abbiamo poi trovato il modo di renderla qualcosa di concreto. L’idea alla base di questo progetto era quella di unire due discipline fondamentali del nostro corso di studi: la matematica e l’informatica. Ci siamo subito organizzati per suddividere il lavoro: la progettazione e l’implementazione dell’interfaccia grafica, la realizzazione della parte del calcolo matematico e la sua rappresentazione sul grafico. Spesso il nostro gruppo ha lavorato sfruttando la tecnica informatica del pair-programming che ci ha permesso di essere piuttosto produttivi

minimizzando il più possibile la probabilità di errore.

(4)

Diagramma dei casi d’uso

(5)

Diagramma delle classi

Complessivo

(6)

Pacchetto per pacchetto Model

(7)

Libreria MathParser (all’interno di Model)

(8)
(9)

Control

(10)

Scenari

Sequenza esportazione grafico

Sequenza esportazione grafico

(11)

S VILUPPO

Per lo sviluppo del software complessivo ci siamo affidati al modello MCV, perché sufficientemente completo per unire tutte le funzionalità del programma. Data la poca efficienza delle classi fornite da Oracle per poter svolgere dei calcoli matematici su un’espressione fornita sotto forma di stringa dall’utente è stato scelto di riscrivere una libreria apposita, la MathParser, che permette di creare un albero di operandi matematici e valori per lo studio ed il disegno di una funzione. Per rendere

ulteriormente efficace la libreria è stato scelto di usare una struttura dati, questa volta fornita da Oracle stessa, che simula il vettore associativo di PHP, non implementato nel linguaggio Java: la HashMap.

Questa è un’implementazione dell’interfaccia Map che mette a disposizione all’utente la possibilità di memorizzare delle associazioni chiave-valore di istanze Object a piacimento (data la parametricità dell’interfaccia Map), e cercando un’oggetto all’interno della struttura dati fornendone la sola chiave, senza dovere dunque svolgere dei cicli di ricerca (anche se non sappiamo con certezza quale sia la modalità di gestione della ricerca stessa implementata dall’interfaccia HashMap).

Architettura del sistema

Il nostro programma è stato diviso secondo il Pattern MCV (Model Control View). Oltre ad aver

sfruttato questa suddivisione dei pacchetti allo scopo di scindere in modo chiaro i 3 aspetti principali del nostro software finale, abbiamo deciso di implementare questa suddivisione in modo tale da permetterci di lavorare parallelamente al progetto. Questa organizzazione ha reso inoltre molto più facile la

localizzazione e successiva risoluzione dei problemi. Il model contiene tutti le classi che si occupano dei dati per la conversione della stringa inserita dall’ utente e delle successive operazioni matematiche, fondamentali per il corretto funzionamento del programma. Il view ospita invece tutte le classi relative all’interfaccia grafica e al disegno del grafico di funzione. Nel control sono gestiti invece tutti gli eventi generati dall’interazione utente con l’interfaccia.

(12)

Layout delle pagine

Nella prima schermata “Grafico Funzione”, relativa al disegno del grafico è possibile inserire in input una funzione, aiutandosi con i preset disponibili, e attraverso la pressione del tasto “Calcola”, verrà mostrato a video il risultato dell’elaborazione.

(13)

Questa immagine, relativa alla sezione “Studio Funzione”, mostra lo studio parziale delle funzioni date in input (Dominio, Derivata Prima, Derivata Seconda e Grafico relativo).

Questa schermata, che appare a video nel momento in cui si seleziona la voce “Esporta Grafico” presente nel menù, mostra il selettore del percorso nel quale esportare il grafico ed in quale formato.

R ISULTATI RAGGIUNTI E SVILUPPI FUTURI

Il progetto finito è risultato rispecchiare nel complesso le nostre aspettative non che la progettazione iniziale. Il disegno talvolta può presentare qualche errore, soprattutto nel disegno della funzione matematica nei dintorni dei suoi punti di discontinuità, mostrando un grafico non sempre preciso in

(14)

determinate aree. Non è stato sufficiente il tempo per trovare una soluzione adeguata alla

semplificazione del Dominio di funzione, che però è stato calcolato. In futuro vorremmo aggiungere qualche funzionalità matematica, nonché riportare il progetto in piattaforma Android con le librerie Java già scritte.

R IFERIMENTI

Look and Feel Flatlaf: formdev.com/flatlaf/

Libreria JLatexMath: github.com/

Sito icone: flaticon.com

Altre Fonti di Informazione: stackexchange.com, stackoverflow.com, oracle.com

R EQUISITI FUNZIONALI

1.1 - Generali

Nome Inserisci funzione

Scopo Inserire la funzione da studiare

Attori

Trigger Aprire il programma nella sezione grafico

funzione

Pre-condizioni La funzione inserita deve essere inserita

rispettando la sintassi adeguata

Post-condizioni -

Nome Nascondi / mostra funzione nel grafico

Scopo Nascondere la visualizzazione di una funzione nel

grafico Attori

Trigger Nel menu a destra del programma nella sezione

grafico funzione cliccando sopra ad una funzione

(15)

si può nasconderla oppure ricicciandoci questa apparirà nuovamente nel grafico

Pre-condizioni Aver inserito almeno una funzione

Post-condizioni -

Nome Inserisci presets

Scopo Inserire un presets sotto forma di simbolo,

logaritmo o di funzione di trigonometria Attori

Trigger Aprire il menu a tendina dei presets all’ interno

della sezione grafico e scegliere il presets desiderato cliccandoci sopra e questo apparirà nella cella di inserimento

Pre-condizioni Aver selezionato la sezione relativa al grafico della funzione

Post-condizioni

Nome Modificare dimensione della finestra

dell’applicazione

Scopo Poter ingrandire o diminuire la finestra

Attori

Trigger Cliccando sull’apposito tasto la finestra potrà

occupare tutto lo schermo, si potrà inoltre modificare la dimensione estendendo uno dei lati della finestra

Pre-condizioni -

Post-condizioni -

1.2 – Menù

Nome Esporta Grafico

Scopo Esportare un’immagine (in formato jpg o png)

Attori

(16)

Trigger Aprire il menu relativo all’opzione file e scegliere la funzione esporta grafico cliccandoci sopra

Pre-condizioni Aver inserito almeno una funzione

Post-condizioni -

Nome Esci

Scopo Uscire dal programma

Attori

Trigger Aprire nel menù a tendina relativo a file, cliccarci

scopra e infine confermare o meno l’uscita dal programma cliccando sui relativi pulsanti che appariranno nel popup

Pre-condizioni -

Post-condizioni -

Nome Abilita modalità scura

Scopo Attivare una modalità dove viene cambiato il

tema dell’intero programma passando ad uno con una tonalità più scura

Attori

Trigger Aprire il menu relativo ad opzioni, cliccare su

abilita modalità scura

Pre-condizioni Il programma deve essere in modalità chiara

Post-condizioni

Nome Abilita modalità chiara

Scopo Attivare una modalità dove viene cambiato il

tema dell’intero programma passando ad uno con una tonalità più chiara

Attori

Trigger Aprire il menu relativo ad opzioni, cliccare su

abilita modalità chiara

(17)

Pre-condizioni Il programma deve essere in modalità scura

Post-condizioni -

Nome Documentazione

Scopo Aprire la documentazione relativa al

funzionamento del programma Attori

Trigger Aprire il menu help e selezionare e poi cliccare

sulla voce documentazione

Pre-condizioni -

Post-condizioni -

Nome Crediti

Scopo Visualizzare gli sviluppatori

Attori -

Trigger Aprire il menu help e selezionare e poi cliccare

sulla voce Crediti

Pre-condizioni -

Post-condizioni -

R EQUISITI NON FUNZIONALI

2.1 - Requisiti di prodotto

-L’applicazione deve essere fluida ed avere brevi tempi di risposta, soprattutto nella gestione del grafico.

-L’applicazione deve essere intuitiva, in modo tale che l’utente finale posso comprenderne velocemente il suo utilizzo.

2.2 - Requisiti di processo

-L’applicazione è stata sviluppata in linguaggio java.

(18)

-L’ambiente di sviluppo scelto da tutti i membri del gruppo è Eclipse IDE.

2.3 - Requisiti esterni

-L’applicazione ha bisogno di essere eseguita in un sistema dove è presente la Java Virtual Machine.

J AVADOC

La JavaDoc è visibile facilmente al seguente dominio web:

http://functionanalysisjava.000webhostapp.com/model/mathparser/package-summary.html

Riferimenti

Documenti correlati

Se proiettiamo i rami della funzione sull’asse delle ascisse e oscuriamo le zone del piano ove il grafico della funzione non compare, potremo osservare

Algebra delle funzioni reali: funzione somma e funzione prodotto di due funzioni, funzione reciproca.. Successioni di

Funzioni potenza ad esponente naturale, e loro inverse fun- zioni radice; funzioni potenza ad esponente intero relativo; funzioni potenza ad esponente razionale; funzioni potenza

scrivendo dopo il prompt di Matlab il nome del file vengono eseguiti i comandi scritti nel file.. I Tutte le variabili usate in uno script sono variabili della sessione

Corso matematica

Prima di disegnare i grafici, calcola delle coppie di valori (x; y) costruendo per ogni grafico una tabella argomento-immagine che metterai sulla sinistra del foglio.. Disegna

Le informazioni sui file sono mantenute nella struttura delle directory, che risiede sul disco.. Operazioni

A proposito di propriet` a locali o globali, possiamo dare qui alcune definizioni importanti. Abbiamo visto in precedenza in questo capitolo la definizione di massimo e di minimo di