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

Documentos relacionados
Lista de exercícios para prática de Orientação a Objetos

Universidade Estadual de Santa Cruz

Universidade Estadual de Santa Cruz

Lista de exercícios 2

Linguagem de Programação III

Lista de Exercícios 10 de Maio de 2003

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

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Linguagem de Programação III

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

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

6. Escreva a classe ConversaoDeUnidadesDeTempo com métodos estáticos para conversão aproximada das unidades de velocidade segundo a lista abaixo.

Estrutura de Dados Funções e Procedimentos

Instituto de Informática Estrutura de Dados II

INSTRUÇÕES DE REPETIÇÃO

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

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

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

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

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

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

Programa. Programa. +main() +main() Figura1. Diagrama de classe

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

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

Trabalho Prático Data de Entrega : 30 de Maio

Exercícios Repetição

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Linguagem de Programação II Implementação

Estruturas de seleção. Prof.: Jesus

Introdução a programação Vetores

Linguagem de Programação II Herança

Laboratório 5 Estruturas de Selecção

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Unidade 10: Estruturas de Decisão Compostas Prof. Daniel Caetano

Classes e Objetos. Sintaxe de classe em Java

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Programação Orientada a Objetos SANTOS, Rafael

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

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

Comando de Seleção em Java

Problema do Caminho Hamiltoniano

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

Orientação a Objetos AULA 09

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Algoritmos e Programação

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Linguagem de Programação III

Processamento da Informação

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Instituto Federal de Minas Gerais - Campus Bambuí

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Linguagem de programação Java

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

Classes, Herança e Interfaces

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

Fundamentos de Orientação à objetos

Estruturas de seleção. Prof.: Jesus

1. Por que não utilizar a notação de composição da UML para mostrar que um cachorro é composto de altura, peso, cor e data de nascimento?

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio

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

LP II / 1ª Lista de Exercícios

7 a Lista de Exercícios Assunto: Funções e passagem por referência com vetor e matriz (Tópico 7)

Programação Procedimental

Lista de Exercícios 2

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Linguagem de Programação III

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

Oficina: Programação para Android com o App Inventor. Profª. Alana Gama Licencianda em Ciências da Computação IF Baiano Campus Senhor do Bonfim

4. Constantes. Constantes pré-definidas

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6) Curso: Informática

Não utilize caracteres acentuados ou especiais para nomes de pastas e arquivos.

4 Conceito de Herança

Dicas para implementação do Trabalho 6

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

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

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

Palavras Reservadas da Linguagem Java

COMPORTAMENTOS - Observações

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

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

Lista de Exercícios 4

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

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

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

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

2ª Lista de Exercícios Orientação a Objetos

Tipos Abstratos de Dados

Reutilização de Classes Cap. 8 Introdução à Programação OO Rafael Santos

MCG126 Programação de Computadores II

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

PROGRAMAÇÃO FUNCIONAL [BCC222] 1 Jogo Adivinha o Número. Teste 4 (2018 1) 23 de maio de 2018 Matrícula: Nome:

EA975 - Laboratório de Engenharia de Software

Transcrição:

Instituto Federal de Minas Gerais - Campus avançado de Ponte Nova - IFMG Disciplina: Linguagem de programação Professor: Saulo Henrique Cabral Silva Professor: Saulo Henrique Cabral Silva Disciplina: Linguagem de Programação Lista de exercícios para prática de Orientação a Objetos 1 - PROJETO CLINICA 1.1 - Baseando-se nos seus conhecimentos, implemente a classe Paciente. Tal classe deve representar as informações de um paciente que chega para ser atendido em uma clínica. 1.2 - Agora implemente a classe Medico. Tal classe deve representar as informações de um médico. Não se esqueça que alguns médicos possuem especialidades. 1.3 - Imagine toda a lógica por trás de um atendimento médico... baseando-se em suas observações, análises e buscas na internet sobre esse domínio, implemente a classe AtendimentoMedico. 1.4 - Utilizando as classes que foram criadas anteriormente, implemente a classe Clinica. Tal classe deve permitir que: a) sejam cadastrados novos pacientes; b) adição de novos médicos c) cadastro (realização) de novos atendimentos.

