Conceitos Básicos de Orientação a Objetos — Parte 2

Pegando carona no texto anterior sobre Conceitos Básicos de Orientação a Objetos — Parte 1, vamos agora explorar mais alguns tópicos de interesse.

  • Classe Abstrata Classes abstratas são classes que servem como modelo para suas subclasses. Classes abstratas não podem ser instanciadas, apenas herdadas.
    Os métodos declarados na classe abstrata devem ser implementados nas subclasses (classes concretas). Caso contrário, as subclasses também acabam se tornando classes abstratas.
  • Método Abstrato São métodos presentes apenas em classes abstratas e que não possuem implementação.

Nesta imagem, temos a classe abstrata Abstract_Pessoa, com o método abstrato abstractPagarImposto. A classe concreta Concrete_Pessoa_Física implementa o método abstractPagarImposto() ao contrátio da classe Abstract_Pessoa_Jurídica.

  • Associação Associação representa um relacionamento entre os objetos, quando uma classe possui atributos de outra classe. Uma associação pode definir sua cardinalidade e sentido. É identificado pela frase “Tem um(a)”.

No exemplo acima, podemos dizer que Pessoa tem um Endereço.

  • Composição É um tipo de associação do tipo Todo x Partes, onde o todo é composto por suas partes (relação de contenção). Na composição, não faz sentido a existência das partes sem uma classe principal para contê-las.

No exemplo acima, a classe Itens do Pedido compõe a classe Pedido. Quando Pedido deixar de existir, os itens do pedido também devem ser destruídos.

  • Agregação Outro tipo de associação, onde uma classe faz parte de outra (sem relação de contenção). A classe principal usa outras classes, sem contê-las. Ao contrário da composição, as classes podem existir sendo independentes.

Uma diretoria é uma agregação de membros.

  • Interfaces x Classes Abstratas
    Interfaces: * Não podem ser instanciadas;
    * Possuem métodos declarados sem implementação;
    * Todos os atributos são públicos, estáticos e finais;
    * Todos os métodos são públicos;
    * Uma classe pode implementar diversas interfaces.
    Classes Abstratas: * Não podem ser instanciadas;
    * Possuem métodos declaradas com ou sem implementação;
    * Pode possuir atributos que não são estáticos e finais;
    * Pode possuir métodos concretos que são públicos, protegidos e privados;
    * Uma classe pode herdar apenas de 1 classe (abstrata ou não).

Gostou do texto? Então clique no botão Recommend, logo abaixo.
Fazendo isso, você ajuda esta história a ser encontrada por mais pessoas. Seu comentário também é bem-vindo.

Aqui estão os links que me inspiraram e que podem lhe ajudar a descobrir um pouco mais sobre o assunto.

[Conceitos - Classes Abstratas: Programação Orientada a Objetos - Parte 1
Publicidade Olá pessoal, neste artigo veremos os conceitos sobre Classes Abstratas. Acompanhem: As classes abstratas s…devmedia.com.br](http://www.devmedia.com.br/conceitos-classes-abstratas-programacao-orientada-a-objetos-parte-1/18812 "devmedia.com.br/conceitos-classes-abstratas..")

[IT Tips: Associação, agregação e composição
Edit descriptiondouglascrp.blogspot.com.br](http://douglascrp.blogspot.com.br/2008/06/associao-agregao-e-composio.html "douglascrp.blogspot.com.br/2008/06/associao..")

[Abstract Methods and Classes
An abstract class is a class that is declared abstract -it may or may not include abstract methods. Abstract classes…docs.oracle.com](https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html "docs.oracle.com/javase/tutorial/java/IandI/..")