Classes(abstratas e concretas), Objetos, Métodos, Construtores, Vetor de Objetos e trabalhar o conceito de interface.

Exercício 1 - Utilizando a linguagem Java implemente todas as classes dos diagramas abaixo, encapsulando obrigatoriamente todos os atributos.


Observação:
a) O método calcularSalario()  da classe Empregado é abstrato.
b) O método calcularSalario() da classe Chefe retorna o valor do salarioMensal
c) O método calcularSalario() da classe Comissionado retorna o valor da seguinte expressão, salarioBase + comissao*quatidade.
d) Faça uma sobrecarga dos métodos construtores.

Exercício 2 - Crie um programa em Java para manipular um vetor de 5 objetos da classe Comissionado criada no Exercício 1. Neste vetor serão armazenadas as instâncias desta classe, lidas a partir do teclado. O programa deverá cadastrar e ao final exibir os dados(nome, endereço, salarioBase, comissão e o saláriofinal(salarioBase+comissão*quantidade), que é calculado pelo método calcularSalario(), para cada um dos objetos no console de saída). Neste momento é obrigatória a chamada do método polimórfico presente nessas classes.

Observação: utilize obrigatoriamente os métodos de manipulação do objeto para alterar, obter e calcular as suas propriedades, inclusive na hora de escrevê-las na tela.

Exercício 3 - Analise a situação descrita abaixo:

Sua empresa foi contratada para desenvolver um software para administrar os salários dos funcionários de uma instituição de educação. Seu corpo docente que é formado por Professores Estatutários e Professores Contratados. A seguir é apresentado um diagrama de classes e pacotes do software descrevendo algumas das características de cada:

Utilizando a linguagem Java implemente todas as classes dos diagramas acima, encapsulando obrigatoriamente todos os atributos.

Atenção:  Na classe Funcionario calcularSalrio() é um método abastrato. Na classe Professor o método calcularSalario() que retorna o valor da (cargaHoraria*valorDaHora). Na classe Contatado o método calcualrSalario() retorna o valor da (cargaHoraria*valorDaHora-inss). Na classe Estatutario o método calcularSalario() retorna o valor da (cargaHoraria * valorDaHora + trienio – rioprev).

Exercício 4 - Crie um programa em Java para manipular a classe Estatutario na questão número 1. Crie uma instancias desta classe. 

