Ajuda a resolver questao, URGENTE

5 respostas
java
L

Tenho essa questao

  1. Desenvolver um programa para um comércio utilizando os conceitos de orientação a objetos (É obrigatório o uso de herança). O programa deve contemplar as seguintes características:
  • O comércio deve ter como atributos seu nome e seu CNPJ.
  • O comércio deve possuir um estoque com dois tipos de produtos: perecíveis e não perecíveis. Os produtos têm em comum um nome, descrição e preço. Produtos perecíveis devem ter data de validade e os não perecíveis uma marcação indicando se são recicláveis ou não.
  • É possível adicionar novos produtos ao estoque e classificá-los em uma das categorias.
  • Após a venda do produto, este deve ser excluído do estoque.
  • Deve fornecer uma funcionalidade para atualizar as informações dos produtos.
  • É possível ajustar o preço dos produtos de forma geral ou considerando sua categoria específica

ja criei as classes:

package comercio;

public class Supermercado {

private String nome = "Robson Market";
private String Cnpj = "11223344/0001-42";


public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getCnpj() {
	return Cnpj;
}
public void setCnpj(String cnpj) {
	Cnpj = cnpj;
}

public static void main(String[] args) {
	

	
}

}

public class CriarProduto {

public static void main(String[] args) {
	
	Produtos produto = new Produtos();

	  produto.codigo = 1;
	  produto.nome = "refrigerante";
	  produto.preco = 2.0;

	  System.out.println("código do produto: " + produto.codigo);
	  System.out.println("nome do produto: " + produto.nome);
	  System.out.println("valor do produto " + produto.preco);

	  Produtos produto2 = new Produtos();

	  produto2.codigo = 2;
	  produto2.nome = "suco";
	  produto2.preco = 1.0;

	  System.out.println("código do produto: " + produto2.codigo);
	  System.out.println("nome do produto: " + produto2.nome);
	  System.out.println("valor do produto " + produto2.preco);

	 }
	}

package comercio;

import java.util.Date;
import javax.swing.JOptionPane;

public class Produtos {

public String nome;
public String descricao;
public Date dataValidade;
public double preco;
public int codigo;


public String getNome() {
	return nome;
}

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

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public Date getDataValidade() {
	return dataValidade;
}

public void setDataValidade(Date dataValidade) {
	this.dataValidade = dataValidade;
}

public double getPreco() {
	return preco;
}

public void setPreco(double preco) {
	this.preco = preco;
}

public int getCodigo() {
	return codigo;
}

public void setCodigo(int codigo) {
	this.codigo = codigo;
}


private void exibirProdutos() {
	JOptionPane.showMessageDialog(null,"Nome do produto: " + nome + "\nDescricao: " + descricao + "\nData de Validade: " + dataValidade + "\nValor do Produto: " + preco);
	
}

}
Mas nao sei se ta certo e como termina Alguem me help please!!!

5 Respostas

S

O nome dessa class deveria ser no singular pois cada objeto dela representa um único produto.

Se tem método get e set então esses atributos deveriam ser private.

O enunciado obriga a usar herança, neste caso eu faria Produto ser uma classe abstrata e criaria duas subclasses: Perecivel e NaoPerecivel.

W

Saudações amigo, essa hierarquia é simples!

A classe PRODUTO deve ser uma classe PAI FINAL para ser herdada e deverá ter os seguintes atributos:

  • Nome.
  • Descrição
  • Preço
  • Estoque
    Esses atributos são base para qualquer tipo de produto.

Agora crie uma classe ProdutoPerecível, e adicione o atributo DataValidade e algum outro se tiver.
E crie uma classe de ProdutoNão Perecível.

Herde esses duas classes da classe PRODUTO.

  • CRIE UMA FUNÇÃO DE CADASTRO NA CLASSE PAI PRODUTO, e REESCREVA ELA APENAS NA CLASSE PRODUTO PERECÍVEL, POIS É A ÚNICA QUE PRECISARÁ DE UM ATRIBUTO A MAIS → DATA DE VALIDADE.
S

Se for final não pode ser classe pai pois classes final não podem ser estendidas.

L

Certo, criei essa classe, mas essa outra parte nao entendi de classe abstrata e herança , nao foi ensinado muito bem no curso , vou tentar estudar agora nas ferias pra coseguir entender, muito confuso pra mim,

import java.time.LocalDate;

public class ProdutoPerecivel {

private LocalDate validade;
private boolean refrigerado;

public LocalDate getValidade() {
    return validade;
}

public void setValidade(LocalDate validade) {
    this.validade = validade;
}

public boolean getRefrigerado(){
    return refrigerado;
}

public void setRefrigerado(boolean refrigerado) {
    this.refrigerado=refrigerado;
}

private String getValorUnitario() {
	return null;
}

private String getNome() {
	return null;
}

private String getCodigo() {
	return null;
}


public void Perecivel(LocalDate validade, boolean refrigerado) {
    this.validade = validade;
    this.refrigerado = refrigerado;
}

public String Imprimir(){
    return
           "Código do produto: " +getCodigo()+
           "\nNome do produto: " +getNome()+
           "\nValor unitário por produto: " +getValorUnitario()+
           "\nData de validade: " +validade+
           "\nDescricao refrigerado? " +refrigerado;
            

}

}

S

A classe Produto seria assim:

public abstract class Produto {

    private String nome;
    private String descricao;
    private double preco;

    // getters e setters
}

Aí modifica a declaração do seu ProdutoPerecivel assim:

public class ProdutoPerecivel extends Produto {
Criado 18 de dezembro de 2022
Ultima resposta 19 de dez. de 2022
Respostas 5
Participantes 3