Logo Passei Direto
Buscar

Trabalho acadêmico sobre um sistema de gestão para venda de Desktops, Notebooks e Servidores, aplicando POO (herança e agregação). Contém código Java (Computador.java e Desktop.java), programa de teste interativo, testes documentados e código aberto anexado.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

CENTRO UNIVERSITÁRIO JORGE AMADO
Sistemas de Informação EAD
  
Aluno: Matheus Lino Lima
Matrícula: 2230203277
Disciplina: Programação Orientada a Objetos II
Tutor: LUCIANO DE PINNA VIEIRA
AVA 1
Salvador/BA
2025
· Introdução
Meu intuito neste trabalho foi criar um sistema de gestão para uma empresa que vende Desktops, Notebooks e Servidores. Para organizar a estrutura do software, vou aplicar princípios da Programação Orientada a Objetos, usando a herança para lidar com as características comuns entre os produtos e a agregação/particionamento para montar suas especificidades. O desenvolvimento seguirá com a codificação das classes e de um programa de teste interativo, que solicitará ao usuário os dados dos computadores. Ao final, apresentarei a documentação dos testes realizados para comprovar o funcionamento da aplicação, além disso a aplicação, de código totalmente aberto estará anexada ao trabalho.
· Testes
-Início da aplicação e teste da classe Desktop:
- Teste da classe Notebook:	
-Teste da Classe Servidor:
· Códigos nos arquivos
· Computador.java:
import java.util.Scanner;
public abstract class Computador {
 protected String marca;
 protected double preco;
 protected int quantidade;
 
 public Computador(String marca, double preco, int quantidade) {
 this.marca = marca;
 this.preco = preco;
 this.quantidade = quantidade;
 }
 
 public Computador(String marca, double preco) {
 this.marca = marca;
 this.preco = preco;
 this.quantidade = 1;
 }
 
 public Computador() {
 this.marca = "Genérica";
 this.preco = 0.0;
 this.quantidade = 0;
 }
 
 public Computador(String marca, int quantidade) {
 this.marca = marca;
 this.preco = 0.0;
 this.quantidade = quantidade;
 }
 
 public Computador(Computador outro) {
 this.marca = outro.marca;
 this.preco = outro.preco;
 this.quantidade = outro.quantidade;
 }
 
 public String getMarca() { return marca; }
 public void setMarca(String marca) { this.marca = marca; }
 public double getPreco() { return preco; }
 public void setPreco(double preco) { this.preco = preco; }
 public int getQuantidade() { return quantidade; }
 public void setQuantidade(int quantidade) { this.quantidade = quantidade; }
 
 public abstract String getTipo();
 public abstract double calcularValorTotal();
 
 public void imprimir() {
 System.out.println("=== INFORMAÇÕES BÁSICAS ===");
 System.out.println("Tipo: " + getTipo());
 System.out.println("Marca: " + marca);
 System.out.println("Preço: R$ " + String.format("%.2f", preco));
 System.out.println("Quantidade: " + quantidade);
 System.out.println("Valor Total: R$ " + String.format("%.2f", calcularValorTotal()));
 }
 
 public void cadastrar(String marca, double preco, int quantidade) {
 this.marca = marca;
 this.preco = preco;
 this.quantidade = quantidade;
 }
 
 public void entrada() {
 Scanner scanner = new Scanner(System.in);
 System.out.println("=== CADASTRO DE " + getTipo().toUpperCase() + " ===");
 System.out.print("Digite a marca: ");
 this.marca = scanner.nextLine();
 System.out.print("Digite o preço: R$ ");
 this.preco = scanner.nextDouble();
 System.out.print("Digite a quantidade: ");
 this.quantidade = scanner.nextInt();
 }
 
 public double valorEstoque() {
 return quantidade * preco;
 }
}
- Desktop.java
import java.util.Scanner;
public class Desktop extends Computador {
 private int placasVideo;
 private String tipoMemoria;
 private String marcaMemoria;
 private int numeroSlotsMemoria;
 private String tipoHD;
 private String marcaHD;
 private int capacidadeHD;
 private String tipoMonitor;
 private String marcaMonitor;
 private int resolucaoMonitor;
 private String tipoFonte;
 private String marcaFonte;
 private int potenciaFonte;
 private String marcaPlacaVideo;
 
 public Desktop(String marca, double preco, int quantidade, int placasVideo,
 String tipoMemoria, String marcaMemoria, int numeroSlotsMemoria,
 String tipoHD, String marcaHD, int capacidadeHD,
 String tipoMonitor, String marcaMonitor, int resolucaoMonitor,
 String tipoFonte, String marcaFonte, int potenciaFonte,
 String marcaPlacaVideo) {
 super(marca, preco, quantidade);
 this.placasVideo = placasVideo;
 this.tipoMemoria = tipoMemoria;
 this.marcaMemoria = marcaMemoria;
 this.numeroSlotsMemoria = numeroSlotsMemoria;
 this.tipoHD = tipoHD;
 this.marcaHD = marcaHD;
 this.capacidadeHD = capacidadeHD;
 this.tipoMonitor = tipoMonitor;
 this.marcaMonitor = marcaMonitor;
 this.resolucaoMonitor = resolucaoMonitor;
 this.tipoFonte = tipoFonte;
 this.marcaFonte = marcaFonte;
 this.potenciaFonte = potenciaFonte;
 this.marcaPlacaVideo = marcaPlacaVideo;
 }
 
