Buscar

TRABALHO POO JAVA

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 16 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

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 6, do total de 16 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

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 9, do total de 16 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

PROGRAMAÇÃO ORIENTADA A OBJETO EM JAVA
1. O que são modelos e como ele se relaciona com a programação orientada a objeto?
R.: Quando se fala em programação orientada a objeto, um modelo nada mais é do que a representação de um objeto real ou abstrato, incluindo características, restrições e funcionalidades.
2. Dê exemplos de modelos.
R.: O modelo mais conhecido quando falamos de Modelos em POO é o modelo de restaurante, que representa certos dados ou informações, que no caso são os itens e quantidade dos pedidos por mesa.
Um modelo, contém operações ou procedimentos associados a ele, por exemplo:
A inclusão de um pedido para uma mesa, a modificação do status de um pedido, o encerramento de um pedido e a apresentação da conta para os clientes.
Podemos dar como exemplo tambem pessoas como empregadas desse restaurante.
Representando uma pessoa como sendo empregado de uma empresa, para fins de processamento de folha de pagamento, seria necessária a representação do nome, cargo, salário e horas extras desta pessoa, dentre outros dados;
Podendo conter as operações calculaSalário e aumentaSalário.
3. O que é a programação orientada a objetos?
R.: A Programação Orientada a Objetos é uma metodologia de desenvolvimento de software, que tem como objetivo a representação de um elemeneto do mundo real em um objeto.
4. O que é e como funciona a Máquina Virtual Java?
R.: É um programa usado para carregar e executar as aplicações em Java, ela trabalha convertendo os bytecodes em código que a máquina consiga executar, sendo assim responsável pelo gerenciamento dos aplicativos, à medida que são executados.
5. Defina a estrutura mínima de programas em Java.
R.: A estrutura mínima para um programa em Java se constroi da seguinte forma:
public class <nome> {
	 <declarações>
	public static void main (<parametro>) {
	 <declarações>
	 <comandos>
	}
}
Sendo:
main: método por onde se inicia a execução
public: modificador de visibilidade
static: modificador de acesso - se aplica à classe
void: main não retorna um valor
6. Defina e explique os componentes básicos da POO.
R.: Os componenes da POO são:
Herança: Idealização de um objeto, se baseando em outro
Poliomorfismo: Rescrita de um método herdado de uma classe, altrando o objetivo original (da classe pai).
Encapsulamento: Capacidade de esconder detalhes da implemenação do objeto, expondo apenas oque pode ser acessado publicamente.
Abstração: É como um método estruturado, que nescessita de uma classe filha para finalizar a utilização desse modelo.
7. Com base no código abaixo explique cada elemento da estrutura.
public class Contagem {
 private int vCont;
 public Contagem (){
 vCont = 0;
 }
 public void incrementar (){ 
 vCont = vCont + 1;
 }
 public void somarValor (int vlr){
 vCont = vCont + vlr;
 }
 public int obterContador(){
 return vCont;
 }
}
R.: 
public class Contagem {
 private int vCont; Atributo 
 public Contagem (){ Construtor 
 vCont = 0;
 }
 public void incrementar (){ Métodos 
 vCont = vCont + 1; 
 }
 public void somarValor (int vlr){
 vCont = vCont + vlr;
 }
 public int obterContador(){
 return vCont;
 }
}
8. O que representa o método “public static void main(String[] args)”?
R.: Ao executar uma classe com este método, estamos solicitando que a máquina virtual a rode. Desta forma ela não nescessita instanciar a classe e nem solicitar uma resposta, apenas invoca o método padrão main podendo ou não passar os parâmetros.
Explicando passo a passo;
Public é o modificador que permite o acesso do método por qualquer classe, dentro e fora do projeto;
Static define o método como estático, ou seja, a classe não precisa ser instanciada para solicitar este método;
Void é tipo de retorno do método. Este tipo de retorno significa vazio, o seja, o método não dá retorno nenhum. Os métodos podem retornar qualquer tipo do seu projeto, até mesmo os criados por você;
Main é o nome do método, nomes estes a serem definidos pelo desenvolvedor.
Main é o ponto de entrada da aplicação. É o método que a Java Runtime Environment procura para executar a aplicação;
String[] args define que o método deve receber como parâmetro um array de String, nomeado args. Nesse caso específico, este parâmetro serve para caso seu programa precise receber algum valor como argumento, isso é muito comum quando o programa é iniciado por outro programa ou pelo terminal.
9. Criação de Objetos (Instanciação): Explique cada linha do código.
Contagem objC1;
objC1 = new Contagem(); objC1.incrementar();
R.:
Contagem objC1; Está declarando o objeto vCont
objC1 = new Contagem(); Está instanciando o objeto vCont
objC1.incrementar(); Está chamando o método incrementar para executar.
10. O que é o método construtor? Dê exemplos.
R.: É um método que tem como objetivo a criação de objetos por meio de uma classe. Ou seja, se um construtor não for definido pelo desenvolvedor, um construtor padrão é automaticamente incluído quando a classe for compilada.
Exemplo:
public class Produto{
 /* CONSTRUTOR DA CLASSE Produto */
 public Produto(){
 //Faça o que desejar na construção do objeto
 }
}
11. O que são Interfaces e qual sua utilidade em POO. Dê exemplo da estrutura.
R.: Interfaces são um conceito que em vista o comportamento esperado para uma classe ou um conjunto de classes, pois as interfacestem como objetivo definir o que uma classe deve fazer e não como ela irá fazer.
Exemplo:
public class Estagiario
 {
 interface IReajuste{
 double Reajuste();
 }
 public class ReajusteEstagiario : IReajuste{
 //Propriedades públicas da minha classe
 public string nomeEstagiario;
 public double salarioEstagiario;
 //Implementação do método Reajuste, da interface IReajuste
 public double Reajuste()
 {
 salarioFuncionario = salarioEstagiario * 1.50;
 return salarioEstagiario;
 }
 }
 }
