Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Programação Orientada a Objetos e Visual, Exercícios de Programação Orientada a Objetos

Uma série de exercícios relacionados à programação orientada a objetos em java. Esses exercícios abordam conceitos fundamentais, como classes, herança, agregação, composição e polimorfismo. Os tópicos incluem a criação de classes para representar veículos, estacionamentos, pontos e retas em um sistema de desenho 2d, além de uma hierarquia de classes relacionadas a empregados. O documento também aborda a implementação de estruturas de dados, como listas duplamente encadeadas, pilhas e filas. Esses exercícios são adequados para estudantes de cursos de ciência da computação, engenharia de software ou áreas afins, que buscam aprimorar suas habilidades em programação orientada a objetos.

Tipologia: Exercícios

2024

Compartilhado em 21/06/2024

lucas.gtr
lucas.gtr 🇧🇷

2 documentos

1 / 5

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Programação Orientada a Objetos e Visual
Professor Rafael Godoi Orbolato
20/08/2016
Agregação e Composição
1) Crie uma classe Motor que contém numCilindros (int) e potencia (int). Inclua um construtor sem
argumentos que inicialize os dados com valores padrão (escolha os valores) e um construtor que
inicialize os dados com os valores recebidos como argumento. Acrescente um método para setar os
dados e um método toString que retorne os dados do Motor em uma string.
2) Escreva uma classe Veiculo contendo peso em quilos (int), velocMax em km/h (int), preco em Reais
(double) e um motor (do tipo Motor). Inclua um construtor sem argumentos que inicialize os dados
com valores padrão (escolha os valores) e um construtor que inicialize os dados com os valores
recebidos como argumento. Acrescente um método para setar os dados e um método toString que
retorne os dados do Veiculo em uma string.
3) Escreva uma classe CarroPasseio usando como base (herança) a classe Veiculo. Inclua cor (string)
e modelo (string). Inclua um construtor sem argumentos que inicialize os dados com valores padrão
(escolha os valores) e um construtor que inicialize os dados com os valores recebidos como
argumento. Acrescente um método para setar os dados e um método toString que retorne os dados do
CarroPasseio em uma string.
4) Escreva uma classe para conter três atributos do tipo int chamados hora, mins e segs e chame-a de
Tempo.
a) crie um construtor que inicialize os dados com zero e outro construtor que inicialize os dados com
um valor fixo (passado como argumento)
b) crie um método para setar a hora, os minutos e os segundos
c) crie um método para imprimir a hora no formato hh:mm:ss.
d) crie um método para adicionar dois objetos da classe Tempo. Um é o objeto atual e o outro é
passado como argumento.
e) crie um método que subtraia dois Tempos e retorne o número de segundos entre eles. A função
recebe um objeto da classe Tempo passado como argumento (o outro é o objeto atual).
5) Escreva uma classe para armazenar dados de um estacionamento. Ela deve ser capaz de
armazenar o número da chapa do carro, a marca, a hora de entrada e a hora de saída do
estacionamento. Utilize dois atributos da classe Tempo, definida no exercício anterior, para as horas
de entrada e saída. Chame a classe de Estacionamento.
a) crie um método para setar os dados de um estacionamento
b) crie um método para imprimir os dados de um estacionamento
c) admita que o estacionamento cobre R$ 1,00 a hora. Escreva um a método que imprima o valor
cobrado. Utilize a função que subtrai duas horas da classe Tempo (calcular usando uma regra de três)
d) escreva um programa que crie uma matriz de cinco objetos da classe anterior, solicite os dados
dos estacionamentos para o usuário e imprima um relatório dos dados e do valor cobrado
6) O diagrama de classes a seguir representa parte de um sistema de desenho 2D
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Programação Orientada a Objetos e Visual e outras Exercícios em PDF para Programação Orientada a Objetos, somente na Docsity!

Programação Orientada a Objetos e Visual Professor Rafael Godoi Orbolato 20/08/

