Java. para concursos. Questões comentadas

Tamanho: px
Começar a partir da página:

Download "Java. para concursos. Questões comentadas"

Transcrição

1 Java para concursos Questões comentadas

2 Prefácio Concebida inicialmente para ser utilizada no desenvolvimento de pequenos aplicativos e programas de controle de aparelhos eletrônicos, a linguagem de programação orientada a objeto Java, com o boom da Internet, foi rapidamente adaptada aos conceitos da Internet, dando às páginas HTML conteúdos mais dinâmico. Desde o seu lançamento, em maio de 1995, Java foi rapidamente adotada pelos desenvolvedores, estando presente em diversos tipos de web browsers, celulares, mainframes, etc. Com algumas características peculiares, como multi-plataforma, alto desempenho, segurança, código interpretado, a linguagem Java está presente em muitos projetos, e por esta crescente utilização, a linguagem Java tornou-se um padrão para o mercado. Seguindo este cenário, o assunto Java sempre é cobrado nas provas de concursos públicos. Para você pode ser preparar melhor neste tema, o Grupo Handbook de TI preparou o volume Java, que traz uma séria de questões comentadas sobre tal tópico. Bons estudos, Grupo Handbook de TI Página 1 de 51

3 Direitos Autorais Este material é registrado no Escritório de Direitos Autorais (EDA) da Fundação Biblioteca Nacional. Todos os direitos autorais referentes a esta obra são reservados exclusivamente aos seus autores. Os autores deste material não proíbem seu compartilhamento entre amigos e colegas próximos de estudo. Contudo, a reprodução, parcial ou integral, e a disseminação deste material de forma indiscriminada através de qualquer meio, inclusive na Internet, extrapolam os limites da colaboração. Essa prática desincentiva o lançamento de novos produtos e enfraquece a comunidade concurseira Handbook de TI. A série Handbook de Questões de TI Comentadas para Concursos Além do Gabarito é uma produção independente e contamos com você para mantê-la sempre viva. Grupo Handbook de TI Página 2 de 51

4 Canais de Comunicação O Grupo Handbook de TI disponibiliza diversos canais de comunicação para os concurseiros de TI. Loja Handbook de TI Acesse a nossa loja virtual em Serviço de Atendimento Comunique-se diretamente conosco através do faleconosco@handbookdeti.com.br Twitter do Handbook de TI Acompanhe de perto promoções e lançamentos de produtos pelo nosso Twitter com/handbookdeti Página 3 de 51

5 1. Assuntos relacionados: Servidor de Aplicações, J2EE, EJB, WAR, JAR, EAR, Banca: CESGRANRIO Instituição: BNDES Cargo: Analista de Suporte Ano: 2008 Questão: 42 Uma aplicação empresarial contendo componentes EJB e módulos web deverá ser publicada em um servidor de aplicação compatível com J2EE. No contexto do empacotamento dessa aplicação para publicação (deploy), é correto armar que (a). não há como juntar componentes EJB e módulos web em uma mesma aplicação, pois deverão ser publicados separadamente. (b). um arquivo EAR poderá conter arquivos WAR e JAR representativos dos módulos web e EJB. (c). o tamanho do pacote, em bytes, sempre ca maior que o código original, em virtude do algoritmo empregado no empacotamento da aplicação em um arquivo EAR. (d). módulos web não devem ser empacotados, pois isso inviabiliza seu acesso pela Internet. (e). arquivos JAR servem apenas para empacotar componentes EJB. Solução: Os arquivos JAR (Java Archive) agrupam arquivos de classes e os recursos utilizados por essas classes, como imagens e propriedades. Os pacotes JAR são muito utilizados no mundo Java e são facilmente visualizáveis por softwares de descompactação populares, como o Winzip. A utilização desses arquivos JAR não se restringe ao empacotamento de componentes EJB, pois também são utilizados para empacotar componentes Java não pertencentes ao padrão J2EE. Concluímos, então, que a alternativa E está incorreta. O que difere um arquivo JAR comum e um arquivo JAR que armazena componentes EJB são os arquivos manifest, cuja nalidade é fornecer informações adicionais que serão utilizadas em tempo de execução. Os arquivos JAR comuns possuem o arquivo meta-inf/manifest.mf. Já os arquivos que armazenam EJBs possuem o arquivo META_INF/ejb-jar.xml. Os módulos web podem ser empacotados em arquivos com extensão WAR (Web Archive) e não há problema nenhum em relação ao seu acesso pela Internet, pois uma vez que o arquivo WAR siga as especicações do padrão J2EE, o container web do servidor de aplicação será responsável por gerar os arquivos HTML para serem entregues ao browser. Logo, a alternativa D está incorreta. A alternativa C está errada, uma vez que os arquivos JAR, WAR etc. são compactados e tendem a possuir tamanho reduzido, embora não haja garantia de que sejam menores que o código original. Um arquivo EAR (Enterprise Application Archive) é utilizado para permitir que uma aplicação J2EE complexa possa ser facilmente instalada em um servidor J2EE. Ele permite agrupar pacotes JAR comuns, pacotes JAR com EJBs e pacotes WAR. Portanto, a alternativa B é a alternativa correta para a questão. Página 4 de 51

6 2. Assuntos relacionados: Servidor de Aplicações, J2EE, JEE,.NET, MVC, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 47 Um servidor de aplicações provê diversos serviços para as aplicações que hospeda. Considerandose implementações típicas em J2EE/JEE e.net, compondo uma arquitetura em 3 camadas, é correto armar que, dentre os serviços oferecidos pelos servidores de aplicações, encontra-se (a). validação de objetos de domínio, segundo as regras de negócio da aplicação. (b). geração de código através de MDA (Model Driven Architecture). (c). persistência nal dos objetos de domínio. (d). suporte nativo à arquitetura MVC. (e). estrutura para troca de mensagens entre aplicações. Solução: O objetivo dos servidores de aplicações é disponibilizar uma plataforma que permita aos programadores abstrair de uma gama de tarefas inerentes ao desenvolvimento do software. Dessa forma, os programadores podem se concentrar mais nas regras de negócio do que nas questões de infraestrutura da aplicação, como segurança, disponibilidade, balanceamento de carga, mensageiria etc. Para aplicações simples, a utilização de um servidor de aplicações pode representar um overhead ao invés de facilitar as tarefas dos programadores. No entanto, para grandes aplicações comerciais com requisitos mais rígidos de desempenho e robustez a falhas, os servidores de aplicações mostram-se muito úteis. Embora o conceito de servidor de aplicações seja aplicável para o desenvolvimento em uma grande quantidade de linguagens, nos últimos anos os que mais se tornaram populares são os servidores de aplicações J2EE (ou JEE, nas versões mais recentes), criados para suportar aplicações escritas em Java. Para exemplicar o conjunto de serviços que os servidores de aplicações podem oferecer, vejamos a Figura 1. Ela mostra a arquitetura JEE mais recente, publicada pela Sun Microsystems no documento JSR No esquema mostrado nessa gura, tanto o Web Container quanto o EJB Container são hospedados no servidor de aplicações, que oferece serviços diversos por meio de várias APIs. A API JMS (Java Message Service), por exemplo, oferece suporte a comunicação ponto-a-ponto conável. A API JavaMail permite que as aplicações enviem s sem ter que se preocupar com as questões de las de mensagens, falhas etc. A API JASS, por sua vez, oferece facilidades para implementação de autenticação e autorização nas aplicações. Vale lembrar que os servidores de aplicações também oferecem facilidades para persistência de dados, como lembrado na alternativa C. No entanto, a palavra nal torna a alternativa, ao menos, duvidosa! Já no caso da alternativa D, é de se esperar que um ambiente tão cheio de funcionalidades como um servidor de aplicações ofereça suporte a construção de aplicações segundo Página 5 de 51

7 o modelo MVC. No entanto, a construção de uma aplicações que obedeça ao MVC está muito mais ligada a separação dos componentes e camadas do sistema do que à plataforma tecnológica utilizada. É, portanto, possível construir aplicações MVC no bom e velho ASP, bem como nos novos e modernos servidores de aplicações. A validação de objetos de que trata a alternativa A é feita pelos servidores de aplicações, mas não está relacionada as regras de negócio das aplicações. A geração automática de código, por sua vez, é uma tarefa comum às IDEs, e não aos servidores de aplicações. Portanto, a alternativa E, por ser a mais objetiva e clara, é a resposta correta para essa questão. Figura 1: arquitetura JEE 6.0. Página 6 de 51

8 3. Assuntos relacionados: J2EE, Java Transaction API (JTA), MVC, Banca: Cesgranrio Instituição: Petrobras Cargo: Analista de Sistemas - Infraestrutura Ano: 2008 Questão: 63 A aplicação do padrão MVC (Model-View-Controller) no desenvolvimento de aplicações Web J2EE permite dividir a aplicação em camadas e resolver uma série de problemas. Sobre os recursos da arquitetura J2EE e o desenvolvimento de aplicações J2EE utilizando o MVC, são feitas as armativas abaixo. I - Uma possível estratégia no desenvolvimento de um site Web seria utilizar páginas JSP para construir a camada View, Servlets para a camada Controller e EJBs para a camada Model. II - A API JTA do J2EE permite aos clientes de EJB obter um contexto inicial a partir do qual é possível recuperar o objeto Home de um EJB. III - Na demarcação de transação gerenciada pelo container, se o atributo transacional associado ao método de um EJB for denido como Required, o container sempre criará uma nova transação a cada chamada do método. Está(ão) correta(s) a(s) armativa(s) (a). I, apenas. (b). II, apenas. (c). III, apenas. (d). I e II, apenas. (e). I, II e III. Solução: Abordaremos cada item. Sobre o Item I A plataforma J2EE (Java 2 Platform, Enterprise Edition) é uma solução baseada em componentes para projeto, desenvolvimento, montagem e disponibilização de aplicações distribuídas em ambientes corporativos. Tipicamente, as aplicações J2EE são divididas em 3 camadas: Cliente; Web; Negócios; A Figura 2 exemplica a arquitetura J2EE. A partir da Figura 2, identicamos a existência de containers, que são ambientes que fornecem um conjunto de serviços para os componentes apropriados (Apache Tomcat é um tipo de container). Página 7 de 51