12. O que é o encapsulamento e como ele protege os atributos e métodos.
R.: Encapsulamento é um princípio que nos orienta a esconder as funcionalidades e funcionamento do nosso código dentro de pequenas. Sendo assim, o encapsulamento protege o acesso direto (referência) aos atributos de uma instância fora da classe onde estes foram declarados. Esta proteção consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe.
13. Explique o Polimorfismo. Dê exemplos.
R.: Polimorfismo é o princípio pelo qual duas ou mais classes derivadas da mesma superclasse podem invocar métodos que têm a mesma assinatura, mas comportamentos distintos.
Como exemplo, podemos dizer que um celular e um notebook são artigos tecnologicos, porem o cálculo de ambos em uma venda são realizados de maneiras diferentes.
14. Faça um programa em java que preenche os elementos de um vetor de 4 posições, através de um for, onde cada posição deve ser preenchida como “2*i”. E depois imprimir os valor do vetor.
R.: import java.util.Scanner;
public class Q14 {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 int vet[] = new int[4];
 for (int i = 0; vet.length > i; i++) {
 vet[i] = 2 * i;
 }
 for (int i = 0; vet.length > i; i++) {
 System.out.println(vet[i]);
 }
 }
}
15. Escreva uma classe cujosobjetos representam alunos matriculados em uma disciplina. Cada objeto dessa classe deve guardar os seguintes dados do aluno: matrícula, nome, 2 notas de prova e 1 nota de trabalho. Escreva os seguintes métodos para esta classe:
a. media: calcula a média final do aluno (cada prova tem peso 2,5 e o trabalho tem peso 2).
 R.: 