O programa deverá cadastrar e ao final exibir os dados(matricula, nome, cargaHoraria e  o salario. Os valores serão passados como parâmetros pela linha de comando.

Observação: utilize obrigatoriamente os métodos de manipulação do objeto para alterar, obter e calcular as suas propriedades, inclusive na hora de escrevê-las na tela.

Exercício 5 Utilizando a linguagem Java implemente todas as classes dos diagramas abaixo, encapsulando obrigatoriamente todos os atributos.
Fórmulas: calcularVolume()
Piramide: altura / 3 * lado
BaseTriangular: (base * base) / 2 * altura
BaseCircular: pi * raio * raio * altura

Exercício 6
Crie um programa em Java para manipular um vetor de 5 objetos das classes BaseTriangular e BaseCircular da questão anterior.

Comentários

  1. Nenhum comentário dos alunos de terça!? Tenho certeza, que o pessoal de quarta vai reverter esse placar !!!

    ResponderExcluir
  2. Professor estou com dúvida na questão 2, na criação do objeto com vetor...

    ResponderExcluir
  3. Boa noite alunos ! Atendendo a solicitação do nosso estimado Jean, aluno de quarta, segue a sugestão de criação de vetor, do exercício 2:

    Comissionado c[]=new Comissionado[5];

    // criação dos objetos
    for(int i=0; i<c.length; i++) {
    c[i] =new Comissionado();
    }

    // inserção de valores no vetor
    for(int i=0; i<c.length; i++) {
    System.out.print("Entre com o Nome.........: ");
    c[i].setNome(sc.nextLine());
    ....
    }

    // exibição do vetor
    for( int i=0; i<c.length; i++) { {
    System.out.println("Nome............: "+ c[i].getNome());
    ....
    }

    Um abraço !

    ResponderExcluir
  4. Valeu Professor! Deu certo aqui...

    ResponderExcluir
  5. package Comum;


    public abstract class Empregado {
    private String nome;
    private String endereco;

    public String getNome() {
    return nome;
    }
    public void setNome(String nome) {
    this.nome = nome;
    }
    public String getEndereco() {
    return endereco;
    }
    public void setEndereco(String endereco) {
    this.endereco = endereco;
    }

    public abstract double calcularSalario();
    }



    package Comum;
    import javax.swing.JOptionPane;
    import empregado.Chefe;
    import empregado.Comissionado;
    public class Teste {


    public static void main(String[] args) {
    Comissionado c1 = new Comissionado ();
    Chefe c2 = new Chefe();
    c1.setNome(JOptionPane.showInputDialog ("Insira o nome do Funcionario Comissionado:"));
    c1.setEndereco(JOptionPane.showInputDialog ("Insira o endereço do Funcionario Comissionado:"));
    c1.setSalarioBase(Integer.parseInt(JOptionPane.showInputDialog ("Insira o Salario Base:")));
    c1.setComissao(Integer.parseInt(JOptionPane.showInputDialog ("Insira a comissao:")));
    c1.setQuantidade(Integer.parseInt(JOptionPane.showInputDialog ("Insira a quantidade vendida:")));
    c2.setNome(JOptionPane.showInputDialog ("Insira o nome do Lider:"));
    c2.setEndereco(JOptionPane.showInputDialog ("Insira o endereço do Lider:"));
    c2.setSalarioMensal(Integer.parseInt(JOptionPane.showInputDialog ("Insira o Salario Mensal:")));

    JOptionPane.showMessageDialog(null,"\nNome do Funcionario: " + c1.getNome()
    +"\nEndereço do funcionario:" + c1.getEndereco() + "\nSalario Base do Funcionario :" + c1.getSalarioBase()
    + "\nComissão: " + c1.getComissao() + "\nQuantidade de vendas" + c1.getQuantidade() + "\nCalcularSalario" + c1.calcularSalario());

    JOptionPane.showMessageDialog(null,"\nNome do Chefe: " + c2.getNome()
    +"\nEndereço do Chefe:" + c2.getEndereco() + "\nSalario do Chefe" + c2.getSalarioMensal());
    }

    }




    package empregado;
    import Comum.Empregado;

    public class Chefe extends Empregado {
    private double salarioMensal;
    public void setSalarioMensal(double salarioMensal){
    this.salarioMensal= salarioMensal;
    }
    public double getSalarioMensal(){
    return salarioMensal;
    }

    public double calcularSalario(){
    return salarioMensal;
    }
    }


    package empregado;

    import Comum.Empregado;

    public class Comissionado extends Empregado {

    private double salarioBase;
    private double comissao;
    private int quantidade;

    public double getSalarioBase() {
    return salarioBase;
    }
    public void setSalarioBase(double salarioBase) {
    this.salarioBase = salarioBase;
    }
    public double getComissao() {
    return comissao;
    }
    public void setComissao(double comissao) {
    this.comissao = comissao;
    }
    public int getQuantidade() {
    return quantidade;
    }
    public void setQuantidade(int quantidade) {
    this.quantidade = quantidade;
    }

    public double calcularSalario(){
    return salarioBase + comissao*quantidade;
    }
    }

    ResponderExcluir
  6. Exercício 2

    package Interface;

    import java.util.Scanner;

    public class AppEmpregado {

    public static void main(String[] args) {

    int[] obj = new int[5];

    Scanner entrada = new Scanner(System.in);

    Comissionado C[] = new Comissionado[5];

    for(int i = 0; i < C.length; i++){
    C[i] = new Comissionado();
    }

    for(int i = 0; i < C.length; i++){
    System.out.println("Informe o nome do empregado: ");
    String nome = entrada.next();
    C[i].setNome(nome);

    System.out.println("Informe o endereço do empregado: ");
    String endereco = entrada.next();
    C[i].setEndereco(endereco);

    System.out.println("Informe o salário base do empregado: ");
    double salarioBase = entrada.nextDouble();
    C[i].setSalarioBase(salarioBase);

    System.out.println("Informe o valor da comissão do empregado: ");
    double comissao = entrada.nextDouble();
    C[i].setComissao(comissao);

    System.out.println("Informe a quantidade de comissões do empregado: ");
    int quantidade = entrada.nextInt();
    C[i].setQuantidade(quantidade);
    }

    for(int i = 0; i < C.length; i++){
    System.out.println("Nome do empregado na posição " + i + ": " + C[i].getNome());
    System.out.println("Endereço do empregado na posição " + i + ": " + C[i].getEndereco());
    System.out.println("Salário base do empregado na posição " + i + ": " + C[i].getSalarioBase());
    System.out.println("Valor da comissão do empregado na posição " + i + ": " + C[i].getComissao());
    System.out.println("Quantidade de comissões do empregado na posição " + i + ": " + C[i].getQuantidade());
    System.out.println("Novo salário do empregado na posição " + i + ": " + C[i].calcularSalario());
    }
    }

    }

    ResponderExcluir
  7. Exercício 5

    package Interface;

    public interface Formas {

    double pi = 3.14; //por definição todo atributo de uma interface é final

    double calcularVolume();
    }

    package Interface;

    public abstract class FormasTridimensionais implements Formas{

    private double altura;

    public double getAltura() {
    return altura;
    }

    public void setAltura(double altura) {
    this.altura = altura;
    }

    }

    package Interface;

    public class Piramide extends FormasTridimensionais {

    private double lado;

    public double getLado() {
    return lado;
    }

    public void setLado(double lado) {
    this.lado = lado;
    }

    @Override
    public double calcularVolume(){
    return getAltura()/(lado * 3);
    }
    }

    package Interface;

    public class BaseTriangular extends Piramide {

    private double base;

    public double getBase() {
    return base;
    }

    public void setBase(double base) {
    this.base = base;
    }

    @Override
    public double calcularVolume(){
    return (base * base)/2 * getAltura();
    }
    }

    package Interface;

    public class BaseCircular extends Piramide {

    private double raio;

    public double getRaio() {
    return raio;
    }

    public void setRaio(double raio) {
    this.raio = raio;
    }

    @Override
    public double calcularVolume(){
    return pi * raio * raio * getAltura();
    }
    }

    ResponderExcluir
  8. Exercício 6

    package Interface;

    import java.util.Scanner;

    public class AppPiramide {

    public static void main(String[] args) {

    Scanner entrada = new Scanner(System.in);

    BaseTriangular T[] = new BaseTriangular[5];

    BaseCircular C[] = new BaseCircular[5];

    for(int i = 0; i < C.length; i++){
    T[i] = new BaseTriangular();
    }

    for(int i = 0; i < C.length; i++){
    C[i] = new BaseCircular();
    }

    for(int i = 0; i < C.length; i++){
    System.out.println("Informe a altura do triângulo: ");
    double altura = entrada.nextDouble();
    T[i].setAltura(altura);

    System.out.println("Informe o lado do triângulo: ");
    double lado = entrada.nextDouble();
    T[i].setLado(lado);

    System.out.println("Informe a base do triângulo: ");
    double base = entrada.nextDouble();
    T[i].setBase(base);
    }

    for(int i = 0; i < C.length; i++){
    System.out.println("Informe a altura do circulo: ");
    double altura = entrada.nextDouble();
    C[i].setAltura(altura);

    System.out.println("Informe o lado do circulo: ");
    double lado = entrada.nextDouble();
    C[i].setLado(lado);

    System.out.println("Informe o raio do circulo: ");
    double raio = entrada.nextDouble();
    C[i].setRaio(raio);
    }

    for(int i = 0; i < C.length; i++){
    System.out.println("Altura do triângulo na posição " + i + ": " + T[i].getAltura());
    System.out.println("Lado do triângulo na posição " + i + ": " + T[i].getLado());
    System.out.println("Base do triângulo na posição " + i + ": " + T[i].getBase());
    System.out.println("Volume do triângulo na posição " + i + ": " + T[i].calcularVolume());
    }

    for(int i = 0; i < C.length; i++){
    System.out.println("Altura do circulo na posição " + i + ": " + C[i].getAltura());
    System.out.println("Lado do circulo na posição " + i + ": " + C[i].getLado());
    System.out.println("Raio do circulo na posição " + i + ": " + C[i].getRaio());
    System.out.println("Volume do circulo na posição " + i + ": " + C[i].calcularVolume());
    }
    }
    }

    ResponderExcluir
  9. Pessoal, observem que os métodos definidos como abstratos, obrigam a redefinição desses métodos nas subclasses que estenderem essa superclasse. #ficaadica #blogDoMonteiro

    ResponderExcluir
    Respostas
    1. Bom dia professor!
      Com respeito aos métodos seria possível a criação de uma interface(s) "calcular salario" por exemplo, e, a partir daí implementar as classes que necessitem destes métodos? Esse caminho iria ferir o conceito de respeitar o que diz o diagrama? Ou continuaria dentro do que se pede?

      Excluir
  10. Segue abaixo como fiz no exemplo do método calculaSalario:

    Criei uma interface para o método:

    package comum;

    public abstract interface CalcSalario
    {
    public double calcularSalario();

    }

    CLASSE EMPREGADO:

    package comum;
    // JÁ QUE IMPLENTEI A INTERFACE NA CLASSE MÃE TODAS AS SUB-CLASSES POSSUEM O MÉTODO.
    public abstract class Empregado implements CalcSalario
    {
    private String nome, endereco;

    public String getNome()
    {
    return nome;
    }

    public void setNome(String nome)
    {
    this.nome = nome;
    }

    public String getEndereco()
    {
    return endereco;
    }

    public void setEndereco(String endereco)
    {
    this.endereco = endereco;
    }
    @Override
    public double calcularSalario(){
    return 0;
    }
    }

    SUB- CLASSE CHEFE:

    package empregado;

    import comum.Empregado;


    public class Chefe extends Empregado
    {
    private double salarioMensal;

    public double getSalarioMensal(double salarioMensal)
    {
    return salarioMensal;
    }

    public void setSalarioMensal(double salarioMensal)
    {
    this.salarioMensal = salarioMensal;
    }

    @Override
    public double calcularSalario()
    {
    return this.salarioMensal;
    }


    }

    SUB -CLASSE COMISSIONADO:

    package empregado;
    import comum.Empregado;
    public class Comissionado extends Empregado
    {
    private double salarioBase, comissao;
    private int quantidade;

    public double getSalarioBase()
    {
    return salarioBase;
    }

    public void setSalarioBase(double salarioBase)
    {
    this.salarioBase = salarioBase;
    }

    public double getComissao()
    {
    return comissao;
    }

    public void setComissao(double comissao)
    {
    this.comissao = comissao;
    }

    public int getQuantidade()
    {
    return quantidade;
    }

    public void setQuantidade(int quantidade)
    {
    this.quantidade = quantidade;
    }

    @Override
    public double calcularSalario() {
    return salarioBase + comissao*quantidade;
    }


    }

    CLASSE COM MAIN:

    package comum;
    import javax.swing.JOptionPane;
    import empregado.*;

    public class Start_Empregados {

    public static void main(String[] args)
    {
    Chefe novo = new Chefe();

    novo.setNome(JOptionPane.showInputDialog("Digite o nome: "));
    novo.setEndereco(JOptionPane.showInputDialog("Digite o endereço: "));
    novo.setSalarioMensal(Double.parseDouble(JOptionPane.showInputDialog("Digite o Salário: ")));

    JOptionPane.showMessageDialog(null, "Nome : "+ novo.getNome() + "Endereço : "
    + novo.getEndereco() + "O salário atualizado é : "+ novo.calcularSalario());

    Comissionado n = new Comissionado();

    n.setNome(JOptionPane.showInputDialog("Digite o nome: "));
    n.setEndereco(JOptionPane.showInputDialog("Digite o endereço: "));
    n.setSalarioBase(Double.parseDouble(JOptionPane.showInputDialog("Digite o Salário: ")));
    n.setQuantidade(Integer.parseInt(JOptionPane.showInputDialog("Digite a quantidade: ")));
    n.setComissao(Double.parseDouble(JOptionPane.showInputDialog("Digite a comissão: ")));

    JOptionPane.showMessageDialog(null, "Nome : "+ n.getNome() + "Endereço : "
    + n.getEndereco() + "Salario " + n.getSalarioBase() + "Qiantidade " + n.getQuantidade()
    + "Comissão " + n.getComissao() + "O salário atualizado é : "+ n.calcularSalario());

    }

    }


    ResponderExcluir
    Respostas
    1. Exercicio 5:

      package ex5;

      public interface Formas {
      final double pi =3.14;

      public abstract double calcularVolume();
      }

      package ex5;

      public abstract class FormasTridimensionais implements Formas{
      private double altura;

      public void setAltura(double altura){
      this.altura=altura;
      }

      public double getAltura(){
      return this.altura;
      }
      }

      package ex5;

      public class Piramide extends FormasTridimensionais{

      private double lado;

      public double calcularVolume(){
      return getAltura()/3*lado;
      }

      public void setLado(double lado){
      this.lado=lado;
      }

      public double getLado(){
      return this.lado;
      }
      }

      package ex5;

      public class BaseTriangular extends Piramide{
      private double base;

      public double calcularVolume(){
      return (this.base*this.base)/2*getAltura();
      }

      public double getBase() {
      return base;
      }

      public void setBase(double base) {
      this.base = base;
      }
      }


      package ex5;

      public class BaseCircular extends Piramide{
      private double raio;

      public double calcularVolume(){
      return pi*this.raio*this.raio*getAltura();
      }

      public double getRaio() {
      return raio;
      }

      public void setRaio(double raio) {
      this.raio = raio;
      }
      }


      Excluir
  11. Exec nº 6 com entradas em JOptionPane(caso alguém tenha dúvidas) :


    package ex5;

    import javax.swing.*;

    public class AppEx6 {

    public static void main(String[] args) {

    BaseTriangular[] BT = new BaseTriangular[5];
    BaseCircular[] BC = new BaseCircular[5];


    for(int i=0; i<BT.length; i++){
    BT[i] = new BaseTriangular();
    BC[i] = new BaseCircular();
    }

    for(int i=0;i<BT.length;i++){
    double vai=Double.parseDouble(JOptionPane.showInputDialog("altura do OBJ Tiangular nº "+i));
    BT[i].setAltura(vai);

    BT[i].setBase(Double.parseDouble(JOptionPane.showInputDialog("BASE do OBJ Triangular nº "+i)));
    BC[i].setAltura(Double.parseDouble(JOptionPane.showInputDialog("altura do OBJ Circular nº "+i)));
    BC[i].setRaio(Double.parseDouble(JOptionPane.showInputDialog("Raio do OBJ Circular nº "+i)));
    }

    for(int i=0;i<BT.length;i++){
    JOptionPane.showMessageDialog(null,"Dados do OBJ TRIANGULAR nº "+i+ "são: \nBase: "+
    BT[i].getBase()+"\nAltura: "+BT[i].getAltura()+
    "\nVolume :"+BT[i].calcularVolume());

    JOptionPane.showMessageDialog(null,"Dados do OBJ Circular nº "+i+ "são: \nRaio: "+
    BC[i].getRaio()+"\nAltura: "+BC[i].getAltura()+
    "\nVolume :"+BC[i].calcularVolume());
    }
    }

    }

    ResponderExcluir
  12. Exercício 02

    package empregado;
    import javax.swing.JOptionPane;
    public class UsaComissionado {

    public static void main(String[] args) {

    Comissionado c[]= new Comissionado[5];

    for(int i=0; i<c.length; i++) {
    c[i] =new Comissionado();
    }
    for (int x=0; x<5; x++){
    c[x].setNome(JOptionPane.showInputDialog("Digite o nome"));
    c[x].setEndereco(JOptionPane.showInputDialog("Digite o Endereco"));
    c[x].setSalarioBase(Double.parseDouble(JOptionPane.showInputDialog("Digite o Salario Base")));
    c[x].setComissao(Double.parseDouble(JOptionPane.showInputDialog("Digite a Comissão")));
    c[x].setQuantidade(Integer.parseInt(JOptionPane.showInputDialog("Digite a Quantidade")));
    }
    for (int x=0; x<5; x++){
    JOptionPane.showMessageDialog(null,"Nome: "+c[x].getNome()+"\nEndereço:"
    +c[x].getEndereco()+"\nSalario Base"+c[x].getSalarioBase()+"\nComissão"
    +c[x].getComissao()+"\nSalário Final"+c[x].calcularSalario());
    }
    }

    }

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Questão Comentada - Prof Nelson Lage

GST0070 - Estudo de Caso - Tomada de decisões: de volta ao básico - Aula 3