 public Desktop(String marca, double preco, int quantidade) {
 super(marca, preco, quantidade);
 this.placasVideo = 1;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.numeroSlotsMemoria = 4;
 this.tipoHD = "SSD";
 this.marcaHD = "Samsung";
 this.capacidadeHD = 512;
 this.tipoMonitor = "LED";
 this.marcaMonitor = "LG";
 this.resolucaoMonitor = 1920;
 this.tipoFonte = "ATX";
 this.marcaFonte = "Corsair";
 this.potenciaFonte = 650;
 this.marcaPlacaVideo = "NVIDIA";
 }
 
 public Desktop(String marca, double preco, int quantidade, int placasVideo,
 String tipoMemoria, String marcaMemoria, int numeroSlotsMemoria,
 String marcaPlacaVideo) {
 super(marca, preco, quantidade);
 this.placasVideo = placasVideo;
 this.tipoMemoria = tipoMemoria;
 this.marcaMemoria = marcaMemoria;
 this.numeroSlotsMemoria = numeroSlotsMemoria;
 this.marcaPlacaVideo = marcaPlacaVideo;
 this.tipoHD = "NVMe";
 this.marcaHD = "Western Digital";
 this.capacidadeHD = 1024;
 this.tipoMonitor = "IPS";
 this.marcaMonitor = "ASUS";
 this.resolucaoMonitor = 2560;
 this.tipoFonte = "Modular";
 this.marcaFonte = "EVGA";
 this.potenciaFonte = 850;
 }
 
 public Desktop(String marca, double preco, int quantidade, String tipoHD,
 String marcaHD, int capacidadeHD, String tipoMonitor,
 String marcaMonitor, int resolucaoMonitor) {
 super(marca, preco, quantidade);
 this.tipoHD = tipoHD;
 this.marcaHD = marcaHD;
 this.capacidadeHD = capacidadeHD;
 this.tipoMonitor = tipoMonitor;
 this.marcaMonitor = marcaMonitor;
 this.resolucaoMonitor = resolucaoMonitor;
 this.placasVideo = 1;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.numeroSlotsMemoria = 4;
 this.tipoFonte = "ATX";
 this.marcaFonte = "Corsair";
 this.potenciaFonte = 650;
 this.marcaPlacaVideo = "NVIDIA";
 }
 
 public Desktop() {
 super();
 this.placasVideo = 1;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.numeroSlotsMemoria = 4;
 this.tipoHD = "SSD";
 this.marcaHD = "Samsung";
 this.capacidadeHD = 512;
 this.tipoMonitor = "LED";
 this.marcaMonitor = "LG";
 this.resolucaoMonitor = 1920;
 this.tipoFonte = "ATX";
 this.marcaFonte = "Corsair";
 this.potenciaFonte = 650;
 this.marcaPlacaVideo = "NVIDIA";
 }
 
 public int getPlacasVideo() { return placasVideo; }
 public void setPlacasVideo(int placasVideo) { this.placasVideo = placasVideo; }public String getTipoMemoria() { return tipoMemoria; }
 public void setTipoMemoria(String tipoMemoria) { this.tipoMemoria = tipoMemoria; }
 
 public String getMarcaMemoria() { return marcaMemoria; }
 public void setMarcaMemoria(String marcaMemoria) { this.marcaMemoria = marcaMemoria; }
 
 public int getNumeroSlotsMemoria() { return numeroSlotsMemoria; }
 public void setNumeroSlotsMemoria(int numeroSlotsMemoria) { this.numeroSlotsMemoria = numeroSlotsMemoria; }
 
 public String getTipoHD() { return tipoHD; }
 public void setTipoHD(String tipoHD) { this.tipoHD = tipoHD; }
 
 public String getMarcaHD() { return marcaHD; }
 public void setMarcaHD(String marcaHD) { this.marcaHD = marcaHD; }
 
 public int getCapacidadeHD() { return capacidadeHD; }
 public void setCapacidadeHD(int capacidadeHD) { this.capacidadeHD = capacidadeHD; }
 
 public String getTipoMonitor() { return tipoMonitor; }
 public void setTipoMonitor(String tipoMonitor) { this.tipoMonitor = tipoMonitor; }
 
 public String getMarcaMonitor() { return marcaMonitor; }
 public void setMarcaMonitor(String marcaMonitor) { this.marcaMonitor = marcaMonitor; }
 
 public int getResolucaoMonitor() { return resolucaoMonitor; }
 public void setResolucaoMonitor(int resolucaoMonitor) { this.resolucaoMonitor = resolucaoMonitor; }
 
 public String getTipoFonte() { return tipoFonte; }
 public void setTipoFonte(String tipoFonte) { this.tipoFonte = tipoFonte; }
 
 public String getMarcaFonte() { return marcaFonte; }
 public void setMarcaFonte(String marcaFonte) { this.marcaFonte = marcaFonte; }
 
 public int getPotenciaFonte() { return potenciaFonte; }
 public void setPotenciaFonte(int potenciaFonte) { this.potenciaFonte = potenciaFonte; }
 
 public String getMarcaPlacaVideo() { return marcaPlacaVideo; }
 public void setMarcaPlacaVideo(String marcaPlacaVideo) { this.marcaPlacaVideo = marcaPlacaVideo; }
 
 @Override
 public String getTipo() {
 return "Desktop";
 }
 
 @Override
 public double calcularValorTotal() {
 return quantidade * preco;
 }
 