9 Figura 2: arquitetura J2EE. Podemos observar, também, a existência de dois tipos de clientes: Cliente Web: páginas Web dinamicamente geradas por componentes Web (JSP ou Servlets) e que são exibidas no browser; Cliente Aplicação: permite que o usuário interaja com o servidor da aplicação através de interfaces mais complexas, geralmente através de APIs. Já do lado servidor, encontramos dois containers: Container EJB (Enterprise Java Beans) que implementa toda a lógica do negócio, isto é, encapsula o código (com classes, métodos e atributos) que realiza o propósito da aplicação; Container WEB que contém: Servlets: classes que processam dinamicamente as requisições e constroem respostas na forma de páginas HTML; Páginas JSP (Java Server Pages): permitem a mistura de páginas HTML, estáticas, com conteúdos gerados dinamicamente pelos Servlets. Note que os Servlets atuam como uma camada intermediária entre a requisição proveniente do Web browser (ou outro cliente http) e o banco de dados (ou aplicação no servidor http). É importante mencionar que, quando uma página JSP é requisitada pela primeira vez, o container a compila gerando um Servlet. Nas chamadas sucessivas essa etapa não é mais necessária (a não ser que a JSP tenha sido modicada). Portanto, as páginas JSP são, em última instância, processadas como Servlets. Após esta breve revisão sobre J2EE, relembremos o signicado do padrão MVC. MVC é um padrão de arquitetura de software utilizado para separar dados ou lógica de negócios (Model) da interface do usuário (View) e do uxo da aplicação (Control). Sua ideia central é permitir que uma mesma lógica de negócio possa ser acessada e visualizada através de várias interfaces. Outro benefício considerável dessa abordagem é que alterações feitas no layout não afetam a manipulação de dados. A partir do que foi exposto acima, conseguimos identicar que a página JSP (mistura de HTML com Servlet), representa a camada View, uma vez que compõe a interface com o usuário. O Servlet representa a camada Control, pois atua como uma camada intermediária Página 8 de 51

10 entre o Web browser e o EJB. Por m, o EJB representada a camada Model, já que implementa toda a lógica do negócio. Portanto, o item I está correto. Sobre o Item II JTA (abreviação de Java Transaction API ) é uma especicação feita pela Sun Microsystems (criadora do Java) visando padronizar o uso de transações distribuídas feitas por aplicativos Java. Basicamente, isso signica que ela pode ser usada para fazer commit, rollback ou criar transações, ao invés de usar transações diretamente pelo driver JDBC. A principal vantagem que o uso de JTA acarreta, contudo, é a possibilidade de executar transações globais (unidades lógicas de trabalho que seguem 4 princípios fundamentais: atomicidade, consistência, isolamento e durabilidade). JTA dene somente as interfaces que um aplicativo deve chamar para fazer uso de transações distribuídas, mas deve ser implementada por algum serviço que implemente essa API. Praticamente todo application server, atualmente, tem uma implementação dessas, que é normalmente chamada de Transaction Manager. Na plataforma J2EE, é a JNDI (Java Naming and Directory Interface) que fornece uma interface padrão para localização de usuários, máquinas, redes, objetos e serviços, permitindo aos clientes a obtenção do contexto inicial de um objeto a partir do nome do componente. Portanto o item II está errado. Sobre o Item III A grande vantagem da gerência transacional em J2EE é que ela esconde os detalhes de baixo-nível, assim, o desenvolvedor pode assumir que qualquer recurso transacional será adequadamente tratado pela plataforma, usando, para tanto, demarcações transacionais declarativas (também chamadas de implícitas) ou usando demarcações transacionais programáticas (também chamada de explícitas). Uma demarcação transacional é basicamente a denição do ponto onde ela se inicia (usa-se o comando Begin) e o ponto onde ela termina (usa-se o comando Commit). Em J2EE as transações podem ser demarcadas de três maneiras: Declarativa (CMT - Container-Managed Transactions): o container manipula a demarcação transacional; Programática (BMT - Bean Managed Transactions): os EJBs manipulam a demarcação transacional; Iniciada pelo cliente: código cliente manipula a demarcação transacional (ex. cliente WEB). Portanto, estamos diante de uma transação declarativa (gerenciada pelo container), a qual possui os seguintes atributos transacionais (o atributo especica como o componente irá reagir quando o seu método for chamado por um cliente dentro ou fora do contexto de uma transação): Required: indica que o escopo de uma transação é requerido pelo método. Se não existe transação, uma nova é criada e dura até que o método termine (é propagada para todos Página 9 de 51

11 os métodos chamados). Caso já exista uma transação iniciada pelo cliente, o bean é incluído no seu escopo durante a chamada do método (já podemos eliminar o item III); Supports: indica que o método suporta transações. Será incluído no escopo da transação do cliente se existir. Se ele for chamado fora do escopo de uma transação ele realizará suas tarefas sem transações e pode chamar objetos que não suportam transações; RequiresNew: indica que o método requer uma nova transação. Estando ou não o cliente no escopo de uma transação, o bean irá iniciar uma nova transação que iniciará e terminará no bean; NotSupported: indica que o método não suporta transações. Se o método for chamado pelo cliente no escopo de uma transação, a mesma será suspensa enquanto durar a chamada do método (não haverá propagação de transações do cliente); Mandatory: indica que o método só pode ser chamado no escopo de uma transação do cliente; Never: indica que o método nunca pode estar dentro de uma transação. Se o cliente que chama o método for parte de uma transação, o bean irá provocar um RemoteException (ou EJBException em clientes locais). Logo, a alternativa A está correta. Página 10 de 51

12 4. Assuntos relacionados: Linguagens de Programação, Java, JavaServer Pages (JSP), Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvimento de Sistemas e Administração de Banco de Dados Ano: 2009 Questão: 32 Analise as seguintes armações a respeito de JSP: I. Em uma aplicação Web, há apenas um objeto page em cada JSP. II. Comentários JSP aparecem na resposta ao cliente. III. Os objetos com escopo session duram por toda a sessão de navegação do cliente. Assinale a opção correta. (a). Apenas a armação I é verdadeira. (b). Apenas a armação II é verdadeira. (c). Apenas a armação III é verdadeira. (d). As armações I, II e III são verdadeiras. (e). Nenhuma das armações é verdadeira. Solução: JavaServer Pages (JSP) é uma tecnologia baseada em Java utilizada no desenvolvimento de páginas Web com conteúdo dinâmico, similar às tecnologias Active Server Page (ASP) e PHP. Ela faz parte de uma tecnologia maior referida como Java 2 Enterprise Edition (J2EE). Além das tags HTML, que geram o conteúdo estático, uma página JSP também contém elementos JSP especiais que permitem inserir conteúdo dinâmico por meio dos elementos JSP. Os elementos JSP são processados pelo servidor Web antes da página HTLM ser enviada de volta ao browser. Ou seja, quando o usuário faz uma requisição a uma página JSP, o servidor executa os elementos JSP da página, inserindo os resultados dos mesmos junto a parte estática da página, e envia a página HTML para o usuário. A tecnologia JSP pode ser usada, por exemplo, para recuperar informação em um banco de dados, manipular arquivos, obter informações sobre o visitante, etc. Após uma breve introdução de JSP, a seguir, analisamos as armativas da questão: I. Como forma de facilitar a programação Web, em uma página JSP existem 9 objetos instanciados, conhecidos como Objetos Implícitos, que são: page: representa a própria página JSP, ou melhor, uma instância da classe servlet na qual a página foi convertida. É simplesmente um sinônimo para this; cong: armazena os parâmetros de inicialização (conguração) do servlet da página JSP; request: solicitação que aciona o processamento da página; response: responsável pela devolução do resultado ao usuário; out: representa o uxo de saída (output) para a página em si; pagecontext: dados de contexto para a execução da página; session: representa a sessão atual de um usuário individual; Página 11 de 51

