0% acharam este documento útil (0 voto)
0 visualizações7 páginas

Java 2

O documento apresenta uma implementação em Java de um sistema de comércio eletrônico, incluindo uma exceção personalizada para preços inválidos, uma interface para garantia, e classes abstratas e concretas para produtos eletrônicos como smartphones e notebooks. O sistema permite cadastrar, alterar, excluir e listar produtos, além de calcular preços finais com descontos e frete, e fornecer garantias estendidas. A classe principal contém um menu interativo para o usuário gerenciar os produtos.

Enviado por

yanwillames02
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
0 visualizações7 páginas

Java 2

O documento apresenta uma implementação em Java de um sistema de comércio eletrônico, incluindo uma exceção personalizada para preços inválidos, uma interface para garantia, e classes abstratas e concretas para produtos eletrônicos como smartphones e notebooks. O sistema permite cadastrar, alterar, excluir e listar produtos, além de calcular preços finais com descontos e frete, e fornecer garantias estendidas. A classe principal contém um menu interativo para o usuário gerenciar os produtos.

Enviado por

yanwillames02
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Aqui está a solução completa em Java atendendo a todos os requisitos solicitados na questão.

1. Exceção Personalizada
([Link])
public class PrecoInvalidoException extends Exception {
public PrecoInvalidoException(String mensagem) {
super(mensagem);
}
}

2. Interface ([Link])
public interface Garantia {
double calcularGarantiaEstendida(int meses);
}

3. Classe Abstrata Base ([Link])


