Buscar

Lista de Exercício 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lista	de	Exercício	3	
	
Conceitos	básicos	OO	
	
	
1. Crie	uma	classe	produto	para	representar	os	produtos	de	um	supermercado.		
a. Cada	produto	tem	uma	descrição	(texto),	valor	(real),	e	quantidade	em	
estoque(inteiro).	
b. Lembre-se	de	definir	métodos	para	ler	e	alterar	os	atributos	dos	produtos.		
2. Implementar	as	classes	a	seguir:		
a. Classe:	ContaCorrente.		
i. Atributos	da	classe	ContaCorrente:	
1. numeroConta	(inteiro)	->	não	pode	receber	um	valor	menor	
ou	igual	a	zero;	
2. correntista	(string)	->	não	pode	receber	um	valor	nulo	ou	
string	vazia;	
3. saldo	(ponto-flutuante)	->	nao	pode	manter	um	valor	menor	
que	zero;	
ii. Implementar	apenas	um	constructor	recebendo	valores	para	os	
atributos	numeroConta	e	correntista	da	classe	ContaCorrente.		
iii. Utilizar	a	técnica	de	encapsulamento	apresentada	no	curso	e	
implementar	métodos	get	e	set	para	todos	os	atributos	da	classe	(ver	
observação	abaixo).	
iv. OBS.:	Não	implementar	o	método	set	para		o	atributo	saldo.	O	valor	
do	atributo	saldo	só	poderá	ser	alterado	através	dos	métodos	
deposita,	saque	e	transfere	detalhados	a	seguir.		
v. Implementar	o	método	boolean	deposita	(double	valor)	que	deposita	
um	valor	na	conta	corrente.	O	método	retorna	verdadeiro	se	o	
depósito	foi	realizado	com	sucesso	ou	falso	em	caso	contrário.	OBS.:	
Verificar	se	o	valor	informado	é	maior	que	zero.		
vi. Implementar	o	método	boolean	saque(double	valor)	que	realiza	um	
saque	na	conta	corrente.	O	método	retorna	verdadeiro	se	o	saque	foi	
realizado	com	sucesso	ou	falso	e	caso	contrário.	OBS.:	Verificar	se	o	
valor	informado	é	maior	que	zero	e	se	há	saldo	suficiente	para	realizer	
o	saque.		
vii. Implementar	o	método	boolean		transfere	(double	valor,	
Contacorrente	conta2)	que	realiza	uma	transferência	de	um	valor	da	
conta	corrente	para	a	conta	corrente	conta2.	O	método	retorna	
verdadeiro	se	a	transferência	foi	realizada	com	sucesso	ou	falso	em	
caso	contrário.	OBS.:	Verificar	se	o	valor	informado	é	maior	que	zer,	
se	o	objeto	conta2	não	é	nulo	e	se	há	saldo	suficiente	para	realizer	a	
transferência.		
b. Implementar	uma	aplicação	chamada	Aplicacaocontas	que	instancia	dois	
objetos	do	tipo	ContaCorrente,	a	partir	de	dados	informados	pelo	usuário.	
Em	seguida,	o	programa	deve	oferecer	um	menu	para	o	usuário	com	as	
seguintes	opções:	
i. Imprimir	dados	de	uma	conta:	Para	esta	opção	o	usuário	deverá	
informar	o	número	da	conta;	
ii. Realizar	depósito.	Para	esta	opção	o	usuário	deverá	informar	o	
número	da	conta	e	o	valor	para	o	depósito.	
iii. Realizar	saque.	Para	esta	opção	o	usuário	deverá	informar	o	número	
da	conta	e	o	valor	para	saque;	
iv. Realizar	transferência.	Para	esta	opção	o	usuário	deverá	informar	o	
número	da	conta	origem,	o	número	da	conta	destino	e	o	valor	para	
transferência;	
v. OBS.:	para	as	opções	de	depósito,	saque	e	transferência,	o	programa	
deve	imprimir	na	tela	uma	mensagem	indicando	se	o	depósito,	o	
saque	ou	a	transferência	foi	realizado	com	sucesso	ou	não.		
c. Implementar	os	testes	unitários	para	verificar	o	código	acima.		
	