 @Override
 public void imprimir() {
 super.imprimir();
 System.out.println("=== ESPECIFICAÇÕES DO DESKTOP ===");
 System.out.println("Placas de Vídeo: " + placasVideo);
 System.out.println("Tipo de Memória: " + tipoMemoria);
 System.out.println("Marca da Memória: " + marcaMemoria);
 System.out.println("Número de Slots de Memória: " + numeroSlotsMemoria);
 System.out.println("Tipo de HD: " + tipoHD);
 System.out.println("Marca do HD: " + marcaHD);
 System.out.println("Capacidade do HD: " + capacidadeHD + " GB");
 System.out.println("Tipo de Monitor: " + tipoMonitor);
 System.out.println("Marca do Monitor: " + marcaMonitor);
 System.out.println("Resolução do Monitor: " + resolucaoMonitor + "p");
 System.out.println("Tipo de Fonte: " + tipoFonte);
 System.out.println("Marca da Fonte: " + marcaFonte);
 System.out.println("Potência da Fonte: " + potenciaFonte + "W");
 System.out.println("Marca da Placa de Vídeo: " + marcaPlacaVideo);
 }
 
 @Override
 public void entrada() {
 super.entrada();
 Scanner scanner = new Scanner(System.in);
 
 System.out.println("=== ESPECIFICAÇÕES DO DESKTOP ===");
 System.out.print("Digite o número de placas de vídeo: ");
 this.placasVideo = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de memória: ");
 this.tipoMemoria = scanner.nextLine();
 
 System.out.print("Digite a marca da memória: ");
 this.marcaMemoria = scanner.nextLine();
 
 System.out.print("Digite o número de slots de memória: ");
 this.numeroSlotsMemoria = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de HD: ");
 this.tipoHD = scanner.nextLine();
 
 System.out.print("Digite a marca do HD: ");
 this.marcaHD = scanner.nextLine();
 
 System.out.print("Digite a capacidade do HD (em GB): ");
 this.capacidadeHD = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de monitor: ");
 this.tipoMonitor = scanner.nextLine();
 
 System.out.print("Digite a marca do monitor: ");
 this.marcaMonitor = scanner.nextLine();
 
 System.out.print("Digite a resolução do monitor (em pixels): ");
 this.resolucaoMonitor = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de fonte: ");
 this.tipoFonte = scanner.nextLine();
 
 System.out.print("Digite a marca da fonte: ");
 this.marcaFonte = scanner.nextLine();
 
 System.out.print("Digite a potência da fonte (em Watts): ");
 this.potenciaFonte = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite a marca da placa de vídeo: ");
 this.marcaPlacaVideo = scanner.nextLine();
 }
}
- Notebook.java
import java.util.Scanner;
public class Notebook extends Computador {
 private int slotsMemoria;
 private String tipoMemoria;
 private String marcaMemoria;
 private int numeroSlotsMemoria;
 private String tipoHD;
 private String marcaHD;
 private int capacidadeHD;
 private String tipoMonitor;
 private String marcaMonitor;
 private int resolucaoMonitor;
 private String tipoFonte;
 private String marcaFonte;
 private int potenciaFonte;
 
 public Notebook(String marca, double preco, int quantidade, int slotsMemoria,
 String tipoMemoria, String marcaMemoria, int numeroSlotsMemoria,
 String tipoHD, String marcaHD, int capacidadeHD,
 String tipoMonitor, String marcaMonitor, int resolucaoMonitor,
 String tipoFonte, String marcaFonte, int potenciaFonte) {
 super(marca, preco, quantidade);
 this.slotsMemoria = slotsMemoria;
 this.tipoMemoria = tipoMemoria;
 this.marcaMemoria = marcaMemoria;
 this.numeroSlotsMemoria = numeroSlotsMemoria;
 this.tipoHD = tipoHD;
 this.marcaHD = marcaHD;
 this.capacidadeHD = capacidadeHD;
 this.tipoMonitor = tipoMonitor;
 this.marcaMonitor = marcaMonitor;
 this.resolucaoMonitor = resolucaoMonitor;
 this.tipoFonte = tipoFonte;
 this.marcaFonte = marcaFonte;
 this.potenciaFonte = potenciaFonte;
 }
 
 public Notebook(String marca, double preco, int quantidade) {
 super(marca, preco, quantidade);
 this.slotsMemoria = 2;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.numeroSlotsMemoria = 2;
 this.tipoHD = "SSD";
 this.marcaHD = "Samsung";
 this.capacidadeHD = 512;
 this.tipoMonitor = "LED";
 this.marcaMonitor = "LG";
 this.resolucaoMonitor = 1920;
 this.tipoFonte = "Bateria";
 this.marcaFonte = "Interna";
 this.potenciaFonte = 65;
 }
 
 public Notebook(String marca, double preco, int quantidade, int slotsMemoria,
 String tipoMemoria, String marcaMemoria, int numeroSlotsMemoria) {
 super(marca, preco, quantidade);
 this.slotsMemoria = slotsMemoria;
 this.tipoMemoria = tipoMemoria;
 this.marcaMemoria = marcaMemoria;
 this.numeroSlotsMemoria = numeroSlotsMemoria;
 this.tipoHD = "NVMe";
 this.marcaHD = "Western Digital";
 this.capacidadeHD = 1024;
 this.tipoMonitor = "IPS";
 this.marcaMonitor = "ASUS";
 this.resolucaoMonitor = 2560;
 this.tipoFonte = "Bateria";
 this.marcaFonte = "Interna";
 this.potenciaFonte = 90;
 }
 
