FC

Filipe Cardoso20/07/2024 10:27
Compartilhe

Java e Programação Orientada a Objetos (POO)

  • #Java

Programação orientada a objetos (POO) é um modelo de programação que organiza o software como uma coleção de objetos com características e comportamentos distintos. Os quatro pilares desse paradigma são:

  1. Encapsulamento,
  2. Abstração,
  3. Herança,
  4. Polimorfismo

Herança

Permite criar uma nova classe a partir de uma classe existente, herdando os atributos (características) e métodos (ações, funções). A classe mãe é conhecida como superclasse ou classe base. Já a classe filha é a subclasse. Herança promove a reutilização de código e estabelece uma relação "é um" entre as classes.

A classe "Conteudo", no exemplo abaixo, é a superclasse abstrata que define o comportamento comum para todos os tipos de conteúdo. As classes "Curso" e "Mentoria" são subclasses que herdam de "Conteudo".

public abstract class Conteudo {
  protected static final double XP_PADRAO = 10d;
  private String titulo;
  private String descricao;


  public String getTitulo() {
      return titulo;
  }


  public void setTitulo(String titulo) {
      this.titulo = titulo;
  }


  public String getDescricao() {
      return descricao;
  }


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


  public abstract double calcularXp();
}

public class Curso extends Conteudo {
  private int cargaHoraria;


  public int getCargaHoraria() {
      return cargaHoraria;
  }


  public void setCargaHoraria(int cargaHoraria) {
      this.cargaHoraria = cargaHoraria;
  }


  @Override
  public double calcularXp() {
      return XP_PADRAO * cargaHoraria;
  }


  @Override
  public String toString() {
      return "Curso [titulo=" + getTitulo() + ", descricao=" + getDescricao() + ", cargaHoraria=" + cargaHoraria + ", xp=" + calcularXp() + "]";
  }
}



public class Mentoria extends Conteudo {
  private LocalDate data;


  public LocalDate getData() {
      return data;
  }


  public void setData(LocalDate data) {
      this.data = data;
  }


  @Override
  public double calcularXp() {
      return XP_PADRAO + 20d;
  }


  @Override
  public String toString() {
      return "Mentoria [titulo=" + getTitulo() + ", descricao=" + getDescricao() + ", data=" + data + ", xp=" + calcularXp() + "]";
  }
}

Polimorfismo

Em Java, polimorfismo permite que uma superclasse seja referenciada por uma subclasse; facilitando a utilização de um único método ou interface para operar em diferentes tipos de objetos.

Conteudo curso = new Curso();
curso.setTitulo("Curso de Java");
curso.setDescricao("Aprenda Java do básico ao avançado");
((Curso) curso).setCargaHoraria(8);


Conteudo mentoria = new Mentoria();
mentoria.setTitulo("Mentoria de Java");
mentoria.setDescricao("Tire suas dúvidas sobre Java");
((Mentoria) mentoria).setData(LocalDate.now());


System.out.println(curso.calcularXp()); // Saída: 80.0
System.out.println(mentoria.calcularXp()); // Saída: 30.0

Sobrecarga

Quando métodos distintos apresentam o mesmo nome.

public class Calculadora {
  public int soma(int a, int b) {
      return a + b;
  }


  public double soma(double a, double b) {
      return a + b;
  }


  public int soma(int a, int b, int c) {
      return a + b + c;
  }
}

Referências:

  • https://www.freecodecamp.org/portuguese/news/principios-de-programacao-orientada-a-objetos-em-java-conceitos-de-poo-para-iniciantes/
  • https://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452
  • https://www.javatpoint.com/pt/conceitos-de-poo-em-java

Links úteis:

  • https://br.linkedin.com/in/filipe-mesel-lobo-costa-cardoso
  • https://github.com/FilipeMesel
Compartilhe
Comentários (0)