13 application: representa a aplicação à qual a página pertence; exception: incluso nas páginas especícas para tratar exceções ou erros não capturados. Para cada página JSP processada existe um servlet correspondente, ou seja, o que um faz outro também deve fazer. Como o objeto page faz referência ao servlet gerado, existe um objeto page para cada JSP. Portanto, esta armativa é verdadeira. II. Como qualquer linguagem de programação Web, os comentários não aparecem na resposta ao cliente. Logo, esta armativa é falsa. III. O escopo de um objeto está relacionado com as páginas JSPs que podem acessar o objeto. Os escopos disponíveis são: application, request, response, page e session. O objeto que possui escopo session está disponível para todas as JSPs e os servlets, e todos os objetos vinculados à session estão disponíveis para toda a sessão de usuário. A principal utilização do escopo session é manter os estados de conexão entre cliente e servidor, pois o protocolo HTTP não armazena informações de estado. Isso permite o usuário navegar entre várias páginas na aplicação Web sem perda de informações referentes à sessão de usuário. Um exemplo típico de utilização do escopo session é em autenticação de usuários, onde é possível restringir acesso a determinadas páginas. Portanto, esta armativa é verdadeira porque os objetos com o escopo session duram durante toda a sessão negação do cliente. Após a análise das armativas, chegamos a conclusão que as armativas I e III são verdadeiras. Portanto, a alternativa correta é a (E). Note que o gabarito fornecido para esta questão não confere com o gabarito ocial. Possivelmente, a banca que organizou a prova deve ter cometido um equívoco na armativa I. Página 12 de 51

14 5. Assuntos relacionados: Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 61 testdescontovalido() valida a vericação para o produto caderno, mas gera uma exceção para o produto caneta, indicando que o desconto de 90% não é válido para canetas, o que está incorreto. A causa do problema e uma possível solução seriam: (a). CAUSA: uso de aritmética binária de ponto utuante para os cálculos (variáveis do tipo double) com posterior tentativa de comparação exata entre os valores calculados (linha 21). SOLUÇÃO: usar aritmética decimal exata substituindo os valores primitivos double por instâncias da classe BigDecimal. (b). CAUSA: arredondamento automático devido ao uso na mesma expressão dos tipos int e double (linha 14) sem conversão de tipos (typecasting). SOLUÇÃO: transformar o parâmetro percentual em double ou realizar um typecasting explícito de int para double na expressão. (c). CAUSA: versão antiga da máquina virtual Java, que apresenta esse tipo de problema até a versão 1.1. SOLUÇÃO: atualizar para a última versão da JVM. (d). CAUSA: falta da inclusão do pacote java.lang.math em Produto. SOLUÇÃO: incluir o pacote através de uma declaração import. (e). CAUSA: mistura de elementos de escopos diferentes (classe e método) na expressão lógica de retorno. SOLUÇÃO: atribuir o precominimo a uma variável local e utilizá-la na comparação ou tornar precocomdesconto um campo de Produto. Solução: (A) CORRETA Observe, no código acima, que as variáveis preco, precominimo e precocomdesconto são do tipo double. Observe, também, que o programa está tratando com partes fracionais de uma unidade monetária, que assumiremos ser o real somente para ns ilustrativos, e então precisa de um tipo que permite pontos decimais em seus valores. Infelizmente, números em ponto utuante podem causar transtornos. O problema que ocorre no código acima é devido ao uso do tipo double (ou oat) para representar quantias em reais (assumindo que quantias de real são mostradas com dois dígitos a direita do ponto decimal). Dessa forma, após a chamada do construtor Produto, poderemos ter as seguintes quantias armazenadas para o produto caderno: na varável privada preco: e exibição 10.00; na variável privada precominimo: 0.999, o qual seria arrendondado normalmente para 1.00 para propósitos de exibição. O mesmo pode ocorrer para o produto caneta após a invocação do construtor Produto: na varável privada preco: e exibição 1.00; na variável privada precominimo: 0.101, o qual seria arrendondado normalmente para 0.10 para propósitos de exibição. Página 13 de 51

15 Assim, após a invocação do método descontovalido pelos produtos caderno e lápis, teremos: para caderno: a variável precocomdesconto armazenará (e exibição 1.00), o que é maior que o precominimo (0.999), retornando true na comparação; para caneta: a variável precocomdesconto armazenará (e exibição 0.10), o que é menor que o precominimo (0.101), retornando false na comparação. A recomendação é não usar variáveis do tipo double (ou oat) para realizar cálculos monetários precisos. A imprecisão de números em ponto utuante pode causar erros que resultarão em incorretos valores monetários. Nesses casos a recomendação é usar a classes java.math.bigdecimal para a realização de cálculos com precisão arbitrária de valores em ponto utuante. (B) ERRADA Em Java, há regras de promoção que se aplicam a expressões contendo valores de dois ou mais tipos primitivos. Cada valor é promovido ao tipo mais alto na expressão. Dessa forma, o argumento do método descontovalido (percentual) e a constante (100) do tipo int são automaticamente promovidas para o tipo double, devido ao campo preco. (C) ERRADA A JVM (Java Virtual Machine ou Máquina Virtual Java, em português) é uma máquina computacional abstrata, que, assim como uma máquina real, possui seu próprio conjunto de instruções e capacidade de manipular várias áreas de memória em tempo de execução. Dentre as responsabilidade da JVM podemos citar as principais: independência de uma aplicação em relação ao hardware; independência de uma aplicação em relação ao sistema operacional; proteção aos usuários contra programas maliciosos. Lembre-se que a máquina virtual Java não tem conhecimento sobre a linguagem de programação Java. Ela conhece apenas um determinado formato binário, arquivo do tipo classe, o qual contém instruções da JVM (ou bytecodes) e uma tabela de símbolos, bem como outras informações. (D) ERRADA A classe Math é parte do pacote java.lang, o qual é implicitamente importado pelo compilador. Então não é necessário importar a classe Math para usar seus métodos. (E) ERRADA Os membros de uma classe, no presente caso, preco e precominimo, são acessíveis por qualquer método declarado na mesma classe, independentemente do qualicador que os precede. Assim, o campo precominino (this.precominimo no código) pertence ao escopo do método descontovalido. Note, ainda, que no método descontovalido, o uso da palavra chave this para o membro precominimo não era necessário, pois não há variáveis locais com o mesmo nome. Página 14 de 51

16 6. Assuntos relacionados: Linguagens de Programação, Java, Tratamento de Exceção em Java, Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvimento de Sistemas e Administração de Banco de Dados Ano: 2009 Questão: 30 Em uma aplicação Java, se o carregador de classes não conseguir localizar a classe do driver de banco de dados para uma conexão JDBC, é lançada a exceção (a). java.lang.classnotfoundexception. (b). java.io.filenotfoundexception. (c). java.lang.securityexception. (d). java.io.ioexception. (e). java.util.inputmismatchexception. Solução: Exceções, como o nome sugere, são situações que fogem às regras e, no caso das linguagens de programação, geralmente indesejáveis. Ocorrem no momento da execução de um programa e precisam ser devidamente tratadas para não interromperem o processamento normal de uma aplicação. Podem ocorrer por diversos motivos, como uma inadvertida divisão por zero, uso de referências para objetos inexistentes, falta de memória, dentre outros. A Linguagem Java possui um mecanismo de tratamento de exceções baseado em escopo, o que permite utilizar um bloco de código separado daquele que gerou uma determinada exceção para tratá-la adequadamente, propiciando maior organização ao projeto codicado. Da mesma forma que os demais elementos desta linguagem, as exceções são objetos em Java, sendo a classe Exception a superclasse de todas as exceções. Esta estruturação permite que um programador dena suas próprias exceções, que herdam características pré-denidas na classe Exception. Quando uma exceção ocorre, códigos escritos por um programador podem tratá-la através de diretivas especializadas para este m (throws, try, catch e nally). Para tanto, o tipo (classe) de exceção deve ser indicado, possibilitando-se, assim, que toda e qualquer exceção seja individualmente tratada. Uma exceção comumente lançada durante a execução de códigos em Java é a ClassNot- FoundException, que adverte ao programador que uma determinada classe não está acessível à JVM, isto é, nenhuma denição para uma classe com o nome especicado pôde ser encontrada. Esta exceção, classe integrante do pacote java.lang, pode ocorrer por inexistência real da classe indicada ou por falta de referência à sua localização no ambiente de programação utilizado (variáveis de ambiente do sistema operacional). Desta forma, a assertiva A apresenta-se como a resposta para a questão. A exceção java.io.filenotfoundexception ocorre para sinalizar que a tentativa de abertura do arquivo indicado falhou. Já a exceção java.lang.securityexception indica a tentativa negada de acesso a algum recurso do sistema, como um arquivo. Operações de entrada/saída interrompidas ou falhas lançam a exceção java.io.exception para indicar o Página 15 de 51

17 ocorrido. A classe Scanner (um parser simples para textos com tipos primitivos) lança a exceção java.util.inputmismatchexception para indicar que ou o token capturado não coincide com o padrão do tipo esperado ou seu valor está fora da faixa esperada. Página 16 de 51

