Exercícios sobre Orientação a Objetos

Documentos relacionados
AULA 13 MÉTODOS. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Introdução à Orientação a Objetos

AULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

AULA 15 CONSTRUTORES. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

COMPORTAMENTOS - Observações

Linguagem de Programação II Implementação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

5. Escreva um método em Java de nome MaiorNumero, que recebe quatro números inteiros e retorna o valor do maior deles.

Universidade Federal de Pernambuco (UFPE) Centro de Informática (CIn) Engenharia de Software e Sistemas (IF682) Profº Alexandre Vasconcelos

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Linguagem de Programação JAVA. Tiago Alves de Oliveira

Curso: Técnico em Informática Integrado Disciplina: POO Carga horária: 60h Período: 2º Ano Professor: Edmilson Barbalho Campos Neto LISTA 02.

Linguagem de programação métodos/funções

Classes, instâncias e métodos de acesso. prática

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Exercícios sobre repetição. 1. Escreva um método que lê via teclado 8 números e retorna a quantidade de negativos.

A programação orientada a objetos tenta simular estes aspectos, trazendo para o computador a realidade do dia-a-dia.

Universidade Federal de Goiás Instituto de Informática 1ª Prova de Introdução a Programação 06/04/11

Programação Orientada a Objetos Introdução a POO

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Terceira aula

Linguagem de programação Java

Visibilidade e Encapsulamento

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

LP II / 1ª Lista de Exercícios

Estrutura de Dados Funções e Procedimentos

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

Lista de exercícios 2

Trabalho Campeonato de Futebol Programação Orientada a Objetos (SCC204) Prof. Moacir Pereira Ponti Junior 26 de abril de 2011

AULA 02 DADOS PRIMITIVOS E EXERCÍCIOS

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Instituto Federal de Minas Gerais - Campus avançado de Ponte Nova - IFMG Disciplina: Introdução a programação Professor: Saulo Henrique Cabral Silva

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Programação Orientada a Objetos II

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Informática Aplicada I Lista: Fluxograma

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS DE REVISÃO

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

5ª Lista de Exercícios de Programação I

3) Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a área do mesmo. Obs.: Área = ( Base * Altura ) / 2

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Lógica de Programação. Lógica de Programação com Java

printf( \n %d dividido por %d eh%d e o resto eh%d \n, x, y, resultado)

Para calcular a área do trapézio considere a entrada na seguinte ordem: <base maior> <base menor> <altura>.

Universidade Estadual de Santa Cruz

Linguagem C: Introdução

Lógica de Programação Módulo I Prof.: Ricardo Lokchin. Fazer os exercícios abaixo na Linguagem C ou em ALGORITMOS.

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos

Escreva em Java a classe NumeroComplexo que represente um número complexo. A classe deverá ter os seguintes construtores:

Programação Orientada a Objetos em Java

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 1o. Semestre de 2017 Prof.

AULA 6 - ARRAYS. Array de 10 elementos

Introdução a programação Controle de Fluxo

Extrato de boletos bancários

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados

SEGUNDA LISTA DE EXERCÍCIOS ALGORÍTMOS SEQUENCIAS E CONDICIONAIS

3. Para a classe Circulo abaixo, escreva os métodos indicados pelos dois primeiros comentários.

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Valor: 0,0 CORREÇÃO. 1. Construa um programa que leia a sua idade, o seu nome e depois imprima na tela.

Comando de Seleção em Java

Programação Orientada a Objetos

Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Introdução aos Algoritmos

2ª Lista de Exercícios de Programação I

Lição 4 Fundamentos da programação

Transcrição:

Curso Técnico em Informática Nome: Disciplina de Linguagem de Programação I Data: Professor: Ricardo Luis dos Santos Exercícios sobre Orientação a Objetos 1) Crie a classe Jogador descrita no diagrama abaixo: Jogador id: int nome: String apelido: String datanascimento: Date numero: int posicao: String qualidade: int cartoes: int suspenso: Boolean Jogador() Jogador(all attrs) verificarcondicaodejogo(): Boolean a) Cadastrar/Instanciar pelo menos um time completo 11 jogadores. b) Criar um método que verifica a condição de jogo, ou seja, um método booleano que retornará true se o jogador está apto a jogar e false se o jogador está suspenso. Note que um jogador está suspenso pelo 3 cartão amarelo ou quando recebe uma punição cartão vermelho ou em uma decisão do tribunal. c) Em uma outra classe, crie o método main, o qual cadastra os jogadores e ao final imprimirá a lista do plantel juntamente com a informação de quem está apto a jogar, conforme a figura abaixo. d) Crie novos métodos na classe Jogador: aplicarcartao(int quantidade): void - Aplica a quantidade de cartões informada ao jogador, adicionalmente pode tornar um jogador suspenso. cumprirsuspencao(): void Esse método vai zerar a quantidade de cartões e tornar o jogador apto a jogar sofrerlesao(): void Este método vai gerar aleatoriamente um lesão no jogador. A gravidade da lesão irá se refletir em uma redução da qualidade do jogador, quanto mais grave maior a redução da qualidade. Crie uma escala de redução de no mínimo 1 ponto até o máximo de 15% da qualidade

