...............................................................................................................................
TECNÓLOGO EM ANÁLISE E DES. DE SISTEMAS
PORTFÓLIO 1 PROGRAMAÇÃO ORIENTADA A OBJETOS
............................................................................................................................... Guarulhos 2013
PORTFÓLIO 1 PROGRAMAÇÃO ORIENTADA A OBJETOS
Trabalho apresentado ao Curso de Tecnologia em Análise e Desenvolvimento de Sistemas da Faculdade ENIAC para a disciplina de Programação Orientada a Objetos. Prof. Lúcio Luzetti Criado.
Guarulhos 2013
Respostas
............................................................................................................. Questão 01 a. HelloJava1 - aplicativo em Java com o objetivo de mostrar, em uma janela, a frase "Hello, Java!". O código inicialmente deve ser escrito em um editor de textos comum, e salvo com o nome de "HelloJava1.java". Após isso, deve-se compilar (transformar código fonte em código binário), com o comando: javac HelloJava1.java
Este comando gerará um arquivo bytecode, que por sua vez deverá ser lido pelo interpretador Java com o comando: java HelloJava1
Ao executar o bytecode, será apresentada uma janela (nas dimensões 300x300), com a frase "Hello, Java!" no seu centro.
b. Classes - é o corpo principal da aplicação. Ela contém os métodos que serão utilizados durante a execução da aplicação, bem como as variáveis e objetos.
c. O método main() - é o método principal que o interpretador busca durante a execução. Tudo o que estiver contido neste método será executado primeiramente, antes do restante do código.
d. Classes e objetos - uma classe é um determinado trecho da aplicação que pode ser modificado e/ou reaproveitado em várias instâncias, criando objetos diferentes. Um exemplo dado no material de apoio é a classe button(), que pode assumir diferentes formas, cores, tamanhos, rótulos e ações (objetos); sempre aproveitando a base fornecida pela classe.
e. Tipos de variáveis e classes - há dois tipos de variáveis: as de classe e de instância.
Uma variável de instância recebe um objeto atribuído a ela na declaração. Como no exemplo citado: Public void paintComponent(java.awt.Graphics g){...}
A variável g recebe um objeto (do tipo Graphics) no instante em que este método é chamado.
Já uma variável de classe, simplesmente aponta para um objeto específico, ou seja, não armazena nenhum valor, apenas serve para indexar/referenciar a variável à um objeto.
f. Herança - todas as classes em Java são dispostas em hierarquia, onde uma classe sempre descende de outra (em uma relação de pai - superclasse e filho - subclasse). A única classe que não contém uma classe pai é a Object, da qual se originam todas as demais.
Assim, uma classe filho pode herdar características (variáveis e métodos) da classe pai diretamente, não sendo necessário fazer a declaração novamente.
g. A classe JComponent - esta classe pertence ao pacote swing, que constitui em um conjunto de classes que fornecem uma interface de interação com o usuário (botões, caixas de diálogo, janelas, etc). A classe JComponent, neste exemplo postado, é a responsável pode imprimir a frase "Hello, Java!" na janela gráfica, que foi criada, por sua vez, por outro componente do pacote swing: a classe JFrame.
Questão 02 Em anexo segue o arquivo fonte extenso.java. Obs.: a codificação de
caracteres do arquivo é a ISO-8859-1 (padrão em sistemas Windows). Abaixo, o conteúdo do mesmo (na íntegra): /* Nome: extenso * Autor: Leandro Nkz * Função: Retorna o número digitado por extenso * Licença: Distribuído sob licença GPLv3 :P */ //Importando JOptionPane import javax.swing.JOptionPane; //Classe principal public class extenso { //Método main, principal public static void main(String[] args) { //Declarando variáveis String dados, texto=""; int unidade=0, dezena=0, centena=0, milhar=0, num; //Entrada de dados dados = JOptionPane. showInputDialog("Digite um número:"); //Bloco try (se der erro, ele é tratado no bloco catch - linha 156) try { //Converte os dados entrados em Int num = Integer. parseInt (dados); //Se número for negativo ou maior que 1000, encerrar programa if (num>1000||num<0) { JOptionPane.showMessageDialog(null, "Número inválido.\nDigite um número entre 0 e 1000.", "Erro", JOptionPane.ERROR_MESSAGE); //Encerrar o programa com status 1 (Erro) System.exit (1); } //Se o usuário digitar mais de 4 dígitos, emitir mensagem de erro e encerrar com status 1 if (dados.length()>4){ JOptionPane.showMessageDialog(null, "Formato inválido.\nDigite apenas 4 dígitos.", "Erro", JOptionPane.ERROR_MESSAGE); System.exit (1); } //Se o número possuir 4 dígitos separar em milhar, centena, dezena e unidade if (dados.length()==4) { milhar = Integer. parseInt (dados.substring(0,1)); centena = Integer. parseInt (dados.substring(1,2)); dezena = Integer. parseInt (dados.substring(2,3)); unidade = Integer. parseInt (dados.substring(3,4)); } //Se o número possuir 3 dígitos, separar em centena, dezena e unidade if (dados.length()==3) { centena = Integer. parseInt (dados.substring(0,1)); dezena = Integer. parseInt (dados.substring(1,2)); unidade = Integer. parseInt (dados.substring(2,3)); }
//Se o número possuir 2 dígitos, separar em dezena e unidade if (dados.length()==2) { dezena = Integer. parseInt (dados.substring(0,1)); unidade = Integer. parseInt (dados.substring(1,2)); } //Se o número possuir 1 dígito, separar o único caractere if (dados.length()==1) { unidade = Integer. parseInt (dados.substring(0,1)); } //Se o milhar for igual a 1, imprime Mil e encerra, senão, continua if (milhar==1) { texto += "Mil"; } else { //Se milhar, centena e dezena forem 0, imprima Zero e encerre if (milhar==0 && centena==0 && dezena==0 && unidade==0){ texto += "Zero"; } //Se o número digitado for 100, imprime e encerra, senão, continua if (milhar==0 && centena==1 && dezena==0 && unidade==0){ texto += "Cem"; } else { //Alternativas para centena switch(centena){ case 1: {texto += "Cento e "; break ;} case 2: {texto += "Duzentos"; break ;} case 3: {texto += "Trezentos"; break ;} case 4: {texto += "Quatrocentos"; break ;} case 5: {texto += "Quinhentos"; break ;} case 6: {texto += "Seiscentos"; break ;} case 7: {texto += "Setecentos"; break ;} case 8: {texto += "Oitocentos"; break ;} case 9: {texto += "Novecentos"; break ;} } } /* Se a centena for maior que 1 e a dezena diferente de 0, * ou se a centena for maior que 1 e a unidade for diferente de zero * acrescentar "e" ao texto. Exemplo: 309 = Trezentos e Nove / 341 = Trezentos e Quarenta e Um */ if (centena >1 && dezena != 0 || centena>1 && unidade != 0){
texto += " e "; } //Alternativas para dezena switch(dezena){ case 9: {texto += "Noventa"; break ;} case 8: {texto += "Oitenta"; break ;} case 7: {texto += "Setenta"; break ;} case 6: {texto += "Sessenta"; break ;} case 5: {texto += "Cinquenta"; break ;} case 4: {texto += "Quarenta"; break ;} case 3: {texto += "Trinta"; break ;} case 2: {texto += "Vinte"; break ;} } }
/* Se dezena for maior que 1 e unidade diferente de 0 * acrescentar "e". Exemplo de resultado: 34 = Trinta e Quatro */ if (dezena>1 && unidade!=0){ texto += " e "; } //Alternativas especiais para a dezena 10 if (dezena == 1) { switch (dezena){ case 1: { switch (unidade){ case 0: {texto += "Dez"; break ;} case 1: {texto += "Onze"; break ;} case 2: {texto += "Doze"; break ;} case 3: {texto += "Treze"; break ;} case 4: {texto += "Quatorze"; break ;} case 5: {texto += "Quinze"; break ;} case 6: {texto += "Dezesseis"; break ;} case 7: {texto += "Dezessete"; break ;} case 8: {texto += "Dezoito"; break ;} case 9: {texto += "Dezenove"; break ;} } } } } else { //Alternativas para unidade switch(unidade){ case 1: {texto += "Um"; break ;} case 2: {texto += "Dois"; break ;} case 3: {texto += "Três"; break ;} case 4: {texto += "Quatro"; break ;} case 5: {texto += "Cinco"; break ;} case 6: {texto += "Seis"; break ;} case 7: {texto += "Sete"; break ;} case 8: {texto += "Oito"; break ;} case 9: {texto += "Nove"; break ;} } } //Imprimir resultado final JOptionPane.showMessageDialog(null, "Número digitado: " + num + "\nNúmero por extenso: " + texto); //Encerrar programa com status 0 (OK) System.exit (0); //Se o try falhar e acusar "NumberFormatException", imprima mensagem e encerre } catch (NumberFormatException e){ JOptionPane.showMessageDialog(null,"Digite um número válido.", "Erro", JOptionPane.ERROR_MESSAGE); //Encerrar o programa com status 1 (Erro) System.exit (1); } } }
Conclusão/Parecer O aplicativo consegue realizar a atividade proposta com sucesso. Em todos
os testes realizados ao final do desenvolvimento deste portfólio, o aplicativo retornou as respostas corretamente.
Bibliografia NIEMEYER, P.; KNUDSEN, J. Aprendendo Java. O'REILLY campus, 2000.