18 7. Assuntos relacionados: Java, Bytecode, Máquina Virtual Java (JVM), Banca: FCC Instituição: TRT 15a Região Cargo: Analista Judiciário - Tecnologia da Informação Ano: 2009 Questão: 48 No âmbito da linguagem Java, considere: I. Edição é a criação do programa, que também é chamado de código Bytecode. II. Compilação é a geração de um código intermediário chamado fonte, que é um código independente de plataforma. III. Na interpretação, a máquina virtual Java ou JVM analisa e executa cada instrução do código Bytecode. IV. Na linguagem Java a interpretação ocorre apenas uma vez e a compilação ocorre a cada vez que o programa é executado. Está correto o que consta em (a). I, II, III e IV. (b). II e IV, somente. (c). III e IV, somente. (d). IV, somente. (e). III, somente. Solução: Java é uma linguagem de programação muito popular atualmente. Ela foi desenvolvida na década de 90 pela SUN Microsystems e desde aquela época essa linguagem vem sendo melhorada e ampliada. O paradigma escolhido para o Java foi o de orientação a objetos, portanto, classes e métodos são utilizados para modelar o que se deseja programar. Em geral, os códigos-fonte desenvolvidos em outras linguagens (C++, por exemplo) são compilados para serem executados em arquiteturas especícas. Dessa forma, executáveis gerados para uma determinada arquitetura (Intel, por exemplo) não funcionam em outras arquiteturas (PowerPC e SPARC, por exemplo). À medida que temos diversas arquiteturas e diversos sistemas que devem ser corretamente executados nessas arquiteturas, essa abordagem começa a se mostrar desfavorável. A plataforma Java veio principalmente para solucionar esse tipo de problema. Diz-se então que a linguagem Java é portável, já que seus executáveis podem ser executados em qualquer arquitetura, desde que haja uma JVM para ela. De forma simplicada, essa portabilidade é obtida da seguinte forma: 1. o desenvolvedor escreve (edita) o código-fonte de um sistema na linguagem Java; 2. ao nal da fase de desenvolvimento, o código-fonte é compilado, uma única vez, gerandose um código intermediário chamado de bytecode. Esse bytecode não depende da arquitetura da máquina física. Isso porque a máquina física não executa diretamente esse código intermediário; Página 17 de 51

19 3. uma JVM, que pode estar instalada sobre qualquer arquitetura física, interpreta e executa o código intermediário (bytecode) quantas vezes forem as vezes em que o sistema for executado. Perceba que com o Java não há mais dependência entre código-fonte e arquitetura física, mas passamos a ter dependência entre JVM e arquitetura física. Ou seja, foi adicionada uma camada (a JVM) para se obter a tão desejada portabilidade. Neste ponto, podemos concluir que os itens I, II e IV são errados e o item III é correto. Portanto, a alternativa a ser marcada é a letra E. Note que os itens I, II e IV só são errados por conta de trocas de palavras. Uma leitura desatenta provavelmente comprometeria esta questão. Vejamos: o item I estaria correto se a palavra Bytecode fosse substituída por fonte; o item II estaria correto se a palavra fonte fosse substituída por Bytecode; o item IV estaria correto se as palavras interpretação e compilação fossem invertidas. Página 18 de 51

20 8. Assuntos relacionados: Servidor de Aplicações, Java, J2EE, Máquina Virtual Java (JVM), Heap, Banca: Cesgranrio Instituição: BNDES Cargo: Analista de Sistemas - Suporte Ano: 2008 Questão: 31 Um servidor Linux, que roda, exclusivamente, um servidor de aplicação Java EE, possui 2 GB de memória RAM e 1 CPU. A única aplicação em execução atinge, em momentos de pico, 50 usuários simultâneos. Para que essa aplicação tenha um desempenho adequado, o tamanho máximo da Heap da JVM pode ser congurado para (a). 100 threads. (b). 32 MB. (c). 60 threads. (d). 2 GB. (e). 512 MB. Solução: O Java EE (Enterprise Edition) é uma plataforma de desenvolvimento de sistemas em Java. A plataforma inicialmente era conhecida por Java 2 Platform Enterprise Edition (J2EE), até ter seu nome trocado para Java EE, o que ocorreu na versão 5. A plataforma JEE oferece uma série de componentes e funcionalidades que permitem a implementação de software Java distribuído. Uma descrição sucinta da destinação e das características gerais da plataforma JEE pode ser encontrada na Wikipedia: A Plataforma Java (Enterprise Edition) difere-se da Plataforma Java Standard Edition (Java SE) pela adição de bibliotecas que fornecem funcionalidade para implementar software Java distribuído, tolerante a falhas e multi-camada, baseada amplamente em componentes modulares executando em um servidor de aplicações. Ela é voltada para aplicações multicamadas, baseadas em componentes que são executados em um servidor de aplicações... Ela contém bibliotecas desenvolvidas para o acesso a base de dados, RPC, CORBA, etc. Devido a essas características a plataforma é utilizada principalmente para o desenvolvimento de aplicações corporativas. Os servidores de aplicação mencionados na descrição acima, em linhas gerais, são softwares que provêem um ambiente onde as aplicações podem executar. Uma aplicação Java usualmente é dividida em 2 partes: uma parte que executa no cliente e uma outra parte que executa no servidor. O servidor em si é dividido em diferentes containers que oferecem diferentes serviços às aplicações. Entre os serviços mais comuns oferecidos pelos containers estão a execução da lógica de negócio, serviços de mensagens, serviços de gerenciamento de conexões a bancos de dados, serviços de segurança etc. Entendido o conceito de servidores de aplicação, agora vamos falar um pouco sobre JVM (Java Virtual Machines). Página 19 de 51

21 Quando um código Java é compilado, ele dá origem a um programa codicado nos chamados bytecodes. Os bytecodes são uma espécie de código intermediário, que só pode ser executado por uma JVM. Uma JVM, por sua vez, é um programa que converte os bytecodes em código executável de máquina, que pode então ser executado pela máquina física. Em última instância, são os conceitos de bytecodes que garantem a portabilidade dos códigos Java. Independente do sistema operacional ou plataforma física onde tenha sido desenvolvido o programa Java, os bytecodes sempre serão os mesmos. Com isso, para executar o programa Java em outro sistema, basta que se tenha uma JVM especíca, capaz de converter os bytecodes para o código de máquina apropriado. Agora, vamos ao que realmente interessa para alcançarmos a resposta da questão. A heap da JVM é uma área de memória onde todos os objetos das aplicações que estão sendo executadas pela JVM residem. Além dos objetos criados nas aplicações, a heap ainda possui uma área de memória reservada para outras funções da JVM. Portanto, para que as aplicações executem com desempenho adequado, é necessário congurar bem o tamanho da heap. As alternativas A e C estão erradas, simplesmente, porque o tamanho da heap não é denido em termos do número de threads, mas sim em termos de quantidade de memória. Já a alterativa D está errada pois não faz sentido alocar toda a memória do sistema (no caso, 2GB) exclusivamente para a JVM. O sistema operacional sequer irá permitir a realização desta operação, visto que boa parte da memória já estará sendo utilizada pelo próprio sistema operacional. Com isto, nos restam as alternativas B (32 MB) e D (512 MB). O enunciado da questão diz que o servidor possui 1 CPU, e que, em momentos de pico, a aplicação em execução atinge 50 usuários simultâneos. O fato de o servidor possuir apenas 1 CPU implica dizer que, em momentos de alta utilização da aplicação, haverá muitas trocas de contexto, ou seja, muitas alternâncias entre os processos em execução. Em princípio, a alteração da quantidade de memória não irá afetar a quantidade de trocas de contexto, porém irá permitir que as múltiplas threads (que serão criadas para atender uma grande quantidade usuários simultâneos) estejam sempre na memória principal, o que pode conferir maior desempenho à aplicação. Como o enunciado não presta informações sobre o consumo de memória das threads individuais que são geradas para atender cada um dos usuários simultâneos, e levando ainda em consideração que o tamanho default da heap (ou seja, um tamanho que atende os requisitos de desempenho de uma aplicação média) da JVM varia entre 16MB a 64MB, podemos armar que, para maximizar o desempenho da aplicação, o ideal seria congurar o tamanho máximo da heap para 512MB. Portanto, a resposta da questão é a alternativa E. Página 20 de 51

22 9. Assuntos relacionados: Java, Sobrecarga de Método, Sobrescrita de Método, Banca: Cesgranrio Instituição: BR Distribuidora Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questão: 47 Em um sistema desenvolvido na linguagem de programação Java, suponha a existência de uma classe Pessoa que possui um método chamado getidenticador que: é público, não recebe nenhum argumento, retorna um inteiro e declara que não levanta exceções. Suponha ainda a existência de uma classe Cliente que herda da classe Pessoa e possui um método chamado getidenticador que é público, não recebe nenhum argumento e declara que levanta a exceção java.lang.exception. Essa situação é um exemplo de (a). Sobrecarga de método (overload) sem erros, pois os métodos têm o mesmo nome. (b). Sobrescrita de método (overriding) sem erros, pois o método da classe Cliente substitui o método da classe Pessoa. (c). Avaliação preguiçosa (late binding) sem erros, pois o método correto a ser chamado será denido em tempo de execução. (d). Método virtual sem erros, pois o método getidenticador da classe Cliente foi denido viabilizando sua reescrita. (e). Erro, pois o método getidenticador da classe Cliente não pode declarar que levanta a exceção java.lang.exception, segundo a denição do método getidenticador na classe Pessoa. Solução: Métodos em Java podem ser sobrecarregados (overloading) e sobrescritos (overriding). Métodos são sobrecarregados quando criamos outros métodos com o mesmo nome, mas diferentes assinaturas e diferentes denições. Sobrecarga de métodos permite que instâncias da sua classe tenham uma interface mais simples para outros objetos e se comportem de modo diferente baseado na entrada para aquele método. Quando você chama um método em um objeto, Java compara o nome do método e o número de argumentos para escolher qual denição de método executará. Para sobrecarregar um método, tudo que você precisa fazer é criar diferentes denições de métodos na sua classe, todas com o mesmo nome, mas com diferentes listas de parâmetros (ou em número ou tipo dos argumentos) e com diferentes corpos. Note que Java diferencia métodos sobrecarregados com o mesmo nome, baseado sobre o número e tipos dos parâmetros para aquele método, e não sobre o tipo de retorno. Isto é, se você tentar criar dois métodos com o mesmo nome, mesma lista de parâmetros, mas com diferentes tipos de retornos, você obterá um erro de compilação. Aqui está um exemplo de como sobrecarregar um método. A classe MeuRetangulo tem 4 variáveis para denir o canto superior esquerdo e o inferior direito do retângulo: x1, y1, x2 e y2. Página 21 de 51

