Você está na página 1de 2

public abstract class Produto

protected int id; public class Livro{ Herança- é um princípio da POO que permite classes
protected String titulo, autor, categoria;
protected String descricao; protected double valor;
compartilharem atributos e métodos comuns
protected int quantidade; public String getTitulo() { Possibilita a aplicação de vários conceitos da orientação
protected double preco; return titulo; } a objetos que não seriam viáveis sem a organização da
public double calcularSubTotal() { public void setTitulo(String titulo) { herança.
return this.quantidade * this.preco } this.titulo = titulo; } Generalização é quando vc coloca os métodos e
public int getId() { public String getAutor() { atributos que vão ser usados por mais de uma classe
return autor;}
return id; } public void setAutor(String autor) {
filha e Especialização é o contrário vc coloca só na
public void setId(int id) { this.autor = autor;} classe filha que vai usar aquele método ou atributo
this.id = id; } public String getCategoria() { Vantagens da Herança- Evitar duplicação de código e
public String getDescricao() { return categoria; } Reutilização de código
return descricao; } public void setCategoria(String categoria) { Desvantagens – Acoplamento Em java não existe um
public void setDescricao(String descricao) { this.categoria = categoria;} limite para o uso da herança, porém um sistema com
public double getValor() {
this.descricao = descricao; } return valor;}
muita herança deixa o código acoplado
public int getQuantidade() { public void setValor(double valor) { Quebra do encapsulamento- é necessário usar o
return quantidade;} this.valor = valor;} protected para ser visível somente pela classe e suas
public void setQuantidade(int quantidade) { public void aplicarDesconto() { filhas e manter a proteção dos dados.
this.quantidade = quantidade; } this.valor -= (valor*0.3);} } Herança múltipla- uma classe pode ter várias filhas,
public double getPreco() { public class EBook extends Livro { mas só uma mãe.
private String marcaDagua;
return preco; } public String getMarcaDagua() {
Sobrecarga – Sobrecarregar um método é fornecer mais
public void setPreco(double preco) { return marcaDagua; } de um método com o mesmo nome, mas fazendo coisas
this.preco = preco;}} public void setMarcaDagua(String marcaDagua) { diferentes.
import java.util.Scanner; this.marcaDagua = marcaDagua; } Sobrescrita – sobrescrever um método significa
public class Principal { public void aplicarDesconto() { substituir a implementação da superclasse daquele
public static void main(String[] args) { this.valor -= (valor*0.15); }} método com a sua própria. É a possibilidade de manter a
import java.util.Scanner;
Dvd dvd1 = new Dvd(); public class TesteEbook {
mesma assinatura de um método herdado e reescrevê-lo
Cd cd1 = new Cd(); public static void main(String[] args) { na subclasse.
CarrinhoCompra car = new CarrinhoCompra(); Scanner sc = new Scanner(System.in); Package- Um conjunto de classes Localizados na
Scanner ent = new Scanner(System.in); EBook eb = new EBook(); mesma estrutura Hierárquica de diretórios-São usadas
System.out.println("Digite o id:"); LivroFisico lf = new LivroFisico(); para promover reutilização de código
int var = Integer.parseInt (ent.nextLine()); eb.setTitulo("Lerri");
eb.setAutor("Eduardo Santana");
cd1.setId(var); ENUM•São tipos de campos que consistem em um
eb.setCategoria("Programa��o");
System.out.println("Digite a descri��o:"); eb.setValor(49.90); conjunto fixo de constantes (staticfinal) ,sendo como uma
cd1.setDescricao(ent.nextLine()); eb.setMarcaDagua("horacio@etec.sp.gov.br"); lista de valores pré-definidos.
System.out.println("Digite a quantidade:"); System.out.println("Informa��es: " +eb.getValor()); •Todos os tipos enums implicitamente estendem a
var = Integer.parseInt (ent.nextLine()); eb.aplicarDesconto(); classejava.lang.Enum.
cd1.setQuantidade(var); System.out.println("Valor com desconto: "+ eb.getValor()); •Seguindo a convenção ,por serem objetos constantes e
System.out.println("T�tulo: ");
System.out.println("Digite o pre�o:"); imutáveis(staticfinal),os nomes declarados recebem
lf.setTitulo(sc.next());
double vardouble = Double.parseDouble(ent.nextLine()); System.out.println("Autor: "); todas as letras em MAIÚSCULAS.
cd1.setPreco(vardouble);
System.out.println("Digite o artista:");
lf.setAutor(sc.next());
System.out.println("Categoria: ");
•Na declaração é definida uma classe chamada
cd1.setArtista(ent.nextLine()); lf.setCategoria(sc.next()); }} de tipo enum. O corpo da classe enum pode
System.out.println("Digite o id:"); incluir métodos e outros campos. O compilador
var = Integer.parseInt (ent.nextLine()); automaticamente adiciona alguns métodos
dvd1.setId(var); especiais quando se cria um enum.
System.out.println("Digite a descri��o:");
dvd1.setDescricao(ent.nextLine());
System.out.println("Digite a quantidade:");
public class Teste {
var = Integer.parseInt (ent.nextLine()); public static void main(String[] args) {
dvd1.setQuantidade(var); Scanner ent = new Scanner(System.in);
System.out.println("Digite o pre�o:"); System.out.println("Digite 1 para triangulo ou 2 para quadrado");
vardouble = Double.parseDouble(ent.nextLine()); int escolha = ent.nextInt();
dvd1.setPreco(vardouble);
System.out.println("Digite o diretor:");
if(escolha == 1) {
dvd1.setDiretor(ent.nextLine()); Triangulo tr = new Triangulo();
System.out.println("Digite o ano de lan�amento:"); System.out.println("Digite o n�mero de lados");
dvd1.setAnoLancamento(ent.nextInt()); tr.setNumLados(ent.nextDouble());
car.adicionar(cd1); System.out.println("Digite o tamanho do lado");
System.out.println("Total: " + car.finalizarCompra()) }}
public enum GeneroEnum { tr.setTamLado(ent.nextDouble());
MPB, System.out.println("Perimetro: " + tr.calcularPerimetro() + "\nArea: " +
ROCK_INTERNACIONAL, tr.calcularArea()); }
ROCK_NACIONAL, else if (escolha == 2)
SAMBA,
Quadrado quad = new Quadrado();
PAGODE,
INFANTIL} System.out.println("Digite o n�mero de lados");
public class Dvd extends Produto{ quad.setNumLados(ent.nextDouble());
private String diretor; System.out.println("Digite o tamanho do lado");
private int anoLancamento; quad.setTamLado(ent.nextDouble());
public String getDiretor() {
return diretor;} System.out.println("Perimetro: " + quad.calcularPerimetro() + "\nArea: " +
public void setDiretor(String diretor) { quad.calcularArea()); }
this.diretor = diretor;} else
public int getAnoLancamento() { System.out.println("Op��o invalida");}
return anoLancamento;}
public class Quadrado extends PoligonoRegular
public void setAnoLancamento(int anoLancamento) {
this.anoLancamento = anoLancamento;} } public double calcularArea() {
public class Cd extends Produto { return getTamLado() * getTamLado();}}
private String artista; public abstract class PoligonoRegular {
private GeneroEnum genero; private double numLados;
public String getArtista() {
return artista;}
private double tamLado;
public void setArtista(String artista) {
this.artista = artista; } public double getNumLados() {
public GeneroEnum getGenero() { return numLados;}
return genero;} public void setNumLados(double numLados) {
public void setGenero(GeneroEnum genero) {
this.genero = genero;} this.numLados = numLados;}
public class CarrinhoCompra { public double getTamLado() {
private double total; return tamLado; }
public double getTotal() { public void setTamLado(double tamLado) {
return total;}
this.tamLado = tamLado;}
public void setTotal(double total) {
this.total = total; } public double calcularPerimetro() {
public void adicionar(Produto prod) { return this.numLados * this.tamLado;}
this.total = this.total + prod.calcularSubTotal();} public abstract double calcularArea()}
public double finalizarCompra() { public class Triangulo extends PoligonoRegular {
return this.total;}
}
public double calcularArea() {
return (getTamLado() * Math.sqrt(3)) / 2 ; }}

Você também pode gostar