Estou com um exercício da faculdade, sobre Java, classes abastratas, cadastro. Ajudem por favor!

Galera, vou colar o exercício aqui para vocês lerem ok! Estou com dificuldade para fazer este!

Trabalhar com classe abstrata em orientação a objetos pode nos trazer mais consistência ao sistema em algumas situações, entretanto, é importante termos um bom conhecimento sobre o assunto para aplicarmos da melhor forma em nossos projetos.

Você trabalha como analista/programador em uma escola de cursos de qualificação profissional. Nesta escola, seus colaboradores podem ser pessoas físicas com vínculos trabalhistas e pessoas jurídicas que prestam serviços de treinamentos. Sua tarefa é criar classes de modelo para auxiliar no cadastro desses colaboradores. A aplicação deverá cadastrar os colaboradores pessoa física com os seguintes atributos: nome, CPF, RG, idade, logradouro, número, bairro, cidade, UF, telefone, e-mail, titulação e disciplinas que ministra. Para pessoa jurídica, os atributos são: razão social, nome fantasia, inscrição municipal, inscrição estadual, CNPJ, logradouro, número, bairro, cidade, UF, telefone, e-mail de contato, website e disciplinas que ministra.

Crie uma estrutura de herança com classe abstrata. Você deverá exportar o projeto em um arquivo zipado. Utilize uma linguagem de programação orientada a objetos para executar a tarefa.

Aguardo um feedback, agradeço desde já. Valeu!

Bem vindo Diego.

Com que parte exatamente está tendo dificuldade?
De tudo isso o que já conseguiu fazer?
Tem alguma coisa pronta pra ter um ponto de partida pra te ajudar?

Eu comecei alguma coisa aqui, escrevi uns códigos, entretanto, acho que não estou fazendo a coisa certa, estou pesquisando e procurando nos conteúdos da faculdade mesmo, mas não estou conseguindo resolver isso.

Vou mostrar aqui o código que escrevi (3 classes), e você verifica como está, até o momento, se achar que da para utilizar o código, me fala. E ou se puder me ajudar com isso, agradeço!

** Os códigos são os seguintes: **

package cadastro;

public abstract class Cadastro {

    String logradouro, numero, bairro, cidade, UF, telefone, email, disciplinasqueministra;
    
    public Cadastro (String logradouro, String numero, String bairro, String cidade, String UF, String telefone, String email, String disciplinasqueministra ){
        
    this.logradouro = logradouro;
    this.numero = numero;
    this.bairro = bairro;
    this.cidade = cidade;
    this.UF = UF;
    this.telefone = telefone;
    this.email = email;
    this.disciplinasqueministra = disciplinasqueministra;
        
        
        
    }

}

package cadastro;

public class Pessoafisica extends Cadastro {

                   String nome, CPF, RG, idade;

public Pessoafisica(String logradouro, String numero, String bairro, String cidade, String UF, String telefone, String email, String disciplinasqueministra) {
    super(logradouro, numero, bairro, cidade, UF, telefone, email, disciplinasqueministra);
}

}

package cadastro;

public class Pessoajuridica extends Cadastro {

 String razaosocial, nomefantasia, inscricaomunicipal, inscricaoestadual, CNPJ, website;

public Pessoajuridica(String logradouro, String numero, String bairro, String cidade, String UF, String telefone, String email, String disciplinasqueministra) {
    super(logradouro, numero, bairro, cidade, UF, telefone, email, disciplinasqueministra);
}

}

\\\\\\\\\\\\\\\

Eu estava pensando em primeiramente entrar com o JOptionPane, e solicitar se o cadastro é de pessoa física ou jurídica. Se possível, com um IF e Else, dependendo da resposta de pessoa, ele já encaminhava ela para as solicitações certas, e depois registrasse os dados com sucesso. Simples assim.

Sabe me ajudar com isso?

Existe alguma forma de fazer da maneira como eu disse, ou de outra forma?

Agradeço o retorno.

Mas você precisa fazer isso? Essa parte de JOptionPane, entrar com dados e tal, é parte da interface do sistema, da UI. O exercício pede para criar apenas as classes de modelo. Talvez tenha recebido mais instruções do que tem no enunciado, mas apenas lendo, essa parte parece desnecessária.