3. Implementar	as	classes	a	seguir:	
a. Classe:	DVD	
i. Atributos	da	classe	DVD:	
estado	(booleano)	->	receberá	o	valor	true	quando	o	DVD	estiver	
ligado,	e	false	em	caso	contrário.	Defina,	na	classe	DVD,	duas	
constantes	booleanas:	LIGADO	=	true	e	DESLIGADO	=	false.	
operacaoEmExecucao(string)	->	receberá	um	dos	valores	pré-
definidos	(ver	tabela	abaixo)	de	acordo	com	a	operação	que	estiver	
sendo	realizada	pelo	DVD.	OBS.:	definir	constantes	para	manter	os	
valores	da	tabela	abaixo:	
	
ii. Implementar	apenas	o	construtor	default	que	atribui	o	valor	
DESLIGADO	para	o	atributo	estado	e	o	valor	PARADO	para	o	atributo	
operacaoEmExecucao.	
iii. Utilizar	a	técnica	de	encapsulamento	apresentada	no	curso	e	
implementar	apenas	métodos	get	para	todos	os	atributos.	
iv. OBS.:	Os	métodos	set	dos	atributos	estado	e	operacaoEmExecucao	
não	serão	implementados	pois	seus	valores	só	poderão	ser	alterados	
através	dos	métodos	liga,	desliga,	play,	stop,	pause,	volta	e	avança	
detalhados	a	seguir.		
v. Implementar	o	método	void	ligar()	que	altera	o	estado	do	
equipamento	para	LIGADO	e	atribui	o	valor	PARADO	para	o	atributo	
operacaoEmExecucao.	
vi. Implementar	o	método	void	desliga()	que	altera	o	estado	do	
equipamento	para	DESLIGADO	e	atribui	o	valor	PARADO	para	o	
atributo	operacaoEmExecucao.	
vii. Implementar	o	método	void	play()	que	altera	o	valor	do	atributo	
operacaoEmExecucao	para	REPRODUZINDO.	OBS.:	Este	método	só	
pode	ser	executado	se	o	estado	do	equipamento	for	LIGADO.	
viii. Implementar	o	método	void	stop()	que	altera	o	valor	do	atributo	
operacaoEmExecucao	para	PARADO.	OBS.:	Este	método	só	pode	ser	
executado	se	o	estado	do	equipamento	for	LIGADO.	
ix. Implementar	o	método	void	pause()	que	altera	o	valor	do	atributo	
operacaoEmExecucao	para	EM_PAUSA.	OBS.:	Este	método	só	pode	
ser	executado	se	o	estado	do	equipamento	for	LIGADO.	
x. Implementar	o	método	void	volta()	que	altera	o	valor	do	atributo	
operacaoEmExecucao	para	VOLTANDO.	OBS.:	Este	método	só	pode	
ser	executado	se	o	estado	do	equipamento	for	LIGADO.		
xi. Implementar	o	método	void	avanca()	que	altera	o	valor	do	atributo	
operacaoEmExecucao	para	AVANCADO.	OBS.:	Este	método	só	pode	
ser	executado	se	o	estado	equipamento	for	LIGADO.		
b. Implementar	uma	aplicação	chamada	AplicacaoDVD	que	instancia	um	objeto	
do	tipo	DVD	e	oferece	um	menu	com	as	opções:	liga,	desliga,	play,	stop,	
pause,	volta,	avança	e	sair,	permitindo	que	o	usuário	possa	manipular	seu	
equipamento.	OBS.:	Todas	as	vezes	que	o	usuário	selecionar	uma	opção	do	
menu,	deve-se	imprimir	na	tela	o	estado	e	a	operação	corrente	do	
equipamento.		
c. Implementar	os	testes	unitários	para	verificar	o	código	acima.		
	
