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)