total do jogador. Note que a qualidade jamais pode ficar negativa. A tabela abaixo pode ser utilizada como referência: Probabilidade Qualidade decrementada 5% 15% do total da qualidade 10% 10% do total da qualidade 15% 5% do total da qualidade 30% 2 pontos 40% 1 ponto executartreinamento(): void A exemplo do método anterior, este método aleatoriamente vai aumentar a qualidade do jogador. Note que só pode ser executado 1 treinamento antes de cada partida (você deve adicionar um atributo na classe para poder controlar essa informação). Além disso, deve existir uma maior probabilidade para pequenos incrementos na qualidade conforme a seguinte tabela: Probabilidade Qualidade incrementada 5% 5 pontos 10% 4 pontos 15% 3 pontos 30% 2 pontos 40% 1 ponto Observe que a qualidade nunca pode superar o máximo de 100 pontos. Além disso, você deverá adicionar mais um atributo na classe jogador para poder controlar os jogadores que já efetuaram o treinamento e que só poderão treinar após o próximo jogo. 2) Crie uma nova classe chamada Time conforme abaixo: Time nome: String apelido: String fundacao: Date plantel: ArrayList<Jogador> relacionados: ArrayList<Jogador> Time() Time(all attrs) relacionarjogadores(): ArrayList<Jogador> a) Cadastrar/Instanciar pelo menos 2 times e em cada time pelo menos 23 jogadores. b) Observe que o método relacionarjogadores deve ser criado. Este método irá selecionar os 11 melhores jogadores de acordo com a qualidade (os 11 jogadores com a maior qualidade devem ser relacionados). c) Em uma outra classe, crie o método main, o qual cadastra os times e os jogadores e ao final imprimirá as escalações de ambos os times.

DESAFIOS: a) Altere o método relacionarjogadores para selecionar 18 jogadores, 11 titulares e 7 reservas ordenados pela qualidade, ou seja, os 11 titulares devem estar alocados nas primeiras posições do array e os 7 reservas nas últimas posições do array. b) Altere o método relacionarjogadores para considerar não apenas a qualidade dos jogadores, mas também a sua posição, assim os 18 relacionados devem ser os melhores em sua posição, mas não necessariamente os jogadores com as maiores qualidades no elenco. c) Em uma outra classe, crie o método main, o qual cadastra os times e os jogadores e ao final imprimirá as escalações de ambos os times, porém, agora também devem ser informados os jogadores titulares e os jogadores que compõem o banco de reservas. 3) Crie a classe conforme o diagrama abaixo: Jogo mandante: Time visitante: Time datadojogo: Date estadio: String cidade: String placarmandante: Integer placarvisitante: Integer Jogo() Jogo(all atribs) gerarresultado(): void gerarlesoes(): void gerarcartoes(): void permitirtreinamento(): void a) O método gerarresultado deve criar um resultado aleatório considerando o total da qualidade dos titulares. Isso quer dizer que quanto maior o somatório da qualidade dos jogadores titulares maior será a probabilidade da equipe ganhar. Por exemplo, o somatório da qualidade dos jogadores titulares da equipe A é 584, enquanto que o somatório da qualidade dos jogadores titulares da equipe B é 723. Considere esses valores no momento de definir o resultado e o ganhador do confronto. Pode utilizar tanto uma clusterização, por exemplo, 50% de vitória para o time com maior qualidade, 30% de vitória para o time com menor qualidade e 20% para dar empate. b) O método gerarlesoes deve gerar aleatoriamente de 0 até duas lesões (independente do time) por jogo. O jogador que sofre a lesão também deve ser escolhido aleatoriamente. c) O método gerarcartoes deve gerar aleatoriamente de 0 até 10 cartões por jogo (independente do time). O jogador que recebe o cartão deve ser escolhido aleatoriamente. d) O método permitirtreinamento após a conclusão do jogo deve possibilitar que os jogadores possam realizar outro treinamento.