Agregação e Composição

  1. Crie uma classe Motor que contém numCilindros (int) e potencia (int). Inclua um construtor sem argumentos que inicialize os dados com valores padrão (escolha os valores) e um construtor que inicialize os dados com os valores recebidos como argumento. Acrescente um método para setar os dados e um método toString que retorne os dados do Motor em uma string.
  2. Escreva uma classe Veiculo contendo peso em quilos (int), velocMax em km/h (int), preco em Reais (double) e um motor (do tipo Motor). Inclua um construtor sem argumentos que inicialize os dados com valores padrão (escolha os valores) e um construtor que inicialize os dados com os valores recebidos como argumento. Acrescente um método para setar os dados e um método toString que retorne os dados do Veiculo em uma string.
  3. Escreva uma classe CarroPasseio usando como base (herança) a classe Veiculo. Inclua cor (string) e modelo (string). Inclua um construtor sem argumentos que inicialize os dados com valores padrão (escolha os valores) e um construtor que inicialize os dados com os valores recebidos como argumento. Acrescente um método para setar os dados e um método toString que retorne os dados do CarroPasseio em uma string.
  4. Escreva uma classe para conter três atributos do tipo int chamados hora, mins e segs e chame-a de Tempo. a) crie um construtor que inicialize os dados com zero e outro construtor que inicialize os dados com um valor fixo (passado como argumento) b) crie um método para setar a hora, os minutos e os segundos c) crie um método para imprimir a hora no formato hh:mm:ss. d) crie um método para adicionar dois objetos da classe Tempo. Um é o objeto atual e o outro é passado como argumento. e) crie um método que subtraia dois Tempos e retorne o número de segundos entre eles. A função recebe um objeto da classe Tempo passado como argumento (o outro é o objeto atual).
  5. Escreva uma classe para armazenar dados de um estacionamento. Ela deve ser capaz de armazenar o número da chapa do carro, a marca, a hora de entrada e a hora de saída do estacionamento. Utilize dois atributos da classe Tempo, definida no exercício anterior, para as horas de entrada e saída. Chame a classe de Estacionamento. a) crie um método para setar os dados de um estacionamento b) crie um método para imprimir os dados de um estacionamento c) admita que o estacionamento cobre R$ 1,00 a hora. Escreva um a método que imprima o valor cobrado. Utilize a função que subtrai duas horas da classe Tempo (calcular usando uma regra de três) d) escreva um programa que crie uma matriz de cinco objetos da classe anterior, solicite os dados dos estacionamentos para o usuário e imprima um relatório dos dados e do valor cobrado
  6. O diagrama de classes a seguir representa parte de um sistema de desenho 2D
  • Crie a classe Ponto2D e teste-a criando um pequeno programa principal
  • Crie a classe Reta2D
  • O que deve ser feito no construtor padrão para que p1 e p2 não fiquem “vazios”?
  • Isso deve ser feito apenas no construtor padrão? Que outro construtor também precisa ser alterado?
  • Implemente o construtor que recebe as coordenadas separadas para que também crie os objetos para p1 e p2 com esses valores recebidos.
  • As versões dos sets que recebem coordenadas separadas também precisam de atenção, pois esses valores precisam ser salvos dentro de p1 e p2. De que maneiras podemos fazer isso?
  • Como fazer para mostrar a reta na tela? Precisamos mostrar os atributos de cada ponto ou podemos aproveitar alguma coisa da classe Ponto2D?
  • Crie um programa principal que:
  • Crie 3 retas, cada uma usando um dos construtores da reta
  • Alguma versão foi mais trabalhosa? Qual? Por que?
  • Altere uma das retas usando as duas versões do mesmo set. Alguma versão foi mais trabalhosa? Qual? Por que?
  • Crie uma função que recebe como parâmetro duas retas e verifica se elas são iguais. Considere uma reta igual a outra se todos seus atributos forem iguais. (Use os gets para obter as coordenadas)
  • Teste o seguinte comando e verifique se ele funciona. Caso afirmativo, explique como ele funciona. Suponha que a reta r já foi criada. r.setP1(new Ponto2D(10.0, 7.0));
  • Teste o seguinte comando e verifique se ele funciona. Caso afirmativo, explique como ele funciona. Suponha que a referência para reta r já foi criada. r = new Reta2D(new Ponto2D(10.0, 7.0), new Ponto2D(4.0, 3.0));
  1. O diagrama de classes a seguir representa um sistema envolvendo Carros e suas partes.

public class EmpregadoMensalista extends Empregado { private double salario; public EmpregadoMensalista ( ) {...}; public EmpregadoMensalista (String nome, String inss, double salario) {...}; public void setSalario ( double salario) {...}; public double getSalario ( ) {...}; public void imprimeCheque ( ) {...}; }

  1. Crie uma classe EmpregadoExecutivo derivada da classe EmpregadoMensalista. Atributos:
  • cargo (String) Métodos: - getCargo , que não requer argumentos e retorna uma String
  • setCargo , um método void que requer um argumento de tipo String
  • setNome (sobrescrito): deve inserir o cargo no nome (cargo: Diretor; nome recebido: Joao; nome final: Diretor Joao)
  • construtores padrão e de inicialização
  1. Crie uma classe Administrador derivada da classe EmpregadoExecutivo. Atributos:
  • departamento da empresa (String; exemplo: Produção, Contabilidade ou Pessoal)
  • nome do supervisor (String) Métodos:
  • setSupervisor, que mude o nome do supervisor
  • toString que retorne os dados do Administrador em uma String
  • imprimeCheque (sobrescrito) com as notações adequadas no cheque
  1. Crie uma classe chamada Medico cujos objetos são registros para uma clínica médica. Essa classe será derivada da classe EmpregadoMensalista. Atributos:
  • a especialidade do médico (como “Pediatra”, “Obstetra”, “Clínico Geral”, etc.)
  • o preço da consulta (double) Métodos:
  • construtores padrão e de inicialização
  • sets e gets
  1. Crie uma classe para representar uma Pessoa. Ela deve guardar o nome, sobrenome, cpf, endereco e contato. Crie construtores, sets, gets e um toString.
  2. Crie uma classe Paciente derivada da classe Pessoa criada anteriormente. O paciente deve guardar o seu médico principal (do tipo Medico criado anteriormente)
  3. Crie uma classe Conta. Uma conta deve guardar o Paciente dessa conta, o seu Medico principal

e uma quantia do tipo double.

  1. Escreva um programa para testar todos os métodos das classes criadas nos exercícios 8, 9 e 10.
  2. Crie um programa que crie pelo menos dois pacientes, dois médicos e dois registros de Conta; depois, imprima a soma total dos registros de Conta.
  3. Crie uma classe para representar uma lista duplamente ligada/encadeada de inteiros. Para isso você deve criar uma classe No capaz de guardar um valor inteiro e os nós anterior e próximo. Use composição para guardar o início/fim da lista.
  4. Crie uma classe para representar uma pilha usando uma composição de uma lista duplamente encadeada.
  5. Crie uma classe para representar uma fila usando uma composição de uma lista duplamente encadeada.