Os pilares da orientação a objeto
Os pilares da orientação a objetos são quatro conceitos fundamentais que guiam a programação orientada a objetos. Eles são conceitos essenciais para criar um código modular, flexível, reutilizável e de fácil manutenção. São eles: Abstração, Encapsulamento, Herança e Polimorfismo.
Neste artigo, vamos detalhar cada um e trazer exemplos.
1. Abstração
O paradigma abstração prega que devemos projetar um sistema em diversas partes, separadas e bem definidas, de modo que nos concentremos nos aspectos essenciais, desconsiderando as características menos importantes. Desta forma, abstrai-se a complexidade do sistema e foca-se em uma determinada parte, que é o tema central naquele momento.
A abstração consiste na representação simples de objetos do mundo real. Uma classe é um tipo de abstração que define um conjunto de propriedades e métodos que representam um conceito particular. A abstração permite que os objetos tenham características comuns e funcionem de maneira consistente.
Vamos aplicar este conceito em um exemplo. Suponha que queremos criar diferentes formas geométricas (círculo, quadrado, triângulo) e calcular sua respectiva área.
Neste exemplo, criamos uma classe abstrata FormaGeometrica que define um método abstrato calcularArea(). Em seguida, criamos classes concretas para representar as formas geométricas específicas (círculo, quadrado e triângulo), e cada uma delas implementa o método calcularArea() de acordo com sua fórmula apropriada.
Essa abstração permite que o código que utiliza essas classes interaja com as formas geométricas de maneira independente das implementações específicas de cada forma.
2. Encapsulamento
O encapsulamento é a ideia de esconder os detalhes internos e o funcionamento dos objetos, expondo apenas uma interface controlada para interagir com eles. Isso é feito usando modificadores de acesso nos atributos e métodos, como "private", "protected" e "public", para controlar quem pode acessar e modificar os dados e comportamentos dos objetos.
3. Herança
Quando pensamos em herança, imaginamos a relação familiar entre pais, filhos e avós e nas características que são transmitidas de geração para geração. Em orientação a objetos, a herança trata-se de um compartilhamento de atributos e comportamentos entre classes de uma mesma hierarquia, da classe-mãe para as classes-filha. Veja um exemplo na imagem a seguir.
A classe Funcionario é a classe-mãe, da qual aproveitamos suas propriedades (nome, dataNascimento, cpf, setor e salario) e métodos (registraPonto) para criar as classes-filha Professor e Diretor. As classes-filha, além de herdar os pontos anteriormente mencionados, terão algumas características únicas. Para a classe Professor, adicionou-se a inicialização das propriedades disciplina e turma e para Diretor, incluiu-se a propriedade unidade. No caso dos métodos, a classe Professor pode registrar a nota de um aluno, e a classe Diretor pode registrar um novo funcionário na unidade escolar que trabalha.
A herança tem uma grande aplicabilidade, pois ao invés de criarmos estruturas novas, pode-se aproveitar estruturas já existentes.
4. Polimorfismo
Polimorfismo em orientação a objetos é o princípio que permite que duas ou mais classes derivadas de uma mesma superclasse tenham métodos iguais (com mesmo nome e parâmetros), porém comportamentos distintos, redefinidos em cada uma das classes-filha. A seguir temos um exemplo utilizando o jogo de xadrez.
O jogo de xadrez tem diferentes peças, e cada peça realiza seu movimento: o peão movimenta para frente, o cavalo movimenta em L, a torre movimenta em linha reta e o bispo em diagonal. Trazendo isso para o princípio do polimorfismo, todos são derivados da classe Peca e tem o método mover, mas cada um se movimenta de uma maneira diferente, tendo o método redefinido na classe-filha (classe Torre, Cavalo, Bispo e Peao).
Conclusão
A orientação a objeto permite que o código reflita os conceitos do mundo real, facilitando a compreensão. Deste modo, é essencial ter um bom entendimento dos seus paradigmas (Abstração, Encapsulamento, Herança e Polimorfismo), para que seja possível desenvolver softwares mais eficientes, organizados e de melhor manutenção.
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.