Overvisão
Object-oriented programming (OOP) é um paradigma de programação baseado no conceito de “objectos”, que podem conter dados, sob a forma de campos, muitas vezes conhecidos como atributos; e código, sob a forma de procedimentos, muitas vezes conhecidos como métodos. Uma característica dos objetos é que os procedimentos de um objeto podem acessar e muitas vezes modificar os campos de dados do objeto ao qual estão associados (os objetos têm uma noção de “isto” ou “si mesmo”). Há uma diversidade significativa de linguagens OOP, mas as mais populares são baseadas em classes, o que significa que os objetos são instâncias de classes, que tipicamente também determinam seu tipo.
Discussão
Até agora, temos focado na programação de procedimentos. Baseado em programação estruturada, procedimentos (rotinas, sub-rotinas ou funções) contêm uma série de passos computacionais a serem executados. Qualquer procedimento pode ser chamado em qualquer ponto durante a execução de um programa, inclusive por outros procedimentos ou por si mesmo. O foco da programação de procedimentos é decompor uma tarefa de programação em um conjunto de variáveis, estruturas de dados e sub-rotinas. Pequenos programas e scripts tendem a ser mais fáceis de desenvolver usando uma abordagem procedural simples.
Object-oriented programming em vez disso decompõe uma tarefa de programação em objetos que expõem o comportamento (métodos) e dados (membros ou atributos) usando interfaces. A distinção mais importante é que enquanto a programação procedural usa procedimentos para operar em estruturas de dados separadas, a programação orientada a objetos agrupa os dois juntos, assim um “objeto”, que é uma instância de uma classe, opera em sua “própria” estrutura de dados. Programas maiores se beneficiam de um melhor isolamento e reutilização de código e dados fornecidos por uma abordagem orientada a objetos.
Objetos e classes são frequentemente projetados para representar objetos do mundo real. Considere uma porta como um exemplo de um objeto do mundo real. A maioria das portas tem funcionalidade limitada. Elas podem ser abertas e fechadas, e trancadas e destravadas. Em programação procedural, podemos desenhar funções para abrir, fechar, trancar e desbloquear uma porta, tais como:
Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)
Object-oriented programming combines code and data, so that, instead having separate functions act on doors, we design doors that have methods that can act on themselves. Os métodos representam algo que o objeto pode fazer, e são tipicamente definidos usando verbos. O pseudo-código da porta orientada a objetos pode parecer:
Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()
Objetos também podem ter atributos, algo que o objeto é ou tem, e são tipicamente definidos usando substantivos ou adjetivos. Os atributos da porta podem incluir:
Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked
Quando escrevemos código para definir uma porta genérica, criaríamos uma classe de porta. A classe de porta conteria todos os métodos que uma porta pode executar e todos os atributos que uma porta pode ter. Então criaríamos instâncias da classe (objetos) para representar portas específicas, tais como uma porta frontal, porta traseira ou porta do quarto em uma casa, ou uma porta esquerda e uma porta direita em um carro.
Key Terms
attribute A specification that defines a property of an object. class An extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods). instance :Uma ocorrência concreta de um objeto. method Uma especificação que define um procedimento ou comportamento de um objeto. object Uma instância particular de uma classe onde o objeto pode ser uma combinação de variáveis, funções e estruturas de dados. this, self, or Me Palavras-chave usadas em algumas linguagens de programação de computadores para se referir ao objeto, classe ou outra entidade da qual o código atualmente em execução faz parte.