DEV Community

Cover image for Programação Orientada a Objetos: uma Breve Introdução 👷
Pedro Furlaneto
Pedro Furlaneto

Posted on • Updated on

Programação Orientada a Objetos: uma Breve Introdução 👷

A orientação a objetos é um famoso paradigma da programação que surge da tentativa de aproximar a realidade ao mundo virtual, assim ela é baseada no conceito de objetos, sendo elas entidades (concretas ou abstratas) que seguem a um mesmo modelo, as classes.

🤔 Você Sabia? 🤔

Esse conceito foi idealizado no final da década de 1960 por Alan Talk, introduzida por meio da linguagem Simula-68.

Classes 🏠

🏠 -> 🧱 + 🔨

As classes são as "fôrmas" dessas entidades, possibilitando a atribuição de características e ações a elas, modelando-as da melhor maneira possível às suas ideias e intenções. Imagine-a como o projeto de uma casa, no qual é descrito o que é necessário para faze-la ser o que ele é, ou seja, o que é preciso para uma casa ser uma casa.

Um dos componentes que fazem essa função de descrição é o Atributo 🧱, que são as características de um objeto, sendo eles propriedades semelhantes que as entidades de uma classe possuem. Sendo assim, seguindo a analogia anterior, uma classe "Casa" teria os seguintes atributos:

  • Cor;
  • Material do telhado;
  • Material da parede;
  • Quantidade de quartos;
  • etc…

E assim como os Atributos, os Métodos 🔨 também tem a função de agregar as singularides de uma Classes, sendo responsáveis por representar as funcionalidades e comportamentos daquela entidade por meio de ações, ou seja, como é que a entidade que está sendo representada age. Uma casa poderia ter um método que alteraria sua cor, por exemplo.

Métodos especiais ⭐️

Por padrão, as classes possuem alguns métodos especiais, que otimizam seu uso, e são eles:

  • Construtores: passam valores padronizados aos atributos na instância de um objeto.
  • Getters: métodos que buscam e retornam informações dos atributos.
  • Setters: métodos que definem e atualizam os valores dos atributos.

Visibilidade de componente

Essa definição de visibilidade gere o acesso externo aos métodos e atributos de um objeto. 😶‍🌫️

  • Público: permite o acesso do componente em qualquer lugar que o objeto for utilizado.
  • Privado: permite o acesso apenas na classe em questão.
  • Protegido: permite o acesso somente às classes filhas, em mais nenhuma outra aplicação.

Relacionamento entre Classes 🍻

O relacionamento entre classes permite a associação entre classes independentes. Esse relacionamento indica que os objetos de uma das classes estão relacionados aos objetos da outra classe.

Há vários tipos de relacionamentos, a mais comum do paradigma é a Associação 👫 que acontece quando há uma relação estrutural entre classes, em que uma utiliza dos métodos e atributos da outra.

Uma outra forma de uma classe se relacionar a outra, é por meio de Dependência 💉 que acontece quando em uma das classes, a sua mudança afeta a outra, ou seja, o relacionamento de dependência é caracterizado quando uma funcionalidade precisa de uma outra classe para ser executada. Essa dependência ocorre em apenas uma delas.

Pilares do Paradigma 🏛️

Para o funcionamento adequado da Orientação a Objetos é preciso entender as 4 bases do paradigma.

A principal entre elas é a Abstração 📝, ela consiste em utilizar apenas as características necessárias na modelagem dos objetos, para identificar dentre todos os possíveis atributos da entidade, quais serão realmente úteis.

Um outro pilar, é o Encapsulamento 💊, como o próprio termo diz, o encapsulamento "encapsula" o objeto, restringindo o acesso a alguns dos componentes. O encapsulamento é aplicado por meio de interfaces, usado tanto para a segurança da aplicação quanto para a prevenção de erros. Por exemplo, ao dirigir um carro, o motorista não possui acesso direto ao motor, e sim aos pedais.

Mais um conceito importantíssimo ao paradigma: Hierarquia 👨‍👩‍👧. A ideia é transferir os mesmos atributos e métodos de uma classe às outras, assim permitindo formar uma árvore hierárquica de classes, partindo da maior generalização (raiz) até a maior especialização (folhas). Esse é considerado o relacionamento de generalização.

E por último mas não menos importante, o Polimorfismo 🐱, é a utilização do mesmo nome de um método já existente, porém com outras funcionalidades, podendo alterar a assinatura dos mesmos ou não.

Assinatura ✍️

A assinatura é o que permite a identificação de um método de forma única, tendo em vista, que muitas vezes é utilizado o mesmo homônimo na criação de novos métodos. O que garante essa unicidade é a quantidade de parâmetros e que esses parâmetros sejam do mesmo tipo do método de seu homônimo.

Tipos Básicos de Polimorfismo

  • Sobreposição: quando ocorre a sobreposição dos métodos herdados em classes diferentes, utilizando dos mesmos nomes e assinaturas.
  • Sobrecarga: quando há adição de metódos à classe, utilizando o mesmo nome para essas implementações, porém com assinaturas diferentes.
  • Paramétrico: quando há a utilização de métodos com o mesmo homônimo e assinatura, alterando apenas o tipo do retorno e dos parâmetros.

Conclusão 🎉

Essa foi uma breve apresentação conceitual ao paradigma, onde foram colocadas as ideias principais para seu entendimento. Hoje em dia é possível perceber o quão útil foi o desenvolvimento desse modelo, que possibilitou com detalhes a descrição de alguma entidade do mundo real ao código.

:)

Top comments (0)