·

Engenharia de Computação ·

Engenharia de Software

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta
Equipe Meu Guru

Prefere sua atividade resolvida por um tutor especialista?

  • Receba resolvida até o seu prazo
  • Converse com o tutor pelo chat
  • Garantia de 7 dias contra erros

Texto de pré-visualização

04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 128 Padrão MVC e Programação no Servidor Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 228 Início de conversa Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 328 Olá Cursista Nesta parte vamos explorar o tema padrão MVC e programação no servidor Assista o vídeo com os principais tópicos sobre o tema e anote suas dúvidas Envie suas dúvidas no Classroom da disciplina Classroom Atividades Dúvidas sobre o conteúdo interaja com o professor e colabore com seus colegas Aproveite para aprofundar os estudos explorando o material organizado na seção SAIBA MAIS Objetivos de aprendizagem Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 428 Os objetivos de aprendizagem desta parte são Identificar o modelo MVC e suas vantagens Conhecer o microframework Flask Construir uma primeira aplicação no Flask Entender a definição de templates Parametrizar rotas no servidor Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 528 Conteúdo A seguir vamos ao vídeo Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 628 Padrão MVC e Programação no Servidor Desenvolvimento Web Padrão MVC e Programação no Servidor Desenvolvimento Web NEaD Faculdade Impacta NEaD Faculdade Impacta Clique no ícone ao lado e aproveite para fazer suas anotações durante os estudos utilizando o Google Keep Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 728 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 828 Leitura do texto de apoio Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 928 Leia o texto para aprofundar os temas discutidos no vídeo Entre em contato com o professor para esclarecer suas dúvidas Classroom Atividades Dúvidas sobre o conteúdo Padrão MVC e Programação no Servidor Prof MSc Yuri Maximian Rottner Dirickson Texto revisto atualizado e ampliado por Prof Dr Rafael Will M de Araujo Resumo Os sistemas que rodam em servidores possuem toda a diversidade de problemas e soluções clássicas que vem de anos de desenvolvimento de aplicações neles Essas soluções padronizadas para problemas comuns são conhecidas como Padrões de Projeto do inglês Design Patterns Um dos padrões arquiteturais mais conhecidos e amplamente usado é o MVC ModelViewController Vamos entender como esse padrão funciona e como ele se encaixa na programação em servidor usando a linguagem de programação Python e o microframework Flask Introdução Com as linguagens HTML e CSS podemos desenvolver um site para exibir informações quaisquer Esse site se comportará como um livro digital mostrando informações estáticas e sem muita interação com o usuário A linguagem de programação JavaScript pode ser usada para melhorar essa interação mas ela também possui suas limitações pois será executada somente do lado do cliente interpretada pelo navegador Imagine agora que desejamos desenvolver um sistema e disponibilizálo na web Da mesma forma utilizaremos o HTML CSS e JavaScript para criar páginas web e exibir informações aos usuários desse sistema Mas um sistema necessita de muito mais que isso é necessário implementar toda a regra de negócio toda a lógica por trás do funcionamento do sistema integração com algum SGBD sistema gerenciador de banco de dados etc Para isso precisamos de um servidor web que execute toda a lógica por trás do nosso sistema através de uma linguagem de programação Pense que esse servidor web executará o seu programa desenvolvido em Python Mas toda vez que for necessário executar um print comando que exibe informações na tela ele envia uma resposta em HTML para o navegador que requisitou que aquela lógica fosse executada Internamente o Python trata o HTML como uma string mas para o navegador aquele código em HTML criará uma interface gráfica Nas seções a seguir vamos entender como é possível desenvolver uma aplicação deste Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1028 Nas seções a seguir vamos entender como é possível desenvolver uma aplicação deste tipo através de um módulo chamado Flask Padrões de Projeto Um software consiste em várias instruções escritas em uma linguagem de programação armazenadas em memória e executadas por um processador O primeiro software criado é datado de 1948 criado por John von Neumann na Inglaterra apesar de um ter sido concebido em forma lógica por Ada Lovelace em 1842 SUPERINTERESSANTE 2011 Passado tanto tempo de desenvolvimento de software muitos problemas comuns no desenvolvimento apareceram muitos deles recorrentes em outros domínios de aplicação dos softwares Para esses problemas uma série de soluções surgiram igualmente recorrentes Essas soluções para problemas recorrentes e padronizados são chamadas de Padrões de Projeto Design Patterns termo que ficou conhecido no livro do GoF Gang of Four Design Patterns Elements of Reusable ObjectOriented Software JESUS 2019 Neste livro estão catalogados 23 padrões mais comuns à época usados no desenvolvimento de programas orientados a objetos Com a evolução dos softwares bem como os problemas encontrados no seu desenvolvimento mais padrões foram aparecendo e com isso temos mais de 80 padrões diferentes atualmente com mais categorias aparecendo como a arquitetural Alguns padrões caíram em desuso pela evolução natural das plataformas e linguagens Inicialmente foram levantados 23 padrões divididos em três categorias criacional estrutural e comportamental Os padrões de criação creational são aqueles construídos para ajudar na criação de objetos Dependendo do nível de complexidade de uma classe a criação do objeto pode ser uma tarefa muito complicada ou depender de muitos dados padrões como o Factory Method existem para facilitar esta tarefa Os padrões estruturais structural estabelecem maneiras mais flexíveis de trabalhar com composições de objetos de forma a criar grandes estruturas de objetos O padrão decorator é um bom exemplo criando funcionalidades extras de maneira dinâmica a um objeto sem que haja necessidade de se recorrer a herança Os padrões comportamentais behavioral têm como objetivo facilitar a comunicação e a passagem de dados entre objetos São usados para deixar essa integração entre objetos mais fácil de ser mantida O padrão Observer é um exemplo deste tipo onde outros objetos que estejam observando o objeto original serão imediatamente avisados de qualquer alteração de estado neste objeto Todos esses padrões têm um escopo um pouco mais reduzido a nível de código ou classes para resolver um problema específico de negócio Conforme os sistemas começaram a ficar maiores em número de linhas de código e classes outros padrões para o nível mais macro do projeto foram criados chamados de padrões arquiteturais O mais famoso e utilizado destes é o Padrão MVC Padrão MVC Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1128 O padrão arquitetural MVC ModelViewController foi criado por um engenheiro da Xerox Trygve Reenskaug em 1979 A ideia era criar um padrão de estrutura de aplicações feitas com a linguagem Smalltalk criando uma estrutura em camadas para diminuir o acoplamento e aumentar a coesão entre as classes no projeto facilitando a manutenção do sistema MEDEIROS 2013 O padrão consiste nas três camadas que dão o seu nome Modelo Model Visualização View e Controle Controller cada camada é responsável por uma responsabilidade no sistema O model modelo representa o negócio que a aplicação foi construída para lidar Nele colocamos desde modelos de dados como classes que mapeiam tabelas de banco de dados a códigos de lógica de negócio O modelo é o que traz valor e necessidade do negócio para o software Tudo que for decisão do ponto de vista do negócio modelado fica nesta camada O view visualização é a camada responsável por interagir com o usuário diretamente Ela tem a responsabilidade de mostrar os dados da melhor maneira para o usuário e de coletar informações e interações dele e encaminhálas para a aplicação No caso da web o navegador e as páginas são a visualização com o HTML CSS e JavaScript O controller controle é a camada intermediária entre o modelo e a visualização Ela é responsável pelo fluxo de dados e de trabalho da aplicação Ela recebe as informações e interações da visualização via requisições HTTP e escolhe qual funcionalidade do modelo responderá por essas interações Ao final do processamento o controle ainda é responsável por decidir o caminho da resposta do processamento devolvendo dados para a camada de visualização montar as páginas da melhor maneira A Figura 91 mostra como funciona essa comunicação entre as camadas Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1228 Figura 91 Comunicação entre as camadas do MVC Fonte do autor 2021 Flask Framework O Flask é um micro framework escrito em Python para a construção de aplicações web O micro vem do fato de que o framework em si é bem pequeno concentrandose apenas nas tarefas mais importantes deixando pontos de extensão para que novas capacidades sejam acopladas a ele de outras maneiras Pela sua simplicidade o Flask está pronto para ser usado nas mais diversas aplicações em produção com amplas capacidades de escalabilidade Usado por grandes empresas de tecnologia como Airbnb Uber Reddit e Mozilla ROCHA 2018 Pré Requisitos Para a utilização do Flask é necessário ter uma instalação funcional do interpretador Python na versão 35 ou superior e o pacote Flask instalado Se o Python tiver sido instalado com o seu gerenciador de pacotes padrão pip basta usar o comando descrito na Figura 92 caso contrário a documentação do Flask disponível em httpsflaskpalletsprojectscomen22xinstallation mostra como instalar ele de outras maneiras Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1328 Figura 92 Comandos para instalar o Flask no Windows Linux e Mac Instalação no Windows através do cmd py m pip install U flask Instalação no Linux ou Mac através do Terminal python3 m pip install U flask Fonte do autor 2022 Mesmo não sendo obrigatório recomendamos que todos os exemplos e execuções do Flask sejam feitas usando um ambiente virtual do Python virtualenv pipenv etc Além disso que seja instalado um linter ferramenta de validação de código do Python como o Pylint ou Flake8 HelloWorld a primeira aplicação MVC no Flask A construção de uma aplicação Flask se resume basicamente a criação e execução de um objeto específico Para construir uma pequena aplicação vamos criar um arquivo apppy no nosso projeto onde a aplicação será criada A Figura 93 mostra a estrutura básica usada para construir uma aplicação em flask Figura 93 Primeira aplicação em Flask Arquivo apppy Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1428 Importação da classe Flask a partir do módulo flask from flask import Flask Definição do objeto que representa a aplicação app Flaskname Cria a rota acessível a partir de http1270015000 approute def index return Olá mundo Cria a rota saudacao acessível a partir de http1270015000saudacao approutesaudacao def saudacao s h1Bemvindoh1pEssa página contém tags htmlp return s Inicitalização do servidor if name main apprun Fonte do autor 2022 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1528 Todos os objetos classes e funções que serão usadas no Flask se encontram no módulo flask e serão importados direto desse módulo A aplicação é um objeto criado a partir da classe Flask note o F maiúsculo importada do módulo citado com o comando from flask import Flask Na sequência é necessário criar o objeto da aplicação associando ele a uma variável que nos nossos exemplos vamos sempre chamar de app A classe Flask possui vários parâmetros no seu construtor mas só um deles é obrigatório Esse parâmetro indica um nome de importação para a nossa aplicação representada pelo objeto app indicando como essa aplicação será importada em outros módulos Enquanto a aplicação possuir um único módulo simples é recomendado usar a variável global do Python name portanto a construção deste objeto será definida com o comando app Flaskname Após definir o objeto que representa a aplicação devemos definir funções em Python que vão responder a requisições HTTP Essas funções fazem o papel de controles controllers do MVC ou seja elas recebem as requisições e implementam código que coordena o que será feito com elas Para que o Flask associe a execução de uma função com o acesso a uma URL específica devemos registrar essa informação através de um decorador decorator específico do Flask chamado approute veja mais sobre decorators em Introdução aos decorators do Python 2012 Note que o app deste comando é o nome do objeto que representa a nossa aplicação e route é um método interno deste objeto O parâmetro deste decorador é a rota path que será respondida pelo controle decorado O decorador deve aparecer na linha anterior à definição de cada função e desta forma cada função responderá à rota informada Sendo assim ao executar o código definido na Figura 93 teremos http1270015000 acessar a rota barra pelo navegador fará com que a função associada a ela chamada index seja executada Essa função retorna a string Olá mundo http1270015000saudacao acessar a rota saudacao pelo navegador fará com que a função saudacao seja executada Essa função cria uma string chamada s que contém texto entre tags HTML Ao receber esse código o navegador interpreta essas tags e exibe os elementos gráficos desejados um título de seção e um parágrafo Esse exemplo ilustra onde queremos chegar misturar HTML linguagem entendida pelo navegador com Python linguagem que usaremos para programar a lógica do servidor Por fim é necessário executar a aplicação para ela começar a responder as requisições Para isso usamos o método run no objeto app apprun Como esse método só será executado na execução do script com a aplicação é comum ele estar dentro do bloco main do Python abaixo do comando if name main Para evitar ficar reiniciando a aplicação toda vez que estivermos mexendo nos arquivos Python podemos passar o parâmetro nomeado debugTrue no método run para iniciar a aplicação em modo de depuração debug assim qualquer alteração em arquivos Python já é carregada Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1628 para a execução da aplicação diretamente Note que a porta padrão na URL é a 5000 Esse é o valor padrão do Flask pois é uma porta que provavelmente não será usada por nenhuma outra aplicação que está rodando paralelamente no computador evitando conflitos na hora de criar o servidor Esse valor pode ser alterado através do parâmetro nomeado portVALOR no método run onde VALOR deve ser um número entre 1 e 65535 Normalmente deixamos o valor padrão mas caso seja necessário mudar é recomendado que você nunca utilize um valor de porta abaixo de 1024 pois são portas comumente reservadas para outras aplicações Ao rodar o arquivo apppy algumas informações serão exibidas no terminal ou console sendo a mais importante um endereço para entrarmos e ver o resultado Acesse as URLs http1270015000 ou httplocalhost5000 para ver a mensagem Olá Mundo na janela do navegador O nome localhost assim como o IP especial 127001 indica para o computador que as requisições vão para um servidor na própria máquina Implementando o MVC No exemplo da Figura 93 fizemos uma pequena aplicação juntando tudo no mesmo arquivo Agora vamos definir outra aplicação um pouco mais complexa que separa os códigos pensando nas camadas do MVC Por enquanto como a aplicação é muito simples não vamos nos preocupar com o modelo model O código desta aplicação está disponível em httpsgithubcomrwillimpactaflaskcriacaotemplates Note que criamos uma pasta chamada templates ela deve ter exatamente este nome onde ficarão os arquivos HTML O Flask já vem configurado para buscar os arquivos HTML neste diretório Essa pasta só é acessível dentro do servidor ou seja não é possível acessar nenhum arquivo dentro dela através da URL vinculada ao servidor Outra pasta contida no projeto chamase static e como o nome sugere é a pasta onde ficarão arquivos estáticos CSS JavaScript imagens documentos e quaisquer outros formatos de arquivo que desejamos compartilhar Diferente do primeiro diretório tudo que é colocado dentro desta pasta é acessível a partir da URL do servidor através do caminho static Por exemplo o arquivo estiloscss que está contido neste diretório pode ser acessado através da URL relativa staticestiloscss por um arquivo HTML dentro do projeto ou pela URL absoluta http1270015000staticestiloscss através do navegador No Flask usaremos arquivos HTML como templates modelos para visualização de conteúdo e por isso eles ficarão em um diretório com esse mesmo nome Cada um desses templates fará o papel de uma visualização view do modelo MVC Para poder usar um template no controle devemos importar a função rendertemplate do pacote flask através do comando from flask import rendertemplate e no lugar do retorno da string colocar a execução da função rendertemplate com o nome do arquivo a ser usado como template return rendertemplatenomedoarquivohtml Resumidamente a função rendertemplate lê o conteúdo do arquivo interpretao como Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1728 uma string e retorna esta string para a linha de código que a chamou Veremos no próximo capítulo que na verdade essa função faz muito mais do que simplesmente ler o conteúdo do arquivo ela também é capaz de interpretar uma linguagem usada para modelar templates no Flask Essa é uma característica importantíssima no servidor pois permite que criemos páginas dinâmicas isto é páginas que mudam de conteúdo ao longo do tempo Parametrização de Rotas Uma característica muito útil do Flask é a possibilidade de parametrizar rotas Isso permite simplificar a definição de rotas que seguem um padrão similar Exemplos cursodevweb e cursopoo Note que essa característica poderia ser alcançada também se utilizássemos a Query String Exemplos cursonomedevweb e curso nomepoo mas esse método não é indicado para páginas que devem ser indexadas nos mecanismos de busca pois eles comumente ignoram a parte da URL que contém a Query String Para construir URLs parametrizáveis e indexadas vamos usar o conceito de Path Parameter FULLSOUR 2017 A ideia dos Path Parameter é criar regiões no caminho path da URL que virem parâmetros de entrada nos nossos controles Nesse caso vamos usar o slug a última parte da URL que servirá de forma semelhante a um recurso identificando o conteúdo que será mostrado usando um texto amigável para URLs tudo em minúsculas sem espaços e acentos Para exemplificar o uso dos Path Parameters construímos um novo exemplo disponível em httpsgithubcomrwillimpactaflaskpathparameters Neste novo projeto em Flask a função Python curso será executada todas as vezes que alguém acessar a rota curso Mas quando acessamos a rota cursodevweb o servidor chamará a função cursopornome Isso porque definimos a rota dessa função como cursonome onde nome é o slug que representa o nome sigla de um curso qualquer que adicionaremos na rota No exemplo anterior o parâmetro nome receberia o valor string devweb Note que a função cursopornome recebe um parâmetro chamado nome que é o mesmo valor que colocamos no slug entre os símbolos menor que e maior que Em resumo o parâmetro nome daquela função captura qualquer valor colocado ao final da URL após o prefixo curso e assim podemos dar o tratamento necessário para qualquer rota com esse prefixo dentro do controlador Assim não é necessário criar um controle diferente para cada curso basta identificarmos o slug passado na URL para buscar no nosso catálogo de cursos Por padrão esses parâmetros são interpretados como Strings mas o Flask permite definir exatamente o seu tipo bastando para isso informar o tipo na frente do nome dado ao slug separado por dois pontos Variable Rules Sd intparam para inteiros positivos floatparam para decimais positivos Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1828 floatparam para decimais positivos pathparam igual a string mas aceitas barras no meio uuidparam aceita objetos do tipo UUID Independente do seu tipo para cada path parameter definido em uma rota a função do controle daquela rota receberá o parâmetro de mesmo nome como entrada Por exemplo no projeto que exemplifica o uso dos path parameters a função cursocomdoisparametros recebe os parâmetros nome e ano pois sua rota possui dois slugs cursonomeintano Ou seja qualquer rota formada por esse padrão Por exemplo cursoprogramacao2022 ou cursoweb1997 ou mesmo cursoabc2 será tratada pela função cursocomdoisparametros enquanto que os parâmetros nome e ano da função terão os tipos string e inteiro respectivamente Por outro lado a rota cursodevweb27a não será tratada por nenhum controle configurado pois o valor 27a não é um valor inteiro Vamos praticar No exemplo deste material precisamos usar bibliotecas que não estão por padrão no Python sendo necessário instalar elas usando o pip Fizemos isso direto na instalação global do Python do sistema operacional nem sempre isso é recomendável ou possível às vezes nem somos admins do computador Recomendase fortemente adotar os ambientes virtuais do Python que são ferramentas que permitem criar pequenas instalações do nosso Python de maneira personalizada por projeto permitindo que possamos instalar o que quiser nessa pequena instalação sem prejudicar a instalação global do Python Veja mais em httpspythonacademycombrblogpythonevirtualenv comoprogramaremambientesvirtuais Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 1928 Referências INTRODUÇÃO aos decorators do Python iMasters 2012 Disponível em httpsimasterscombrbackendintroducaoaosdecoratorsdopython Acesso em 25 ago 2022 JESUS D Design patterns Gof o que são e quais os benefícios 2019 Disponível em httpsdjesusnetmediumcomdesignpatternsgofoquesC3A3oequaisos benefC3ADcios9cd0cfdd6ebf Acesso em 25 ago 2022 MEDEIROS H Introdução ao padrão MVC primeiros passos na arquitetura MVC Devmedia 2013 Disponível em httpswwwdevmediacombrintroducaoaopadrao mvc29308 Acesso em 25 ago 2022 SUPERINTERESSANTE Qual foi o primeiro software criado 2011 Disponível em httpssuperabrilcombrmundoestranhoqualfoioprimeirosoftwarecriado Acesso em 26 ago 2022 ROCHA B Companies using flask flask powered Github 2018 Disponível em httpsgithubcomrochacbrunoflaskpowered Acesso em 26 ago 2022 FULLSOUR When should you use path variable and query parameter Medium 2017 Disponível em httpsmediumcomfullsourwhenshouldyouusepathvariableand queryparametera346790e8a6d Acesso em 26 ago 2022 VARIABLE RULES Pallets Projects sd Disponível em httpsflaskpalletsprojectscomen11xquickstartvariablerules Acesso em 26 ago 2022 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2028 Saiba mais Existem outros padrões arquiteturais além do MVC Model View Controller Clique no link a seguir para ler mais a respeito sobre as diferenças entre as arquiteturas MVC MVP e MVVM Design Patterns as diferenças entre MVC MVVM e MVP by Luis Barbosa Medium Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2128 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2228 Finalizando Desenvolvimento Web 04092023 0955 Desenvolvimento Web Nesta parte buscamos os seguintes objetivos de aprendizagem Conhecer o modelo MVC e suas vantagens Conhecer o microframework Flask Construir uma primeira aplicagao no Flask Entender a definigao de templates Parametrizar rotas no servidor Reflita sobre o conteudo que vocé explorou e faca um debate com seus colegas e professores pelo Classroom ou na prdéxima aula ao vivo live Fique atento ao prazo de encerramento da atividade continua que compdem esses conteudos de aprendizagem Esperamos que vocé tenha aprofundado seus conhecimentos durante os estudos e tenha aproveitado todo o conteudo apresentado httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2328 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2428 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2528 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2628 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2728 Desenvolvimento Web 04092023 0955 Desenvolvimento Web httpssitesgooglecomfaculdadeimpactacombrdwp9pli1authuser1 2828 Classroom Gmail Drive Portal do Aluno Núcleo de Educação a Distância Faculdade Impacta Telefone 11 55935382 Horário de atendimento 10h às 18h Desenvolvimento Web