 public Notebook(String marca, double preco, int quantidade, String tipoHD,String marcaHD, int capacidadeHD, String tipoMonitor,
 String marcaMonitor, int resolucaoMonitor) {
 super(marca, preco, quantidade);
 this.tipoHD = tipoHD;
 this.marcaHD = marcaHD;
 this.capacidadeHD = capacidadeHD;
 this.tipoMonitor = tipoMonitor;
 this.marcaMonitor = marcaMonitor;
 this.resolucaoMonitor = resolucaoMonitor;
 this.slotsMemoria = 2;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.numeroSlotsMemoria = 2;
 this.tipoFonte = "Bateria";
 this.marcaFonte = "Interna";
 this.potenciaFonte = 65;
 }
 
 public Notebook() {
 super();
 this.slotsMemoria = 2;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.numeroSlotsMemoria = 2;
 this.tipoHD = "SSD";
 this.marcaHD = "Samsung";
 this.capacidadeHD = 512;
 this.tipoMonitor = "LED";
 this.marcaMonitor = "LG";
 this.resolucaoMonitor = 1920;
 this.tipoFonte = "Bateria";
 this.marcaFonte = "Interna";
 this.potenciaFonte = 65;
 }
 
 public int getSlotsMemoria() { return slotsMemoria; }
 public void setSlotsMemoria(int slotsMemoria) { this.slotsMemoria = slotsMemoria; }
 
 public String getTipoMemoria() { return tipoMemoria; }
 public void setTipoMemoria(String tipoMemoria) { this.tipoMemoria = tipoMemoria; }
 
 public String getMarcaMemoria() { return marcaMemoria; }
 public void setMarcaMemoria(String marcaMemoria) { this.marcaMemoria = marcaMemoria; }
 
 public int getNumeroSlotsMemoria() { return numeroSlotsMemoria; }
 public void setNumeroSlotsMemoria(int numeroSlotsMemoria) { this.numeroSlotsMemoria = numeroSlotsMemoria; }
 
 public String getTipoHD() { return tipoHD; }
 public void setTipoHD(String tipoHD) { this.tipoHD = tipoHD; }
 
 public String getMarcaHD() { return marcaHD; }
 public void setMarcaHD(String marcaHD) { this.marcaHD = marcaHD; }
 
 public int getCapacidadeHD() { return capacidadeHD; }
 public void setCapacidadeHD(int capacidadeHD) { this.capacidadeHD = capacidadeHD; }
 
 public String getTipoMonitor() { return tipoMonitor; }
 public void setTipoMonitor(String tipoMonitor) { this.tipoMonitor = tipoMonitor; }
 
 public String getMarcaMonitor() { return marcaMonitor; }
 public void setMarcaMonitor(String marcaMonitor) { this.marcaMonitor = marcaMonitor; }
 
 public int getResolucaoMonitor() { return resolucaoMonitor; }
 public void setResolucaoMonitor(int resolucaoMonitor) { this.resolucaoMonitor = resolucaoMonitor; }
 
 public String getTipoFonte() { return tipoFonte; }
 public void setTipoFonte(String tipoFonte) { this.tipoFonte = tipoFonte; }
 
 public String getMarcaFonte() { return marcaFonte; }
 public void setMarcaFonte(String marcaFonte) { this.marcaFonte = marcaFonte; }
 
 public int getPotenciaFonte() { return potenciaFonte; }
 public void setPotenciaFonte(int potenciaFonte) { this.potenciaFonte = potenciaFonte; }
 
 @Override
 public String getTipo() {
 return "Notebook";
 }
 
 @Override
 public double calcularValorTotal() {
 return quantidade * preco;
 }
 
 @Override
 public void imprimir() {
 super.imprimir();
 System.out.println("=== ESPECIFICAÇÕES DO NOTEBOOK ===");
 System.out.println("Slots de Memória: " + slotsMemoria);
 System.out.println("Tipo de Memória: " + tipoMemoria);
 System.out.println("Marca da Memória: " + marcaMemoria);
 System.out.println("Número de Slots de Memória: " + numeroSlotsMemoria);
 System.out.println("Tipo de HD: " + tipoHD);
 System.out.println("Marca do HD: " + marcaHD);
 System.out.println("Capacidade do HD: " + capacidadeHD + " GB");
 System.out.println("Tipo de Monitor: " + tipoMonitor);
 System.out.println("Marca do Monitor: " + marcaMonitor);
 System.out.println("Resolução do Monitor: " + resolucaoMonitor + "p");
 System.out.println("Tipo de Fonte: " + tipoFonte);
 System.out.println("Marca da Fonte: " + marcaFonte);
 System.out.println("Potência da Fonte: " + potenciaFonte + "W");
 }
 