2 - PROJETO CINEMA 2.1 - Implemente uma classe Cinema, tal classe deve representar as características intrínsecas de um Cinema, como: endereço, capacidade máxima, horário de abertura, horário de fechamento, etc... 2.2 - Implemente a classe que represente uma Sessão de cinema, não se esqueça de adicionar as seguintes informações: nome do filme em exibição, faixa etária, preço sugerido e intervalo de dias em cartaz. 2.3 - Implemente a classe IngressoCinema, alem das suas considerações para tal classe, não se esqueça de adicionar o dia, hora de compra, nome do comprador, assento e Sessão. 2.4 - Implemente agora as seguintes funções: a) criarsessao - cria uma nova sessão naquele cinema b) calcularprecoingresso - calcula o preço de um ingresso (estudantes pagam meia entrada) c) venderingresso - realiza o processo de venda de um ingresso d) quemestasentadoem - retorna o nome do cliente que esta sentado em uma poltrona x Dica: lembre-se para algumas destas funções talvez seja necessário, adicionar mais algumas informações nas classes que foram criadas até o momento.

3 - LIVRO (herança) 3.1 - Crie uma classe Livro que represente os atributos de um livro, sem se preocupar com a sua finalidade... 3.2 - Escreva as classes LivroLivraria e LivroBiblioteca que herdam da classe Livro. Quais as diferenças entre as duas classes, e que campos elas têm em comum? Dica: Os campos em comum devem ser preferencialmente representados pela classe ancestral (Livro). 3.3 - Teste seu código: Implemente uma estrutura de armazenamento que seja capaz de receber tanto LivroLivraria quanto LivroBiblioteca. Utilize uma única estrutura...

4 - MUSICA 4.1 - Implemente uma classe Musica (pense nas características de uma música.mp3). Esta classe será utilizada posteriormente em uma coleção ou banco de dados de músicas. Quais atributos e operações essa classe deve ter... 4.2 - Crie uma classe CDMusicas que contenha várias instâncias da classe Musica. Como você acha que podemos fazer para representar, em um CDDeMusicas, um número variável de instâncias de Musicas... Pense nas características de um cd, quais informações estão agregadas ao mesmo além das próprias músicas. 4.3 - Implemente uma classe MaquinaDeKaraoke que encapsule o comportamento básico simulado de uma máquina de karaokê. Instâncias desta classe devem representar uma fila de músicas que serão tocadas na ordem que foram inseridas na máquina (a primeira música a ser tocada deverá ter sido a primeira a ser inserida na fila). Escreva para esta classe métodos que permitam a adição de uma música na fila, listem a fila de músicas (na ordem que devem ser tocadas) e que simulem a execução de uma música (removendo-a do início da fila). 4.4 - Implemente para a classe MaquinaDeKaraoke um método remove, que remova a primeira ocorrência da música passada como argumento para o método. 4.5 - Modifique o método remove da classe MaquinaDeKaraoke para que este remova a última ocorrência da música passada como argumento, em vez da primeira. 4.6 - Implemente para a classe MaquinaDeKaraoke um método removetodas que remova todas as ocorrências da música passada como argumento. 4.7 - Implemente para a classe MaquinaDeKaraoke dois métodos, adia e adianta, que recebam um nome de música como argumento e que, respectivamente, adiem ou adiantem a execução daquela música em uma posição, modificando a sua posição dentro da fila. Esses métodos não devem fazer nada se a música passada como argumento não existir na fila, e devem tomar cuidado para não adiantarem a primeira música nem adiarem a última.

5 - EMPREGADO 5.1 - Implemente uma classe Empregado que represente um empregado de uma empresa qualquer. Considere que os atributos nome, departamento, horastrabalhadasnomês e salárioporhora devam ser representados, e que ao menos as operações mostradados e calculasaláriomensal sejam implementadas. 5.2 - Imagine que os Empregados de uma empresa tenham dois valores de salário para horas trabalhadas, diferenciados entre horas normais e horas extras. Modifique a classe Empregado para que os dois valores de horas trabalhadas e dois valores de salário-hora sejam usados. 5.3 - Modifique a operação calculasaláriomensal na classe Empregado para que todos os empregados do departamento Diretoria tenham 10% de bônus salarial. 5.4 - Escreva uma classe Diretor que herde da classe Funcionario e que contenha campos adicionais para representar a data de promoção ao cargo. 5.5 - Escreva outro construtor para a classe Diretor que em vez de receber e repassar os dados separados de um funcionário (nome, identidade, admissão e nascimento), receba uma instância da classe Funcionario já construída. Dica: é possível passar para o construtor de uma classe ancestral uma instância da própria classe: neste exemplo, é possível passar para o construtor de Funcionario uma instância de Funcionario.

