Orientação a objeto

A orientação a objeto (OOP) é uma forma de abstração que torna a programação mais simbólica e intuitiva. É um tipo especial de "empacotamento" de código no qual um contexto é logicamente isolado do restante e tratado em termos de input e output.

Em tese, bem resumidamente, OOP é fazer o código corresponder a "objetos" do "mundo real" onde as variáveis respresentem "estados" e os "métodos" (funções vinculadas a objetos) representem a "relação" no "mundo real" desses objetos com outros [ou até com outras instâncias de si mesmo]. Na prática é um encapsulamento de código que tem seu próprio contexto de atividade (suas próprias variáveis e funções), isto é, que não se relacionam diretamente com o restante do código e que pode ser "instanciado" diversas vezes (que seriam como diversas cópias de um objeto, cada uma preservando seus próprios estados).

Prefiro pensar a OOP como uma maneira se transcender do nível genérico de lógica de programação para o nível de lógica de manipulação [da representação informática] do objeto. Uma vez definido, o objeto é tratado como tal e a aplicação é desenhada a nível conceitual, digamos, mais humano.

Exemplo trivial

package main

import (
    "fmt"
)

type MinhaEstrutura struct {
    nome   string
    número int
}

func (minha *MinhaEstrutura) ImprimaNomeENúmero() {
    fmt.Printf("Nome:\t%s\nNúmero:\t%d\n", minha.nome, minha.número)
}

func main() {
    m := new(MinhaEstrutura)
    m.nome = "Fulano"
    m.número = 10
    m.ImprimaNomeENúmero()

    /* saída:
       Nome:   Fulano
       Número: 10

    */
}

Comments