public abstract class Produto {
private int codigo;
private String nome;
private double preco;

public Produto(int codigo, String nome, double preco) throws


PrecoInvalidoException {
if (preco <= 0) {
throw new PrecoInvalidoException("Erro: O preço do produto
deve ser maior que zero.");
}
[Link] = codigo;
[Link] = nome;
[Link] = preco;
}

// Método abstrato para calcular o preço final


public abstract double calcularPrecoFinal();

// Sobrecarga de métodos: sem desconto


public double calcularPrecoFinal(double percentualDesconto) throws
PrecoInvalidoException {
if (percentualDesconto > 50) {
throw new PrecoInvalidoException("Erro: O desconto não
pode ser maior que 50%.");
}
return [Link] * (1 - percentualDesconto / 100.0);
}
// Sobrecarga de métodos: com desconto e frete
public double calcularPrecoFinal(double percentualDesconto, double
valorFrete) throws PrecoInvalidoException {
return calcularPrecoFinal(percentualDesconto) + valorFrete;
}

// Getters e Setters
public int getCodigo() { return codigo; }
public void setCodigo(int codigo) { [Link] = codigo; }

public String getNome() { return nome; }


public void setNome(String nome) { [Link] = nome; }

public double getPreco() { return preco; }


public void setPreco(double preco) throws PrecoInvalidoException {
if (preco <= 0) {
throw new PrecoInvalidoException("Erro: O preço do produto
deve ser maior que zero.");
}
[Link] = preco;
}

@Override
public String toString() {
return "Código: " + codigo + " | Nome: " + nome + " | Preço
Base: R$ " + [Link]("%.2f", preco);
}
}

4. Classe Intermediária ([Link])


public abstract class ProdutoEletronico extends Produto {
private int voltagem; // Atributo específico para eletrônicos

public ProdutoEletronico(int codigo, String nome, double preco,


int voltagem) throws PrecoInvalidoException {
super(codigo, nome, preco); // Uso do super para inicializar
atributos herdados
[Link] = voltagem;
}

public int getVoltagem() { return voltagem; }


public void setVoltagem(int voltagem) { [Link] =
voltagem; }
}

5. Subclasses Concretas ([Link] e


[Link])
[Link]
public class Smartphone extends ProdutoEletronico implements Garantia
{
private int memoriaRam;

public Smartphone(int codigo, String nome, double preco, int


voltagem, int memoriaRam) throws PrecoInvalidoException {
super(codigo, nome, preco, voltagem);
[Link] = memoriaRam;
}

@Override
public double calcularPrecoFinal() {
// Exemplo de regra específica para o preço final padrão do
Smartphone (ex: taxa/imposto de 5%)
return getPreco() * 1.05;
}

@Override
public double calcularGarantiaEstendida(int meses) {
// Custa R$ 15 por mês de garantia estendida
return meses * 15.0;
}

@Override
public String toString() {
return "[Smartphone] " + [Link]() + " | Voltagem: " +
getVoltagem() + "V | RAM: " + memoriaRam + "GB";
}
}

[Link]
public class Notebook extends ProdutoEletronico implements Garantia {
private String processador;

public Notebook(int codigo, String nome, double preco, int


voltagem, String processador) throws PrecoInvalidoException {
super(codigo, nome, preco, voltagem);
[Link] = processador;
}

@Override
public double calcularPrecoFinal() {
// Exemplo de regra específica para o preço final padrão do
Notebook (ex: taxa/imposto de 8%)
return getPreco() * 1.08;
}

@Override
public double calcularGarantiaEstendida(int meses) {
// Custa R$ 30 por mês de garantia estendida
return meses * 30.0;
}

@Override
public String toString() {
return "[Notebook] " + [Link]() + " | Voltagem: " +
getVoltagem() + "V | Processador: " + processador;
}
}

6. Classe Principal com Menu ([Link])


import [Link];
import [Link];

public class Main {


private static ArrayList<Produto> listaProdutos = new
ArrayList<>();
private static Scanner scanner = new Scanner([Link]);

public static void main(String[] args) {


int opcao = -1;

while (opcao != 0) {
[Link]("\n--- SISTEMA DE COMÉRCIO ELETRÔNICO
---");
[Link]("1. Cadastrar Produto");
[Link]("2. Alterar Produto");
[Link]("3. Excluir Produto");
[Link]("4. Buscar / Listar Produtos");
[Link]("0. Sair");
[Link]("Escolha uma opção: ");

try {
opcao = [Link]([Link]());

switch (opcao) {
case 1 -> cadastrarProduto();
case 2 -> alterarProduto();
case 3 -> excluirProduto();
case 4 -> buscarProdutos();
case 0 -> [Link]("Saindo do
sistema...");
default -> [Link]("Opção inválida!");
}
} catch (NumberFormatException e) {
[Link]("Erro: Digite apenas números
válidos.");
} catch (PrecoInvalidoException e) {
// Captura e tratamento da exceção personalizada
propagada
[Link]("SISTEMA DE EXCEÇÃO: " +
[Link]());
}
}
}

private static void cadastrarProduto() throws


PrecoInvalidoException {
[Link]("\nTipo de produto: 1. Smartphone | 2.
Notebook");
int tipo = [Link]([Link]());

[Link]("Código: ");
int codigo = [Link]([Link]());

[Link]("Nome: ");
String nome = [Link]();

[Link]("Preço Base: ");


double preco = [Link]([Link]());

[Link]("Voltagem (110/220): ");


int voltagem = [Link]([Link]());

if (tipo == 1) {
[Link]("Memória RAM (GB): ");
int ram = [Link]([Link]());
[Link](new Smartphone(codigo, nome, preco,
voltagem, ram));
[Link]("Smartphone cadastrado com sucesso!");
} else if (tipo == 2) {
[Link]("Processador: ");
String proc = [Link]();
[Link](new Notebook(codigo, nome, preco,
voltagem, proc));
[Link]("Notebook cadastrado com sucesso!");
} else {
[Link]("Tipo inválido.");
}
}

private static void alterarProduto() throws PrecoInvalidoException


{
[Link]("Digite o código do produto que deseja
alterar: ");
int codigo = [Link]([Link]());

Produto p = buscarPorCodigo(codigo);
if (p == null) {
[Link]("Produto não encontrado.");
return;
}

[Link]("Novo Nome (" + [Link]() + "): ");


String novoNome = [Link]();
if (![Link]()) [Link](novoNome);

[Link]("Novo Preço Base (" + [Link]() + "): ");


String novoPrecoStr = [Link]();
if (![Link]()) {
double novoPreco = [Link](novoPrecoStr);
[Link](novoPreco);
}

[Link]("Produto atualizado com sucesso!");


}

private static void excluirProduto() {


[Link]("Digite o código do produto que deseja
excluir: ");
int codigo = [Link]([Link]());

Produto p = buscarPorCodigo(codigo);
if (p != null) {
[Link](p);
[Link]("Produto removido com sucesso!");
} else {
[Link]("Produto não encontrado.");
}
}

private static void buscarProdutos() throws PrecoInvalidoException


{
if ([Link]()) {
[Link]("Nenhum produto cadastrado.");
return;
}

[Link]("\n--- LISTA DE PRODUTOS E PREÇOS


CALCULADOS ---");
[Link]("Deseja aplicar um percentual de desconto
para a lista (0 para nenhum)? ");
double desconto = [Link]([Link]());

[Link]("Deseja incluir valor de frete (0 para


nenhum)? ");
double frete = [Link]([Link]());
for (Produto p : listaProdutos) {
[Link](p);

// Polimorfismo e chamada aos métodos sobrecarregados


double precoFinal;
if (desconto == 0 && frete == 0) {
precoFinal = [Link](); // Sobreescrito
por classe
} else if (frete == 0) {
precoFinal = [Link](desconto); //
Sobrecarga (com desconto)
} else {
precoFinal = [Link](desconto, frete); //
Sobrecarga (com desconto e frete)
}

[Link](" -> Preço Final Calculado: R$ %.2f\


n", precoFinal);

if (p instanceof Garantia) {
Garantia g = (Garantia) p;
[Link](" -> Garantia Estendida de 12
meses: R$ %.2f\n", [Link](12));
}

[Link]("--------------------------------------------------
");
}
}

private static Produto buscarPorCodigo(int codigo) {


for (Produto p : listaProdutos) {
if ([Link]() == codigo) return p;
}
return null;
}
}

Você também pode gostar