23 Class MeuRetangulo { int x1 = 0; int x2 = 0; int y1 = 0; int y2 = 0; Denimos o método constroiretangulo que possui 4 argumentos inteiros e ajusta o tamanho do retângulo de acordo com os valores dos cantos, retornando o objeto retângulo resultante. MeuRetangulo constroiretangulo (int cx1, int cy1, int cx2, int cy2) { x1 = cx1; y1 = cy1; x2 = cx2; y2 = cy2; return this; Agora, iremos sobrecarregar o método acima alterando a lista de parâmetros, passando dois objetos da classe Ponto: MeuRetangulo constroiretangulo (Ponto superioresquerdo, Ponto inferiordireito) { x1 = superioresquerdo.x; y1 = superioresquerdo.y; x2 = inferiordireito.x; y2 = inferiordireito.y; return this; Uma vez que a sobrecarga ocorre entre métodos denidos na mesma classe, podemos eliminar a alternativa A, pois o problema em questão está ligado ao polimorsmo que a herança permite (várias classes implementando o mesmo método). Por outro lado, sobrescrever (overriding) métodos envolve a denição de um método em uma subclasse que tem a mesma assinatura que um método na superclasse. Então, quando um método é chamado, o método na subclasse é encontrado e executado em vez de ser executado aquele da superclasse. Para sobrescrever um método, tudo que você precisar fazer é criar um método em sua subclasse que tem a mesma assinatura (nome, tipo de retorno, e lista de argumentos) que um método denido por uma de suas superclasses. Além disso: o nível de acesso não pode ser mais restritivo que o do método da superclasse; o método não pode lançar exceções (exceto de Runtime) novas ou mais abrangentes que as declaradas no método da superclasse, porém pode lançar exceções mais especícas ou lançar menos exceções. Uma vez que Java executa a primeira denição de método que encontra com a mesma assinatura, ele efetivamente oculta a denição do método original. Aqui está um exemplo de como sobrescrever um método. A classe Impressao possui o método imprime (), o qual apenas imprime o nome da classe. Página 22 de 51

24 Class Impressao { void imprime () { System.out.println (``Impressao''); Agora, vamos criar uma segunda classe, Impressao2, que tem Impressao como superclasse e sobrescreve o método imprime () (a diferença está no nome a ser impresso). Class Impressao2 extends Impressao { void imprime () { System.out.println (``Impressao2''); Observe que, se eu tiver um programa com objetos das classes Impressao e Impressao2, terei duas implementações diferentes do método imprime (). A chamada a.imprime () está chamando um desses dois métodos, dependendo da classe do objeto a. Achar o método correto a ser chamado para um objeto particular chama-se dynamic binding (late binding), ou amarração dinâmica. Isto é, temos que amarrar a chamada a.imprime () a uma das implementações de imprime () dinamicamente, em tempo de execução (e não em tempo de compilação, o que se chamaria static binding). Como vimos acima, a sobrescrita de um método não pode lançar exceções novas, pois obteremos erro em tempo de compilação. Portanto, a alternativa E é a correta. Página 23 de 51

25 10. Assuntos relacionados: Linguagens de Programação, Java, Banca: FCC Instituição: TCE/CE Cargo: Analista de Controle Externo - Auditoria de Tecnologia da Informação Ano: 2008 Questão: 80 Recurso Java que permite que uma thread invoque um método em um objeto remoto (semelhante à RPC) denomina-se (a). RMI. (b). getpriority(). (c). matcher. (d). FocusRequester. (e). RemoteException. Solução: A resposta da questão é a alternativa A. O RMI (Remote Method Invocation) é uma das abordagens da tecnologia Java para prover as funcionalidades de uma plataforma de objetos distribuídos. O RMI faz parte do núcleo básico do Java desde a versão 1.1, com a sua API sendo especicada no pacote java.rmi e seus subpacotes. Através da utilização do RMI, é possível que um objeto ativo em uma máquina virtual Java possa interagir com objetos de outras máquinas virtuais Java, independentemente da localização dessas máquinas virtuais. No desenvolvimento de uma aplicação cliente-servidor usando Java RMI, como para qualquer plataforma de objetos distribuídos, é essencial que seja denida a interface de serviços que serão oferecidos pelo objeto servidor. Os serviços especicados pela interface RMI deverão ser implementados através de uma classe Java. O funcionamento típico de uma aplicação que usa RMI é o seguinte: uma aplicação cliente invoca um método de um objeto no servidor. Os parâmetros são serializados e enviados pela rede para o servidor. No servidor, os dados são deserializados, e a computação é realizada. por m, os resultados são novamente serializados e enviados de volta ao cliente. Página 24 de 51

26 11. Assuntos relacionados: Algoritmos, Linguagens de Programação, Java, Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação Ano: 2008 Questão: 25 Considere o seguinte fragmento de código, para o método run() de uma determinada linha de execução (thread), em Java. 1. try{ 2. sleep(1000); 3. catch (InterruptedException ie){ Se considerarmos que a linha de execução não é interrompida, é correto armar que (a). o código não compila. (b). a linha de execução entra em estado Pronto, após 1000 milissegundos. (c). a linha de execução entra em estado Pronto, em exatamente 1000 milissegundos. (d). a linha de execução entra em estado Pronto, em pelo menos 1000 milissegundos. (e). o código compila, mas não executa, lançando uma exceção do tipo ThreadException. Solução: Já que o enunciado referencia um bloco de código, uma boa forma de compreender essa questão é através de um código que implemente o bloco correspondente em conjunto com a infraestrutura necessária para compilação e execução. Considere, portanto, o código abaixo. import java.lang.thread; class Foo extends Thread { public void run() { try { sleep(1000); catch (InterruptedException ie){ System.out.println("Hello World!"); public class ThreadedHello { public static void main(string[] args) { Foo foo; foo = new Foo(); foo.run(); É possível perceber que o bloco de código acima contém, em sua totalidade, o bloco de código a ser analisado na questão. Ora, se salvarmos esse código em um arquivo ThreadedHello.java e tentarmos compilá-lo, o compilador Java o compilará sem problemas, visto Página 25 de 51

27 que não há erro sintático ou semântico no código. O que invalida a solução referenciada pela opção a. Após a compilação do bloco de código, também é possível executá-lo. O exemplo abaixo exibe a chamada ao programa compilado e a saída por ele gerada: $ time java ThreadedHello Hello World! real 0m1.131s A correta execução desse programa invalida, portanto, a opção e, já que não houve qualquer exceção levantada e o programa exibiu a saída correta (Hello World, neste caso). No exemplo acima, o comando time exibe os tempos de execução de um programa e optou-se por exibir apenas o tempo real de execução, de 1,131 segundos. Resta-nos, portanto, as opções b, c e d. Para isso, a melhor fonte é a referência da linguagem Java, que diz que o método sleep da classe Thread causa a suspensão temporária da thread em execução pelo número de milisegundos especicado pelo argumento passado para o método. Disso decorre que, terminado o tempo de suspensão, a thread retornará ao estado Pronto em 1000 milissegundos. O problema com as opções c e d são os qualicadores adicionados a este tempo. Por depender da precisão do timer do computador que executará esse bloco de código e do escalonador de processos, é impossível garantir que a mudança para o estado Pronto ocorrerá em exatamente 1000 milisegundos, invalidando a alternativa c. De forma semelhante, a precisão do timer ou o escalonador podem fazer com que o tempo de suspensão da thread seja menor que 1000 milisegundos, invalidando a alternativa d. De modo geral, como não há garantias dadas pelo método sleep, é melhor selecionar a opção que responde a pergunta sem restrições adicionais. No caso, a alternativa b é a correta. Página 26 de 51

28 12. Assuntos relacionados: Teste de Mesa, Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 65 public class Ponto { private int x; private int y; public Ponto(int x, int y) { setcoordenadas(x,y); public void setcoordenadas(int x, int y) { this.x = x; this.y = y; public String tostring() { return "(" + x + "," + y + ")"; public static void main(string[] args) { int a = 1; int b = 2; int c = 3; int d = 4; Ponto p = new Ponto(a,b); Ponto q = new Ponto(c,d); Ponto r = p; c = 5; p.setcoordenadas(c,d); System.out.print(p); System.out.print(q); System.out.print(r); r.setcoordenadas(a,b); a = b; q.setcoordenadas(b,c); System.out.print(p); System.out.print(q); System.out.println(r); Qual será a saída da execução da classe Java acima? (a). (5,4)(3,4)(5,4)(1,2)(2,5)(1,2) (b). (5,4)(3,4)(1,2)(5,4)(2,5)(1,2) (c). (5,4)(5,4)(5,4)(2,2)(2,5)(2,2) Página 27 de 51

29 (d). (3,4)(3,4)(5,4)(2,5)(2,5)(1,2) (e). (3,4)(3,4)(5,4)(2,2)(2,5)(2,2) Solução: A seguir, o passo a passo da execução da classe em questão. Na verdade, serão abordados os principais pontos da execução. após a execução da 5a linha (Ponto p = new Ponto(a,b);), teremos o seguinte cenário: a=1; b=2; c=3; d=4; p.x=1; p.y=2; após a execução da 6a linha (Ponto q = new Ponto(c,d);), teremos o seguinte cenário: a=1; b=2; c=3; d=4; p.x=1; p.y=2; q.x=3; q.y=4; após a execução da 7a linha (Ponto r = p;), teremos o seguinte cenário: a=1; b=2; c=3; d=4; p.x=1; p.y=2; q.x=3; q.y=4; r <-> p Perceba que não foi criado um objeto que seria atribuído à variável r. Na execução dessa última linha, a variável r foi atribuída ao objeto já existente p. Ou seja, a partir deste ponto, em qualquer referência às variáveis r e p serão utilizadas as propriedades do mesmo objeto. após a execução da 9a linha (p.setcoordenadas(c,d);), teremos o seguinte cenário: a=1; b=2; c=5; d=4; p.x=5; p.y=4; q.x=3; q.y=4; r <-> p após as execuções das linhas de número 10, 11 e 12 (System.out.print(p); System.out.print(q); System.out.print(r);), teremos a seguinte saída: (5,4)(3,4)(5,4) após a execução da 13a linha (r.setcoordenadas(a,b);), teremos o seguinte cenário: a=1; b=2; c=5; d=4; p.x=1; p.y=2; q.x=3; q.y=4; r <-> p após a execução da 14a linha (a = b;), teremos o seguinte cenário: a=2; b=2; c=5; d=4; p.x=1; p.y=2; q.x=3; q.y=4; r <-> p após a execução da 15a linha (q.setcoordenadas(b,c);), teremos o seguinte cenário: a=2; b=2; c=5; d=4; p.x=1; p.y=2; q.x=2; q.y=5; r <-> p após as execuções das linhas de número 16, 17 e 18 (System.out.print(p); System.out.print(q); System.out.println(r);), teremos a seguinte saída: (5,4)(3,4)(5,4)(1,2)(2,5)(1,2) Página 28 de 51

30 13. Assuntos relacionados: Java, UML, Diagrama de Classes, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 63 public class Produto { private Fabricante mfabricante; public Produto () { public Fabricante getfabricante () { return mfabricante; public void setfabricante (Fabricante val) { this.mfabricante = val; import java.util.arraylist; public class Fabricante { private ArrayList<Produto> mproduto; public Fabricante () { public ArrayList<Produto> getproduto () { return mproduto; public void setproduto (ArrayList<Produto> val) { this.mproduto = val; Assinale o diagrama de classe que expressa corretamente a implementação mostrada acima, em Java, das classes Produto e Fabricante, bem como da associação entre as mesmas. (a). Diagrama 1 (b). Diagrama 2 (c). Diagrama 3 (d). Diagrama 4 (e). Diagrama 5 Página 29 de 51

31 Solução: Lembre-se que diagramas de classe nos permitem identicar tanto o conteúdo de uma classe quanto o relacionamento entre várias classes. Em um diagrama de classes podemos mostrar as variáveis e métodos membros de uma classe. Podemos também mostrar se uma classe herda de outra, ou se mantém uma referência para outra. Em suma, podemos descrever todas as dependências do código-fonte entre classes. Para resolvermos esta questão precisamos saber: 1. associações entre classes muito frequentemente representam instâncias de variáveis que mantêm referência para outros objetos; 2. a direção da echa nos informa que a classe mantém referência para outra classe; 3. o número próximo à cabeça da seta nos informa quantas referências são mantidas; 4. quando existem muitas conexões representamos por estrela (*). Em Java, isso é comumente implementado com um Vetor ou uma Lista. De posse desse conhecimento, estamos aptos a revolver a presente questão. Inicialmente, analisemos a declaração da classe Produto. Observe que nela é declarado um membro privado do tipo Fabricante. Em outras palavras, a classe Produto mantém uma única referência para classe Fabricante. Portanto, na associação existente entre Produto e Fabricante deve existir uma echa apontando para a classe Fabricante com o valor numérico 1 (um) em sua ponta. Agora, analisemos a declaração da classe Fabricante. Observe que nela é declarado um vetor (ArrayList) privado do tipo Produto, em outras palavras, a classe Fabricante mantém muitas referências para classe Produto. Portanto, na associação existente entre Fabricante e Fabricante também deve existir uma echa apontando para a classe Produto com um asterisco (*) em sua ponta. Concluímos, então, que a reposta correta é a letra D. Página 30 de 51

32 14. Assuntos relacionados: Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 64 Considere o trecho de código a seguir. if (x!= x + 0) { System.out.println("Condição satisfeita."); Se x for da classe String e tiver sido inicializado, esse trecho de código Java (a). imprimirá a mensagem, apenas se x não for 0. (b). imprimirá a mensagem, apenas se x não tiver sido inicializado com null. (c). imprimirá a mensagem, independente do valor de x. (d). gerará um erro de compilação. (e). compilará, mas nunca imprimirá a mensagem. Solução: Para resolvermos a referida questão é preciso saber que, em Java, o operador de adição (+) tem precedência maior que os operadores relacionais de (des)igualdade (!= e ==). Além disso, o operador + pode ser utilizado também para a concatenação de strings, que é o caso da nossa questão. Pronto, agora nós já temos condições de resolver a questão. Pelo enunciado, extraímos que x é uma string inicializada, isto é, uma string de tamanho N, onde N pode ser maior do que 0 (zero), se x possuir algum conteúdo, ou N pode ser igual a 0 (zero), se x for nula. Independentemente do conteúdo de x, o lado direito do operador!= produzirá uma string com o tamanho N + 1. Isto é, a string concatenada possuirá tamanho, e obviamente, conteúdo, diferente da original (x), o que sempre satisfará a condição de desigualdade existente no if. Logo, esse trecho de código imprimirá a mensagem, independente do valor de x. (alternativa C). Página 31 de 51

33 15. Assuntos relacionados: Linguagens de Programação, Java, Banca: Cesgranrio Instituição: Petrobras Cargo: Analista de Sistemas - Infraestrutura Ano: 2008 Questão: 62 Considere o programa em Java abaixo. import java.io.*; class ClassX { private int size; private int[] arrayx; private int x; public ClassX(int s) { size = s; arrayx = new int[s]; x = -1; public void Met1(int p) { arrayx[++x] = p; public int Met2() { return arrayx[x]; public int Met3() { return arrayx[x]; public boolean Met4() { return (x == -1); class Algoritmo { static int then; static int thea; static ClassX thes; public static void main(string[] args) throws IOException { System.out.print(Forneça um valor: ); then = getint(); MetX(); System.out.print(Resultado : + thea); public static int getint() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readline(); return Integer.parseInt(s); public static void MetX(){ Página 32 de 51

34 thes = new ClassX(1000); thea = 0; while (then > 0){ thes.met1(then); then; while (!thes.met4()){ int newn = thes.met2(); thea += newn; Se o programa for executado recebendo como parâmetro o valor 4, em Forneça um valor:, o valor armazenado na variável thea e apresentado em System.out.print(Resultado : + thea); será (a). 10 (b). 12 (c). 14 (d). 16 (e). 18 Solução: O programa Java acima possui duas classes (ClassX e Algoritmo). A classe ClassX tem três atributos (size, arrayx e x), que usam o operador de acesso private. A variável size e x são do tipo inteiro e a variável arrayx é um vetor do tipo inteiro. Além disso, a classe ClassX possui 4 métodos que são: public void Met1(int p): este método atribui o valor do parâmetro p na posição x do arrayx. A variável x é incrementada a cada chamada do método Met1(); public int Met2(): este método retorna o valor da posição x do arrayx. A variável x é decrementada a cada chamada do método Met2(); public int Met3(): método denido mas não utilizado; public boolean Met4(): verica se o atributo x da classe ClassX é igual a -1. A classe Algoritmo tem três atributos (then, thea e thes) que usam o operador de acesso static. A variável then e thea são do tipo inteiro e a variável thes é do tipo da classe ClassX. Além disso, a classe ClassX possui 3 métodos que são: public static int getint(): este método retorna um valor inteiro lido do teclado; public static void MetX(): este método possui dois laços de repetição. Um laço faz atribuições ao vetor arrayx do objeto thes da classe ClassX. Os valores atribuídos ao arrayx são passados um por um como parâmetro para o método Met1(). O segundo laço faz um somatório dos valores atribuídos ao vetor arrayx do objeto thes da classe ClassX. Além disso, inicializa a variável thea com o valor 0; public static void main(string[] args): o método main não opera sobre quaisquer objetos. Na verdade, quando um programa se inicia, não há qualquer objeto ainda. O método main estático é executado e constrói os objetos de que o programa precisa. Página 33 de 51

35 O construtor da classe ClassX inicializa seus atributos com os seguintes valores: size: recebe o valor passado como parâmetro para o construtor (neste programa, quando o construtor é chamado, é passado o valor 1000 como parâmetro); arrayx = new int[s]: o vetor é instanciado e seu tamanho é denido pelo parâmetro passado para o construtor (neste caso, o valor 1000); x = -1: o atributo x é inicializado com o valor -1. Como pode ser observado, as variáveis e os métodos da classe Algoritmo estão denidos como static. A seguir vamos dar uma breve descrição sobre o operador static. Quando se dene um atributo como static, isso implica que só haverá um atributo para todos os objetos da classe. Em contraste com atributos não static, cada objeto tem sua própria cópia de todos os atributos de instâncias. Ou seja, o atributo é compartilhado entre todas as instâncias da classe. Além disso, mesmo se não houver qualquer objeto da classe, o atributo estático está presente. Ele pertence à classe, não a qualquer objeto individual. Ao executar o programa, o método main é chamado e nele é executado a linha de comando then = getint(). Como enunciado, o método retorna o valor digitado e é atribuído o valor 4 a variável then. Depois é chamado a método MetX(), que executa dois laços de repetição como descrito acima. O primeiro laço executado pelo método MetX() atualiza os atributos da seguinte forma: arrayx[0] = 4, x = 0 e then = 4; arrayx[1] = 3, x = 1 e then = 3; arrayx[2] = 2, x = 2 e then = 2; arrayx[3] = 1, x = 3 e then = 1; then = 0; O segundo laço executado pelo método MetX() atualiza os atributos da seguinte forma: thea = 1; thea = 3; thea = 6; thea = 10. Concluindo, o valor apresentado em System.out.print(Resultado : + thea) será 10. Portanto, a alternativa A está correta. Página 34 de 51

36 16. Assuntos relacionados: Linguagens de Programação, Java, Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação Ano: 2008 Questão: 23 Com relação à linguagem de programação Java, é correto armar que (a). o operador instanceof é utilizado para chamar o método construtor de uma classe e criar um novo objeto. (b). são tipos primitivos de dados: boolean, byte, short, char, int, long, string, oat e double. (c). o tipo de dado int suporta apenas números de a (d). a instrução do-while não faz parte das instruções de controle de uxo da linguagem. (e). os valores booleanos não podem ser usados em uma operação de casting. Solução: (A) ERRADA O operador instanceof determina se um tipo particular de objeto é de uma determinada classe, ou seja, o instanceof compara um objeto para um tipo (classe) especicado. Você pode usá-lo para testar se um objeto é uma instância de uma classe ou uma instância de uma subclasse, ou uma instância de uma classe que implementa uma interface especíca. O operador verica se uma referência de objeto é uma instância de um tipo, e retorna um valor booleano. A forma geral de uso do operador é: <objeto> instanceof <classe>, que retornará verdadeiro para os objetos instanciados a partir da classe avaliada. Note que instanceof sempre retornará falso se <objeto> é nulo. (B) ERRADA Java é uma linguagem fortemente tipada. Isso signica que toda variável deve ter um tipo declarado. Existem oito tipos primitivos em Java. Quatro deles são tipos de números inteiros, dois são tipos números de ponto utuante, um tipo boolean (intervalo de valores 0 ou 1) e um é o tipo de caracteres char, usado para unidades de código no esquema de codicação Unicode. Os tipos de números inteiros servem para números sem parte fracionaria, sendo permitido valores negativos. O Java fornece os quatro tipos de números inteiros a seguir: Tipo Armazenamento Necessário Intervalo de Valores int 4 bytes -2,147,483,648 a 2,147,483,647 short 2 bytes 32,768 a 32, 767 long 8 bytes -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 byte 1 byte -128 a 127 Os tipos utuantes representam números com parte fracionária. Os dois tipos de ponto utuante são mostrados a seguir: Página 35 de 51

37 Tipo Armazenamento Necessário Intervalo de Valores oat 4 bytes +/-3.4E-38 a +/- 3.4E+38 double 8 bytes +/-1.7E-308 a +/-1.7E+308 O tipo char representa todo o conjunto de caracteres denidos no código de caracter Unicode que é usado para denir a extensão das possibilidades de caracteres alfanuméricos e símbolos. O código UNICODE dene que cada caractere tenha 2 bytes. O tipo primitivo booleano é o tipo de dados mais simples da linguagem Java. Ele possui apenas dois valores, um correspondente a verdadeiro e outro a falso. O tipo boolean é tipicamente usado como resultado de expressões condicionais como variáveis identicadoras de estado. (C) ERRADA Como pode ser observado na tabela que apresenta os tipos de números inteiros acima, o intervalo que o tipo de números inteiro pode assumir é -2,147,483,648 a 2,147,483,647. (D) ERRADA Java suporta comandos condicionais como seleção e laços para determinar o controle do uxo do programa. Java dene os comandos de seleção (condicionais) if-else e switch, além desse, a linguagem Java determina comandos de repetição (laços ou loop) que são: while, for e do-while. Estas estruturas de controle utilizam os símbolos delimitadores (chaves) como limite de sua operação. Por exemplo: Seleção Seleção Repetição Repetição Repetição if(<condição>) switch (<opção>) for( <condição>) while(<condição>) do { { { { { <comando1> case <const1 var1> : <comando1> <comando1> <comando1> <comandon> case <const2 var2> : <comandon> <comandon> <comandon> else while(<condição>); { <comando1> <comandon> As chaves são utilizadas quando existe a necessidade de aplicar os comandos de controle sobre vários comandos. Quando são aplicados a apenas um comando o uso das chaves não é obrigatória. (E) CORRETA A operação de casting é responsável por fazer a conversão de um tipo de dado em outro. Existem regras para esse tipo de conversão de tipo, pois podem causar perda de informações. A operação casting em Java entre tipos primitivos permite converter o valor de um tipo para outro tipo primitivo. Mais comumente ocorre com os tipos numéricos, e existe um tipo primitivo boolean que não pode ser usado em uma operação de casting, pois os valores deste tipo só podem ser verdadeiro ou falso. Página 36 de 51

38 Embora o conceito de conversão seja razoavelmente simples, o uso é complicado pelo fato de que Java tem oito tipos primitivos e vários tipos de objeto. Há três formas de casting na linguagem Java: Casting entre tipos primitivos, como por exemplo: int para oat ou para double; Casting de uma instância de uma classe para uma instância de outra classe; Casting tipos primitivos para objetos. Como apresentado, realmente o tipo primitivo boolean da linguagem Java não pode ser um dos operandos da operação de casting, fazendo a assertiva E como correta. Página 37 de 51

39 17. Assuntos relacionados: Programação, Java, Garbage Collection, Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação Ano: 2008 Questão: 21 O que fazer para forçar a coleta de lixo de um objeto, em Java? Indique a opção correta. (a). Invocar nalize(). (b). Remover todas as referências ao objeto. (c). Invocar Runtime.gc(). (d). Invocar System.gc(). (e). A coleta de lixo não pode ser forçada. Solução: No Java, ao contrário de algumas linguagens como o C, não é necessário que o programador se preocupe com a vida de um objeto, se responsabilizando em liberar espaços de memória antes que ela esgote. O mecanismo de coleta de lixo (garbage collection) do Java faz uma varredura periódica em busca de posições de memória não mais referenciadas e realiza a liberação das mesmas. A alternativa A cita o método nalize(). Esse método é equivalente ao método destrutor de C++ e não é responsável em forçar a coleta de lixo. Ele é chamado diretamente pelo coletor de lixo logo antes que o objeto seja destruído. É útil quando precisamos liberar alguns recursos anteriormente à efetivação da eliminação. Por exemplo, se precisarmos fechar uma conexão antes da destruição do objeto, isso será possível denindo o método nalize() de tal maneira que realize a tarefa de fechar a conexão. Removendo todas as referências do objeto, possibilitaremos que ele seja destruído pelo coletor de lixo, mas essa destruição ocorrerá em algum ponto especíco de sua execução, que é iniciada ao bel-prazer da JVM (Java Virtual Machine). Quando a JVM decidir que é hora de executá-lo, ele será executado, pois deve ser usado com inteligência devido aos altos recursos computacionais que são exigidos. Não é possível forçar a execução do coletor de lixo via programação no Java. Os métodos indicados nas alternativas (C) e (D) apenas noticam à JVM que a aplicação gostaria que o coletor de lixo fosse executado, mas não garantem que ele realmente será executado imediatamente. Dado o exposto, sabemos que a execução do coletor de lixo não pode ser forçada e, portanto, a alternativa correta é a alternativa (E). Página 38 de 51

40 18. Assuntos relacionados: Linguagens de Programação, Java, Pacotes Java, Interface com Usuário, Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação Ano: 2008 Questão: 24 A linguagem Java possui uma API (Application Program Interface) que disponibiliza pacotes e classes com diversas funcionalidades para auxiliar no desenvolvimento de aplicações. O pacote que contém classes que auxiliam na criação de interfaces de usuário, incluindo tratamento de grácos e imagens, é denominado (a). java.util. (b). java.applet. (c). java.graphic. (d). java.image. (e). java.awt. Solução: (A) INCORRETA O pacote java.util provê classes que tratam de coleções, eventos, data e hora, internacionalização, e classes de utilidade: um tokenizador, um gerador de números aleatórios e um vetor de bits, não tendo qualquer relação com interfaces grácas. (B) INCORRETA O pacote java.applet, da distribuição padrão do Java, é usado para a criação de applets Java. Um applet Java é uma aplicação fornecida aos usuários em formato de bytecode Java e são normalmente executados em navegadores com o intuito de prover interatividade a aplicações web. Os applets Java são normalmente escritos na linguagem Java, mas nada os impede de serem escritos em linguagens que possuam compiladores para bytecode da Java Virtual Machine (JVM), como Jython, Ruby ou Eiel. Um exemplo de código de applet Java é exibido abaixo: import java.applet.applet; import java.awt.*; public class HelloWorld extends Applet { public void init() { public void stop() { public void paint(graphics g) { g.drawstring("hello, world!", 20,10); Sendo salvo como HelloWorld.java e compilado, o seguinte trecho HTML é capaz de carregálo: Página 39 de 51

41 <html> <head> <title>hello World</title> </head> <body> <h1>um exemplo de applet Java</h1> <p><applet code="helloworld.class" width="200" height="40"> Aqui deveria aparecer o string "Hello World".</applet></p> </body> </html> Após a compilação e o carregamento em um navegador, este applet exibirá a string Hello, world!. Como o pacote java.applet provê uma forma para criação de applets Java e não provê, necessariamente, funcionalidade para criação de interfaces de usuário, java.applet não é a resposta correta. (C) INCORRETA Não existe pacote java.graphic na distribuição do J2SE e, portanto, esta alternativa está incorreta. (D) INCORRETA Não existe pacote java.image na distribuição do J2SE e, portanto, esta alternativa está incorreta. (E) CORRETA O pacote java.awt fornece classes para criação de interfaces de usuário e desenho de grácos e imagens na tela. O exemplo de applet exibido acima faz uso, inclusive, do pacote awt para exibição da string Hello, world! na janela do navegador. Seu resultado é exibido na Figura 3 e, por tratar de interfaces grácas, essa é a alternativa que responde corretamente a esta questão. Figura 3: hello, world em applet. Página 40 de 51

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 5 Servidores de Aplicação

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) J2EE () Sumário Introdução J2EE () APIs J2EE Web Container: Servlets e JSP Padrão XML 2 J2EE é Uma especificação para servidores

Leia mais

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9 Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):

Leia mais

Linguagem de Programação Introdução a Linguagem Java

Linguagem de Programação Introdução a Linguagem Java Linguagem de Programação Introdução a Linguagem Java Rafael Silva Guimarães Instituto Federal do Espírito Santo Campus Cachoeiro de Itapemirim Definição A linguagem Java foi desenvolvida pela Sun Microsystems,

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Prof. Pasteur Ottoni de Miranda Junior DCC PUC Minas Disponível em www.pasteurjr.blogspot.com 1-O que é um Enterprise Java Bean? O Entertprise Java Bean (EJB) é um componente server-side

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 28 de abril de 2010 Principais suportes de Java RMI (Remote Method Invocation), da Sun Microsystems DCOM (Distributed Component Object Model), da

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes 3 MÁQUINAS VIRTUAIS Em nossa aula anterior, fizemos uma breve introdução com uso de máquinas virtuais para emularmos um computador novo

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha Desenvolvimento WEB II Professora: Kelly de Paula Cunha O Java EE (Java Enterprise Edition): série de especificações detalhadas, dando uma receita de como deve ser implementado um software que utiliza

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Sobre o Professor Dr. Sylvio Barbon Junior

Sobre o Professor Dr. Sylvio Barbon Junior 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

Software Livre. para concursos. Questões comentadas

Software Livre. para concursos. Questões comentadas Software Livre para concursos Questões comentadas Prefácio Hoje, qualquer instituição, seja ela pública ou privada, necessita utilizar programas de computadores para auxiliar os seus processos, gerando

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Adriano Reine Bueno Rafael Barros Silva

Adriano Reine Bueno Rafael Barros Silva Adriano Reine Bueno Rafael Barros Silva Introdução RMI Tecnologias Semelhantes Arquitetura RMI Funcionamento Serialização dos dados Criando Aplicações Distribuídas com RMI Segurança Exemplo prático Referências

Leia mais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Servidor de Aplicações WEB Tomcat Servidor Tomcat Foi desenvolvido

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aplicações Convencionais vs. Web Aplicações convencionais Escritas usando uma linguagem de programação (ex.: Java) Sites de

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

Invocação de Métodos Remotos

Invocação de Métodos Remotos Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso

Leia mais

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS Pablo dos Santos Alves Alexander Roberto Valdameri - Orientador Roteiro da apresentação Introdução Objetivos Motivação Revisão bibliográfica

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

GUIA BÁSICO DA SALA VIRTUAL

GUIA BÁSICO DA SALA VIRTUAL Ambiente Virtual de Aprendizagem - MOODLE GUIA BÁSICO DA SALA VIRTUAL http://salavirtual.faculdadesaoluiz.edu.br SUMÁRIO 1. Acessando Turmas 4 2. Inserindo Material 4 3. Enviando Mensagem aos Alunos 6

Leia mais

AULA 02. 1. Uma linguagem de programação orientada a objetos

AULA 02. 1. Uma linguagem de programação orientada a objetos AULA 02 TECNOLOGIA JAVA O nome "Java" é usado para referir-se a 1. Uma linguagem de programação orientada a objetos 2. Uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Soquetes Um soquete é formado por um endereço IP concatenado com um número de porta. Em geral, os soquetes utilizam uma arquitetura cliente-servidor. O servidor espera por pedidos

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução ao Paradigma OO

Leia mais

Um pouco do Java. Prof. Eduardo

Um pouco do Java. Prof. Eduardo Um pouco do Java Prof. Eduardo Introdução A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Os programas são escritos em arquivos-texto com a extensão.java.

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal

Leia mais

4 Um Exemplo de Implementação

4 Um Exemplo de Implementação 4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação

Leia mais

1. Apresentação. 1.1. Objetivos

1. Apresentação. 1.1. Objetivos 1.1. Objetivos 1. Apresentação Neste capítulo estão descritos os objetivos gerais do livro, os requisitos desejáveis do estudante para que possa utilizá-lo eficientemente, e os recursos necessários em

Leia mais

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1

Desenvolvimento Web TCC-00.226 Turma A-1 Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Arquitetura de Aplicações Distribuídas na Web Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

Leia mais

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br Java - Introdução Professor: Vilson Heck Junior vilson.junior@ifsc.edu.br Agenda O que é Java? Sun / Oracle. IDE - NetBeans. Linguagem Java; Maquina Virtual; Atividade Prática. Identificando Elementos

Leia mais

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada

Leia mais

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma: 1 Introdução A utilização de frameworks como base para a construção de aplicativos tem sido adotada pelos desenvolvedores com três objetivos básicos. Primeiramente para adotar um padrão de projeto que

Leia mais

CONVENÇÃO DE CÓDIGO JAVA

CONVENÇÃO DE CÓDIGO JAVA CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01 EDITORA FERREIRA MP/RJ NCE EXERCÍCIOS 01 GABARITO COMENTADO 01 Ao se arrastar um arquivo da pasta C:\DADOS para a pasta D:\TEXTOS utilizando se o botão esquerdo do mouse no Windows Explorer: (A) o arquivo

Leia mais

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2 Estrutura de Repetição. Ex. 2 A ESTRUTURA Enquanto faça{} É MELHOR UTILIZADA PARA SITUAÇÕES ONDE O TESTE DE CONDIÇÃO (V OU F) PRECISA SER VERIFICADO NO INÍCIO DA ESTRUTURA DE REPETIÇÃO.

Leia mais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O sistema de nome de domínio (DNS) é um sistema que nomeia computadores e serviços de rede e é organizado em uma hierarquia de domínios.

Leia mais

Java 2 Enterprise Edition Fundamentos básicos de Transações

Java 2 Enterprise Edition Fundamentos básicos de Transações Java 2 Enterprise Edition Fundamentos básicos de Transações Helder da Rocha www.argonavis.com.br 1 Objetivos Apresentar conceitos essenciais sobre transações em aplicações J2EE Este curso não aborda o

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Sobre entidades externas ao sistema Quais sistemas externos devem ser acessados? Como serão acessados? Há integração com o legado a ser feita?

Leia mais

Prova Específica Cargo Desenvolvimento

Prova Específica Cargo Desenvolvimento UNIVERSIDADE FEDERAL DO PIAUÍ Centro de Educação Aberta e a Distância CEAD/UFPI Rua Olavo Bilac 1148 - Centro CEP 64.280-001 Teresina PI Brasil Fones (86) 3215-4101/ 3221-6227 ; Internet: www.uapi.edu.br

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

2 Ferramentas Utilizadas

2 Ferramentas Utilizadas 2 Ferramentas Utilizadas Esta dissertação utiliza vários outros trabalhos para implementar os mecanismos de adaptação abordados. Essas ferramentas são descritas nas seções seguintes. 2.1 Lua Lua [7, 8]

Leia mais

Desenvolvimento de aplicações web com JSP

Desenvolvimento de aplicações web com JSP Desenvolvimento de aplicações web com JSP Leandro Soares de Sousa, Paulo Henrique de Sousa Sistemas de Informação Centro Universitário Luterano de Palmas (CEULP/ULBRA) Cx. Postal 160 77054-970 Palmas TO

Leia mais

Projeto de Software Orientado a Objeto

Projeto de Software Orientado a Objeto Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software

Leia mais

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas

Leia mais

Programação Orientada a Objetos - 3º semestre AULA 08 Prof. André Moraes

Programação Orientada a Objetos - 3º semestre AULA 08 Prof. André Moraes Pág 50 Programação Orientada a Objetos - 3º semestre AULA 08 Prof. André Moraes 10 CORREÇÃO DE QUESTÕES DE AVALIAÇÃO 1 PARTE I - AVALIAÇÃO TEÓRICA 11 RESPONDA AS QUESTÕES ABAIXO: A) Qual a diferença entre

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Online Help StruxureWare Data Center Expert

Online Help StruxureWare Data Center Expert Online Help StruxureWare Data Center Expert Version 7.2.7 Appliance virtual do StruxureWare Data Center Expert O servidor do StruxureWare Data Center Expert 7.2 está agora disponível como um appliance

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais