Você está na página 1de 4

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Teste I de
Programação II
Enunciado
Curso: LEIT Data: 30-Março-19
Turma: I21 Duração: 100 Minutos
Nome do Docente: H.Choo, M.Karim, M.Marqueza Pontuação: 200 pontos

Parte I- Teoria [85 pontos]

1- Analisa o código abaixo.

public class Funcionario {


private String nome;
private double salario;
private double horaTrabalho;

public Funcionario(String nome, double salario, double horaTrabalho) {


this.nome = nome;
this.salario = salario;
this.horaTrabalho = horaTrabalho;
}

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

public double getSalario() {


return salario;
}

public void setSalario(double salario) {


this.salario = salario;
}

public double getHoraTrabalho() {


return horaTrabalho;
}

public void setHoraTrabalho(double horaTrabalho) {


this.horaTrabalho = horaTrabalho;
}

public double calculaSalario() {


return this.getSalario() * this.getHoraTrabalho();
}
}

1
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

public class Vendedor extends Funcionario {


private int numeroVenda;

public Vendedor(String nome, double salario, double horaTrabalho, int


numeroVenda) {
super(nome, salario, horaTrabalho);
this.numeroVenda = numeroVenda;
}

public int getNumeroVenda() {


return numeroVenda;
}

public void setNumeroVenda(int numeroVenda) {


this.numeroVenda = numeroVenda;
}

@Override
public double calculaSalario() {
return super.calculaSalario() + numeroVenda;
}

public class Venda {

public static void main(String[] args) {


Funcionario jose = new Vendedor("Jose", 400, 144, 10);
Funcionario leila = jose;

leila.setNome("Leila");
leila.setSalario(300);
leila.setHoraTrabalho(168);

System.out.println("Nome: " + jose.getNome());


System.out.println("Salario por hora: " + jose.getSalario());
System.out.println("Horas: " + jose.getHoraTrabalho());
System.out.println("Salario: " + jose.calculaSalario());

}
}

a. Ao executar a classe venda, qual será o método calculaSalario a ser [20 pontos]
executado.
R: Será executada o método calculaSalario da Classe Vendedor.
b. Explique porque será executado esse método calculaSalario e não o outro. [10 pontos]
R: A variável jose é uma instancia da classe Vendedor, e a classe vendedor
subscreveu o comportamento do método calculaSalario.
c. Indica quais serão as saídas na consola. [05 pontos]
R: Nome: Leila
Salario por hora: 300
Horas: 168
Salario: 50410
d. Explique de forma logica as saídas. [05 pontos]

2
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

R: Em Java quando instanciamos uma classe a sua referência é guarda na memoria,


e ao executarmos alinha 4 (Funcionario leila = jose;), as duas variáveis passa a
apontar para a mesma referencia.

2- Durante as aulas de Java, aprendemos algumas palavras reservadas.


a. Identifica 4 palavras reservadas e explique a utilidade das mesmas. [40 pontos]
R: this: Usado para representar uma instância da classe em que aparece.
Super: : Usado para representar elementos da classe herda pela instância da classe
em que aparece.
Break: Usando para quebrar loops
Void: Usando para definir que o método não tem retorno.

b. Diga se é possível criar uma variável com nome de uma palavra [05 pontos]
reservada.
R:Não

Parte II – Pratica [115 pontos]

NB: A parte pratica deve ser resolvida num workspace limpo separado das aulas. O nome do
projecto deve ser t1_primeiroNome_ultimoNome. Todo ficheiro produzido durante a
avaliação deve ser enviados para o email haslerchoo@isutc.transcom.co.mz.

1. Apos a turma I21 ter desenvolvido o software para registro de viaturas, a empresaria Janice, notou
o excesso de viaturas em sua posse. De forma a reduzir esse número, ela entra em contacto com a
Leila.
A Leila é dona de uma agência de vendas de Viaturas terrestes. Tendo esta oportunidade, ela
contacta os desenvolvedores da I21 para criarem um sistema que permitissem o controle das suas
vendas.
O sistema deve ter as seguintes funcionalidades:
• Permitir o registro de funcionários (Gestor de Vendas, vendedor)
• Permitir o registro de viaturas (Carros, Bicicletas, Comboios)
• Realizar Venda.
Para o registro de um funcionário, deve se colectar o nome, idade, género, salário base. Caso ele
seja um gestor de vendas, é necessário saber o número de vendedores sobre sua vigilância, caso não
é necessário saber o número de vendas realizadas.
Visto que os registros são feitos por utilizadores com as devidas permissões, estes estão sujeitos a
falhas humanas. Deste modo deve se criar validações para garantir que o nome do funcionário inicie
sempre com letra maiúscula e as restantes minúsculas e sem espaços nas extremidades. A idade não
pode ser inferior a zero.

3
INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

O salário de um gestor, é calculado usando a seguinte formula “salário base + números de número
de vendedores sobre sua vigilância * salários base *0.5”, e o do vendedor é calculado usando a
seguinte salário base + números de vendas * salários base * 0.01”.

O registro das viaturas deve se levar em consideração os seguintes valores:


• Carro: referencia, cor, matrícula, preço.
• 10: referencia, cor, número de rodas, preço.
• Comboios: referencia, cor, número de vagões, preço.

a) Crie as classes, atributos e métodos necessários para o registro de [25 pontos]


funcionários.
b) Crie as validações necessárias para o funcionário.0020 [10 pontos]
c) Crie as classes, atributos e métodos necessários para o registro de viaturas. [20 pontos]
d) Crie uma classe vendas com dois métodos, o primeiro método permite a [30 pontos]
venda de uma viatura e o segundo métodos, permite saber o número de
viaturas vendidas e o preço total.

e) Crie uma classe com o método main, onde existirão um vendedor que deve [10 pontos]
realizar a venda de 3 viaturas de tipos diferentes, e no final imprimir o
salário do vendedor, o número de viaturas vendidas e o preço total das
vendas

2. Crie um exemplo de Polimorfismo. [15 pontos]

Boa sorte

Você também pode gostar