Loading

Module 1: Introdução ao Desenvolvimento de Aplicados Modernos

Nota de Estudos
Study Reminders
Support
Text Version

App Ideias: Problemas & Exemplos

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

    +

Então, aqui está o nosso primeiro exemplo continuado a partir da última palestra. Começamos olhando para um caso em que há apenas 2 pessoas A e B. E o cenário vai discutir é o seguinte:1. A paga 10 rúpias primeiro para algum evento conjunto que A e B participam.2. A paga 20 rúpias por outra atividade.3. B paga por 40 rúpias por alguma atividade conjunta.E então após essa sequência de atividades, queremos ter certeza de que elas compartilharam dinheiro igualmente.Claramente, esse é um caso muito simples mesmo, só para fazer uma ideia básica do que é que o nosso aplicativo deve fazer. Então, vamos ver o que acontece. Como descobrir a maneira de compartilhar as despesasigualmente neste caso? A explicação é óbvia e da seguinte forma:1. Leve o total das despesas de ambos.2. Saiba qual é a média.3. Já que todo mundo deveria pagar a média, subtraia o valor pago do total pago por cada um deles para conhecer quem deve a quem e quanto.Neste exemplo, já que todo mundo deveria pagar a média, A tem mal pago e B tem sobrepagoe, portanto, A deve B 5 rúpias, e nesse caso tudo é equilibrado. Então, isso é claro, um caso excessivamente simples, mas meramente a análise deste exemplo não é o que nos preocupa; o ponto desta discussão para deixar bem claro e torná-loabsolutamente certo como os casos simples funcionam e constroem o algoritmo para o programa a partir daíenquanto verificamos cada passo ao longo do caminho.Então, agora, o que fazemos é que, mesmo para um caso muito simples como este, detemos esses números de forma explícita. Em nosso pequeno exemplo de pessoas e para o cenário básico que estamos considerando, poderíamos pensar que não importa muito. Isso é verdade, no entanto nosso ponto aqui não é falar sobre aritmética simples, mas mostrar como organizar ideias de uma maneira que possa escalar até situações bem mais complicadas e complexas.Este estilo de pensar é chamado de cálculo back-the-envelope. Muitas vezes, é útil para esclarecer várias situações. A supersimplificação que estamos fazendo é uma estratégia deliberadamente escolhida parater certeza de que faremos progresso passo a passo.Se você está interessado nesse tipo de pensamento, há um divertido livro chamado Street FightingMathematics by Sanjoy Mahajan, que mostra como enfrentar situações bem mais complicadas emeste estilo. Esse tipo de pensamento, quando usado para situações complicadas também é conhecido como o princípio de Fermi, em homenagem a um físico que era famoso por fazer cálculos simples para figurar as coisas. É claro que, neste caso, nada disso é necessário. Ainda assim, vamos certificar-nos de que progredimos a etapapor etapa.(Consulte o Tempo de Slide: 03:01)
Ok, esse comentário de lado, deixe-nos voltar ao nosso programa principal. O próximo passo que fazemos depois do nosso exemplo de2 pessoas é ver se a mesma estratégia é passível de trabalhar com 3 pessoas. Por isso, agora nóstemos 3 pessoas, A B e C, e temos 3 atividades. A paga 15 rúpias, então B paga 15 rúpias, queC paga 10 rúpias. E no final desta sequência de atividades, tentaremos dividir o dinheiro
igualmente. A primeira coisa que tentamos é usar o mesmo método de averagem que usamos antes. Vocêacha que funcionaria com este exemplo? Você pode experiê-lo para ver o que acontece nessa configuração um poucomais complexa antes de prosseguir mais adiante.Podemos também nos perguntar se ele vai funcionar para configurações ainda mais complexas como várias pessoaspagando? Então, nós apenas dissemos que vamos começar com exemplos simples, então por que estou levantando a questãode uma configuração mais complexa. Devemos até mesmo estar pensando sobre isso agora? Esta é uma questãomuito útil para se perguntar. Convenhamos que não consideraríamos as configurações complicadas,mas as coisas não são bem simples.Precisamos carregar na parte de trás de nossa mente que haverá algumas escolhas de recursos que iremosestar fazendo no futuro, e é útil tê-los pelo menos na periferia da nossa visão, assimque você pode garantir que as escolhas que fazemos não sejam simplificadas. Em geral, porém, vocêdeve errar no lado do “ excessivamente simples mas funciona ”.(Consulte o Tempo de Slide: 04:20)
E à medida que sua habilidade se desenvolve, você pode ficar de olho nos próximos passos. Por exemplo, suponha que vocêesteja discutindo esse problema com um amigo seu. E ele vai por aí e pensa sobre isso evolta e mostra o seu método. Ou seja, ele mostra uma folha que se parece com esta [como
mostrado no slide no horário 4:20], há A, B e C, e alguém pagou 15, alguém tempago 25 e alguém pagou 10 e agora eles estão fazendo algum tipo de divisão ao longo de cada linha. E de alguma forma quando completam a adição de tudo, e a resposta parecemagicamente estourar, que A deve algum dinheiro, B deve receber algum dinheiro e C deve receber algum dinheiro e C também devealgum dinheiro.Então, você pode descobrir a partir deste diagrama, qual é a ideia de que o seu amigo chegou com?Claro, eles simplificaram um pouco, e estão usando arredondamento. Então, as respostas não sãorealmente exatas. Mas vamos ignorar isso por enquanto e descobrir o que é o método empregado aqui.Pensar sobre esses métodos e experiê-los com seus próprios exemplos. São exemplos simplesde como vamos por aí entendendo problemas. A estratégia pode ser entendida em trêspontos simples:1. Você tenta exemplos.2. Você esboça eles.3. Você vê o que acontece.E mantenha o pensamento em volta para entender que você escolheu um modelo razoavelmente decente dequalquer que seja que você tenha configurado para fazer.Ok, neste ponto, temos alguns exemplos, e temos alguma ideia do que é realmenteimplementar a lógica do nosso programa. Agora, vamos olhar para um outro aspecto do sistema, que épara ver o que ele deve sentir como usar o app que projetamos.
(Consulte O Tempo De Deslizamento: 06:04)
Aqui, novamente, vamos usar aquela abordagem que falamos sobre ter entendido o problema, e ter tomado a decisão estratégica de começar simplesmente, o que faremos é construir uma versão de linha de comandosprimeiro.
(Consulte O Tempo De Deslizamento: 06:11)
Isso também nos ajudará a esclarecer quaisquer questões, e também se encaixa com a quantidade de experiência que nóstemos. Ainda não sabemos como projetar um app moderno, mas sabemos como implementar um app de linha de comando. E é isso que nós vamos usar.Então, vamos começar. Nosso programa de linha de comando será usado por usuários que primeiro se registrame dizem ao sistema seu nome, em seguida, eles contarão suas despesas. E depois de serem feitos comsua sequência de despesas, eles podem pedir o sistema para um relatório e então eles devem obter algunsdetalhes do quanto devem. Agora, em um cenário complicado, esse tipo de pensamento de que há3 passos para tomar, há primeiro registro, há expensação e depois há relato, estes devemser os 3 passos que nosso app deve tomar. E esse tipo de pensamento você pode realmente fazer muito maissistemático.Você pode ter ouvido falar em terminologia como casos de uso e design de interação etc. A ideiapor trás desses métodos mais sistemáticos de pensar em aplicações é a seguinte. No caso da análise de caso de uso, você figura de forma organizada, como é que o seu programa será usado,porque afinal, como programador, é preciso aprender a pensar do ponto de vista do usuário, não do ponto de vista do implementador sozinho.Então, como o programa será usado afetará a estrutura do programa e essa é uma dascoisas importantes que precisamos para saber. O outro motivo importante é que as pessoas vão vivercom esse programa por um tempo, e devem achar isso fácil o suficiente para usar, e deve serde alguma forma natural para qualquer que seja a atividade que exista; e esta parte pode ser pensada sobre sob ocurso de design de interação.Por último, o terceiro aspecto é como são os looks e qual é a sensação. Então, isso é cuidado desob o design de interface com o usuário do título, que geralmente é discutido no contexto da GUI comointerfaces gráficas de usuário, onde pensamos sobre como apresentamos o app ao usuário. Todos esses aspectos de 3, os casos de uso, design de interação e interfaces gráficas de usuários são interdependentes.Há muito mais a falar sobre essas coisas, mas, por enquanto, seguiremos adiante com nosso app básico.
Então, como você pode ver, se imaginarmos como é o app da linha de comando, para os exemplos simplesque discutimos, o uso do app irá parecer descrito neste slide.• Usuários primeiro chamarão o programa FairShare.• Então Um registra seus gastos.• E então eles entram em suas despesas.• E, finalmente, o B registra-se.• E, finalmente, o usuário solicita o relatório em que ponto o app deve imprimir quem deve ao quanto a quem deve.
Então, este é um esboço do que é usar o nosso app. Uma razão pela qual começamos aqui é porque isso éo que sabemos. Mas esse não é realmente o fim da história! Este não é o app real que queremosconstruir para os nossos usuários. Por isso, daremos algum pensamento ao que a versão GUI do appdeve parecer.
(Consulte O Tempo De Deslizamento: 09:38)
Para a versão GUI do app, imaginamos o app no formato das telas que ele exibe.A sequência de telas que o app pode exibir é chamada de storyboard. Nosso aplicativo terá 3 telas,mas as telas parecerão bastante parecidas. Em nosso primeiro design, vamos apenas imediatamente copiaro que quer que seja que fazemos para o programa linha de comando, depois de alguma experiência com o app, nóspodemos descobrir como melhorar as interações que são experimentadas pelo usuário, e redesenhar nossas telasadequadamente.Com isso em mente, nosso design é direto: há 3 botões no app, assim como há 3 comandos. E quando um botão é pressionado, você vai para a próxima tela, e a tela seguinte nãonecessariamente precisa parecer diferente. Embora conceitualmente, é uma tela diferente. Poderíamosimaginar que para o caso em que estamos pensando, não há muita complexidade para implementarela, para ter uma ideia melhor do que é que nós definimos para fazer.
(Consulte O Tempo De Deslizamento: 10:46)
De novo, vamos nos indultar em algum prototipagem de papel, e, assim, faremos um esboço do nosso app.Então, aqui está um esboço rápido para o que o app pode parecer. Há um formulário onde é possível inseriro nome da pessoa ou a quantia. Existem 3 botões para as seguintes funcionalidades:• Registrando uma pessoa• Adicionando a Despesa• Asking para o relatórioEntão, pense nisso-isso parece razoável. Mas será que isso é realmente suficiente? Estamos perdendo algumas coisas?Bem, Sim! Por exemplo, onde está o espaço para dados gerados pela reportagem? Não é nessa tela, o que significa que deve haver outra tela, onde esse tipo de dado pode ser mostrado! Láé outra coisa que é algo que temos que fazer, há uma distinção entre registrar um nomee depois pedir um gasto – daí devemos ter duas telas diferentes para ambas as atividades do usuário. Também dissemos que o registro do usuário usa um nome e o gastopedirá um nome, portanto, temos que fazer algo em caso de não haver uma correspondência.
Então, só de pensar nisso em termos de telas como esta, e desenhar diagramas simples nos mostrarápelo menos algumas coisas que precisamos fazer, que o prototipagem de papel nos revelou. E este éonde podemos começar a dar os próximos passos para o design do app. Por isso, apenas coisas simples comoisso e dar algum tempo adequado para entender o que é temos que programar, eo que é usar tal app vai percorrer um longo caminho em direção a nos ajudar a fazer um design melhor e útil.(Consulte o Tempo do slide: 12:25)
Então, neste ponto, vamos resumir o que fizemos: adquirimos algum entendimento deo problema de compartilhamento justo, fomos adquiridas alguma compreensão do que é usar nosso serviço, tanto na linha de comando quanto na tela.Aliás, você pode pensar na versão da linha de comando como uma espécie de uma coisa que você tem que fazerporque essa é a única coisa que você sabe fazer até agora. Mas essa não é a única razão pela qual vocêusa a linha de comando. Versões de linha de comando de apps gráficos podem ser muito úteis em testar as partes algorítmicasde nossas soluções também.
Ok, então com essa somatória, vamos seguir em frente para desenvolver a parte algorítmica do nosso programae seguir em frente para entender os detalhes da implementação. Isso nós faremos na próxima parte da nossa sessão.