 @Override
 public void entrada() {
 super.entrada();
 Scanner scanner = new Scanner(System.in);
 
 System.out.println("=== ESPECIFICAÇÕES DO NOTEBOOK ===");
 System.out.print("Digite o número de slots de memória: ");
 this.slotsMemoria = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de memória: ");
 this.tipoMemoria = scanner.nextLine();
 
 System.out.print("Digite a marca da memória: ");
 this.marcaMemoria = scanner.nextLine();
 
 System.out.print("Digite o número de slots de memória: ");
 this.numeroSlotsMemoria = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de HD: ");
 this.tipoHD = scanner.nextLine();
 
 System.out.print("Digite a marca do HD: ");
 this.marcaHD = scanner.nextLine();
 
 System.out.print("Digite a capacidade do HD (em GB): ");
 this.capacidadeHD = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de monitor: ");
 this.tipoMonitor = scanner.nextLine();
 
 System.out.print("Digite a marca do monitor: ");
 this.marcaMonitor = scanner.nextLine();
 
 System.out.print("Digite a resolução do monitor (em pixels): ");
 this.resolucaoMonitor = scanner.nextInt();
 scanner.nextLine(); 
 
 System.out.print("Digite o tipo de fonte: ");
 this.tipoFonte = scanner.nextLine();
 
 System.out.print("Digite a marca da fonte: ");
 this.marcaFonte = scanner.nextLine();
 
 System.out.print("Digite a potência da fonte (em Watts): ");
 this.potenciaFonte = scanner.nextInt();
 scanner.nextLine(); 
 }
}
- Servidor.java
import java.util.Scanner;
public class Servidor extends Computador {
 private int numeroHD;
 private int slotsMemoria;
 private String tipoMemoria;
 private String marcaMemoria;
 private int capacidadeMemoria;
 private String tipoHD;
 private String marcaHD;
 private int capacidadeHD;
 private String tipoGabinete;
 private String marcaGabinete;
 private String tipoFonte;
 private String marcaFonte;
 private int potenciaFonte;
 
 public Servidor(String marca, double preco, int quantidade, int numeroHD,
 int slotsMemoria, String tipoMemoria, String marcaMemoria, int capacidadeMemoria,
 String tipoHD, String marcaHD, int capacidadeHD,
 String tipoGabinete, String marcaGabinete,
 String tipoFonte, String marcaFonte, int potenciaFonte) {
 super(marca, preco, quantidade);
 this.numeroHD = numeroHD;
 this.slotsMemoria = slotsMemoria;
 this.tipoMemoria = tipoMemoria;
 this.marcaMemoria = marcaMemoria;
 this.capacidadeMemoria = capacidadeMemoria;
 this.tipoHD = tipoHD;
 this.marcaHD = marcaHD;
 this.capacidadeHD = capacidadeHD;
 this.tipoGabinete = tipoGabinete;
 this.marcaGabinete = marcaGabinete;
 this.tipoFonte = tipoFonte;
 this.marcaFonte = marcaFonte;
 this.potenciaFonte = potenciaFonte;
 }
 
 public Servidor(String marca, double preco, int quantidade) {
 super(marca, preco, quantidade);
 this.numeroHD = 4;
 this.slotsMemoria = 8;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.capacidadeMemoria = 32;
 this.tipoHD = "SSD";
 this.marcaHD = "Samsung";
 this.capacidadeHD = 1024;
 this.tipoGabinete = "Rack";
 this.marcaGabinete = "Dell";this.tipoFonte = "Redundante";
 this.marcaFonte = "Dell";
 this.potenciaFonte = 750;
 }
 
 public Servidor(String marca, double preco, int quantidade, int numeroHD,
 int slotsMemoria, String tipoMemoria, String marcaMemoria, int capacidadeMemoria,
 String tipoHD, String marcaHD, int capacidadeHD) {
 super(marca, preco, quantidade);
 this.numeroHD = numeroHD;
 this.slotsMemoria = slotsMemoria;
 this.tipoMemoria = tipoMemoria;
 this.marcaMemoria = marcaMemoria;
 this.capacidadeMemoria = capacidadeMemoria;
 this.tipoHD = tipoHD;
 this.marcaHD = marcaHD;
 this.capacidadeHD = capacidadeHD;
 this.tipoGabinete = "Rack";
 this.marcaGabinete = "HP";
 this.tipoFonte = "Redundante";
 this.marcaFonte = "HP";
 this.potenciaFonte = 850;
 }
 
 public Servidor(String marca, double preco, int quantidade, String tipoGabinete,
 String marcaGabinete, String tipoFonte, String marcaFonte, int potenciaFonte) {
 super(marca, preco, quantidade);
 this.tipoGabinete = tipoGabinete;
 this.marcaGabinete = marcaGabinete;
 this.tipoFonte = tipoFonte;
 this.marcaFonte = marcaFonte;
 this.potenciaFonte = potenciaFonte;
 this.numeroHD = 6;
 this.slotsMemoria = 12;
 this.tipoMemoria = "DDR5";
 this.marcaMemoria = "Crucial";
 this.capacidadeMemoria = 64;
 this.tipoHD = "NVMe";
 this.marcaHD = "Intel";
 this.capacidadeHD = 2048;
 }
 
 public Servidor() {
 super();
 this.numeroHD = 4;
 this.slotsMemoria = 8;
 this.tipoMemoria = "DDR4";
 this.marcaMemoria = "Kingston";
 this.capacidadeMemoria = 32;
 this.tipoHD = "SSD";
 this.marcaHD = "Samsung";
 this.capacidadeHD = 1024;
 this.tipoGabinete = "Rack";
 this.marcaGabinete = "Dell";
 this.tipoFonte = "Redundante";
 this.marcaFonte = "Dell";
 this.potenciaFonte = 750;
 }
 
 public int getNumeroHD() { return numeroHD; }
 public void setNumeroHD(int numeroHD) { this.numeroHD = numeroHD; }
 
 public int getSlotsMemoria() { return slotsMemoria; }
 public void setSlotsMemoria(int slotsMemoria) { this.slotsMemoria = slotsMemoria; }
 