public class Alunos_matriculados {
 private int matricula;
 private String nome;
 private double nota1;
 private double nota2;
 private double trabalho;
 private double media;
 public Alunos_matriculados() {
 }
 public int getMatricula() {
 return matricula;
 }
 public void setMatricula(int matricula) {
 this.matricula = matricula;
 }
 public String getNome() {
 return nome;
 }
 public void setNome(String nome) {
 this.nome = nome;
 }
 public double getNota1() {
 return nota1;
 }
 public void setNota1(double nota1) {
 this.nota1 = nota1;
 }
 public double getNota2() {
 return nota2;
 }
 public void setNota2(double nota2) {
 this.nota2 = nota2;
 }
 public double getTrabalho() {
 return trabalho;
 }
 public void setTrabalho(double trabalho) {
 this.trabalho = trabalho;
 }
 public double getMedia() {
 return media;
 }
 public double mediaFinal(double nota1, double nota2, double trabalho) {
 media = (nota1 * 2.5 + nota2 * 2.5 + trabalho * 2) / 7;
 return media;
 }
 public double provaFinal(double media) {
 media = 7 - media;
 return media;
 }
}
b. final: calcula quanto o aluno precisa para a prova final (retorna zero se ele não for para a final).
R.: 
import java.util.Scanner;
public class main {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 Alunos_matriculados alunos = new Alunos_matriculados();
 System.out.print("Digite sua matrícula:");
 int matricula = sc.nextInt();
 sc.nextLine(); 
 System.out.print("Digite seu nome:");
 String nome = sc.nextLine();
 System.out.print("Digite a sua primeira nota:");
 double nota1 = sc.nextDouble();
 System.out.print("Digite a sua segunda nota:");
 double nota2 = sc.nextDouble();
 System.out.print("Digite a nota do trabalho:");
 double trabalho = sc.nextDouble();
 double media = alunos.mediaFinal(nota1, nota2, trabalho);
 if (media < 7) {
 System.out.println("Sua nota não chegou na media!! Faltam "
 + String.format("%.0f", alunos.provaFinal(media)) + " pontos");
 System.out.println("Sua media = " + String.format("%.0f", media));
 } else {
 System.out.println("Aprovado! Você não precisa da Final");
 }
 }
}
16. Escreva uma classe em que cada objeto representa um vôo que acontece em determinada data e em determinado horário. Cada vôo possui no máximo
100 passageiros, e a classe permite controlar a ocupação das vagas. A classe deve ter os seguintes métodos:
a. construtor: configura os dados do vôo (recebidos como parâmetro): número do vôo, data (para armazenar a data utilize um objeto da classe Data, criada na questão anterior);
b. proximoLivre: retorna o número da próxima cadeira livre
c. verifica: verifica se o número da cadeira recebido como parâmetro está ocupada
d. ocupa: ocupa determinada cadeira do vôo, cujo número é recebido como parâmetro, e retorna verdadeiro se a cadeira ainda não estiver ocupada (operação foi bem sucedida) e falso caso contrário
e. vagas: retorna o número de cadeiras vagas disponíveis (não ocupadas) no vôo
f. getVoo: retorna o número do vôo
g. getData: retorna a data do vôo (na forma de objeto)
h. clone: o objeto clona a si próprio, para isto, ele cria um novo objeto da mesma classe e faz uma cópia dos valores de seus atributos
R.: 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
 public static void main(String[] args) throws ParseException {
 SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
 Scanner sc = new Scanner(System.in);
 System.out.print("Digite o número do voo:");
 int numero = sc.nextInt();
 while (numero != 0) {
 sc.nextLine();
 System.out.print("Digite a data do voo: (DD/MM/YY):");
 String date = sc.nextLine();
 Date dataFormatada = formato.parse(date);
 Aviao av = new Aviao(numero, dataFormatada);
 System.out.print("Digite ocupar qual cadeira(1 a 100):");
 int cadeira = sc.nextInt();
 boolean res = av.ocupa(cadeira);
 if (res == false) {
 System.out.print("Algo deu errado ! Digite o número da cadeira novamente para mais detalhes:");
 cadeira = sc.nextInt();
 System.out.print("AVISO!: ");
 av.verifica(cadeira);
 System.out.println();
 System.out.println("Próxima cadeira Livre: " + av.proximoLivre());
 System.out.println();
 System.out.println("Quantidade de vagas Livres:" + av.vagas());
 } else if (res == true) {
 System.out.println("Operação foi bem sucedida! Cadeira reservada.");
 System.out.println();
 System.out.println("Data: " + av.getData());
 System.out.println("Número do voo:" + av.getNumeroVoo());
 System.out.println();
 }
 }
 }
}
17. Escreva uma classe herdeira à voo criada na lista de exercícios anterior, que permita definir quantas cadeiras existem no máximo no voo e se dividir o avião em ala de fumantes e não fumantes. Para isto esta classe deve acrescentar os atributos necessários e adicionar os seguintes métodos:
a. construtor: além dos parâmetros recebidos pelo construtor da superclasse, receberá também como parâmetros o número de vagas do voo e quantas cadeiras serão destinadas para fumantes
b. maxVagas: determina o número máximo de cadeiras no voo.
c. cadeirasFumantes: determina quantas cadeiras estão destinadas aos fumantes (as demais serão automaticamente destinadas aos não fumantes); as cadeiras dos fumantes serão sempre as últimas do avião.
d. tipo: recebe como parâmetro o número da cadeira e retorna ‘F’ se for uma cadeira para fumantes e ‘N’ se for para não fumantes.
Os métodos proximoLivre, verifica e ocupa da superclasse devem ser adaptados para tratar o número máximo de vagas informado, ao invés do número fixo de 100
R.: 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
		Scanner sc = new Scanner(System.in);
		System.out.print("Digite o número do voo:");
		int numero = sc.nextInt();
		while (numero != 00) {
			sc.nextLine();
			System.out.print("Digite a data do voo: (DD/MM/YY):");
			String date = sc.nextLine();
			Date dataFormatada = formato.parse(date);
			System.out.print("Digite a quantidade de cadeiras do voo:");
			int cadeira = sc.nextInt();
			System.out.print("Cadeiras para fumantes:");
			int cadeiraFumante = sc.nextInt();
			Aviao_2 av = new Aviao_2(numero, dataFormatada, cadeira, cadeiraFumante);
			System.out.println("Cadeira destinada aos fumantes: " + av.cadeirasFumantes(cadeiraFumante) + " a "
					+ av.getNumeroVagas());
			System.out.print("Digite o número da sua cadeira: ");
			cadeira = sc.nextInt();
			av.tipo(cadeira);
			if (av.tipo(cadeira) == true) {if (av.ocupa(cadeira) == false) {
					av.verifica(cadeira);
					System.out.println("Próxima cadeira livre: " + av.proximoLivre());
					System.out.println("FIM DO PROGRAMA -- REALIZE O PROCESSO NOVAMENTE COM A CADEIRA LIVRE !");
				} else {
					System.out.println("Cadeira reservada! (Cadeira tipo N)");
				}
			} else {
				if (av.ocupa(cadeira) == false) {
					av.verifica(cadeira);
				}else {
					System.out.println("Cadeira reservada! (TIPO F)");
					av.ocupa(cadeira);
				}
			}
		}
	}
}
18. Dada uma classe Equipamento na qual cada objeto representa um conjunto de N equipamentos de uma empresa com seus respectivos valores, cujo diagrama UML está representado a seguir:
construtor: recebe como parâmetro o número de equipamentos e cria um vetor de valores do respectivo tamanho.
getNumero: Equipamentos retorna o número de equipamentos.
getValor: recebe como parâmetro o número do equipamento (começando de zero) e retorna seu valor
setValor: recebe como parâmetro o número do equipamento e seu valor e o registra.
Cada equipamento possui um código numérico sequencial, começando de zero, que corresponde a sua posição no vetor.
Escreva uma classe, herdeira da classe Equipamento, denominada EquipamentoCorrigido em que cada objeto representa os mesmos equipamentos com valor corrigido, conforme diagrama UML parcial representado anteriormente.
Todo equipamento só é corrigido anualmente no mês em que foi comprado, por este motivo a classe deve acrescentar para cada equipamento um registro do seu mês de compra.
Além disto, deve possuir os métodos:
construtor: recebe como parâmetros o número de equipamentos e o mês corrente.
getMesCompra:	recebe	como	parâmetro	o	número	do	equipamento (começando de zero) e retorna seu mês de compra.
setMesCompra: recebe como parâmetro o número do equipamento e seu mês de compra e o registra.
corrige: este método recebe como parâmetro apenas o percentual de correção e corrige todos os equipamentos cujo mês de compra seja igual ao mês corrente; O objeto deve manter registrado em um atributo o mês corrente, que deve começar sempre em janeiro (quando o objeto é construído). Cada vez que este método é chamado, após a correção, o mês é incrementado de um e, se estiver em dezembro, retorna para janeiro. 
substitui:	recebe	como	parâmetro	um	outro	objeto	da	classe EquipamentoCorrigido e substitui o valor e o mês de compra de todos os equipamentos do objeto corrente pelos do objeto recebido como parâmetro; a operação só será realizada se ambos os objetos possuírem o mesmo número de equipamentos.
Note que o atributo “valor” da classe Equipamento é privado, portanto, só poderá ser acessado indiretamente, até mesmo pela classe herdeira.
R.: 
import java.util.ArrayList;
public class Equipamento {
	ArrayList<Integer> valor = new ArrayList<>();
	ArrayList<Integer> numeroEquipamento = new ArrayList<>();
	public Integer getNumero(int numeroEquipamentos) {
		return numeroEquipamentos;
	}
	public Integer getValor(int numeroEquipamento) {
		return valor.get(numeroEquipamento)
	}
	public void setValor(int numero, int valorEquipamento) {
		numeroEquipamento.add(numero);
		valor.add(valorEquipamento);
	}
}
R.: 
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Equipamento eq = new Equipamento();
		System.out.print("Digite a quantidade de equipamentos:");
		int quantidade = sc.nextInt();
		System.out.print("Digite a ID do equipamento (Primeira equipamente deve começar em zero):");
		int numeroEquipamento = sc.nextInt();
		System.out.print("Digite o valor do equipamento:");
		int valorEquipamento = sc.nextInt();
		eq.setValor(numeroEquipamento, valorEquipamento);
		System.out.println("DADOS INFORMADOS: ");
		System.out.println("Quantidade de equipamentos: " + eq.getNumero(quantidade));
		System.out.print("Valor do produto: " + eq.getValor(numeroEquipamento));
	}
}

Outros materiais