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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1700319992091/1665dab7-bd2e-432b-816d-220035f80a7f.jpeg)

Pegando carona no texto anterior sobre [“](https://medium.com/@RafaelSermenho/conceitos-b%C3%A1sicos-de-orienta%C3%A7%C3%A3o-a-objetos-b58809b2d809#.vzami97ip)[Conceitos Básicos de Orientação a Objetos — Parte 1](https://medium.com/@RafaelSermenho/conceitos-b%C3%A1sicos-de-orienta%C3%A7%C3%A3o-a-objetos-b58809b2d809)[”](https://medium.com/@RafaelSermenho/conceitos-b%C3%A1sicos-de-orienta%C3%A7%C3%A3o-a-objetos-b58809b2d809#.vzami97ip), 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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1700319993831/568a8e55-06d9-4a56-a327-bfee261f938c.png)

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)”.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1700319995082/3b96ed02-fa48-49e6-8d93-2519c50078d6.png)

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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1700319996508/a9e9b645-3aca-4114-bcbb-1d5009ca8e03.png)

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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1700319997627/39ab90c9-20db-427e-bc8d-b1165133fa4c.png)

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…*www.devmedia.com.br](http://www.devmedia.com.br/conceitos-classes-abstratas-programacao-orientada-a-objetos-parte-1/18812 "http://www.devmedia.com.br/conceitos-classes-abstratas-programacao-orientada-a-objetos-parte-1/18812")[](http://www.devmedia.com.br/conceitos-classes-abstratas-programacao-orientada-a-objetos-parte-1/18812)

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

[**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 "https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html")[](https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html)

<iframe src="https://www.slideshare.net/slideshow/embed_code/key/3mMdTjASjzjaqP" width="600" height="500" frameborder="0" scrolling="no"></iframe>