 public String getTipoMemoria() { return tipoMemoria; }
 public void setTipoMemoria(String tipoMemoria) { this.tipoMemoria = tipoMemoria; }
 
 public String getMarcaMemoria() { return marcaMemoria; }
 public void setMarcaMemoria(String marcaMemoria) { this.marcaMemoria = marcaMemoria; }
 
 public int getCapacidadeMemoria() { return capacidadeMemoria; }
 public void setCapacidadeMemoria(int capacidadeMemoria) { this.capacidadeMemoria = capacidadeMemoria; }
 
 public String getTipoHD() { return tipoHD; }
 public void setTipoHD(String tipoHD) { this.tipoHD = tipoHD; }
 
 public String getMarcaHD() { return marcaHD; }
 public void setMarcaHD(String marcaHD) { this.marcaHD = marcaHD; }
 
 public int getCapacidadeHD() { return capacidadeHD; }
 public void setCapacidadeHD(int capacidadeHD) { this.capacidadeHD = capacidadeHD; }
 
 public String getTipoGabinete() { return tipoGabinete; }
 public void setTipoGabinete(String tipoGabinete) { this.tipoGabinete = tipoGabinete; }
 
 public String getMarcaGabinete() { return marcaGabinete; }
 public void setMarcaGabinete(String marcaGabinete) { this.marcaGabinete = marcaGabinete; }
 
 public String getTipoFonte() { return tipoFonte; }
 public void setTipoFonte(String tipoFonte) { this.tipoFonte = tipoFonte; }
 
 public String getMarcaFonte() { return marcaFonte; }
 public void setMarcaFonte(String marcaFonte) { this.marcaFonte = marcaFonte; }
 
 public int getPotenciaFonte() { return potenciaFonte; }
 public void setPotenciaFonte(int potenciaFonte) { this.potenciaFonte = potenciaFonte; }
 
 @Override
 public String getTipo() {
 return "Servidor";
 }
 
 @Override
 public double calcularValorTotal() {
 return quantidade * preco;
 }
 
 @Override
 public void imprimir() {
 super.imprimir();
 System.out.println("=== ESPECIFICAÇÕES DO SERVIDOR ===");
 System.out.println("Número de HDs: " + numeroHD);
 System.out.println("Slots de Memória: " + slotsMemoria);
 System.out.println("Tipo de Memória: " + tipoMemoria);
 System.out.println("Marca da Memória: " + marcaMemoria);
 System.out.println("Capacidade da Memória: " + capacidadeMemoria + " GB");
 System.out.println("Tipo de HD: " + tipoHD);
 System.out.println("Marca do HD: " + marcaHD);
 System.out.println("Capacidade do HD: " + capacidadeHD + " GB");
 System.out.println("Tipo de Gabinete: " + tipoGabinete);
 System.out.println("Marca do Gabinete: " + marcaGabinete);
 System.out.println("Tipo de Fonte: " + tipoFonte);
 System.out.println("Marca da Fonte: " + marcaFonte);
 System.out.println("Potência da Fonte: " + potenciaFonte + "W");
 }
 
 @Override
 public void entrada() {
 super.entrada();
 Scanner scanner = new Scanner(System.in);
 
 System.out.println("=== ESPECIFICAÇÕES DO SERVIDOR ===");
 System.out.print("Digite o número de HDs: ");
 this.numeroHD = scanner.nextInt();
 scanner.nextLine();
 
 System.out.print("Digite o número de slots de memória: ");
 this.slotsMemoria = scanner.nextInt();
 scanner.nextLine();
 
 System.out.print("Digite o tipo de memória: ");
 this.tipoMemoria = scanner.nextLine();
 
 System.out.print("Digite a marca da memória: ");
 this.marcaMemoria = scanner.nextLine();
 
 System.out.print("Digite a capacidade da memória (em GB): ");
 this.capacidadeMemoria = scanner.nextInt();
 scanner.nextLine();
 
 System.out.print("Digite o tipo de HD: ");
 this.tipoHD = scanner.nextLine();
 
 System.out.print("Digite a marca do HD: ");
 this.marcaHD = scanner.nextLine();
 
 System.out.print("Digite a capacidade do HD (em GB): ");
 this.capacidadeHD = scanner.nextInt();
 scanner.nextLine();
 
 System.out.print("Digite o tipo de gabinete: ");
 this.tipoGabinete = scanner.nextLine();
 
 System.out.print("Digite a marca do gabinete: ");
 this.marcaGabinete = scanner.nextLine();
 
 System.out.print("Digite o tipo de fonte: ");
 this.tipoFonte = scanner.nextLine();
 
 System.out.print("Digite a marca da fonte: ");
 this.marcaFonte = scanner.nextLine();
 
 System.out.print("Digite a potência da fonte (em Watts): ");
 this.potenciaFonte = scanner.nextInt();
 scanner.nextLine();
 }
}
- SistemaVendaComputadores.java
import java.util.ArrayList;
import java.util.Scanner;
 // Sistema de Venda de Computadores(Classe principal)
public class SistemaVendaComputadores {
 private static ArrayList desktops = new ArrayList();
 private static ArrayList notebooks = new ArrayList();
 private static ArrayList servidores = new ArrayList();
 private static Scanner scanner = new Scanner(System.in);
 
