0011 0010 1010 1101 0001 0100 1011 1 2 4 0011 0010 1010 1101 0001 0100 1011 Linguagens de Programação 1 2 4 0011 0010 1010 1101 0001 0100 1011 Pensamento Humano (nãoestruturado) Programa Computador 1 2 4 LINGUAGENS DE PROGRAMAÇÃO 0011 0010 1010 1101 0001 0100 1011 • Usadas para descrever algoritmos; isto é, seqüências de passos que levam à solução de um problema. • Permitir que os usuários especifiquem como estes passos devem ser seqüenciados para resolver um problema. • Especificar algoritmos com precisão. 1 2 4 Tipos de Linguagem 0011 0010 1010 1101 0001 0100 1011 • As linguagens de baixo nível – Restritas a linguagem de máquina – Forte relação entre as operações implementadas pela linguagem e as operações implementadas pelo hardware. • As linguagens de alto nível 1 2 4 – Aproximam-se das linguagens utilizadas por humanos para expressar problemas e algoritmos – Cada declaração numa linguagem de alto nível equivale a várias declarações numa linguagem de baixo nível. Primeiras Linguagens 0011 0010 1010 1101 0001 0100 1011 • Programadores usavam linguagem de máquina – Seqüências de dígitos binários (0s e 1s). – Por exemplo, a instrução “some 1 + 1” deveria ser representada como: 10100100 • Muitas desvantagens: 1 2 – Grande probabilidade de erro em todos os estágios do processo de programação. – Mesmo sendo com algoritmos simples resulta em longos programas, o que dificulta o processo de validação e detecção de erros. – O cálculo de endereços de memória devem ser feitos manualmente, com um árduo trabalho e uma grande probabilidade de erros. 4 Assembler 0011 0010 1010 1101 0001 0100 1011 • Algumas das desvantagens podem ser superadas fazendo com que o computador seja o responsável pelo estágio de tradução. 1 2 • O programa ainda é escrito em termos de operações básicas de máquina, mas a tradução em código binário é feita pelo computador. 4 • O programa que faz essa tradução é chamado de assembler • Trata do problema de cálculo de endereço, usando nomes em formato de texto para endereçar os dados. Linguagens de Alto Nível Vs Linguagens de Baixo Nível 0011 0010 1010 1101 0001 0100 1011 • Alto nível – – – Problemas podem ser solucionados muito mais rapidamente e com muito mais facilidade A solução do problema não necessita ser obscurecida pelo nível de detalhes necessários em um programa em linguagem de baixo nível. O programa em linguagem de alto nível é normalmente fácil de seguir e entender cada passo da execução. 1 2 4 Linguagens de Alto Nível Vs Linguagens de Baixo Nível 0011 0010 1010 1101 0001 0100 1011 • Baixo nível – – – Indicada para funções que precisam implementar instruções de máquina específicas que não são suportadas por linguagens de alto nível A grande eficiência e o reduzido tamanho dos programas Impossibilidade de uso de linguagens de alto nível (hardware simples) 1 2 4 Histórico das Linguagens de Programação 0011 0010 1010 1101 0001 0100 1011 • • Existem centenas de linguagens de programação Agrupadas em 4 gerações: – – – – Primeira geração: linguagem de máquina Segunda geração: grande quantidade de bibliotecas de software, sistemas de execução em tempo real e desenvolvimento de gerenciadores de base de dados. Terceira geração: capacidade procedural e estrutural Quarta geração: sistemas especialistas, desenvolvimento de inteligência artificial execução dos programas em paralelo. 1 2 4 Processamento de Linguagens 0011 0010 1010 1101 0001 0100 1011 • Embora seja teoricamente possível a construção de computadores especiais, capazes de executar programas escritos em uma linguagem de programação qualquer, os computadores existentes hoje em dia são capazes de executar somente programas em uma linguagem de nível baixo, a linguagem de máquina. Linguagens de máquina: rapidez de execução de programas, do custo de sua implementação 1 • 2 4 Processamento de Linguagens 0011 0010 1010 1101 0001 0100 1011 • Linguagens de programação: facilidade na construção e da confiabilidade de programas 1 2 • Um problema básico:como uma linguagem de nível mais alto pode ser implementada em um computador cuja linguagem de máquina é bastante diferente, e de nível bem mais baixo. 4 • Existem basicamente duas alternativas para esta implementação: interpretação e tradução. Interpretação 0011 0010 1010 1101 0001 0100 1011 • Nesta solução, as ações indicadas pelos comandos da linguagem são diretamente executadas. • Mais precisamente, um interpretador é um programa que executa repetidamente a seguinte seqüência: 1. Obter o próximo comando do programa. 2. Determinar que ações devem ser executadas. 3. Executar estas ações. 1 2 4 Tradução • Nesta solução, programas escritos em linguagem de alto nível são 0011 0010 1010 1101 0001 0100 1011 equivalentes em linguagem de máquina, traduzidos para versões antes de serem executados. • 1 2 Esta tradução é feita em vários passos. Por exemplo: – Inicialmente traduzidos para código Assembly (compilador) – Depois ser traduzido para código relocável (objeto), em linguagem de máquina – O programa inteiro é carregado na memória principal, como código executável de máquina. 4 Linguagem de Montagem 0011 0010 1010 1101 0001 0100 1011 1 2 4 Linguagem de Programação 0011 0010 1010 1101 0001 0100 1011 • Conjunto de instruções seqüenciais padrões. • Independente de arquitetura de computador específica. • São criações humanas • Seguem certas convenções • São traduzidas (compiladas) de forma a ser compreendida pelo computador. 1 2 4 Características 0011 0010 1010 1101 0001 0100 1011 • Linguagem Orientada a Objetos • Simples e Robusta: Aperfeiçoamento da linguagem C++ • Gerenciamento Automático de Memória • Independência de Plataforma: JVM (Java Virtual Machine) • Multi Threading: Executa várias tarefas ao mesmo tempo 1 2 4 A Máquina Virtual Java - JVM 0011 0010 1010 1101 0001 0100 1011 DOS JVM MeuPrograma.java (código fonte) MeuPrograma.class (Bytecode) 1 Unix JVM 4 Win Compilação javac Execução java 2 JVM JVM Linux JVM Esquema de compilação e execução de um programa em Java Exemplo Aplicado 0011 0010 1010 1101 0001 0100 1011 1 2 4 Applet Java 1.import java.io.*; //diretiva de compilação, apontamento para uma classe externa que será utilizada no processo de compilação 2.class Exemplo0206 0011 0010 1010 1101 0001 0100 1011 3.{ 4. public static void main (String args[]) 5. { 6. String s=""; 7. float nota1=0, nota2=0, trabalho=0, media=0; 8. DataInputStream dado; //declaração de um objeto a partir da classe DataInputStream 9. 10. 11. 12. try (Bloco Tente) linhas 10 a 26 { System.out.println("Entre com a nota 1"); dado= new DataInputStream(System.in); digita 13. s=dado.readLine(); //variável s recebe o dado 14. nota1=Float.parseFloat(s); 15. // ou Float.valueOf(s).floatValue(); 16. 17. 18. 19. System.out.println("Entre com a nota 2"); dado= new DataInputStream(System.in); s=dado.readLine(); nota2=Float.valueOf(s).floatValue(); 20.System.out.println("Entre com a nota do Trabalho"); 21. dado= new DataInputStream(System.in); 22. s=dado.readLine(); 23. trabalho=Float.valueOf(s).floatValue(); 24. 25. 26. 27. 28. 29. 31. media=(nota1+nota2+trabalho)/3; System.out.println("Media : "+ media); } 1 2 catch (IOException e) { System.out.println("Houve erro na entrada de dados"); } 32. 4 catch (NumberFormatException e) { System.out.println("Houve erro na conversao, digite apenas caracteres num‚ricos"); } } } DataInputStream – Classe que possibilita a entrada de dados via teclado. Caso ocorra algum erro, a execúção do programa desvia para a linha 27 e 32 que trata de erros de entrada de dados e conversão de tipos de dados. 0011 0010 1010 1101 0001 0100 1011 1 2 4 Introdução - JAVA - Servlets 0011 0010 1010 1101 0001 0100 1011 • Módulos de programas em Java • Recebem pedidos, executam o serviço e geram respostas • Residem no servidor 1 2 4 As sevlets são para os servidores o que as 0011 0010 1010 1101 0001 0100 1011 applets são para os browsers, o seja da mesma maneira que a Applet necessita 1 2 de um browser para ser executada a 4 Servlets necessita do servidor JAVA, instalado . No cliente e no servidor. Comunicação existente entre Servlets e Applets 0011 0010 1010 1101 0001 0100 1011 Servidor HTTP Browser Applets 1 Servlet 2 4 BD Servlets Vantagens 0011 0010 1010 1101 0001 0100 1011 • Extensibilidade – Java é orientada a objetos – Servlets foram projetados para serem simples – Arquitetura permite que os Servlets sejam facilmente estendidos 1 2 4 Fase de serviço 0011 0010 1010 1101 0001 0100 1011 Web Browser Entrada Webserver ... Saída Web Browser Servlet ... Web Browser Thread1 1 2 Thread2 4 Thread3 0011 0010 1010 1101 0001 0100 1011 1 2 4 0011 0010 1010 1101 0001 0100 1011 1 2 4 0011 0010 1010 1101 0001 0100 1011 • O TomCat é um software também distribuido gratuitamente que permite que softwares escritos em Servlet sejam executados no servidor. 1 2 4 Programação Orientada a Objetos 0011 0010 1010 1101 0001 0100 1011 1 2 4 Programação 0011 0010 1010 1101 0001 0100 1011 record Pessoa nome : string; dataNasc : integer; end 1 2 procedure idade begin ..... 4 nome dataNasc idade abstração João 29/1/74 =9&%2!1 formalização UML 0011 0010 1010 1101 0001 0100 1011 O que é UML? 1 2 A UML é uma linguagem-padrão para a elaboração de projetos de software. Usada para visualizar, especificar, construir e documentar sistemas Orientados a Objeto. 4 UML 0011 0010 1010 1101 0001 0100 1011 Onde pode ser utilizada? 1 2 Sistemas Complexos de Software. Exemplos: Sistemas Bancários, Serviços Distribuídos Baseados na Web, etc. Também pode modelar sistemas que não sejam softwares. Exemplos: Projeto de Hardware, Fluxo de Trabalho no Sistema Legal. 4 UML 0011 0010 1010 1101 0001 0100 1011 Blocos de Construção 1 Três Tipos de Blocos de Construção Itens Relacionamentos Diagramas 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Diagramas na UML 1 2 São desenhados para permitir a visualização de um sistema sob diferentes perspectivas; nesse sentido, um diagrama constitui uma projeção de um determinado sistema. Existem 9 Diagramas 4 UML 0011 0010 1010 1101 0001 0100 1011 Diagramas da UML Diagramas de Classes Diagramas de Objetos Diagramas de Casos de Uso Diagramas de Seqüências Diagramas de Colaborações Diagramas de Gráficos de Estados Diagramas de Atividades Diagramas de Componentes Diagramas de Implantação 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Classes Exibe o conjunto de classes, interfaces e colaborações bem como seus relacionamentos. Abrange uma visão estática da estrutura do sistema. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Objetos Exibe o conjunto de objetos e seus relacionamentos. Representa retratos estáticos de instâncias de itens encontrados em diagramas de classes. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Casos de Uso Exibe um conjunto de casos de uso e atores e seus relacionamentos. Abrangem a visão estática de casos de uso do sistema. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Interação Exibe uma interação, consistindo de um conjunto de objetos e seus relacionamentos, incluindo as mensagens que podem ser trocadas entre eles. Abrangem a visão dinâmica do sistema. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Seqüências É um diagrama de interação, cuja ênfase está na ordenação temporal das mensagens. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Colaboração É um diagrama de interação, cuja ênfase está na organização estrutural dos objetos que enviam e recebem mensagens. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Estados Exibem as Máquinas de Estados, formada por estados, transições, eventos e atividades Abrangem uma visão dinâmica do sistema 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Atividades Tipo especial de diagrama de gráfico de estado, exibindo o fluxo de uma atividade para outra no sistema diagramas de atividades. É uma visão dinâmica 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Componente Exibe as organizações e as dependências existentes em um conjunto de componentes diagramas e componentes É a visão estática da implementação do sistema. 1 2 4 UML 0011 0010 1010 1101 0001 0100 1011 Digramas de Implantação Mostra as configurações dos nós de processamento em tempo de execução e os componentes neles existentes. É a visão estática de uma arquitetura diagramas de implantação. 1 2 4