6 - LAMPADA 6.1 - Implemente a classe Lampada, tal classe deve representar as características de uma lâmpada em geral. Pense... potência, tempo de vida, fabricante, etc. 6.2 - Escreva um construtor para a classe Lampada de forma que instâncias desta só possam ser criadas se um estado inicial for passado para o construtor. Esse estado pode ser o valor booleano que indica se a lâmpada está acesa (true) ou apagada (false). 6.3 - Considere a classe Lampada que também representa o número de watts da lâmpada. Escreva dois construtores para a classe: um que recebe como argumentos o número de watts da lâmpada, e outro, sem argumentos, que considera que a lâmpada tem 60 watts por default. 6.4 - Escreva a classe LampadaFluorescente como sendo herdeira da classe Lampada. A classe LampadaFluorescente deve ter um campo que represente o comprimento da lâmpada em centímetros. Crie nessa classe um construtor para inicializar os seus atributos. 6.5 - Reescreva a classe Lampada como sendo uma interface. Escreva as classes LampadaIncandescente e LampadaDeNatal que implementam a interface Lampada. Faça com que a classe LampadaDeNatal contenha um campo cor.

7 - CARTAS 7.1 - Implemente a classe Carta que encapsule uma carta de baralho, com um valor que represente o valor da carta, de um (ás) a treze (rei), e outro valor correspondente ao naipe (1 = ouros, 2 = paus, 3 = copas e 4 = espadas). Escreva nessa classe um método tostring que retorne o nome da carta por extenso, usando a instrução switch. 7.2 - Implemente a classe Baralho, tal classe deve representar um baralho completo, com todas as cartas que este deve conter... Não se esqueça que não podemos ter cartas repetidas. 7.3 - Implemente para a classe baralho o método distribui cartas, tal método deve retornar uma quantidade x de cartas. As cartas retornadas desse método devem ser removidas das cartas restantes do baralho... Imagine quando você joga algum jogo em que de alguma forma o baralho é utilizado.

8 - CONTA 8.1 - Baseado em seus conhecimentos, implemente uma classe para representar uma conta bancária. Essa classe deve especificar as seguintes operações (comportamentos) para uma conta: Saque Deposito Transferência Extrato 8.2 - Modifique a sua classe ContaBancaria para que as operação de saque e transferência possam ser realizadas mesmo se o saldo da conta após a operação esteja negativo. Dica: O saldo só poderá ser negativo se a conta for especial. 8.3 - Implemente uma aplicação que demonstre o uso de instâncias da classe ContaBancariaSimplificada que deve ter sido criada anteriormente. Demonstre como a transferência de valores de uma instância da classe para outra pode ser feita através de chamadas aos métodos deposita e retira. 8.4 - Implemente dois construtores para a classe ContaBancariaSimplificada, um que inicialize todos os campos da classe e outro que considere que o saldo inicial será zero e a conta não será especial. 8.5 - Escreva uma versão da classe ContaBancariaSimplificada que contenha um campo numerodaconta declarado como static, e que incremente o valor desse campo cada vez que uma instância da classe for criada. Escreva também uma aplicação que crie algumas instâncias da classe para demonstrar seu funcionamento.

