Header AD

Orientação a Objeto do jeito Go

Introdução

Bom, primeiro antes de tudo é importante entender que o mundo real, é totalmente diferente do mundo digital, acredito que isso é meio obvio, mas quando tentamos trazer para o mundo digital algumas informações do mundo real, preciso estruturar as coisas para que elas façam um pouco de sentido.

Vamos pensar da seguinte forma, se eu sou uma pessoa, você logo entende que eu tenho algumas características e isso é instinto e memória do que você já viveu, concorda? Sua mente está programada a lidar com essas informações, mas no caso do mundo digital isso não é bem assim, a gente precisa definir essas características e para isso a gente utiliza um paradigma(modelo/padrão) para definir isso.




Imagina uma casa, a palavra casa na mesma hora sua mente já imaginou um quadrado com um triangulo em cima, duas janelas, um retângulo da sua altura... Percebeu que sua mente está treinada? Bom isso é a Programação Orientada a Objetos, quando você cria modelos para ajudar a você trazer as características do mundo real para o digital. Tá, mas como isso acontece?

Algumas linguagem podem criar estruturas, Classes ou qualquer jeitinho que permita você a padronizar determinado modelo.

Características


É claro que as caracteristicas de uma casa irão depender da intenção e qual objetivo aquele software quer atender, mas vamos ver um exemplo usando Go:

type Casa struct
{
  endereco string
  numero int
  quartos int
  banheiros int
  area float64
}

Então, viu que agora a gente tem algumas caracteristicas definidas dentro de um padrão? E quando quisermos construir uma casa dentro do nosso código, basta resgatar esse modelo?

Agora que a casa já tem suas características definidas, podemos avançar para um outro conceito, que seria os comportamentos que aquela casa tem como por exemplo: Abrir a porta, abrir a janela, trancar porta, trancar janela.

Comportamentos


Perceba que esses comportamentos para o nosso cérebro já existem e a gente nem precisa se preocupar com isso? Mas imagina "você trancando uma melancia?" ficou esquisito né? Seu cérebro não tem esse padrão definido, você não saberia lidar com essa informação, logo precisamos ajudar o código a definir esses comportamentos da nossa casa. A e não precisa fazer tudo, só precisamos criar um algumas e aos poucos ir implementando.


func (c Casa) abrirJanela() {
    fmt.Println("Janela aberta")
}

func (c Casa) fecharJanela() {
    fmt.Println("Janela fechada")
}

func (c Casa) ligarLuz() {
    fmt.Println("Luz ligada")
}

func (c Casa) desligarLuz() {
    fmt.Println("Luz desligada")
}



Um comportamento da casa agora está amarrado ao objeto casa, perceba que depois da palavra reservada func, criamos um objeto c do tipo Casa, depois definimos o comportamento abrirJanela que é uma função exclusiva daquele objeto.


Exemplo Completo


Com isso agora depois de criar um objeto podemos facilmente usufruir desses comportamentos dentro do nosso código


package main

import "fmt"

type Casa struct {
endereco  string
numero    int
quartos   int
banheiros int
area      float64
}

func (c Casa) abrirJanela() {
fmt.Println("Janela aberta")
}

func (c Casa) fecharJanela() {
fmt.Println("Janela fechada")
}

func (c Casa) ligarLuz() {
fmt.Println("Luz ligada")
}

func (c Casa) desligarLuz() {
fmt.Println("Luz desligada")
}

func main() {
fmt.Println("Definindo uma casa")
casa := Casa{}
casa.abrirJanela()
casa.fecharJanela()
}



Execute esse código no PlayGround: https://go.dev/play/p/HZpaqB-biPc

Postar um comentário

Post a Comment (0)

Postagem Anterior Próxima Postagem

Follow

Header AD

Last Video

Header AD