Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Lista de exercícios 1 1. O almoxarifado de uma empresa estoca materiais e deve fazer o controle disso. Para cada material ali depositado, deve-se saber o seu código numérico, seu nome e o seu saldo (quantidade em estoque no momento). O saldo pode ser alterado quando há retiradas ou abastecimentos, o nome pode ser mudado e deve-se mostrar os dados do material quando necessário. Usando UML, desenhe o diagrama de uma classe, com os atributos e métodos sugeridos acima. Desenhe também os diagramas de alguns objetos (instâncias) da classe. 2. Desenhe o diagrama UML de uma classe Círculo, de modo que ela possa implementar comportamentos como calcular a área, calcular o perímetro, alterar o raio. Desenhe alguns exemplos de objetos da classe, usando diagrama UML de objeto. 3. Escreva em Java as classes modeladas nos exercícios anteriores (só atributos). Na parte dos métodos, tente escrever apenas um comentário para cada um, dizendo para que ele serve, como, por exemplo: /** Calcula a área do círculo */ 4. Misturamos na seguinte lista de termos, classes e atributos. Identifique as classes e os atributos associados a cada uma: cidade, quadro, data de fundação, data de nascimento, altura, endereço, número do CPF, cliente, largura, nome, cores, clube. 5. Usando a UML, desenhe diagramas das classes identificadas no ex. anterior com seus respectivos atributos. Invente alguns métodos interessantes para cada classe. Depois, codifique em Java cada uma delas (para os métodos, por enquanto, apenas comentários). 6. Indique os identificadores inválidos em Java e diga por quê. Para os válidos, indique se ele representa um nome de classe, ou de atributo, ou de método. a) +Pessoa b) e_mail c) "preco total" d) Calculadora e) comprimento x largura f) calculaJuros g) 1º.lugar h) public i) dataDeNascimento 7. Na lista seguinte, sublinhe os termos que representam nome de atributo e circunde com uma linha os que indicam valor de um atributo: -17.5, ano, “Catarina”, caractereDePreenchimento, velocidade. 8. Indique quais os valores de atributos (dos tipos vistos em aula) inválidos em Java e por quê. Para os válidos, indique o tipo: a) 'ford' b) -4.000 c) "+++234+++" d) 3.567.0 e) "Wilma f) "Viva o meu time do coração!!!" g) 123456789 i) " " j) Avatar h) 2 + 4.5 Programação I - Prof. Aníbal - Lista de exercícios 1 1 9. Identifique cada termo da lista abaixo dizendo se é nome de classe, de atributo, de método ou se é um valor de atributo. Se for atributo ou método, sugerir uma possível classe que abrigaria tal membro. Se for um valor de atributo, dizer o seu tipo: fazExameMedico, 115.50, anoDeNascimento, Atleta, 1.89, altura, "Daiane dos Santos", calculaPreço, Mercadoria, preço, "bota de cano longo", 1998, aumentaPreço. 10. Modele (usando UML) uma classe de nome Aluno, com as seguintes características. Cada aluno tem três graus (A, B e C) a partir dos quais é calculada a média final. E, é claro, cada aluno tem um nome. A classe tem de permitir a inserção do nome, a inserção de cada um dos graus, o cálculo da média final, além de uma operação de consulta que permita exibir todos os dados do aluno. Desenhe o diagrama da classe e escreva-a em Java, indicando cada método apenas com um comentário. 11. Imagine uma classe onde cada objeto é uma equação do segundo grau. Cada equação deve ter três coeficientes (a, b, c). A classe deve ter métodos para dar valores a cada coeficiente, calcular cada uma das suas duas raízes e exibir resultados na tela. Desenhe o diagrama UML da classe e escreva-a em Java (só comentários para os métodos). 12. No trecho de código Java abaixo, algumas instruções de atribuição apresentam erros. Explique cada um desses erros: int m, n; double d; Circulo c; m = 5.7; n = 10; m = b; n = new Circulo(); c = “blu”; String s = “blu”; d = -4.58; 6 = m; 13. Dada a classe Medicamento, a) declare em Java uma variável objeto do tipo dessa classe; b) instancie um objeto e atribua seu endereço à variável declarada no item (a). c) supondo que os atributos da classe Medicamento são: nome, laboratório e saldo, faça um desenho que mostre a situação da memória após a execução do item b. 14. Dada uma classe de nome Empregado, informe quais opções abaixo são corretas para criar (instanciar) um objeto dessa classe; para as incorretas, indique o motivo: a) emp = new Empregado(); b) Empregado emp = new Empregado; c) Funcionario emp = new Empregado(); d) Empregado emp; emp = new Empregado(); e) Empregado emp = new Empregado(); 15. O diagrama abaixo mostra a memória do computador em certo momento. Escreva em Java as instruções que criaram esses objetos na memória. r1 Retangulo base altura livro1 0.0 0.0 Programação I - Prof. Aníbal - Lista de exercícios 1 Livro título autor páginas null null 0 2 Respostas de alguns exercícios 1. Classe Material -código -nome -saldoAtual +mudaNome +abastece +retira +exibeDados Exemplos de instâncias Material Material código 1 nome "caneta Bic" saldoAtual 50 código 2 nome "sabonete" saldoAtual 12 2. Para calcular área e perímetro todo círculo deve ter um raio – este é o único atributo necessário, embora outros possam ser inventados. Classe Circulo -raio +calculaArea +calculaPerímetro +mudaRaio Exemplos de instâncias Circulo raio Circulo 3.5 raio 2.0 3. public class Material{ private int codigo; private String nome; private int saldoAtual; /** /** /** /** Muda o nome do material */ Abastece o estoque com certa quantidade do material */ Retira do estoque certa quantidade do material */ Mostra na tela os valores dos atributos do material */ } 4. Classes: Cidade (nome, data de fundação); Quadro (nome, cores, largura, altura); Cliente (nome, data de nascimento, endereço, número do CPF); Clube (nome, cores, data de fundação) 7. Nomes de atributos: ano, caractereDePreenchimento, velocidade. Os demais são valores. 8. a) 'ford' - inválido. Para ser String deveria ser delimitada por aspas e não apóstrofes. b) -4.000 – válido, double. c) "+++234+++" – válido, String. d) 3.567.0 – inválido. Para ser um tipo double deveria ter somente um ponto decimal e) "Wilma – inválido. Falta fechar aspas. f) "Viva o meu time do coração!!!" – válido, String. g) 123456789 – válido, int. i) " " – válido, String. j) Avatar – inválido. Seria uma string se delimitado por aspas. k) 2 + 4.5 – inválido. Trata-se de uma expressão aritmética (estudaremos mais adiante). 9. fazExameMedico – método que pode ser de uma classe ExameMedico ou de uma classe Paciente. 115.50 – valor double de um atributo como preço de uma classe Produto. anoDeNascimento – atributo de uma classe como Aluno ou Pessoa. Atleta – classe. 1.89 – valor double de um atributo como altura de uma classe como Atleta. altura – atributo de uma classe como Atleta. Programação I - Prof. Aníbal - Lista de exercícios 1 3 "Daiane dos Santos" – valor String de um atributo como nome de uma classe como Atleta. calculaPreço – método de uma classe como Mercadoria. Mercadoria - classe. preço – atributo de uma classe como Mercadoria. "bota de cano longo" – valor String de um atributo como nome de uma classe como Mercadoria. 1998 – valor int de um atributo como anoDeNascimento de uma classe como Atleta, Aluno ou Pessoa. aumentaPreço – método de uma classe como Mercadoria. 10. UML Aluno -nome -grauA -grauB -grauC -médiaFinal +insereNome +insereGrauA +insereGrauB +insereGrauC +calculaMedia +exibeDados Java public class Aluno{ private String nome; private double grauA; private double grauB; private double grauC; private double mediaFinal; /** insere o nome */ /** insere grau A */ /** insere grau B */ /** insere grau C */ /** calcula a média final */ /** mostra os dados do aluno */ } Obs. Por enquanto, o aluno ficará com o nome null. Ou você pode criar um método mudaNome para isto, se desejar. 12. int m, n; //declarações corretas double d; //declaração correta Circulo c; //declaração correta m = 5.7; //Atribuição inválida pela incompatibilidade dos tipos: 5.7 é double // e m é int. n = 10; //Atribuição correta m = b; //Atribuição incorreta: variável b não foi declarada previamente n = new Circulo(); //Atribuição inválida pela incompatibilidade dos tipos: //n é int – não pode receber o endereço de um objeto c = “blu”; //Atribuição inválida por incompatibilidade dos tipos: não se pode //atribuir um objeto do tipo String a uma variável objeto que não //seja do tipo String String s = “blu”; //Atribuição correta d = -4.58; //Atribuição correta 6 = m; //Atribuição inválida: à esquerda do “=” só nome de variável 13. a) Medicamento m1; b) m1 = new Medicamento(); c) m1 Medicamento nome laboratório saldo null null 0 14. Só as opções (d) e (e) são corretas. a) inválida, pois a variável objeto emp não foi declarada; b) inválida, pois a chamada do construtor (estudaremos os construtores no capítulo seguinte) exige um par de parênteses (new Empregado() ); c) inválida, pois há uma incompatibilidade de tipos: a variável emp deveria ser declarada do tipo Empregado. 15. Retangulo r1 = new Retangulo(); Livro livro1 = new Livro(); Programação I - Prof. Aníbal - Lista de exercícios 1 4