DESAFIOS: a) No método gerarresultado considere a qualidade total dos jogadores de uma forma a não clusterizar as probabilidades. b) No método gerarcartoes verifique se o mesmo jogador é escolhido duas vezes, neste caso, ele deve ser expulso do jogo alterando as probabilidades de vitória de cada time. Além disso, ele deve ficar suspenso da próxima partida. 4) Crie uma classe Funcionário com atributos que permitam mapear o nome do funcionário, a matrícula, o salário, a data de admissão e o seu CPF. a) A classe deve conter um método receberaumento, o qual aumenta o salário do funcionário de acordo com o parâmetro informado (double), sem retornar nenhum valor. b) A classe deve conter um método calcularganhobrutoanual que não recebe nenhum parâmetro e retorna apenas o total bruto anual recebido pelo funcionário. c) Crie um método calcularimposto, o qual não recebe nenhum parâmetro e retorno o imposto pago pelo funcionário no decorrer de um ano (double). d) Crie um método calcularganholiquidomensal que não recebe nenhum parâmetro e retorna o salário líquido do funcionário, sendo que existem os seguintes descontos: O funcionário paga 11% de INSS Se o salário é maior que R$ 2.500,00 é cobrado 17,5% de IR do que exceder os R$ 2.500,00. e) Crie um método calcularganholiquidoanual que não recebe nenhum parâmetro e retorna o total líquido recebido pelo funcionário, ou seja, o bruto reduzido dos impostos devidos. f) Crie a representação dessa classe (atributos e métodos) de acordo com a notação UML.

LISTA II 1) Crie uma classe Retangulo que obedeça à descrição abaixo: Retangulo - lado1: double - lado2: double - area: double - perimetro: double + Retangulo() + Retangulo(lado1: double, lado2: double) + calculararea(): void + calcularperimetro(): void A classe possui os atributos lado1, lado2, area e perimetro, todos do tipo float. O método calculararea deve realizar o cálculo da área do retângulo (area = lado1 * lado2). Em seguida, deve escreve o valor da área na tela. O método calcularperimetro faz o cálculo do perimetro (perimetro = 2*lado1 + 2*lado2). Em seguida, deve escreve o valor do perímetro na tela. Crie o método main e instancie a classe Retangulo, criando um objeto novoretangulo do tipo Retangulo. Atribua o valor 10 ao atributo lado1. Atribua o valor 5 ao atributo lado2. Chame o método calculararea. Chame o método calcularperimetro. Atribua o valor 7 ao atributo lado2. Chame o método calculararea. Chame o método calcularperimetro. Crie outras 5 instancias de retângulos, conforme as instruções anteriores.

2) Crie uma classe Circulo que obedeça à descrição abaixo: Circulo - raio: double - area: double - perimetro: double + Circulo() + Circulo(raio: double) + calculararea(): void + calcularperimetro(): void A classe possui os atributos raio, area e perímetro, todos do tipo float. O método calculararea deve realizar o cálculo da área do retângulo (area = raio * raio * 3.14). Em seguida, deve escreve o valor da area na tela. O método calcularperimetro faz o cálculo do perimetro (perimetro = 2 * 3.14 * raio). Em seguida, deve escreve o valor do perímetro na tela. Crie o método main e instancie a classe Circulo, criando um objeto novocirculo do tipo Circulo. Atribua o valor 10 ao atributo raio. Chame o método calculararea. Escreva na tela o valor da área. Chame o método calcularperimetro. Escreva na tela o valor do perímetro. Atribua o valor 4 ao atributo raio. Chame o método calculararea. Escreva na tela o valor da área. Chame o método calcularperimetro. Escreva na tela o valor do perímetro. Instancie outros 5 círculos conforme instruções anteriores.

