1) O documento descreve um curso de Java sobre exceções, entrada e saída e programação Swing ministrado por Fábio Mengue da Unicamp.
2) As exceções em Java permitem separar o tratamento de erros do código principal através dos blocos try-catch.
3) Os blocos try delimitam o código que pode gerar exceções e os blocos catch especificam o código para cada tipo de exceção.
1) O documento descreve conceitos e procedimentos para acesso a bancos de dados relacionais usando JDBC no Java, incluindo como instalar o driver, estabelecer conexões, criar statements e usar transações.
2) É explicado como carregar o driver JDBC, obter uma conexão passando a URL, usuário e senha, e como criar e executar statements SQL como SELECTs, INSERTs e outros comandos.
3) O uso de transações é descrito para agrupar vários statements e garantir que todos sejam executados ou nenhum
1) O documento discute a manipulação de bancos de dados com Java, incluindo a criação de uma fonte de dados entre o banco de dados e o Java.
2) É explicado como configurar o sistema para acessar o banco de dados em Java através da criação de uma fonte ODBC.
3) São descritos os principais passos para manipular bancos de dados em Java, como carregar o driver, conectar-se, criar comandos e consultar dados.
1) O documento discute vários tópicos avançados da linguagem Java, incluindo como usar múltiplas classes em um arquivo, classes internas e anônimas, classes abstratas versus interfaces, e adapters.
2) É apresentado como usar mais de uma classe em um arquivo Java e um exemplo é fornecido.
3) Classes internas, anônimas e abstratas são explicadas e diferenciadas de interfaces.
O documento discute tratamento de exceções em programação orientada a objetos. Exceções indicam erros ocorridos durante a execução de um programa. Há duas atividades associadas a exceções: geração, quando o erro ocorre, e captura, quando o erro é tratado. Exceções podem ser verificadas ou não verificadas.
O documento apresenta os conceitos básicos de Java e Orientação a Objetos, incluindo: 1) Java é uma linguagem de programação orientada a objetos desenvolvida pela Sun Oracle; 2) Orientação a Objetos modela o mundo real através de classes, herança, polimorfismo e encapsulamento; 3) Para ser desenvolvedor Java Júnior é necessário conhecimento de variáveis, controle de fluxo, classes, interfaces entre outros conceitos fundamentais.
O documento apresenta uma aula introdutória sobre a linguagem de programação Java. Apresenta o que é Java, sua história, características e aplicações. Em seguida, explica os operadores e tipos de dados primitivos em Java, incluindo exemplos.
O documento descreve conceitos e procedimentos básicos para acesso a bancos de dados relacionais usando JDBC no Java, incluindo instalação do driver, estabelecimento de conexão, execução de comandos SQL e tratamento de resultados.
Este documento apresenta um programa Java simples chamado "AloPessoal" que imprime a frase "Alo pessoal!" na tela. Ele explica como digitar, compilar e executar o programa passo a passo usando os comandos javac e java. Além disso, descreve brevemente alguns conceitos básicos de programação em Java como classes, métodos e strings.
1) O documento descreve conceitos e procedimentos para acesso a bancos de dados relacionais usando JDBC no Java, incluindo como instalar o driver, estabelecer conexões, criar statements e usar transações.
2) É explicado como carregar o driver JDBC, obter uma conexão passando a URL, usuário e senha, e como criar e executar statements SQL como SELECTs, INSERTs e outros comandos.
3) O uso de transações é descrito para agrupar vários statements e garantir que todos sejam executados ou nenhum
1) O documento discute a manipulação de bancos de dados com Java, incluindo a criação de uma fonte de dados entre o banco de dados e o Java.
2) É explicado como configurar o sistema para acessar o banco de dados em Java através da criação de uma fonte ODBC.
3) São descritos os principais passos para manipular bancos de dados em Java, como carregar o driver, conectar-se, criar comandos e consultar dados.
1) O documento discute vários tópicos avançados da linguagem Java, incluindo como usar múltiplas classes em um arquivo, classes internas e anônimas, classes abstratas versus interfaces, e adapters.
2) É apresentado como usar mais de uma classe em um arquivo Java e um exemplo é fornecido.
3) Classes internas, anônimas e abstratas são explicadas e diferenciadas de interfaces.
O documento discute tratamento de exceções em programação orientada a objetos. Exceções indicam erros ocorridos durante a execução de um programa. Há duas atividades associadas a exceções: geração, quando o erro ocorre, e captura, quando o erro é tratado. Exceções podem ser verificadas ou não verificadas.
O documento apresenta os conceitos básicos de Java e Orientação a Objetos, incluindo: 1) Java é uma linguagem de programação orientada a objetos desenvolvida pela Sun Oracle; 2) Orientação a Objetos modela o mundo real através de classes, herança, polimorfismo e encapsulamento; 3) Para ser desenvolvedor Java Júnior é necessário conhecimento de variáveis, controle de fluxo, classes, interfaces entre outros conceitos fundamentais.
O documento apresenta uma aula introdutória sobre a linguagem de programação Java. Apresenta o que é Java, sua história, características e aplicações. Em seguida, explica os operadores e tipos de dados primitivos em Java, incluindo exemplos.
O documento descreve conceitos e procedimentos básicos para acesso a bancos de dados relacionais usando JDBC no Java, incluindo instalação do driver, estabelecimento de conexão, execução de comandos SQL e tratamento de resultados.
Este documento apresenta um programa Java simples chamado "AloPessoal" que imprime a frase "Alo pessoal!" na tela. Ele explica como digitar, compilar e executar o programa passo a passo usando os comandos javac e java. Além disso, descreve brevemente alguns conceitos básicos de programação em Java como classes, métodos e strings.
O documento introduz os conceitos básicos de variáveis e constantes em PHP, incluindo como declará-las e exibi-las. É explicado que variáveis armazenam dados que podem ser alterados, enquanto constantes armazenam valores fixos que não podem ser modificados. Também são apresentados exemplos de como misturar PHP e HTML em uma página.
A aula aborda listas genéricas em Java, apresentando:
1) Como criar uma lista encadeada genérica que pode armazenar qualquer tipo de dado;
2) A interface List do pacote java.util e suas implementações ArrayList e LinkedList;
3) Exemplos de uso de listas genéricas para armazenar strings e objetos.
O documento apresenta um resumo sobre Java, incluindo: (1) Uma introdução sobre o que é Java e sua história; (2) As vantagens da linguagem como portabilidade, compatibilidade e reuso; (3) Uma breve explicação sobre como funcionam os programas em Java.
1. O documento apresenta os fundamentos básicos da linguagem Java, incluindo a estrutura de um programa simples em Java.
2. É explicada a estrutura de um programa Hello World básico em Java, incluindo a declaração da classe, método main, e impressão da saída.
3. Também é apresentado um exemplo simples de um programa Hello World gráfico usando Swing para interface gráfica.
O documento discute exceções em Java, incluindo: 1) O que são exceções e como são manipuladas, 2) Os três tipos de exceções - verificadas, erros e runtime, 3) O requisito de captura ou especificação para exceções verificadas.
Este documento apresenta uma agenda para um curso preparatório para a certificação Java. A agenda inclui tópicos como declarações e controle de acesso, orientação a objetos, controle de fluxo, exceções e assertivas, strings, entrada e saída, genéricos e conjuntos, classes internas e threads. Há também seções sobre manipulação de exceções, definindo exceções próprias e declarando que métodos lançam exceções.
O documento discute programação Java, introduzindo conceitos como entrada de dados do usuário, blocos e escopo de variáveis, e condições. Ele fornece exemplos de como ler dados do teclado, explica como blocos restringem o escopo de variáveis, e demonstra o uso de estruturas condicionais como "if" para executar código com base em expressões booleanas.
O documento fornece uma introdução à linguagem de programação Java, descrevendo seus principais conceitos como identificadores, tipos de dados, operadores, declaração de variáveis, conversão de tipos, entrada de dados e exercícios de exemplo.
Este documento apresenta três frases ou menos:
O documento apresenta uma apostila sobre linguagem de programação Java, abordando tópicos como criação de programas, compilação, impressão de texto, trabalhar com números inteiros e reais, operações matemáticas e lógicas.
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
O documento descreve conceitos de programação concorrente em Java, incluindo: 1) como criar e executar threads daemon; 2) como tratar exceções em threads; 3) como usar variáveis de thread locais para evitar conflitos de acesso a dados compartilhados. Exemplos de código são fornecidos para ilustrar cada tópico.
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
Características da Programação Orientada por Objetos (POO).
Conceito de Classe, Atributos, Métodos, e Eventos.
Conceito de Objeto.
Conceito de Encapsulamento.
Conceito de Visibilidade de Classes, Métodos e Atributos.
Diagramas de Classe.
O ambiente de trabalho do Visual C#.
Objetos básicos e outras características básicas da linguagem do Visual C# e respetivo ambiente de trabalho.
O documento fornece uma visão geral do curso Java Básico, abordando tópicos como a linguagem Java, a máquina virtual Java, bibliotecas de classes, gerenciamento de memória e as principais edições da plataforma Java. O curso será ministrado entre 19 e 30 de novembro de 2007 em Belo Horizonte.
O documento descreve conceitos de programação concorrente em Java, incluindo:
1) Como usar a palavra-chave "synchronized" para sincronizar o acesso a métodos e blocos de código compartilhados por múltiplas threads.
2) Um exemplo de aplicativo bancário que demonstra o uso de "synchronized" para evitar inconsistências de dados.
3) Como sincronizar o acesso a atributos independentes dentro de uma classe usando objetos separados para cada atributo.
O documento discute os conceitos fundamentais de orientação a objetos em Java, incluindo: 1) Definições de classes, objetos, encapsulamento e herança; 2) Como criar objetos a partir de classes e compartilhar dados entre objetos; 3) Como definir métodos e construtores em classes.
O documento descreve as principais fases da programação Java, ambientes integrados de desenvolvimento (IDEs) e apresenta o JCreator como uma IDE leve e fácil de usar para iniciantes. Ele também demonstra um programa "Olá Mundo" simples usando classes, métodos e saída para console.
O documento resume conceitos fundamentais de Java como exceptions, coleções e pacotes. Discute como tratar exceptions, as principais interfaces de coleção como List e Set e a importância de organizar classes em pacotes significativos. O objetivo final é criar um projeto usando MySQL, Excel e conceitos aprendidos.
O documento discute a manipulação de datas e horas em Java, introduzindo a classe Date e seus métodos para obter e definir componentes de datas e horas, como dia, mês, ano, hora, minutos e segundos. Ele também fornece um exemplo de como imprimir a data e hora atuais e saudações baseadas no período do dia.
Programação Concorrente - Gerenciamento de Threads - Parte IFabio Moura Pereira
O documento descreve conceitos de programação concorrente em Java, incluindo:
1) Como criar e executar threads para realizar tarefas concorrentes;
2) Como recuperar informações sobre o estado e prioridade de threads;
3) Como interromper uma thread durante sua execução.
O documento discute threads em Java, explicando que threads são segmentos executados sequencialmente no processador e que Java possui primitivas de multithreading na própria linguagem. Detalha os estados de uma thread, como criar uma thread implementando a interface Runnable e iniciar sua execução, e fornece um exemplo de um sistema de chat distribuído usando threads.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
O documento discute exceções em Java, explicando que uma exceção ocorre quando um erro interfere no fluxo normal de um programa. Quando um erro ocorre, um objeto de exceção é criado e passado para o sistema runtime, que procura um manipulador de exceções adequado para tratar o erro. Se nenhum for encontrado, o programa é encerrado abruptamente. O documento fornece exemplos de como lançar e tratar exceções usando try/catch/finally.
O documento introduz os conceitos básicos de variáveis e constantes em PHP, incluindo como declará-las e exibi-las. É explicado que variáveis armazenam dados que podem ser alterados, enquanto constantes armazenam valores fixos que não podem ser modificados. Também são apresentados exemplos de como misturar PHP e HTML em uma página.
A aula aborda listas genéricas em Java, apresentando:
1) Como criar uma lista encadeada genérica que pode armazenar qualquer tipo de dado;
2) A interface List do pacote java.util e suas implementações ArrayList e LinkedList;
3) Exemplos de uso de listas genéricas para armazenar strings e objetos.
O documento apresenta um resumo sobre Java, incluindo: (1) Uma introdução sobre o que é Java e sua história; (2) As vantagens da linguagem como portabilidade, compatibilidade e reuso; (3) Uma breve explicação sobre como funcionam os programas em Java.
1. O documento apresenta os fundamentos básicos da linguagem Java, incluindo a estrutura de um programa simples em Java.
2. É explicada a estrutura de um programa Hello World básico em Java, incluindo a declaração da classe, método main, e impressão da saída.
3. Também é apresentado um exemplo simples de um programa Hello World gráfico usando Swing para interface gráfica.
O documento discute exceções em Java, incluindo: 1) O que são exceções e como são manipuladas, 2) Os três tipos de exceções - verificadas, erros e runtime, 3) O requisito de captura ou especificação para exceções verificadas.
Este documento apresenta uma agenda para um curso preparatório para a certificação Java. A agenda inclui tópicos como declarações e controle de acesso, orientação a objetos, controle de fluxo, exceções e assertivas, strings, entrada e saída, genéricos e conjuntos, classes internas e threads. Há também seções sobre manipulação de exceções, definindo exceções próprias e declarando que métodos lançam exceções.
O documento discute programação Java, introduzindo conceitos como entrada de dados do usuário, blocos e escopo de variáveis, e condições. Ele fornece exemplos de como ler dados do teclado, explica como blocos restringem o escopo de variáveis, e demonstra o uso de estruturas condicionais como "if" para executar código com base em expressões booleanas.
O documento fornece uma introdução à linguagem de programação Java, descrevendo seus principais conceitos como identificadores, tipos de dados, operadores, declaração de variáveis, conversão de tipos, entrada de dados e exercícios de exemplo.
Este documento apresenta três frases ou menos:
O documento apresenta uma apostila sobre linguagem de programação Java, abordando tópicos como criação de programas, compilação, impressão de texto, trabalhar com números inteiros e reais, operações matemáticas e lógicas.
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
O documento descreve conceitos de programação concorrente em Java, incluindo: 1) como criar e executar threads daemon; 2) como tratar exceções em threads; 3) como usar variáveis de thread locais para evitar conflitos de acesso a dados compartilhados. Exemplos de código são fornecidos para ilustrar cada tópico.
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
Características da Programação Orientada por Objetos (POO).
Conceito de Classe, Atributos, Métodos, e Eventos.
Conceito de Objeto.
Conceito de Encapsulamento.
Conceito de Visibilidade de Classes, Métodos e Atributos.
Diagramas de Classe.
O ambiente de trabalho do Visual C#.
Objetos básicos e outras características básicas da linguagem do Visual C# e respetivo ambiente de trabalho.
O documento fornece uma visão geral do curso Java Básico, abordando tópicos como a linguagem Java, a máquina virtual Java, bibliotecas de classes, gerenciamento de memória e as principais edições da plataforma Java. O curso será ministrado entre 19 e 30 de novembro de 2007 em Belo Horizonte.
O documento descreve conceitos de programação concorrente em Java, incluindo:
1) Como usar a palavra-chave "synchronized" para sincronizar o acesso a métodos e blocos de código compartilhados por múltiplas threads.
2) Um exemplo de aplicativo bancário que demonstra o uso de "synchronized" para evitar inconsistências de dados.
3) Como sincronizar o acesso a atributos independentes dentro de uma classe usando objetos separados para cada atributo.
O documento discute os conceitos fundamentais de orientação a objetos em Java, incluindo: 1) Definições de classes, objetos, encapsulamento e herança; 2) Como criar objetos a partir de classes e compartilhar dados entre objetos; 3) Como definir métodos e construtores em classes.
O documento descreve as principais fases da programação Java, ambientes integrados de desenvolvimento (IDEs) e apresenta o JCreator como uma IDE leve e fácil de usar para iniciantes. Ele também demonstra um programa "Olá Mundo" simples usando classes, métodos e saída para console.
O documento resume conceitos fundamentais de Java como exceptions, coleções e pacotes. Discute como tratar exceptions, as principais interfaces de coleção como List e Set e a importância de organizar classes em pacotes significativos. O objetivo final é criar um projeto usando MySQL, Excel e conceitos aprendidos.
O documento discute a manipulação de datas e horas em Java, introduzindo a classe Date e seus métodos para obter e definir componentes de datas e horas, como dia, mês, ano, hora, minutos e segundos. Ele também fornece um exemplo de como imprimir a data e hora atuais e saudações baseadas no período do dia.
Programação Concorrente - Gerenciamento de Threads - Parte IFabio Moura Pereira
O documento descreve conceitos de programação concorrente em Java, incluindo:
1) Como criar e executar threads para realizar tarefas concorrentes;
2) Como recuperar informações sobre o estado e prioridade de threads;
3) Como interromper uma thread durante sua execução.
O documento discute threads em Java, explicando que threads são segmentos executados sequencialmente no processador e que Java possui primitivas de multithreading na própria linguagem. Detalha os estados de uma thread, como criar uma thread implementando a interface Runnable e iniciar sua execução, e fornece um exemplo de um sistema de chat distribuído usando threads.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
O documento discute exceções em Java, explicando que uma exceção ocorre quando um erro interfere no fluxo normal de um programa. Quando um erro ocorre, um objeto de exceção é criado e passado para o sistema runtime, que procura um manipulador de exceções adequado para tratar o erro. Se nenhum for encontrado, o programa é encerrado abruptamente. O documento fornece exemplos de como lançar e tratar exceções usando try/catch/finally.
1) O documento discute exceções em programação Java, incluindo definições de exceção, tipos comuns de exceções, e a importância do tratamento de exceções.
2) Exceções em Java indicam problemas durante a execução de um programa e desvios do fluxo normal, enquanto erros são imprevisíveis.
3) O tratamento de exceções permite que programas sejam mais robustos ao lidar com falhas de forma prevista.
O documento discute tratamento de exceções em Java. Exceções ocorrem quando algo inesperado acontece, como tentar dividir por zero. O Java permite tratar exceções usando try-catch, onde o código de risco é no try e o catch lida com a exceção. O finally é executado independente de exceções.
1) O documento discute como manipular exceções corretamente em Java para tornar programas mais robustos. 2) Existem dois tipos de exceções: aquelas esperadas e tratadas localmente e aquelas inesperadas que devem ser tratadas globalmente. 3) A melhor prática é tratar exceções inesperadas imprimindo a pilha de chamadas e salvando em log, e "disparar" a exceção para cima até onde não for mais possível tratar.
O documento discute o tratamento de exceções em Java, explicando que exceções sinalizam falhas no código e como o controle de execução é transferido para tratá-las. Apresenta dois tipos de exceções em Java - checked e unchecked - e fornece exemplos de como tratar exceções em código Java.
O documento discute exceções e erros em Java, explicando que exceções representam erros que podem ser tratados enquanto erros são problemas irrecuperáveis. Ele também diferencia exceções controladas e não controladas, dando exemplos de cada tipo.
O documento resume uma aula sobre pacotes e tratamento de erros em Java. O documento discute como organizar classes em pacotes, importar classes de outros pacotes, criar arquivos JAR, tratar erros e exceções. O documento também discute classes utilitárias como String, wrappers, Date e Calendar.
Estudo sobre tratamento de exceções em Java.
Cláusula try catch finally;
Claúsula throws;
Hierarquia de exceções;
Exceções verificadas e não cerificadas, catch-or-declare;
Encadeamento de exceções;
Criação de exceções personalizadas.
O documento apresenta boas práticas de programação defensiva em Java, como: documentar o código, seguir convenções de nomes, tratar erros com exceções, usar asserções para validar entradas, liberar recursos alocados, dividir métodos com muitos parâmetros e testar o código. Também discute sobre precisão versus robustez e como depurar erros no código.
O documento discute a programação defensiva, que envolve antecipar e prevenir erros no código através de técnicas como validação de dados de entrada, assertivas, tratamento de erros e exceções. Também aborda quando e onde aplicar tais técnicas de forma equilibrada para proteger partes críticas do sistema sem comprometer a performance.
O documento discute o controle de erros em Java através de exceções, apresentando os principais conceitos como try-catch, throws, criação de exceções personalizadas e asserções. Em 3 frases: Trata do uso de exceções para lidar com erros de tempo de execução na linguagem Java, explicando mecanismos como try-catch e finally, além de apresentar dicas para criação de exceções próprias e uso de asserções para validação de código.
O documento discute o controle de erros em Java usando exceções. Resumidamente:
1. Exceções são objetos que sinalizam condições excepcionais em tempo de execução e podem ser capturadas usando blocos try-catch.
2. Há três tipos principais de erros em tempo de execução: erros de lógica, erros devido a condições ambientais, e erros graves onde não há recuperação possível.
3. Exceções podem ser lançadas usando throw e capturadas em métodos an
O documento discute tratamento de exceções em programação orientada a objetos. Ele explica o que são exceções, para que servem tratamento de exceções, tipos de exceções, vantagens do tratamento de exceções, fluxo try-catch-finally, invocação de métodos e lançamento de exceções, validações, exemplos e dificuldades/soluções.
Este documento apresenta um resumo sobre exceções em Java. Ele discute a estrutura try/catch/finally para manipulação de exceções, a hierarquia de exceções Throwable e suas subclasses Exception e Error, e boas práticas para declarar e lançar exceções.
O documento discute tratamento de exceções em Java, apresentando soluções para problemas comuns como armazenamento de dados inválidos e retorno de erros. Exceções representam situações não normais e devem ser usadas para separar lógica de negócio do tratamento de erros, lançando exceções em casos específicos e tratando-as com blocos try-catch. A hierarquia de exceções em Java é explicada, com RuntimeException para erros de lógica e checked exceptions para erros recuperáveis.
O documento discute os tipos de erros que podem ocorrer durante a compilação e execução de código Java, como erros de sintaxe, classes não encontradas, e excessão de array. Ele também fornece dicas para prevenir e solucionar esses erros, como escrever código claro e testar frequentemente.
O documento discute exceções e tratamento de erros em Java. Ele explica o que são exceções, como elas funcionam na linguagem e os principais tipos: checked exceptions que devem ser tratadas obrigatoriamente e unchecked exceptions que não. Também mostra como lançar exceções, tratar múltiplas exceções, criar exceções personalizadas e usar blocos finally. Por fim, apresenta um exercício sobre um jogo de adivinhar palavras que lança uma exceção caso a palavra digitada esteja incorreta.
Este documento fornece uma introdução básica à linguagem JavaScript em 3 frases ou menos:
1) Apresenta os conceitos fundamentais de JavaScript como variáveis, operadores, objetos e funções.
2) Explica como incorporar código JavaScript em páginas HTML e como esconder o código de navegadores mais antigos.
3) Fornece exemplos detalhados sobre como criar e manipular variáveis, objetos e arrays em JavaScript.
Trabalho: Arquitetura e software paralelo Verônica Veiga
O documento descreve conceitos de arquitetura e software paralelos, incluindo modelos de computação paralela como SISD, SIMD, MISD e MIMD. Também discute arquiteturas de compartilhamento total, processadores vetoriais e clusters Beowulf.
O documento discute redes sem fio (wireless), incluindo sua classificação baseada na área de abrangência, exemplos de tecnologias wireless como Wi-Fi e Bluetooth, vantagens e desafios de segurança, e componentes necessários para montar uma rede wireless como roteadores e placas de rede sem fio.
Este documento descreve um projeto de rede de computadores para comunicação de dados em um prédio de três andares. Ele inclui detalhes sobre a distribuição dos dispositivos em cada andar, diagramas lógicos e de topologia da rede, e uma lista dos equipamentos e materiais necessários para a implementação, com seus respectivos custos.
O documento resume os principais tipos de internet banda larga como ADSL, cabo e wireless. Ele também descreve os equipamentos e procedimentos para montar redes via cabo, rádio e satélite. Por fim, apresenta o blog da IE como ferramenta online para cursos ministrados pelo professor Janderson Cruzz.
O documento descreve as funções dos principais programas presentes no chip BIOS, incluindo o programa BIOS, Setup e POST. O programa BIOS controla o hardware da máquina, o Setup permite configurar parâmetros armazenados no BIOS e o POST testa o hardware durante o boot. A memória CMOS armazena configurações do Setup para serem carregadas durante o boot.
O documento descreve conceitos básicos do Swing, incluindo: (1) Swing é um pacote de classes Java para construção de interfaces gráficas; (2) Existem vários tipos de layouts para organizar componentes, como BorderLayout e FlowLayout; (3) Eventos como cliques de botão são tratados por listeners associados aos componentes.
O documento descreve o Netbeans, um ambiente integrado de desenvolvimento (IDE) para criar programas com recursos gráficos utilizando Java. Ele explica como instalar o Netbeans, conhecer sua interface e criar uma aplicação gráfica simples usando componentes Swing.
Este documento apresenta um curso completo sobre CSS com 4 partes. A primeira parte cobre os fundamentos de CSS incluindo sintaxe, seletores e propriedades básicas. A segunda parte discute tópicos avançados como posicionamento e pseudo-classes. A terceira parte fornece uma referência rápida de propriedades CSS. A quarta parte é uma referência detalhada de cada propriedade CSS.
Este documento fornece instruções sobre como usar o software Dreamweaver para criar sites. Ele explica como conhecer a interface do Dreamweaver, criar páginas, trabalhar com imagens, hiperlinks, tabelas, formulários e outras funcionalidades.
O documento discute diferentes tipos de bancos de dados, incluindo Oracle, SQL Server, PostgreSQL, MySQL e Firebird. Cada um tem suas próprias características e usos, com Oracle e SQL Server sendo usados principalmente em grandes empresas e PostgreSQL e MySQL sendo melhores para aplicações de médio porte.
Leslie Lamport é um cientista da computação conhecido por suas contribuições fundamentais para a teoria de sistemas distribuídos. Ele desenvolveu os relógios lógicos de Lamport, que permitem a ordenação total de eventos em sistemas distribuídos através da atribuição de marcas temporais aos eventos. O algoritmo de Lamport é amplamente utilizado em algoritmos distribuídos como exclusão mútua e multicast totalmente ordenado.
O documento descreve conceitos de arquitetura paralela e computação paralela, incluindo modelos como SISD, SIMD, MISD e MIMD. Também discute aplicações como processadores vetoriais, multiprocessadores simétricos e máquinas maciçamente paralelas. Finalmente, aborda software para processamento paralelo e os três principais tipos: Swar, SMP e clusters Beowulf.
O documento descreve três modelos de placas de rede Ethernet e sem fio, incluindo suas especificações técnicas e preços. As placas de rede Ethernet descritas são a IBM Ethernet 1000, a placa Intelbras Gigabit Ethernet e a placa de impressão Epson. As placas sem fio incluem a placa Wireless Intelbras 150Mbps, a placa Wireless Intelbras 300Mbps e a placa Encore Wireless 54Mbps.
O documento descreve os processadores Intel Core i3, i5 e i7, fornecendo detalhes técnicos sobre suas especificações como número de núcleos, frequência, cache e compatibilidade com memória RAM. Também lista preços de alguns modelos de processadores Intel Core i3.
[1] O documento descreve estruturas condicionais e de repetição em C++, como IF/ELSE, SWITCH, FOR e WHILE.
[2] Inclui exemplos de código para demonstrar o uso dessas estruturas, como contagens e tomadas de decisão baseadas em entradas do usuário.
[3] O blog discute essas estruturas como forma de controlar fluxos de programação e definir caminhos diferentes com base em condições avaliadas.
O documento descreve um projeto apresentado na Feira Tecnológica do Centro de Educação Profissional de Itajubá sobre diferentes tipos de internet banda larga. O projeto teve como objetivos mostrar a importância da internet de qualidade, comparar preços entre países e conscientizar sobre o assunto. Ele apresentou os principais tipos de conexão - ADSL, cabo, rádio e satélite - e seus equipamentos, vantagens e desvantagens.
Este documento apresenta um projeto de rede local (LAN) para um cyber café com três andares. O projeto inclui diagrama lógico e de topologia, mapa de endereços IP, estimativa de custos e configuração básica do roteador. O objetivo é fornecer comunicação de dados segura entre 60 computadores de forma a compartilhar recursos de forma centralizada.
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
Em determinadas ocasiões, dependendo dos requisitos de uma aplicação, pode ser preciso percorrer todos os elementos de uma árvore para, por exemplo, exibir todo o seu conteúdo ao usuário. De acordo com a ordem de visitação dos nós, o usuário pode ter visões distintas de uma mesma árvore.
Imagine que, para percorrer uma árvore, tomemos o nó raiz como nó inicial e, a partir dele, comecemos a visitar todos os nós adjacentes a ele para, só então, começar a investigar os outros nós da árvore. Por outro lado, imagine que tomamos um nó folha como ponto de partida e caminhemos em direção à raiz, visitando apenas o ramo da árvore que leva o nó folha à raiz. São maneiras distintas de se visualizar a mesma árvore.
Tome a árvore binária a seguir como base para realizar percursos que partirão sempre da raiz (nó 1).
Figura 1 - Árvore binária
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019. p. .
Com base na árvore anterior, responda quais seriam as ordens de visitação, partindo da raiz:
a) Percorrendo a árvore pelo algoritmo Pré-Ordem.
b) Percorrendo a árvore pelo algoritmo Em-Ordem.
c) Percorrendo a árvore pelo algoritmo Pós-Ordem.
Obs.: como resposta, informar apenas os caminhos percorridos em cada Situação:
a) Pré-ordem: X - Y - Z.
b) Em-ordem: X - Y - Z.
c) Pós-ordem: X - Y - Z.
ATENÇÃO!
- Você poderá elaborar sua resposta em um arquivo de texto .txt e, após revisado, copiar e colar no campo destinado à resposta na própria atividade em seu STUDEO.
- Plágios e cópias indevidas serão penalizados com nota zero.
- As perguntas devem ser respondidas de forma adequada, ou seja, precisam ser coerentes.
- Antes de enviar sua atividade, certifique-se de que respondeu todas as perguntas e não se esqueceu nenhum detalhe. Após o envio, não são permitidas alterações. Por favor, não insista.
- Não são permitidas correções parciais no decorrer do módulo, isso invalida seu processo avaliativo. A interpretação da atividade faz parte da avaliação.
- Atenção ao prazo de entrega da atividade. Sugerimos que envie sua atividade antes do prazo final para evitar transtornos e lentidão nos servidores. Evite o envio de atividade em cima do prazo.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
1. Curso de Java – Módulo I
Exceções, Entrada e Saída
Programação Swing
Fábio Mengue – fabio@unicamp.br
Centro de Computação - Unicamp
Exceções
O termo exception é uma abreviatura da frase “exceptional event”. Sua definição formal é
um evento que ocorre durante a execução de um programa que quebra o fluxo normal dessa
execução.
Vários eventos podem causar exceções. Desde problemas sérios com hardware (como um
crash de disco) até um erro simples de programação, como acessar um elemento de um vetor
com um índice inválido. Quando um erro desses tipos ocorrem em um método Java, o método
cria um objeto do tipo Exception e o envia para o sistema. Esse objeto contém informação sobre
o erro, incluindo seu tipo e o estado em que o programa se encontrava quando o erro aconteceu.
O sistema fica responsável por encontrar alguma maneira de lidar corretamente com o erro. Na
linguagem usada pelos programadores Java, dizemos que o sistema gerou uma exceção (em
inglês, throwed an exception).
Depois que o método gerou uma exceção, o sistema tenta encontrar algum código que
possa ser utilizado para lidar com a exceção. Os candidatos mais prováveis são os que
“chamaram” o método onde o erro aconteceu. Se eles não tiverem condições de lidar com o
erro, o sistema continua a seguir a pilha de chamadas, até encontrar o código apropriado. Por sua
vez, o código é considerado apropriado para lidar com uma exceção quando o tipo da exceção
gerada é o mesmo tipo para o qual ele foi programado. Ao ser encontrado o código correto, o
sistema o executa (em inglês, catch the exception).
Caso o sistema não consiga identificar um código correto para gerenciar a exceção, o
sistema (normalmente representado pelo programa Java) se encerra. Claro que é desnecessário
dizer que isso não é exatamente o que gostaríamos que acontecesse na maioria das vezes.
Pelo fato de utilizar exceções para gerenciar erros, os programas em java possuem
vantagens sobre as linguagens tradicionais. A primeira grande vangatem é poder separar o
gerenciamento de erros do código comum. Outra vantagem é a propagação de erros, que permite
que se crie uma classe especializada apenas no gerenciamento destes eventos. E por fim, é
possível agrupar erros por tipo, tratando-os de uma vez. Veremos exemplos para cada uma das
vantagens a seguir.
1
2. Nas linguagens de programação tradicionais, a detecção de erros e seu tratamento
normalmente causa uma certa confusão no código, pois tudo está misturado. Por exemplo,
imagine que você tenha uma função que leia um arquivo do disco para a memória. Imagine que
esse programa se parece com isso:
lerArquivo{
abrir o arquivo;
determinar seu tamanho;
alocar memória;
ler o arquivo para a memória;
fechar o arquivo;
}
Parece muito simples. Mas o que acontece se:
O arquivo não puder ser aberto ?
For impossível determinar o tamanho do arquivo ?
Não for possível alocar a quantidade total de memória ?
A leitura falhar ?
O arquivo não puder ser fechado ?
Então, criamos código a mais para detectar e lidar com esses possíveis erros. Assim,
nosso programa agora ficaria assim:
lerArquivo {
codigoErro=0;
abrir arquivo;
if (arquivoAberto) {
determinar tamanho;
if (tamanhoDeterminado) {
alocar memória;
if (memoriaAlocada) {
ler o arquivo para a memória;
if (leituraFalhou) {
codigoErro=-1;
} else {
codigoErro=-2;
}
} else {
codigoErro=-3;
}
fechar arquivo;
if (arquivoNaoFechado) && codigoErro=0)
{
codigoErro=-4;
}
2
3. }
}
Desta maneira, seu programa com 7 linhas ficou praticamente 3 vezes maior. O pior é
que o código a mais torna o programa um tanto ilegível, e a lógica se perde no meio dos if's e
else's, dificultando a identificação de quais pedaços do código estão realmente fazendo parte da
linha de raciocínio deste programa. Depois de algumas manutenções, o código deve ficar ainda
pior de ler, e os programadores geralmente irão resolver o problema simplesmente ignorando a
prevenção aos erros; eles irão aparecer quando o programa “der pau”.
A soluçaõ encontrada pelo Java é mais elegante. O programador irá escrever o programa
de maneira usual, mas o tratamento de erros estará separado. Se sua função for reescrita à
maneira Java, ficaria assim:
lerArquivo {
try {
abrir arquivo;
determinar tamanho;
alocar memória;
ler o arquivo para memória;
fechar arquivo;
} catch (falhaAberturaArquivo) {
Código de tratamento
}
} catch (falhaDeterminarTamanho) {
Código de tratamento
}
} catch (falhaAlocacaoMemoria) {
Código de tratamento
}
} catch (falhaLeitura) {
Código de tratamento
}
} catch (falhaFechamentoArquivo) {
Código de tratamento
}
}
Note que o trabalho de criar código para gerenciar o erro continua. O que temos é a
separação dos detalhes do que fazer quando algo acontece. O Java automaticamente executa
apenas o código que se relaciona com o erro, tornando desnecessária a construção de cadeias if-
else para gerenciar os erros. O programa também fica maior, mas mais legivel e ainda sim menor
do que na abordagem tradicional.
A segunda vantagem que existe na utilização de exceções é a habilidade de propagar
erros. Suponha que nossa função lerArquivo é o quarto método em uma série de métodos
3
4. implementados em sua classe. O metodo1 chama o metodo2, que chama metodo3, que
finalmente chama lerArquivo.
metodo1 {
call method2;
}
metodo2 {
call method3;
}
metodo3 {
call lerArquivo;
}
Suponha que o código em metodo1 seja o único interessado nos erros que podem
acontecer em lerArquivo. Se isso fosse ser implementado usando a notificação tradicional,
metodo3 e metodo2 deveriam ter maneiras de propagar códigos de erro eventualmente
retornados por lerArquivo para os métodos que os invocaram, até chegar a metodo1.
metodo1 {
errorCodeType error;
error = call metodo2;
if (error)
doErrorProcessing;
else
proceed;
}
errorCodeType metodo2 {
errorCodeType error;
error = call metodo3;
if (error)
return error;
else
proceed;
}
errorCodeType metodo3 {
errorCodeType error;
error = call lerArquivo;
if (error)
return error;
else
proceed;
}
4
5. Como já visto, o sistema Java irá procurar automaticamente um código adequado para o
gerenciamento de erros. Usamos então uma palavra que indica que qualquer exceção ocorrida (e
não tratada) deve ter propagada para a classe que “chamou” a classe corrente. Veja o exemplo:
metodo1 {
try {
call metodo2;
} catch (Exception) {
doErrorProcessing;
}
}
metodo2 throws Exception {
call metodo3;
}
metodo3 throws Exception {
call lerArquivo;
}
Entretanto, como pode ser visto no código, o envio das exceções exige um certo esforço
dos métodos intermediários, que também necessitam repassar a exceção com throws até o
método correto. Mesmo assim, essa técnica obviamente é mais vantajosa que a tradicional, no
sentido que evita confusão no código.
A última mas não menos importante vantagem é que as exceções são agrupadas. Por
exemplo, imagine um grupo de exceções. Todas elas dizem respeito a erros que podem ocorrer
quando se manipula um vetor. Exceção para estouro do vetor, para inclusão de tipo inválido, ou
mesmo para quando o elemento procurado não faz parte do vetor. Cada uma dessas exceções
pode ser tratada de maneira independente, ou você pode ter um método que trate todas as
exceções deste grupo, tornando a coisa mais simples.
Pelo fato das exceções serem classes Java como qualquer outra, a hierarquia presente em
todas as classes Java também está presente aqui. Todas elas são instâncias ou descendentes da
classe Throwable. Cada “folha” da árvore que se inicia em Throwable representa uma exceção
específica, e cada “tronco” representa um grupo relacionado de exceções.
Por exemplo, ArrayException é uma subclasse de Exception (por sua vez, uma subclasse
de Throwable), e possui 3 subclasses: InvalidIndexException, ElementTypeException,
NoSuchElementException. Cada uma delas representa um erro específico, que pode ocorrer na
manipulação de um vetor. Uma maneira de lidar com as exceções é uma a uma:
catch (InvalidIndexException e) {
...
}
Outra maneira seria tratando a exceção de acordo com o grupo ao qual ela pertence. Isso
pode ser feito por vários motivos, o mais forte deles é manter a simpliciadade. No nosso
exemplo, temos ArrayException, que representa qualquer erro que pode acontecer com a
5
6. manipulação de um vetor. Assim, um método pode lidar com uma exceção baseada em sua
hierarquia. Por exemplo:
catch (ArrayException e) {
...
}
Este método lida com todas as exceções que dizem respeito a vetores. É possível saber
qual a exceção através de uma pergunta ao objeto e, recebido como parâmetro. Também é
possível definir um método que lida com qualquer exceção que chegar até ele, como no exemplo:
catch (Exception e) {
...
}
Seu primeiro encontro com exceções Java.
Veja a mensagem de erro abaixo. Ela é gerada pois a classe que estamos compilando
contém chamadas a métodos que lançam exceções quando um erro acontece.
InputFile.java:8: Warning: Exception java.io.FileNotFoundException
must be caught, or it must be declared in throws clause of this method.
in = new FileReader(filename);
^
A linguagem Java exige que os métodos capturem ou especifiquem o lançamento de
exceções que podem acontecer dentro daquele escopo. Se o compilador identifica que aquele
pedaço de código não possui código adequado para o tratamento de exceções, a mensagem de
erro acima é apresentada e o programa simplesmente não é compilado.
Vamos ver o código do programa InputFile.java e verificar a causa do erro.
import java.io.*;
public class InputFile {
private FileReader in;
public InputFile(String filename) {
in = new FileReader(filename);
}
public String getWord() {
int c;
StringBuffer buf = new StringBuffer();
6
7. do {
c = in.read();
if (Character.isWhitespace((char)c))
return buf.toString();
else
buf.append((char)c);
} while (c != -1);
return buf.toString();
}
}
O compilador apresenta o erro na linha 8 (in = new FileReader(filename);). Essa
instrução cria um objeto FileReader, usado para abrir um arquivo cujo nome é passado como
parâmetro.
O que acontece se o arquivo não existir no disco ? Os profissionais que desenharam a
classe FileReader não tinham a menor idéia do que o programador gostaria que acontecesse caso
o arquivo não existisse. O programa deve terminar ? Um nome de arquivo diferente deve ser
testado ? O arquivo deve ser criado ? Não existe jeito de saber o que o programador que está
utilizando o FileReader gostaria que acontecesse nessa situação. Assim, eles geram uma exceção
(do tipo java.io.FileNotFoundException). Assim, o método que chamou a instrução decide a
maneira apropriada de tratar do assunto.
No nosso exemplo, pode se ver que o programa ignora o fato de que FileReader pode
gerar uma exceção. Mas o compilador Java não deixa que o fato passe em branco, se recusando a
compilar o programa e gerando uma mensagem de erro que alerta o programador a respeito.
Além da mensagem vista acima, outra mensagem deve ser gerada:
InputFile.java:15: Warning: Exception java.io.IOException
must be caught, or it must be declared in throws clause
of this method.
while ((c = in.read()) != -1) {
^
Agora, o problema está no objeto in, que da classe FileReader. O método read() também
pode gerar uma exceção, desta vez caso algum problema aconteça na leitura. Por exemplo, se as
permissões do arquivo não estejam configuradas de modo que esse programa possa ler seus
dados. A exceção gerada pode esse método é java.io.IOException.
Nesse ponto, você tem duas opções. Ou pode criar o código para capturar as exceções
dentro do programa InputFile ou propaga-las para outros métodos mais acima na pilha de
execução. De qualquer maneira, o programa InputFile deve fazer alguma coisa. E para fazer isso
existe uma maneira correta.
7
8. O Bloco try
O primeiro passo para construir um programa capaz de gerenciar exceções é colocar os
comandos que podem gerar exceções dentro de um mesmo contexto, usando a palavra reservada
try:
try {
Comandos...
}
Você pode colocar cada um dos comandos em um contexto próprio, ou pode colocar
todos os comandos que podem gerar exceção em apenas um contexto e depois programar
(separadamente) o código que irá lidar com cada uma das exceções.
Por exemplo:
PrintWriter out = null;
try {
out = new PrintWriter(
new FileWriter("OutFile.txt"));
for (int i = 0; i < size; i++)
out.println("Value at: " + i + " = " + victor.elementAt(i));
}
O bloco try neste programa delimita o escopo sobre o qual o código de tratamento de
erros irá atuar. Nesse pedaço de código existem duas instruções que podem gerar exceções; você
consegue identifica-las ?
Uma instrução try deve ser acompanha de pelo menos um bloco catch.
O Bloco catch
A instrução catch define qual o código que irá ser executado, dependendo da exceção
gerada. Você os associa aos blocos definidos pelo try colocando-os logo após o bloco:
try {
...
} catch ( . . . ) {
...
} catch ( . . . ) {
...
}...
Não se deve ter nenhuma outra instrução entre o final do contexto do try e o início do
catch.
8
9. A forma geral do catch é:
catch (SomeThrowableObject variavel) {
Comandos...
}
Note que ele é muito parecido com um método. Todo bloco catch identifica o tipo de
exceção que ele trata (SomeThrowableObjet, que é o nome da classe-filho de Throwable) e
recebe como parâmetro a exceção recebida.
Essa exceção, como tudo em Java, é um objeto. Sendo subclasse de Throwable, esse
objeto herda uma série de métdos. Um dos mais utilizados é o getMessage(), que serve para
mostrar qual a mensagem de erro. Temos ainda métodos para mostrar a pilha de execução e você
pode definir ainda suas próprias exceções (basta criar uma classe que extends Throwable).
O bloco catch contém normalmente comandos comuns do Java. Muitas vezes o bloco
serve simplesmente para imprimir uma mensagem indicando o erro e parando o programa. O
bloco é executado apenas se a exceção for disparada; os outros blocos catch são ignorados.
Se utilizarmos como exemplo o código apresentado na página anterior, podemos definir
os blocos catch da maneira mostrada abaixo:
try {
...
} catch (ArrayIndexOutOfBoundsException e) {
System.err.println("Caught ArrayIndexOutOfBoundsException: " +
e.getMessage());
} catch (IOException e) {
System.err.println("Caught IOException: " +
e.getMessage());
}
O primeiro bloco irá ser executado quando for disparada uma exceção de índice do vetor,
e o outro quando ocorrer um erro de escrita no arquivo.
A granularidade permitida é muito grande, como podemos ver. Mas é possível definir
apenas alguns (ou mesmo um) blocos para todas as exceções. Criar código diferenciado para
erros de acesso a um vetor ou erro no disco pode ser pouco produtivo. O Java tem a capacidade
de agrupar as exceções, baseado na organização hierárquica das mesmas.
Quanto mais próximo da classe “folha”, mais específica é o tratamento da exceção.
Podemos escolher em tratar as classes mais próximas do “tronco” ou mesmo da “raiz”.
Veja a imagem:
9
10. Assim, podemos reescrever nosso exemplo de modo que apenas um bloco catch pode
lidar com todas as exceções:
try {
...
} catch (Exception e) {
System.err.println("Exception caught: " + e.getMessage());
}
A classe Exception é a mais alta na hierarquia Throwable. Assim, qualquer exceção que
ocorrer será tratada por esse bloco. A idéia em si é que ele basta para tratar de erros gerais, mas é
um tanto inútil para um tratamento adequado, perdendo um pouco da vantagem de tratamento
que o Java fornece.
Finalmente, temos o bloco finally.
O Bloco finally
Todo try deve ter pelo menos um catch. Existe mais um bloco de código que pode ser
definido, mas ele não é obrigatório. Ele existe para que se possa realizar certas atividades que
devem ser feitas independentemente do curso de execução ter gerado exceções ou não. Um
exemplo é fechar um arquivo ou conexão com o banco de dados.
Lembremos novamente de nosso exemplo da página 8. Três casos ocorrer.
1) O FileWriter falha e lança uma IOException.
2) O victor.elementAt(i) falha e lança uma ArrayIndexOutOfBoundsException.
3) Tudo dá certo, e nenhuma exceção é gerada.
Certas instruções devem ser executadas para qualquer um dos casos. O bloco finally serve
justamente para isso. Suas instruções serão executadas sempre, com exceções ou sem elas. Sua
definição permite que eliminemos código duplicado e facilita o encerramento de uma rotina.
10
11. Exercícios:
1. O código abaixo é válido ?
try {
...
} finally {
...
}
2.Quais as exceções que serão capturadas pelo bloco abaixo ?
catch (Exception e) {
...
}
Cite uma desvantagem de usar esse tipo de classe de exceção.
3.Quais as exceções que serão capturadas pelo bloco abaixo ?
...
} catch (Exception e) {
...
} catch (ArithmeticException a) {
...
}
Há alguma coisa errada com esses blocos ? O código compila ?
11
12. Entrada e saida
As vezes um programa necessita trazer informação de uma fonte externa ou enviar
informação para um destino fora do programa. A informação pode estar em qualquer lugar: um
arquivo em disco, na rede, em outro programa. A informação também pode ser de qualquer tipo:
um objeto, um caracter, uma imagem, um som...
Para lidar com essas informações, o Java utiliza o conceito de stream. Ele pode ser
entendido como se fosse um “tubo”, onde as informações são enviadas em fluxo, que são lidas
(ou escritas). Veja o desenho:
Não importa de onde o dado esteja vindo (ou indo), e não importa seu tipo. Os algoritmos
que lidam com streams tratam de maneira sequencial do dados:
abrir o stream
enquanto houver informação
ler informação
fechar o stream
O pacote java.io possui classes que tratam e criam os streams. Basicamente, temos
streams para leitura de caracteres e para leitura de bytes. Os primeiros possibilitam a leitura e
escrita de palavras de 16 bits, e são originários da classe abstrata java.io.Reader e java.io.Writer.
12
13. Os streams para leitura de bytes lidam com palavras de 8 bits, e são subclasses de
java.io.InputStream e java.io.OutputStream.
Os streams mais fáceis de entender são os relacionados a arquivos. Segue um exemplo de
programa que copia um arquivo de um stream para outro.
import java.io.*;
public class Copy {
public static void main(String[] args) throws IOException {
File inputFile = new File("entrada.txt");
13
14. File outputFile = new File("saida.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
}
}
Como podemos ver, o programa é muito simples. Ele abre um FileReader no arquivo
entrada.txt e abre um FileWriter no arquivo saida.txt. O programa lê caracteres enquanto houver
no stream de entrada e os escreve no stream de saída. Quando terminar, ele fecha ambos os
streams.
O assunto é um tanto extenso, e esse curso se propõe a passar apenas a idéia básica sobre
o assunto. Temos capacidade de gerar ou ler streams com arquivos zipados, serializar objetos
(artifício utilizado para comunicação remota) e mesmo acessar arquivos de maneira não
sequencial.
Introducao ao Swing
O pacote Swing é parte da JavaTM Foundation Classes (JFC) na plataforma Java. Existe
na linguagem como pacote de extensão desde a versão 1.1, e serve basicamente para auxiliar as
pessoas a construirem GUI's (Guided User Interface). O Swing fornece todos os componentes
básicos, de botões a tabelas.
Seu primeiro Swing
A maneira mais fácil de ensinar a utilizar o Swing mostrando código. Vamos a um
programa bem simples, que exibe “Alo Mundo”.
import javax.swing.*;
public class HelloWorldSwing {
public static void main(String[] args) {
JFrame frame = new JFrame("HelloWorldSwing");
final JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
14
15. frame.setVisible(true);
}
}
Esta é a aplicação mais simples que se pode escrever. Vamos analisar o código linha a
linha.
Inicialmente, como sempre, importamos os pacotes que iremos utilizar. No caso,
javax.swing.*. A outra linha interessante é a onde se define nossa raiz, ou container. Ele é o
elemento principal, e onde iremos “dependurar” tudo que queremos que apareca em nossa tela.
No nosso caso, eh o JFrame. Ele permite que outros componentes sejam adicionados a ele, e tem
a capacidade de gerenciar eventos. Existem outros 2 containers Swing: JDialog e JApplet (esse
último, utilizado apenas para Applets).
Cada objeto JFrame implementa uma única janela principal, que possui decorações. Elas
são a borda, o título e botões para maximizar, minimizar e fechar a janela. Uma aplicação Swing
usa normalmente pelo menos um JFrame.
Nosso frame tem um componente. Um label, onde escrevemos “Alo Mundo”. As duas
linhas de código abaixo constroem e adicionam o componente ao frame:
final JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
Para fechar a janela quando o botão de fechar é clicado, devemos incluir a linha abaixo
no nosso programa:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
O comportamento padrão de um frame quando o botão de fechar é clicado é esconder a
janela, coisa que não desejamos.
A linha onde consta o método pack() determina o tamanho do frame de modo que todos
os componentes estejam em um tamanho padrão. Esse método utiliza algumas propriedades do
sistema para criar e colocar o frame em um tamanho considerado adequado.
A última linha, que chama o método setVisible(), faz com que o frame apareça na tela.
Veja o resultado:
15