UNISINOS - Centro de Ciências Exatas - ALGORITMOS

Propaganda
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
Download