Descrição das regras de negócio:
Uma loja vende 3 tipos de produto: livro, CD e software. Para todos os produtos existe código, descrição,
preço e peso. Para o CD existe o nome da banda, para o livro existe o nome do autor e para o software
existe a categoria. Para entregar um produto, o cálculo do frete é feito multiplicando o peso do produto
por R$ 6,50. Implemente as classes que retratam esse cenário.
Programa:
O programa deve permitir ao usuário informar qual é o tipo de produto (livro, CD ou software) e, com
base nesta resposta, solicitar o preenchimento dos atributos de cada tipo de produto. Em seguida, calcular
o valor do frete e imprimir os dados do produto e o valor do frete.
Obs.: tanto a leitura dos valores quando a impressão devem ser realizadas pelo terminal
posta ai o que já fez ate agora e qual parte do seu código vc está com duvida
ainda não consegui sair do zero, o professor passou essa atividade só que não tivemos aula presencial devido as escolas estarem fechadas. estou muito perdido
Basicamente vc criara uma classe abstrata Produto e nela voce criara todas as variaveis necessarias(codigo, descrição, preço,peso),criara os métodos Getter e Setter e por fim criara o metodo calcularFrete que retornara um double, depois criara uma classe para cada tipo de produto (livro, CD, software) e extendera de Produto. No final terá 4 Classes (Produto, Livro, CD, Software). Na classe de teste, dentro do seu método main vc criara um objeto Produto sem instancia e um int que recuperará um numero que o usuario digitar, depois disso irá associar 1 = Livro, 2 = CD, 3 = Software e fazer os if’s, dentro dos if’s, baseado na escolha do usuario, vc instancia o objeto Produto com a classe do objeto em questão (Livro,CD,Software) recupera o que o usuario digitar e utiliza os getter e setter. depois é só exibir. Seria legal sobreescrever o método toString tambem, assim depois de setados os valores bastaria vc chamar a classe dentro do system.out
Agora se tu não conseguir fazer o que eu expliquei acima não vou conseguir te ajudar
vllw mano.
Conseguiu ?
package Loja;
public class Produto {
private int código;
private String descrição;
private Double preco;
private Double peso;
public int getCódigo() {
return código;
}
public void setCódigo(int código) {
this.código = código;
}
public String getDescrição() {
return descrição;
}
public void setDescrição(String descrição) {
this.descrição = descrição;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
public Double getPeso() {
return peso;
}
public void setPeso(Double peso) {
this.peso = peso;
}
private Double calculaFrete(){
return getPeso() * 6.50;
}
@Override
public String toString() {
return "Produto [ " + " Codigo: " + código + " Descricao: " + descrição + " Preco: " + preco + " Peso: " + peso + "Frete "+calculaFrete() +']';
}
}
package Loja;
public class Livro extends Produto {
}
package Loja;
public class CD extends Produto {
}
package Loja;
public class Software extends Produto {
}
package Loja;
import java.util.Scanner;
public class Teste {
public static int menu(){
Scanner scan = new Scanner(System.in);
System.out.println("Esolha um produto ");
System.out.println("Livro - 1");
System.out.println("Software - 2");
System.out.println("CD - 3");
System.out.println("Sair - 4");
int opcao = scan.nextInt();
if (opcao <= 0 || opcao >= 5) {
System.out.println("Incorreto");
menu();
}
return opcao;
}
public static void main(String[] args) {
//menu
switch (Teste.menu()) {
case 1: Produto livro = new Produto();
livro.setCódigo(145);
livro.setDescrição("Mar vermelho");
livro.setPeso(5.6);
livro.setPreco(44.33);
System.out.println(livro.toString());
break;
}
}
}
esse método não deve ser sobrescrito aqui, e sim nas classes “filhas”
instanciando assim qual o motivo de ter criado as classes Livro, CD e Software ?
o correto é cada case uma instancia diferente ex.: Produto livro = new Livro();
não é necessário esse .toString() o proprio system.out ja chama o toString da classe, pr isso é melhor sobrescrever o toString em cada classe, assim, alem dos atributos que seu professor pediu vc tbm pode retornar o tipo do produto
Como nas classes CD, Livro e Software não tinham metodos nem atrbutos incomuns, poderia ser feito apenas instanciando Produto. O que não seria o correto claro. Fiz com alguns erros mesmo, só para ele ter uma noção de como fazer
Perai, perai.
Por que você tá repetindo o post com OS MESMOS ERROS que eu te indiquei
nesse post?
Qual é, pô. Eu entendo que a vontade de copiar e colar uma resposta pode ser grande, mas pelo menos faz o post conforme te indiquei.
Brincadeira, hein.
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
String descricao="";
String codigo="";
double peso=0;
String CVTpeso="";
double preco=0;
String CVTpreco="";
produtos pdts=new produtos(descricao, codigo, peso, preco);
livros lvs=new software(descricao, codigo, peso, preco);
software stfw= new software(descricao, codigo, peso, preco);
cd CD=new cd (descricao, codigo, peso, preco);
System.out.println( "Digite uma dessas opções: cd, livro, software");
String opcao=teclado.nextLine();
switch(opcao) {
case "cd":
System.out.println("banda ?");
lvs.banda=teclado.nextLine();
System.out.println("descrição ?");
lvs.descricao=teclado.nextLine();
System.out.println(" codigo ?");
lvs.codigo=teclado.nextLine();
System.out.println("peso ?");
CVTpeso=teclado.nextLine();
lvs.peso= Double.parseDouble(CVTpeso);
System.out.println(" preco ?");
CVTpreco= teclado.nextLine();
lvs.preco= Double.parseDouble(CVTpreco);
System.out.println(lvs.informacoes());
break;
case "livros":
System.out.println("autor ?");
lvs.autor=teclado.nextLine();
System.out.println("descrição ?");
lvs.descricao=teclado.nextLine();
System.out.println(" codigo ?");
lvs.codigo=teclado.nextLine();
System.out.println("peso ?");
CVTpeso=teclado.nextLine();
lvs.peso= Double.parseDouble(CVTpeso);
System.out.println(" preco ?");
CVTpreco= teclado.nextLine();
lvs.preco= Double.parseDouble(CVTpreco);
System.out.println(lvs.informacoes());
break;
case "software":
System.out.println("categoria ?");
lvs.categoria=teclado.nextLine();
System.out.println("descrição ?");
lvs.descricao=teclado.nextLine();
System.out.println(" codigo ?");
lvs.codigo=teclado.nextLine();
System.out.println("peso ?");
CVTpeso=teclado.nextLine();
lvs.peso= Double.parseDouble(CVTpeso);
System.out.println(" preco ?");
CVTpreco= teclado.nextLine();
lvs.preco= Double.parseDouble(CVTpreco);
System.out.println(lvs.informacoes());
}
}
}
eu fiz assim, só que não estou conseguindo calcular o frete
o frete será o peso * 6.50 crie um método que faça esse calculo e chameo após receber os dados (peso no caso) , se ja tiver fazendo assim e dando erro tenta substituir os pontos por virgula, tanto na declaração qto no calculo, configuração de teclado pt usa virgula e us usa ponto.
***EDIT
não tinha visto seu código com atenção, vi só agora, vamos la, a classe “Produtos” deve ser abstrata, logo ela não poderá ser instanciada e deve ser extendida, nela vc criará os atributos ( descrição, codigo, peso, preço), os métodos getter e setter e o método calcularFrete. Fez isso blza, vc criara as classes que serão filhas de “Produtos” (Livros, CD, Software) e todas elas extenderão de produtos, logo herdarão os atributos. Dentro de cada classe filha vc sobreescrevera o método toString e dentro dele chama os atributos getter (getDescricao, getPeso etc.), chame o método calcularFrete() por ultimo e também ja especifica o tipo do produto (ex.: dentro da classe livro vc ja deixa especificado que é um livro) assim dispença o usuario ter que digitar o tipo do produto novamente. No seu método main vc criara uma variavel que vai recuperar um int (que o usuario digitar no caso) e criara um while dizendo que enquanto o usuario entrar com um numero menor que 1 ou maior que 3 o numero é invalido e pedira novamente ao usuario para digitar um numero, digitado o numero valido vc criara um objeto Produto produto porem não o instanciara (não vai fazer = new Produto()) e criara o switch(int que o usuario digitou) dai
case 1:
produto = new Livro();
System.out.println("Qual a descrição do livro?)
produto.setDescricao(new Scanner(System.in).next());
…
e assim por diante, por fim basta chamar o System.out.println(produto);
(para organizar a exibição da forma que vc quiser, organiza dentro dos metodos toString sobreescritos)
ta ai
eu só repeti porque a primeira vez que fui postar, achei que não tinha ido
eu nao estou conseguindo fazer este código que é um pouco diferente do seu: ~
1Crie uma hierarquia de classes para uma loja que venda livros, CDs e DVDs.
2. Sobrescreva o método imptimir() para que imprima:
a. Para livros: nome, preço e autor;
b. Para CDs: nome, preço e número de faixas;
c. Para DVDs: nome, preço e duração.
3. Evite ao máximo repetição de código, use os conceitos adquiridos de POO.
4. No método main() adicione 5 produtos diferentes (à sua escolha) a um vetor e, por fim, imprima o conteúdo
do vetor.