De resto você parece estar fazendo certo. Alguns comentários:

  • Ao invés de Cadastro, um melhor nome para a classe seria Colaborador, já que é assim que o enunciado do exercício chama.
  • Você poderia juntar logradouro, numero, bairro, cidade e uf, numa classe Endereco. Até pra diminuir o número de parâmetros.

Mas no geral você parece estar fazendo o que o exercício pede!

Tudo bem, eu agradeço! Valeu man!

Tem um outro exercício que eu não consegui fazer até agora, se puder me ajudar!
Em java, calcular volume = altura*(base*comprimento)
não está dando certo!

Este:

Trabalhar com encapsulamento em orientação a objetos pode nos trazer muitas vantagens, como diminuir a complexidade no desenvolvimento da aplicação; entretanto, é importante termos um bom conhecimento sobre o assunto para aplicarmos da melhor forma em nossos projetos.
Você trabalha como analista/programador em uma fábrica de software e foi encarregado de criar uma aplicação que calcule o volume de concreto para o trabalho com vigas em construção civil. Sabe-se que a fórmula para o cálculo deste volume é (base x altura x comprimento).
O cliente necessita de uma aplicação que solicite, via caixa de diálogo, os dados referentes à base, altura e comprimento das vigas a serem trabalhadas e seja informado o resultado através de uma caixa de mensagem.

Sua tarefa é implementar esta aplicação em uma linguagem de programação orientada a objetos; faça uso das técnicas de encapsulamento.

Teu professor acertou quando afirmou o seguinte:

Orientação a objetos pode nos trazer muitas vantagens, como diminuir a complexidade no desenvolvimento da aplicação

Aparentemente ele ignorou completamente a frase abaixo ao elaborar o exercício, ou ele também não possui um bom conhecimento sobre o assunto:

É importante termos um bom conhecimento sobre o assunto para aplicarmos da melhor forma em nossos projetos.

Isso é o tipo de coisa que me desaponta nas universidades e em alguns cursos: A solução do problema é simplesmente implementar uma função de 3 parâmetros.
Mas o professor obriga a utilizar orientação à objetos e encapsulamento num cenário onde não precisa.

Aí o que acontece?
Injeta complexidade na solução do problema e os alunos saem por aí achando que programação orientada a objetos significa criar meia dúzia de classes dependentes entre si e fazer elas trocarem mensagens alucinadamente.
:rage:

Você poderia simplesmente fazer uma classe utilitária Volume assim:

public class Volume {

    public static double calcular(double base, double altura, double comprimento) {
        return base * altura * comprimento;
    }
}

E usar dessa forma:

double base = Double.parseDouble(JOptionPane.showInputDialog("Base: "));
double altura = Double.parseDouble(JOptionPane.showInputDialog("Altura: "));
double comprimento = Double.parseDouble(JOptionPane.showInputDialog("Comprimento: "));
double volume = Volume.calcular(base, altura, comprimento);
JOptionPane.showMessageDialog(null, base + " | " + altura + " | " + comprimento + " | " + "O volume é: " + volume);

Mas como você é obrigado a usar encapsulamento, você tem que forçar a barra e fazer uma classe Volume dessa forma:

public class Volume {

    private double base;
    private double altura;
    private double comprimento;

    public double getBase() {
        return base;
    }

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

    public double getAltura() {
        return altura;
    }

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

    public double getComprimento() {
        return comprimento;
    }

    public void setComprimento(double comprimento) {
        this.comprimento = comprimento;
    }

    public double calcular() {
        return base * altura * comprimento;
    }
}

E utilizar assim:

Volume volume = new Volume();
volume.setBase(Double.parseDouble(JOptionPane.showInputDialog("Base: ")));
volume.setAltura(Double.parseDouble(JOptionPane.showInputDialog("Altura: ")));
volume.setComprimento(Double.parseDouble(JOptionPane.showInputDialog("Comprimento: ")));
JOptionPane.showMessageDialog(null, volume.getBase() + " | " + volume.getAltura() + " | " + volume.getComprimento() + " | " + "O volume é: " + volume.calcular());
3 curtidas

Valeu, agradeço por compartilhar!

1 curtida