Como Objeto, atributos, classe e instância representam nossa realidade na POO?
- #Python
- #POO
Olá! Sou embaixadora do DIO Campus Expert, turma 7, e fui desafiada a escrever um artigo … Quando iniciamos estudos em programação e POO, é comum ficarmos perdidos especialmente nos conceitos do título. Esse artigo traz para você uma versão simplificada deles, e deve te ajudar a aplicar esses conceitos até mesmo em seu seu dia a dia, a base de entendimento! Como? vamos lá!
FONTE: https://tldrmoviereviews.com/2018/01/03/tv-review-black-mirror-uss-callister/
Você já assistiu o primeiro episódio de Black Mirror da temporada 4, USS Callister, em que o personagem Robert Daly desenvolve um jogo e decide simular nele uma versão virtual de seu interesse amoroso, a Nanette Cole? Para conseguir esse feito, ele insere muitas características e comportamentos sobre essa pessoa de forma bem específica.
A análise do episódio não é foco de nosso artigo, porém me lembrou o quanto uma simulação pode ser eficiente a partir das informações que fornecemos sobre um objeto ao programa! O Robert realmente forneceu o máximo de detalhes para aquela simulação ficar o mais fidedigna possível do objeto real, resultando em uma personagem com aparência física e ações comicamente tão próximas da Nanette do mundo real.
Cena do episódio USS Callister, em que jogo criado para simulação de uma realidade fantasiosa, com pessoas que pertencem à vida real do criador.
FONTE: https://www.indiewire.com/features/general/black-mirror-uss-callister-behind-the-scenes-aaron-paul-shatner-spoilers-1201912123/
Deixando a fantasia de lado, podemos de fato criar uma representação detalhada de um humano, que na Programação Orientada a Objetos (POO) será considerado um objeto. A POO deixa nossos casos e programas mais eficientes… e tem justamente a proposta de resolver problemas com limites e regras a partir do uso das características e comportamentos específicos de um objeto.
Está curioso (a) em como a POO trará essa abordagem para a programação?
A POO
Há 2 tipos de linguagem: estruturada e a orientada a objetos (POO). Enquanto a linguagem estruturada nos aproxima do modo de “pensar” da máquina, com a POO fazemos a máquina se aproximar do modo de raciocínio humano, representando um objeto de nosso mundo real na programação. Algumas das linguagens em que mais aplicamos POO são: Python, C# e Java. Como é feita essa representação?
Objeto e Classe
Objeto: Assim como já chamamos um elemento de nosso mundo de objeto normalmente, este será, aqui também, algo com características e comportamentos próprios dele. Para facilitar nossa imersão, vamos imaginar objetos visíveis: escolhemos 2 pessoas, Carlos e Carla, que serão objetos distintos. Ambos são pessoas e por isso farão parte da mesma classe: Pessoa.
Classe: É como um agrupamento só de objetos de mesmo tipo, e servirá também como molde para criar novos objetos em nosso programa. Se a classe é Pessoa, teremos objetos que têm características e comportamentos de pessoas. Mais a frente, você verá 2 conceitos que formam esse molde: atributos e métodos.
Uma reflexão
Note que o computador não tem ideia da nossa realidade, tudo que ele faz e executa num programa é baseado no que informamos a ele... Para nós, no começo, pode ser confuso entender que se criamos a classe chamada Pessoa, o computador automaticamente não saberá por sí só o que uma Pessoa faz. Para ele, até esse ponto, a classe Pessoa é somente uma classe nomeada com caracteres do alfabeto, e pronto. Ele nada assumirá ou adivinhará sobre a classe só com isso.
Atributo, Método e Instância
E como faremos ele simular e representar uma pessoa, de fato?... Informando-o quais atributos e comportamentos um objeto do tipo Pessoa terá! Vamos então para nossos próximos conceitos.
Informaremos as características e comportamentos de Carlos e Carla, os 2 objetos da classe Pessoa, no programa. Um objeto é descrito por suas características (atributos) e comportamentos (métodos), deixando essa representação ainda mais eficiente no mundo virtual. Você também concorda que Carlos e Carla terão algumas características e comportamentos diferentes, e também iguais por ambos serem pessoas? Carlos tem cabelo preto enquanto Carla tem cabelo ruivo, mas Carlos e Carla terão cabelo por serem pessoas. Carlos canta, já Carla faz crochê (ações, comportamentos), mas ambos respiram com certeza.
Atributo: Características que uma Pessoa tem. Carlos e Carla têm o atributo cabelo em comum, diferenciando somente na cor. E sim, 2 objetos podem ter todos os atributos iguais, sem problema, como ambos tendo olhos castanhos.
Método: Ações, funções ou comportamentos que uma Pessoa tem. Carlos e Carla têm o método respirar em comum, por exemplo.
Instância: Carlos e Carla podem até ter todos os métodos e atributos iguais, porém cada um deles, ao ser criado, terá um espaço diferente na memória do computador. Precisamos criar uma instância de cada objeto dessa classe para que existam na memória.
Instância está ligada a um particular conjunto de dados, e “criar uma instância”, significa criar um objeto específico, cujo comportamento e atributos são definidos pela classe. Quando criamos uma instância, levando à prática, estamos atribuindo características a uma variável. O nome Instância vem de instance, que significa caso ou exemplo. Conhece a expressão "for instance”,? Significa por exemplo em inglês).
FONTE: https://www.dio.me/articles/programacao-orientada-a-objeto
Então, criamos a classe Pessoa e instanciamos os objetos Carlos (atributo: cabelo preto olhos castanhos; métodos: canta e respira) e Carla (atributo: cabelo ruivo, olhos castanhos; métodos: faz crochê e respira).
Aplicando
Por fim, agora que você entendeu melhor os conceitos tão famosos de POO, vamos representar nossa realidade com um exemplo? Se há uma caneta bic de modelo tinta azul e tampa transparente, qual seria a classe, atributos e métodos do objeto caneta bic?
FONTE: https://tldrmoviereviews.com/2018/01/03/tv-review-black-mirror-uss-callister/
Classe: Caneta; Atributos: tinta azul, tampa transparente; Métodos: escreve, pode ser destampada e tampada, etc. Claro que cabe muito mais atributo e método aqui, mas o básico foi bem aprendido! Com isso, resta a você praticar.
Espero que esse artigo tenha te ajudado! Sugiro iniciar algum dos bootcamps mais recentes da DIO, como o da Vivo de Python para AI e C# da Avanade! Vamos nessa?
Outras referências:
https://www.imdb.com/title/tt5710974/
Conteúdo do Bootcamp Avanade Decola Tech #3