 public static void main(String[] args) {
 System.out.println("=== SISTEMA DE VENDA DE COMPUTADORES ===");
 System.out.println("================================================");
 
 criarExemplos();
 
 int opcao;
 do {
 exibirMenu();
 System.out.print("Escolha uma opção: ");
 opcao = scanner.nextInt();
 scanner.nextLine();
 
 switch (opcao) {
 case 1:
 gerenciarDesktop();
 break;case 2:
 gerenciarNotebook();
 break;
 case 3:
 gerenciarServidor();
 break;
 case 4:
 exibirRelatorio();
 break;
 case 5:
 System.out.println("Saindo do sistema...");
 break;
 default:
 System.out.println("Opção inválida!");
 }
 } while (opcao != 5);
 
 scanner.close();
 }
 
 private static void criarExemplos() {
 System.out.println("\nCriando objetos de exemplo...");
 
 Desktop desktop1 = new Desktop("ASUS", 3500.0, 2, 1, "DDR4", "Kingston", 4, "SSD", "Samsung", 512, "LED", "LG", 1920, "ATX", "Corsair", 650, "NVIDIA");
 Desktop desktop2 = new Desktop("MSI", 6500.0, 1, 2, "DDR5", "Corsair", 4, "NVMe", "Western Digital", 1024, "IPS", "ASUS", 2560, "Modular", "EVGA", 850, "NVIDIA");
 Desktop desktop3 = new Desktop("Dell", 12000.0, 1, 4, "DDR5", "G.Skill", 8, "NVMe", "Samsung Pro", 2048, "OLED", "Dell", 3840, "Titanium", "Seasonic", 1200, "AMD");
 
 desktops.add(desktop1);
 desktops.add(desktop2);
 desktops.add(desktop3);
 
 Notebook notebook1 = new Notebook("Lenovo", 2800.0, 3, 2, "DDR4", "Kingston", 2, "SSD", "Samsung", 512, "LED", "LG", 1920, "Bateria", "Interna", 65);
 Notebook notebook2 = new Notebook("Apple", 8500.0, 1, 4, "DDR5", "Apple", 4, "NVMe", "Apple", 1024, "Retina", "Apple", 2560, "Bateria", "Interna", 90);
 Notebook notebook3 = new Notebook("ASUS", 11000.0, 1, 4, "DDR5", "G.Skill", 4, "NVMe", "Western Digital", 2048, "IPS", "ASUS", 3840, "Bateria", "Interna", 120);
 
 notebooks.add(notebook1);
 notebooks.add(notebook2);
 notebooks.add(notebook3);
 
 Servidor servidor1 = new Servidor("HP", 8000.0, 2, 4, 8, "DDR4", "Kingston", 32, "SSD", "Samsung", 1024, "Rack", "Dell", "Redundante", "Dell", 750);
 Servidor servidor2 = new Servidor("Dell", 18000.0, 1, 8, 16, "DDR5", "Crucial", 64, "NVMe", "Intel", 2048, "Rack", "HP", "Redundante", "HP", 850);
 Servidor servidor3 = new Servidor("IBM", 35000.0, 1, 12, 32, "DDR5", "Crucial", 128, "NVMe", "Intel", 4096, "Rack", "IBM", "Redundante", "IBM", 1200);
 
 servidores.add(servidor1);
 servidores.add(servidor2);
 servidores.add(servidor3);
 
 System.out.println("Objetos de exemplo criados com sucesso!");
 }
 
 private static void exibirMenu() {
 System.out.println("\n=== MENU PRINCIPAL ===");
 System.out.println("1. Gerenciar Desktop");
 System.out.println("2. Gerenciar Notebook");
 System.out.println("3. Gerenciar Servidor");
 System.out.println("4. Exibir Relatório Geral");
 System.out.println("5. Sair");
 System.out.println("=====================");
 }
 
 private static void gerenciarDesktop() {
 int opcao;
 do {
 System.out.println("\n=== GERENCIAMENTO DE DESKTOP ===");
 System.out.println("1. Cadastrar novo Desktop");
 System.out.println("2. Listar Desktops");
 System.out.println("3. Buscar Desktop");
 System.out.println("4. Voltar ao menu principal");
 System.out.print("Escolha uma opção: ");
 opcao = scanner.nextInt();
 scanner.nextLine();
 
 switch (opcao) {
 case 1:
 cadastrarDesktop();
 break;
 case 2:
 listarDesktops();
 break;
 case 3:
 buscarDesktop();
 break;
 case 4:
 System.out.println("Retornando ao menu principal...");
 break;
 default:
 System.out.println("Opção inválida!");
 }
 } while (opcao != 4);
 }
 
 private static void gerenciarNotebook() {
 int opcao;
 do {
 System.out.println("\n=== GERENCIAMENTO DE NOTEBOOK ===");
 System.out.println("1. Cadastrar novo Notebook");
 System.out.println("2. Listar Notebooks");
 System.out.println("3. Buscar Notebook");
 System.out.println("4. Voltar ao menu principal");
 System.out.print("Escolha uma opção: ");
 opcao = scanner.nextInt();
 scanner.nextLine();
 
 switch (opcao) {
 case 1:
 cadastrarNotebook();
 break;
 case 2:
 listarNotebooks();
 break;
 case 3:
 buscarNotebook();
 break;
 case 4:
 System.out.println("Retornando ao menu principal...");
 break;
 default:
 System.out.println("Opção inválida!");
 }
 } while (opcao != 4);
 }
 
