terça-feira, 26 de maio de 2015

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.

16 comentários:

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

    ResponderExcluir
  2. Ricardo Paladino e Derlan Lima

    Exercicio1:
    Empregado.java:

    package comum;

    /**
    *
    * @author aluno
    */
    public abstract class Empregado {
    String nome,salario;

    public abstract double calcularSalario();

    }


    Chefe.java:
    package empregado;

    import comum.Empregado;

    /**
    *
    * @author aluno
    */
    public class Chefe extends Empregado {
    private double salarioMensal;

    public Chefe(){

    }

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

    }


    Comissionado.java:
    package empregado;

    import comum.Empregado;

    /**
    *
    * @author aluno
    */
    public class Comissionado extends Empregado {
    private double salarioBase,comissao;
    private int quantidade;

    public Comissionado(){

    }

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

    }

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

    ResponderExcluir
  4. 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
  5. Valeu Professor! Deu certo aqui...

    ResponderExcluir
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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

 

Charles Maquiavel

"Não há nada mais difícil do que se ter em mãos algo novo, nem nada mais perigoso do que conduzir por caminhos inéditos, ou incertos quanto ao sucesso, ao se tomar a dianteira na introdução de uma nova ordem das coisas."

Martha Gabriel

"Sábios nos encantam e estúpidos nos cansam. Os meios digitais apenas ampliaram o poder de ambos, mas a escolha de quem ouvir ainda é nossa."

Sou + vc na Estácio

A Universidade Estácio de Sá está com matriculas abertas para nosso próximo semestre 2016.3 EAD. Oferece 25% de desconto durante todo o primeiro semestre letivo. Não perca essa oportunidade!
Aproveite uma degustação, diversos cursos livres e grátis. Basta acessar o link: http://experimenteseusonho.com.br/Portal/Modules/Login/
 
Blogger Templates