3) Crie uma classe Funcionario que obedeça à descrição abaixo: Funcionario - nome: String - sobrenome: String # horastrabalhadas: Integer # valorporhora: double + Funcionario() + Funcionario(nome: String, sobrenome: String) + nomecompleto(): void + calcularsalario(): void + incrementarhoras( horas: Integer): void A classe possui os atributos nome, sobrenome, horastrabalhadas e valorporhora. O método nomecompleto deve escrever na tela o atributo nome concatenado ao atributo sobrenome. O método calcularsalario faz o cálculo de quanto o funcionário irá receber no mês, multiplicando o atributo horastrabalhadas pelo atributo valorporhora. Em seguida, escreve o valor na tela. O método incrementarhoras adiciona um valor passado por parâmetro ao valor já existente no atributo valorporhora. Crie o método main e instancie a classe Funcionário criada, criando um objeto novofuncionario do tipo Funcionario. Atribua o valor Luis ao atributo nome. Atribua o valor Silva ao atributo sobrenome. Atribua o valor 10 ao atributo horastrabalhadas Atribua o valor 25.50 ao atributo valorporhora. Chame o método nomecompleto. Chame o método calcularsalario. Adicione 8 ao atributo horastrabalhadas utilizando o método incrementarhoras. Chame novamente o método calcularsalario. Crie um ArrayList e instancie outros 9 funcionários com diferentes atributos a esse ArrayList.

4) Construa a classe Livros em Java, que obedeça à descrição abaixo: Livro - titulo: String - qtdpaginas: Integer - paginaslidas: Integer + Livro() + Livro(nome: String, qtdpaginas: Integer) + verificarprogresso(): void A classe possui os atributos titulo, qtdpaginas e paginaslidas. Esses atributos devem ser marcados com o modificador de acesso private. Crie os métodos get e set para cada um dos atributos. Crie ainda o método verificarprogresso que deverá calcular a porcentagem de leitura do livro até o momento. Para isso, deverá usar os valores dos atributos qtdpaginas e paginaslidas, através da formula: porcentagem = paginaslidas * 100 / qtdpaginas. O valor da porcentagem deverá ser mostrado na tela conforme a mensagem Você já leu X por cento do livro, onde o valor de X é o valor calculado pela fórmula apresentada anteriormente. 5) Crie uma classe TestarLivros no mesmo pacote da classe Livros da questão anterior. Essa classe possuirá apenas o método main que servirá para testar a classe Livros. As seguintes ações devem ser realizadas: Crie um objeto livrofavorito do tipo Livro. Altere o atributo titulo para O Pequeno Príncipe. Utilize, para isso, o método settitulo; Altere o atributo qtdpaginas para 98. Utilize, para isso, o método setqtdpaginas; Escreva na tela a mensagem: O livro X possui Y páginas, onde no lugar de X deverá aparecer o valor do atributo titulo e, no lugar de Y deverá aparecer o valor do atributo qtdpaginas. Utilize, para tanto, os métodos gettitulo e getqtdpaginas. Altere a quantidade de paginaslidas para 20; Chame o método verificarprogresso. Altere a quantidade de paginaslidas para 50; Chame o método verificarprogresso. Instancie outros 10 livros no método main e chame os métodos desenvolvidos, conforme o exemplo anterior.

6) Construa a classe Filmes em Java, que obedeça à descrição abaixo: Filme - titulo: String - duracaoemminutos: Integer + Filme() + Filme(titulo: String, duracaoemminutos: Integer) + exibirduracaoemhoras(): void A classe deve possuir dois atributos privados: titulo (do tipo String) e duracaoemminutos (do tipo int). Crie os métodos de acesso (get e set) para os atributos titulo e duracaoemminutos. Crie um método exibirduracaoemhoras que converta o valor em minutos para horas e apresente a mensagem O filme TITULO possui X horas e Y minutos de duração. Por exemplo, dado o filme com título Titanic que possui 194 minutos de duração, a mensagem que deverá ser exibida para o usuário será: O filme Titanic possui 3 horas e 14 minutos de duração 7) Crie uma classe TestarFilme que possua um método main de modo que seja possível testar a classe Filme criada na questão anterior. possui. Crie um objeto filme1 do tipo Filme. Altere o atributo título para Os Vingadores. Altere o atributo duracaoemminutos para 142. Chame o método exibirduracaoemhoras() para mostrar quantas horas o filme Crie um objeto filme2 do tipo Filme. Altere o atributo título do filme2 para Hotel Transilvânia. Altere o atributo duracaoemminutos do filme2 para 93. Chame o método exibirduracaoemhoras() do filme2 para mostrar quantas horas o filme possui. Exiba a mensagem: Os filmes em cartaz são X e Y, onde no lugar de X, deverá aparecer o título do filme1 e no lugar de Y deverá aparecer o título do filme2. Instancie outros 5 filmes e faça as mesmas ações descritas acima, porém utilizando novos valores.