 private static void gerenciarServidor() {
 int opcao;
 do {
 System.out.println("\n=== GERENCIAMENTO DE SERVIDOR ===");
 System.out.println("1. Cadastrar novo Servidor");
 System.out.println("2. Listar Servidores");
 System.out.println("3. Buscar Servidor");
 System.out.println("4. Voltar ao menu principal");
 System.out.print("Escolha uma opção: ");
 opcao = scanner.nextInt();
 scanner.nextLine();
 
 switch (opcao) {
 case 1:
 cadastrarServidor();
 break;
 case 2:
 listarServidores();
 break;
 case 3:
 buscarServidor();
 break;
 case 4:
 System.out.println("Retornando ao menu principal...");
 break;
 default:
 System.out.println("Opção inválida!");
 }
 } while (opcao != 4);
 }
 
 private static void cadastrarDesktop() {
 System.out.println("\n=== CADASTRANDO NOVO DESKTOP ===");
 Desktop desktop = new Desktop();
 desktop.entrada();
 desktops.add(desktop);
 System.out.println("Desktop cadastrado com sucesso!");
 }
 
 private static void cadastrarNotebook() {
 System.out.println("\n=== CADASTRANDO NOVO NOTEBOOK ===");
 Notebook notebook = new Notebook();
 notebook.entrada();
 notebooks.add(notebook);
 System.out.println("Notebook cadastrado com sucesso!");
 }
 
 private static void cadastrarServidor() {
 System.out.println("\n=== CADASTRANDO NOVO SERVIDOR ===");
 Servidor servidor = new Servidor();
 servidor.entrada();
 servidores.add(servidor);
 System.out.println("Servidor cadastrado com sucesso!");
 }
 
 private static void listarDesktops() {
 System.out.println("\n=== LISTA DE DESKTOPS ===");
 if (desktops.isEmpty()) {
 System.out.println("Nenhum Desktop cadastrado.");
 } else {
 for (int i = 0; iif (servidores.isEmpty()) {
 System.out.println("Nenhum Servidor cadastrado.");
 } else {
 for (int i = 0; i cadastra os dados do computador
 - imprimir() -> exibe os dados
 - entrada() -> solicita entrada de dados ao usuário
3.2 Classe Desktop
A classe Desktop herda de Computador e possui atributos adicionais:
 - PlacasVídeo
 - TipoMemória, MarcaMemória, NumeroSlotsMemória
 - TipoHD, MarcaHD, CapacidadeHD
 - TipoMonitor, MarcaMonitor, ResoluçãoMonitor
 - TipoFonte, MarcaFonte, PotênciaFonte
 - MarcaPlacaVideo
 
Métodos implementados:
 - Construtores (5 sobrecargas)
 - Getters e Setters
 - cadastrar(), imprimir(), entrada()
3.3 Classe Notebook
A classe Notebook herda de Computador e possui atributos adicionais:
 - SlotsMemória, TipoMemória, MarcaMemória, NumeroSlotsMemória
 - TipoHD, MarcaHD, CapacidadeHD
 - TipoMonitor, MarcaMonitor, ResoluçãoMonitor
 - TipoFonte, MarcaFonte, PotênciaFonte
 
Métodos implementados:
 - Construtores (5 sobrecargas)
 - Getters e Setters
 - cadastrar(), imprimir(), entrada()
3.4 Classe Servidor
A classe Servidor herda de Computador e possui atributos adicionais:
 - NúmeroHD, SlotsMemória, TipoMemória, MarcaMemória, CapacidadeMemória
 - TipoHD, MarcaHD, CapacidadeHD
 - TipoGabinete, MarcaGabinete
 - TipoFonte, MarcaFonte, PotênciaFonte
 
Métodos implementados:
 - Construtores (5 sobrecargas)
 - Getters e Setters
 - cadastrar(), imprimir(), entrada()
4. Classe Principal - SistemaVendaComputadores
A classe SistemaVendaComputadores contém o método main e apresenta um menu interativo ao usuário. Por meio dele é possível cadastrar, listar e gerenciar os objetos Desktop, Notebook e Servidor.
 
O menu possui as seguintes opções:
 1. Adicionar/gerenciar Desktop
 2. Adicionar/gerenciar Notebook
 3. Adicionar/gerenciar Servidor
 0. Sair
5. Conceitos de POO aplicados
- Herança: As classes Desktop, Notebook e Servidor herdam da classe Computador, aproveitando atributos e métodos comuns.
 - Agregação: A aplicação modela os componentes internos (memória, HD, monitor, fonte, etc.) como parte do computador, mas sem serem objetos separados.
 - Particionamento: O sistema é dividido em classes específicas, cada uma responsável por um tipo de computador.
6. Compilação e Execução
Para compilar e executar a aplicação:
 
1. Abra o terminal na pasta do projeto.
 2. Compile as classes com:
 javac *.java
 3. Execute o sistema com:
 java SistemaVendaComputadores
 
7. Conclusão
A aplicação cumpre o objetivo de demonstrar os conceitos de Herança, Agregação e Particionamento em Java, além de permitir a criação e gerenciamento de diferentes tipos de computadores. Com isso, proporciona uma estrutura clara e organizada para representar o problema proposto.
· REFERÊNCIAS:
DEITEL, Paul; DEITEL, Harvey. Java: Como Programar. 10. ed. São Paulo: Pearson Prentice Hall, 2016.
GAMMA, Erich et al. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos. Porto Alegre: Bookman, 2000.
SOMMERVILLE, Ian. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2019.
image3.png
image2.png
image1.png

Mais conteúdos dessa disciplina