As descobertas que faço e coisas que aprendo

Um dos paradigmas que podem ser seguidos na programação é a orientação por objetos, que consiste basicamente em ter um sistema não linear com objetos que podem interagir entre si, uma abordagem diferente da Programação Estruturada.

Na programação orientada a objetos o sistema é muito mais flexível, escalonável e de rápido desenvolvimento, porém perde muito em performance caso fossemos comparar diretamente com programação estruturada.

Os conceitos básicos de POO (Programação Orientada a Objetos) são:

  1. Abstração
  2. Encapsulamento
  3. Herança
  4. Polimorfismo

Abstração

O conceito de trazer uma ideia do "mundo real" para o código. É na abstração que você descreve seu objeto para o computador definindo sua identidade, propriedades e métodos. Digamos que precisamos abstrair uma televisão:

// Abstração

// Identidade, nome do objeto, identificador unico.
objeto Televisao = {
    // Propriedades do objeto
    cor: "Preta",
    marca: "Tvision",
    material: "plastico"
}

// Métodos, ações (funções) que seu objeto executa

Televisao.ligar()
Televisao.mudarCanal()
Televisao.aumentaVolume()

Este é um exemplo genérico de abstração, o código e forma de dispor os elementos e funções pode variar de acordo com a linguagem de programação que estiver utilizando.

Encapsulamento

O conceito de encapsulamento é utilizado para manter a segurança dos valores que são utilizados dentro do objeto, as ações e métodos que são executados dentro do objeto não são expostos ao usuário. Seguindo o exemplo da televisão, quando o usuário aumenta o volume de uma TV ele não sabe e nem tem acesso aos valores e comandos que são transmitidos para a TV, esse seria um encapsulamento, as ações são restritas apenas ao sistema. Ou caso fosse necessário trocar o controle da TV, poderia ser modificada apenas uma parte do sistema sem problemas, pois no final o funcionamento continuaria o mesmo.

O encapsulamento na programação orientada a objetos trabalha com o conceito de isolar ao máximo cada objeto e função para que o sistema funcione de forma flexível, seja fácil de modificar e as alterações não afetem o usuário final.

Para trabalhar com valores das propriedades no encapsulamento são utilizados getters (métodos que requisitam valores do sistema) e setters (métodos que modificam valores no sistema).

Herança

É  a possibilidade de transferirmos propriedades e métodos entre objetos. Um objeto filho possui a capacidade de herdar métodos e valores de um objeto pai.

A herança possibilita que façamos a criação de objetos específicos através de objetos mais generalistas.

Existe a herança direta onde o objeto herda de um objeto logo acima dele e a herança indireta que o objeto herda valores de várias camadas acima.

// Herança
objeto Animal = {
    tipo: "ser vivo",
}

objeto Cachorro extende Animal

Cachorro.tipo = "ser vivo"

Utilizando da herança podemos trabalhar com objetos construtores que possuem um padrão geral de métodos e valores, onde seus filhos possuem alterações ou métodos mais especificos para cada caso.

Polimorfismo

É o conceito de utilizar um mesmo método para vários objetos alterando os valores de retorno. Um mesmo método com comportamentos diferentes.

Durante a execução desse método ele terá um valor de acordo com cada chamada.

// Polimorfismo

objeto Eletrodomestico = {
    função Ligar(){
        return "Está ligado!"
    }
}

objeto Radio extende Eletrodomestico

objeto Radio = {
    função Ligar(){
        return "O radio está ligado"
    }
}

Conclusão

Esses são os conceitos básicos para a iniciação á programação orientada a objetos, eles podem ser utilizados em conjunto e combinados com diversos outros conceitos e padrões para que você tenha um código eficiente.

You've successfully subscribed to Segredo Dev
Welcome back! You've successfully signed in.
Great! You've successfully signed up.
Your link has expired
Success! Your account is fully activated, you now have access to all content.