Loading
Note di Apprendimento
Study Reminders
Support
Text Version

App Idee: Problemi & Esempi

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Così, ecco il nostro primo esempio continuato dall'ultima lezione. Iniziamo guardando un caso in cuici sono solo 2 persone A e B. E lo scenario discuterà è il seguente:1. A paga 10 rupie prima per qualche evento congiunto che A e B partecipano.2. A paga 20 rupie per un'altra attività.3. B paga per 40 rupie per qualche attività congiunta.E poi dopo questa sequenza di attività, vogliamo essere sicuri di avere condiviso il denaroequamente.Chiaramente, questo è un caso molto semplice, giusto per fare un'idea di base di ciò che è che la nostra applicazionedovrebbe fare. Quindi, vediamo cosa succede. Come si fa a capire il modo di condividere le speseugualmente in questo caso? La spiegazione è evidente e come segue:1. Prendi il totale delle spese di entrambi.2. Scopri qual è la media.3. Dal momento che tutti dovrebbero pagare la media, sottrarre l'importo pagato dal totale pagato daognuno di loro per conoscere chi deve e quanto.In questo esempio, dato che tutti dovrebbero pagare la media, A ha sottopagato e B ha sovrapagatoe quindi, A un deve essere tutto equilibrato.Quindi, questo è ovviamente un caso eccessivamente semplice, ma semplicemente l'analisi di questo esempio non èil punto su cui ci preoccupiamo; il punto di questa discussione per renderlo molto chiaro e renderloassolutamente sicuro di come funzionano i casi semplici e di costruire l'algoritmo per il programma da lìmentre controllavamo ogni passo lungo la strada.Così, ora, quello che facciamo è che, anche per un caso molto semplice come questo, sdraiamo queste figureesplicitamente. Nel nostro piccolo esempio di persone e per lo scenario di base che stiamo valutando, noipotremmo pensare che non importi molto. Questo è vero, però il nostro punto qui non è parlare di
semplice aritmetica, ma per mostrarvi come organizzare le idee in modo da poter scalare fino a situazioni piùcomplicate e complesse.Questo stile di pensiero si chiama calcolo back-of-the-envelope. Spesso è utile a chiarirevarie situazioni. La semplificazione che stiamo facendo è una strategia volutamente scelta afar sì che facciamo passi avanti passo dopo passo.Se siete interessati a questo tipo di pensiero, c'è un libro divertente chiamato Street FightingMatematica di Sanjoy Mahajan, che mostra come affrontare situazioni molto più complicate inquesto stile. Questo tipo di pensiero, quando usato per situazioni complicate è conosciuto anche come il principio di Fermi, che prende il nome da un fisico famoso per fare semplici calcoli per capire le cose. Certo, in questo caso, nulla di tutto ciò è necessario. Ancora, faremo in modo di progredire passoper passo.(Fare Slide Time: 03.01)
Ok, quel commento a parte, torniamo al nostro programma principale. Il passo successivo che facciamo dopo il nostro esempio di2 persone è vedere se la stessa strategia rischia di funzionare con 3 persone. Così ora noiabbiamo 3 persone, A B e C, e abbiamo 3 attività. A paga 15 rupie, poi B paga 15 rupie, cheC paga 10 rupie. E alla fine di questa sequenza di attività cercheremo di dividere i soldi
ugualmente. La prima cosa che proviamo è usare lo stesso metodo di sconaging che usiamo prima. Leipensa che funzionerebbe con questo esempio? Puoi provare a vedere cosa succede in questa impostazione leggermentepiù complessa prima di procedere oltre.Possiamo anche chiederci se funzionerà per impostazioni ancora più complesse come più personepaganti? Così, abbiamo appena detto che partiremo con semplici esempi, allora perché sto sollevando la questionedi un'ambientazione più complessa. Dovremmo anche pensare a questo ora? Questa è unadomanda molto utile da chiedere. Abbiamo concordato che non considereremo le complicate ambientazioni,ma le cose non sono proprio così semplici.Dobbiamo portare dietro la nostra mente che ci saranno alcune scelte di caratteristiche che noifaremo in futuro, ed è utile averle almeno sulla periferia della nostra visione, quindiche si possa fare in modo che le scelte che facciamo non siano eccessivamente semplificate. In generale, però, tudovresti err sul lato di “ eccessivamente semplice ma funziona ”.(Fare Slide Time: 04.20)
E come si sviluppa la tua abilità, puoi tenere d'occhio per i prossimi passi. Per esempio, suppi che tustia discutendo questo problema con un tuo amico. E se ne va in giro e ci pensa etorna e ti mostra il loro metodo. Ovvero, ti mostra un foglio che sembra questo [ come
mostrato nella slide al tempo 4.20], ci sono A, B e C e qualcuno ha pagato 15, qualcuno hapagato 25 e qualcuno ha pagato 10 e ora stanno facendo una sorta di suddivisione lungo ogni riga. E in qualche modo quando completano l'aggiunta di tutto, e la risposta sembramagicamente pop out, che A deve un po' di soldi, B dovrebbe ricevere un po' di soldi e C deve anche avereun po' di soldi.Così, puoi capire da questo diagramma, qual è l'idea che il tuo amico ha ideato?Certo, lo hanno semplificato un po ', e stanno usando dei arrotondati. Quindi, le risposte non sonodavvero esatte. Ma ignorare che per ora e capire qual è il metodo impiegato qui.Pensate a questi metodi e provateli con i vostri esempi. Questi sono sempliciesempi di come andiamo in giro a capire i problemi. La strategia può essere compresa in trepunti semplici:1. Si provano esempi.2. Tu li schizzi.3. Vedi cosa succede.E tieni il pensiero in giro per capire che hai scelto un modello ragionevolmente decente diqualunque cosa sia che hai impostato per fare.Ok, a questo punto abbiamo qualche esempio, e abbiamo qualche idea di cosa sia in realtàimplementare la logica del nostro programma. Ora, guardiamo un altro aspetto del sistema, che èper vedere come ci si dovrebbe sentire usare l'app che abbiamo progettato.
(Riferimento Slide Time: 06.04)
Qui, di nuovo, useremo quell' approccio di cui abbiamo parlato per aver compreso il problema, e avendo preso la decisione strategica di partire semplicemente, quello che faremo è costruire prima una versione di riga di comando.
(Riferimento Slide Time: 06.11)
Questo ci aiuterà anche a chiarire eventuali problematiche, e si adatta anche alla quantità di esperienza che abbiamo. Non sappiamo ancora come progettare un'app moderna, ma sappiamo come implementare un'app di riga di comando. Ed è quello che useremo.Così, iniziamo. Il nostro programma di linea di comando verrà utilizzato dagli utenti che prima si registrerannoe raccontano al sistema il loro nome, poi racconteranno le loro spese. E dopo aver fatto conla loro sequenza di spese, possono chiedere al sistema un report e poi dovrebbero ottenere alcunidettagli di quanto devono. Ora, in un'ambientazione complicata, questo tipo di pensiero che ci sono3 passi da prendere, c'è la prima registrazione, c'è esitazione e poi c'è la segnalazione, questi devonoessere i 3 passi che la nostra app dovrebbe prendere. E questo tipo di pensiero si può effettivamente rendere molto piùsistemico.Forse avrete sentito parlare di terminologia come i casi di utilizzo e il design di interazione e così via. L'ideadietro a questi metodi più sistematici di pensare alle applicazioni è la seguente. Nel caso diuse case analysis, si figura in modo organizzato, come è che il tuo programma verrà utilizzato,perché in definitiva, come programmatore, devi imparare a pensare dal punto di vista dell'utente, non dal punto di vista dell'implementatore da solo.Quindi, come verrà utilizzato il programma che influenzerà la struttura del programma e che è una dellecose importanti che dobbiamo conoscerla. L'altra ragione importante è che le persone vivrannocon questo programma per un po ', e devono trovare abbastanza facile da usare, e dovrebbe esserein qualche modo naturale a qualunque sia l'attività che c'è; e questa parte può essere pensata sotto la rubricadel design di interazione.Infine, il terzo aspetto è come sono gli sguardi e qual è la sensazione. Così, questo si prende cura disotto il design dell'interfaccia utente del titolo, che di solito viene discusso nel contesto della GUI comeinterfacce utente grafiche, dove pensiamo a come presentiamo l'app all'utente. Tutti questi 3aspetti, i casi d'uso, il design di interazione e le interfacce utente grafiche sono interdipendenti.C'è molto di più per parlare di queste cose, ma per ora andremo avanti con la nostra app di base.
Così, come potete vedere, se immaginate quale sia l'app della riga di comando, per i semplici esempiche abbiamo discusso, l'utilizzo dell'app sembrerà come descritto in questa slide.• Gli utenti prima richiamano il programma FairShare.• Poi A inserire le proprie spese.• E poi B si registra da soli.• E infine, l'utente chiede il report a quale punto l'app deve stampare chi deve a chi devequanto a chi.
Così, questo è uno schizzo di quello che è come usare la nostra app. Un motivo per cui cominciamo qui è perché questo èquello che sappiamo. Ma questa non è proprio la fine della storia! Questa non è l'app vera e propria che vogliamocostruire per i nostri utenti. Pertanto, daremo un pensiero a quale dovrebbe essere la versione GUI dell'app.
(Riferimento Slide Time: 09.38)
Per la versione GUI dell'app, immaginate l'app nella forma degli schermi che visualizza.La sequenza di schermi che l'app può visualizzare è chiamata storyboard. La nostra app avrà 3 schermi,ma gli schermi sembreranno abbastanza simili. Nel nostro primo design, basterà subito la copiaqualunque sia che facciamo per il programma della riga di comando, dopo qualche esperienza con l'app, noipossiamo capire come migliorare le interazioni che sono sperimentate dall'utente, e ridisegnare di conseguenza i nostri schermi.Con questo in mente, il nostro design è semplice: ci sono 3 pulsanti nell'app, così come ci sono 3 comandi. E quando viene premuto un pulsante si passa alla schermata successiva e la schermata successiva nondeve necessariamente sembrare diversa. Sebbene concettualmente, si tratta di uno schermo diverso. Potremmoimmaginare che per il caso di cui stiamo pensando, non c'è molta complessità per implementarlo, per avere un'idea migliore di quello che siamo prefissati.
(Riferimento Slide Time: 10.46)
Ancora, indulgiamo in qualche prototipo di carta, e di conseguenza faremo uno schizzo della nostra app.Così, ecco uno schizzo veloce per quello che potrebbe essere l'app. Esiste un modulo in cui è possibile inserireil nome della persona o l'importo. Ci sono 3 pulsanti per le seguenti funzionalità:• Registrazione di una persona• Aggiunta delle spese• Asking per il reportQuindi, pensatelo - questo sembra ragionevole. Ma questo è davvero sufficiente? Ci mancano qualcosa?Beh, Sì! Per esempio, dove si trova lo spazio per i dati generati dal report? Non è su questa schermata, il che significa che ci deve essere un altro schermo, dove questo tipo di dati può essere mostrato! Lìè un'altra cosa che è qualcosa che dobbiamo fare, c'è una distinzione tra la registrazione di un nomee poi la richiesta di una spesa – da qui dovremmo avere due schermi diversi per entrambe le attività utente. Abbiamo anche detto che la registrazione dell'utente usa un nome e le spesechiederanno un nome, quindi, dobbiamo fare qualcosa nel caso non ci sia una corrispondenza.
Quindi solo pensarci in termini di schermi come questo, e disegnare semplici diagrammi ci mostreràalmeno alcune cose che dobbiamo fare, che la prototipazione cartaceo ci ha rivelato. E questo èdove possiamo iniziare a prendere i prossimi passi verso il design dell'app. Quindi, semplicemente cose semplici comequesto e dando un po' di tempo adeguato per capire cosa c'è da programmare, equello che è come usare una simile app andrà a lungo verso di aiutarci a realizzare un designmigliore e utile.(Fare Slide Time: 12.25)
Così, a questo punto, riassumiamo ciò che abbiamo fatto: abbiamo acquisito una certa comprensione diil problema della condivisione del fair sharing, siamo stati acquisiti una certa comprensione di quello che è come usare il nostro servizio, sia sulla riga di comando che sullo schermo.A proposito, potreste pensare alla versione della riga di comando come una sorta di cosa che dovete fareperché questa è l'unica cosa che sapete fare finora. Ma questo non è l'unico motivo per cui tuusi la riga di comando. Le versioni di riga di comando delle app grafiche possono essere molto utili nel verificare anche le parti algoritmichedelle nostre soluzioni.
Ok, quindi con quella sommità ci muoveremo per sviluppare la parte algoritmica del nostro programmae andare avanti per capire i dettagli di implementazione. Questo lo faremo nella parte successiva della nostra sessione.