A importância de entender programação orientada a objetos.
Photo by Padraig Treanor on Unsplash
Um dos meus grandes erros quando estava iniciando em programação foi não estudar da maneira correta o conceito de objetos em programação! E hoje compreendo a importância de se entender bem o que é um objeto. E vejo que muitos iniciantes ainda não entendem muito bem esse tema. Por isso o foco desse artigo é destacar a importância de saber o que são objetos no contexto da programação.
Por que precisamos?
No mundo real somos cercados de objetos, não concorda? Temos vários objetos que podemos manipular e usar no nosso dia a dia. Nossos smartphones, tablets, computadores e entre outros. Estes possuem propriedades, imagine seu computador que possui altura, cor, peso e outras propriedades. Agora seu computador além disso tem funcionalidades (funções ou métodos), ele pode possuir suporte a bluetooth, ter uma tecnologia especifica como uma tela AMOLED, entre outras.
Podemos incluir também como exemplo uma casa. Ela tem propriedades como tamanho do terreno, altura, número de quartos. Mas além disso tem funcionalidades, como abrir e fechar portas, pode ter câmeras de vigilância, portão eletrônico entre outras.
Tudo o que foi citado acima se encaixa em um conceito chamado abstração, que é pegar um objeto que existe no mundo real e tentar transformar ou traduzir isso para dentro de um software, para dentro de um sistema. Mas isso é mais complexo do que parece, pois trazer um objeto do mundo real para um sistema envolve muitos fatores, existem contextos diferentes. Então vamos para mais um exemplo:
Imagine que você precisa criar um objeto carro. O carro tem várias propriedades (atributos) como tamanho, cor, peso, quantidade de portas, etc. Assim também temos funcionalidades como ligar e desligar o motor do carro, acender faróis e fora outras. Se você for criar esse objeto pensando no contexto de uma oficina de manutenção que precisa de um sistema de cadastro para controlar o número de clientes por dia, você precisaria de algumas propriedades desse carro como: Nome do proprietário do veículo, modelo, qual tipo de problema ele está apresentando, se é uma revisão geral do veículo ou não, fabricante do carro e outras.
Mas agora pense em como seria esse mesmo objeto carro em um contexto para um sistema de um órgão público que tem como tarefa administrar e fiscalizar o trânsito de veículos, aplicar provas para novos condutores, renovar as habilitações, enfim um contexto diferente da oficina. Neste caso você acha que eles teriam um sistema de cadastro semelhante? Obviamente que não! O órgão publico precisa saber se aquele carro tem um dono ou não, se a documentação está correta, se não existe alguma irregularidade com o condutor, além disso pode precisar saber o ano de fabricação do veiculo, se já sofreu algum tipo de alteração no chassi, entre outras informações. Enfim, quero que você entenda que o conceito de objeto depende muito de cada situação. Por isso o conceito de saber abstrair do mundo real um objeto e saber simplificar ele dentro de um sistema é essencial!
Então sim. Podemos ter um objeto sendo abstraído de um maneira diferente, pois cada sistema pode possuir contextos que variam muito!
Construindo objetos
Vamos agora trazer um objeto do mundo real e transformar em um objeto pra nosso código, acredito que visualizando vai entender melhor tudo o que leu até agora:
const carro = {
marca: 'Renault',
cor: 'Azul',
peso: 800.93,
portas: 4
}
A primeira coisa a se destacar e provavelmente você já sabe é que a notação de objetos usada em JavaScript é {}. Outro detalhe é que tudo o que está dentro de carro são nossos atributo (propriedade). Na frente temos o valor desse atributo que no caso de marca é 'Renault'.
A maneira que construímos o objeto carro acima é a mais usada. É conhecida por se chamar notação literal. O que está sendo feito é que estamos estruturando os dados, trazendo do mundo real e tentando simplificar para dentro do contexto de programação. Mas o interessante é que dentro desse objeto, podemos ter uma funcionalidade muito comum nos carros que é acender farol:
const carro = {
marca: 'Renault',
cor: 'Azul',
peso: 800.93,
portas: 4,
ano: 2000,
Acenderfarol: function(){
console.log('Acender Farol');
}
}
console.log(carro);
Então agora tenho um objeto e dentro dele é possível ter funções! Se você rodar o código no seu terminal ou browser vai ter o seguinte resultado:
Vamos agora entender como podemos acessar os valores de dentro do objeto carro.
Buscando valores
Existem duas maneiras de recuperar os valores que cada atributo recebe de dentro de um objeto. A primeira é conhecida como notação de ponto:
const carro = {
marca: 'Renault',
cor: 'Azul',
peso: 800.93,
portas: 4,
ano: 2000,
Acenderfarol: function(){
console.log('Acender Farol');
}
}
console.log(carro.marca);
Veja que no código acima estamos tratando de exibir o resultado do terminal dentro de um log, mas você sempre vai fazer isso fora dele. Vimos que a partir do momento que coloco o meu objeto carro posso acessar os atributos que esse objeto tem:
Então colocando carro.marca terá esse resultado no terminal:
Existe também notação de colchetes. Repare que nessa passamos de uma outra maneira, utilizando do []:
O resultado permanece o mesmo. É apenas uma maneira diferente de recuperarmos os valores. Além disso podemos usar o destructuring, mas este tema é abordado melhor em outro artigo.
Conclusão
O conceito de objeto não se resume apenas ao que abordamos nesse artigo! Existem outros princípios como: Encapsulamento, Herança, Composição, Polimorfismo e entender e saber aplicar as boas práticas. Apenas estamos começando de forma básica à entender o conceito de objeto! Você vai ver que esses assuntos estão bem interligados.
Agradeço mais uma vez por ler até o final, caso tenha alguma dúvida ou sugestão entre em contato comigo pelo LinkedIn ou deixe um comentário. Muito obrigado e até o próximo post! 😉🚀