4. Implementar	as	classes	a	seguir:	
a. Classe:	Deducao	
i. Atributos	da	classe	Deducao:	
1. descricao	(string)	->	não	pode	receber	um	valor	nulo	ou	stirng	
vazia;	
2. valor	(ponto-flutuante)	->	não	pode	receber	um	valor	menor	
ou	igual	a	zero.	
ii. Para	a	classe	DEducao	implementar	apenas	um	construtor	recebendo	
valores	para	todos	os	atributos.	
iii. Utilizar	a	técnica	de	encapsulamento	apresentada	no	curso	e	
implementar	métodos	get	e	set	para	todos	os	atributos.		
b. Classe:	ImpostoDeRenda	
i. Atributos	da	classe	ImpostoDeRenda:	
1. nomecontribuinte	(string)	->	não	pode	receber	um	valor	nulo	
ou	string	vazia;	
2. cpf	(string)	->	não	pode	receber	um	valor	nulo	ou	string	vazia;	
3. rendaAnual(ponto-flutuante)	->	não	pode	receber	um	valor	
menor	ou	igual	a	zero;	
4. deduções	(Array	de	objetos	do	tipo	Deducao)	->	não	pode	
manter	um	array	nulo.	
ii. Para	a	classe	ImpostoDeRenda	implementar	apenas	o	construtor	
recebendo	valores	para	os	atributos	nomeContribuinte,	cpf,	
rendaAnual.	OBS.:	estr	construtor	deverá	inicializar	o	atributo	
deduções	com	um	array	de	tamanho	3.		
iii. Utilizar	a	técnica	de	encapsulamento	apresentada	no	curso	e	
implementar	métodos	get	e	set	para	todos	os	atributos	(ver	
observação	abaixo).	
iv. OBS.:	Não	implementar	o	método	set	para	o	atributo	deduções	da	
classe	ImpostoDeREnda.	O	atributo	deduções	só	será	manipulado	
pelo	método	inserirDeducao	detalhado	a	seguir.	
v. Implementar	o	método	boolean	inserirDeducao(Deducao	deducao)	
que	insere	um	objeto	do	tipo	Deducao	no	array	de	deduções	do	
ImpostoDeRenda.	O	método	retorna	verdadeiro	se	a	dedução	foi	
inserida	no	array	com	sucesso	e	falso	quando	o	array	de	deduções	
estiver	cheio	ou	se	o	objeto	dedução	passado	como	parâmetro	é	nulo.		
vi. Implementar	o	método	double	calculaImposto()	que	retorna	o	valor	
do	imposto	de	renda	do	contribuinte	segundo	a	seguinte	fórmula:	
	
c. Implementar	uma	aplicação	chamada	AplicacaoImpostoDeRenda	que	
instancia	um	objeto	do	tipo	ImpostoDeRenda,	a	partir	do	nome	do	
contribuinte,	do	CPF	e	da	renda	anual	informados	pelo	usuário.Em	seguida,	o	
programa	deve	oferecer	um	menu	para	o	usuário	com	as	seguintes	opções:	
i. Incluir	dedução.	O	usuário	deverá	informar	os	dados	da	dedução	a	ser	
inserida	na	declaração	de	imposto.		
ii. Imprimir	resumo	da	dedução	de	imposto	de	renda.	Nesta	opção,	o	
programa	deve	imprimir	os	valores	de	todos	os	atributos	do	objeto	
ImpostoDeRenda	instanciado	(incluindo	as	deduções	–	se	houverem),	
bem	como	imprimir	o	valor	do	seu	importo	de	renda	calculado.		
d. Implementar	os	testes	unitários	para	verificar	o	código	acima.

Outros materiais