9 - DATA 9.1 - Crie uma classe HoraAproximada, que permita representar uma hora qualquer (usando valores para representar horas e minutos). Que atributos e operações este modelo deve ter? 9.2 - Baseado na classe do exercício anterior (HoraAproximada), implemente a classe HoraPrecisa, que representa uma hora qualquer (usando valores para representar horas, minutos, segundos e centésimos de segundos). Que atributos e operações esta classe deve ter? Que atributos e operações poderiam ser copiados da classe HoraAproximada? 9.3 - Crie uma classe DataHora que represente simultaneamente uma data e uma hora aproximada. Dica: A classe pode conter instâncias dos modelos HoraAproximada. 9.4 - A classe DataHora pode conter datas não válidas, com os valores de dia, mês e ano iguais a zero, que podem ser criadas quando a operação inicializadata for chamado com valores incorretos. Modifique a operação mostradata para que, se o dia mês ou ano forem inválidos (isto é, iguais a zero), uma mensagem "Data Inválida" seja impressa em vez dos valores de dia, mês e ano. 9.5 - A operação inicializadata do modelo Data tem uma abordagem simplista demais para verificar se o dia sendo usado é válido ou não: nessa operação ainda seria possível passar a data 31/02/2000 e a operação iria considerar os valores passados como sendo válidos. Modifique a operação dataéválida para que esta considere o valor máximo que pode ser aceito como válido, dependendo do mês, de forma que, para meses com 30 dias, o valor 31 para o dia seja considerado incorreto, e que para fevereiro o valor máximo seja calculado em função de o ano ser bissexto ou não. Dica: Anos bissextos (tendo 29 dias em fevereiro) são divisíveis por quatro, a não ser que sejam divisíveis por 100. Anos que podem ser divididos por 400 também são bissextos. Dessa forma, 1964 e 2000 são bissextos, mas 1900 não é bissexto. 9.6 - Uma das operações que podemos efetuar com datas é a comparação para ver se uma data ocorre antes de outra. O algoritmo para comparação é muito simples, e seus passos estão abaixo. Nesse algoritmo, consideramos que dia1, mês1 e ano1 são os dados da primeira data, e que dia2, mês2 e ano2 são os dados da segunda data. 1. Se ano1 < ano2 a primeira data vem antes da segunda. 2. Se ano1 > ano2 a primeira data vem depois da segunda. 3. Se ano1 == ano2 e mês1 < mês2 a primeira data vem antes da segunda. 4. Se ano1 == ano2 e mês1 > mês2 a primeira data vem depois da segunda. 5. Se ano1 == ano2 e mês1 == mês2 e dia1 < dia2 a primeira data vem antes da segunda. 6. Se ano1 == ano2 e mês1 == mês2 e dia1 > dia2 a primeira data vem depois da segunda. 7. Se nenhum desses casos ocorrer, as datas são exatamente iguais. Implemente um método vemantes na classe Data que receba como argumento outra instância da classe Data e implemente o algoritmo acima, retornando true se a data encapsulada vier

antes da passada como argumento e false caso contrário. Se as datas forem exatamente iguais, o método deve retornar true. 9.7 - Implemente um construtor para a classe Data que receba os valores correspondentes ao dia, mês e ano, e inicialize os campos da classe, verificando antes se a data é válida. 9.8 - Implemente, para a classe DataComFabrica, um método setedesetembro que se comporte como uma fábrica de instâncias. Que argumentos este método deve receber? 9.9 - Implemente, para a classe DataComFabrica, um método primeirodomês que se comporte como uma fábrica de instâncias. Que argumentos este método deve receber? 9.10 - Modifique o método diasnomês da classe DataSwitch para que ele use comandos if em vez de switch. Existe alguma vantagem em fazer isto neste caso? 9.11 - Implemente a classe DataHora e as classes Data e Hora cujas instâncias são usadas na sua composição. Escreva, se ainda não existir na classe Data, um método éigual que receba como argumento uma instância da própria classe Data e retorne o valor booleano true se a data representada for igual à data passada. Faça o mesmo para a classe Hora. Escreva também na classe DataHora um método éigual que receba outra instância da própria classe DataHora como argumento e que seja executado delegando a comparação aos métodos das classes Data e Hora. 9.12 - Implemente duas versões da classe DataHora: uma que usa o mecanismo de herança e que herda da classe Data e contém um campo que é uma instância da classe Hora e outra versão que herda da classe Hora e contém um campo que é uma instância da classe Data. Existem diferenças ou vantagens claras entre as duas abordagens classes? 9.13 - Implemente uma classe EventoDelegacao que seja baseada na classe DataHora e que contenha um campo para indicar qual o evento que ela representa (use uma string para isso). Use o mecanismo de delegação para criar a classe EventoDelegacao. 9.14 - Implemente uma classe EventoHeranca que seja baseada na classe DataHora e que contenha um campo para indicar qual evento ela representa (use uma string para isso). Use o mecanismo de herança para criar a classe EventoHeranca. 9.15 - Considerando os exercícios anteriores, crie na classe Data os métodos éantesde e DepoisDe que retornam true se a data passada como argumento for respectivamente posterior e anterior à data representada. Escreva também esses métodos na classe Hora. Escreva também na classe DataHora os métodos éantesde e édepoisde que recebem uma instância da própria classe DataHora como argumento e que sejam executados delegando a comparação aos métodos das classes Data e Hora.