Programação orientada a objetos
A programação orientada a objetos (OOP) é uma forma de escrever programas de computador que utiliza a idéia de "objetos" para representar dados e métodos. Normalmente, os programas de computador eram apenas uma lista de instruções para o computador, dizendo ao computador para fazer certas coisas de uma certa maneira, o que é chamado de programação procedural. Entretanto, na programação orientada a objetos, os programas de computador fazem uso de objetos que falam uns com os outros e para alterar os dados nesses objetos, para trabalhar de uma forma que o usuário deseja. Além disso, devido à forma como a programação orientada a objetos é projetada, ela ajuda o desenvolvedor permitindo que o código seja facilmente reutilizado por outras partes do programa ou mesmo por outras pessoas.
A maioria das linguagens de programação é uma mistura de diferentes tipos de formas de escrever programas de computador. Por exemplo, Python permite que os programas de computador sejam escritos tanto na programação orientada a objetos quanto na programação de procedimentos. Há muitas linguagens de programação que permitem escrever programas de computador no OOP, algumas dessas linguagens de programação são, por exemplo: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, etc.
Características
A idéia principal da programação orientada a objetos é que tudo é um objeto. Entretanto, o objeto pode ser de diferentes tipos:
- As variáveis podem conter informações (ou dados) de diferentes tipos que são suportados pela linguagem de programação. Exemplos disso são o tipo de dados inteiros e a estrutura de dados da lista. Variáveis é uma idéia que já está disponível nas linguagens de programação de procedimentos. Na programação orientada a objetos, as variáveis são conhecidas principalmente como atributos.
- Os procedimentos (também conhecidos como funções, métodos ou rotinas) são uma lista de instruções que dizem ao computador para receber entradas, fazer alguns cálculos ou alterar dados e retornar a saída para o usuário. Procedimentos é também uma idéia que já está disponível nas linguagens de programação de procedimentos. Na programação orientada a objetos, os procedimentos são conhecidos principalmente como métodos.
- As classes são um conjunto de diferentes variáveis e procedimentos. As classes geralmente conversam entre si para fazer alterações nos dados a fim de trabalhar da maneira que o usuário deseja.
Objetos é um termo usado para se referir a instâncias de classes.
Exemplos
Nos exemplos abaixo, criamos uma classe chamada Humana
. Esta classe contém os atributos nome
(para o nome da pessoa) e amigo
(para o nome do amigo). Cada um dos métodos da classe Humano
contém uma lista de instruções que faz uso tanto do nome
quanto dos atributos do amigo.
Python
Este código está em Python.
Java
Este código está em Java.
A classe humana
Um método para falar com a classe Humana acima
Críticas
Embora a programação orientada a objetos seja popular, mas há muitas pessoas que acham que é ruim e a criticam.
- Luca Cardelli escreveu um artigo intitulado "Bad Engineering Properties of Object-Oriented Languages".
- Richard Stallman escreveu em 1995, "Adicionar OOP ao Emacs não é claramente uma melhoria; eu usei OOP ao trabalhar nos sistemas de janelas da máquina Lisp, e discordo da visão habitual de que é uma maneira superior de programar".
- Um estudo de Potok et al. nos diz que há muito pouca diferença na produtividade entre a OOP e as abordagens processuais.
- Christopher J. Date disse que comparar o OOP com outras coisas, especialmente como o OOP e a outra coisa estão relacionados, é difícil porque as pessoas não concordam sobre o significado do OOP.
- Alexander Stepanov sugeriu que o OOP dê um ponto de vista limitado à matemática, e o chamou de "quase tão falso quanto a Inteligência Artificial".
- Paul Graham, um vendedor e programador de sucesso na Internet, sugeriu que o objetivo do OOP é agir como um mecanismo de pastoreio que impede que os programadores médios em organizações médias "causem demasiados danos". Isto também desacelera os programadores melhores e mais rápidos que sabem fazer as coisas de uma forma mais poderosa e compacta. [1]
Perguntas e Respostas
P: O que é programação orientada a objetos?
R: A programação orientada a objetos é uma forma de escrever programas de computador usando "objetos" para representar dados e métodos.
P: Qual é a diferença entre a programação orientada a objetos e a programação procedural?
R: Na programação procedural, os programas de computador são uma lista de instruções para o computador, dizendo-lhe para fazer certas coisas de uma determinada maneira. Na programação orientada a objetos, os programas de computador usam objetos que conversam entre si para alterar os dados nesses objetos e trabalhar da maneira que o usuário deseja.
P: Como a programação orientada a objetos beneficia os desenvolvedores?
R: A programação orientada a objetos permite que o código seja facilmente reutilizado por outras partes do programa ou até mesmo por outras pessoas.
P: Por que a linguagem de programação Python é conhecida?
R: Python permite que os programas de computador sejam escritos tanto em programação orientada a objetos quanto em programação procedural.
P: O senhor pode dar exemplos de linguagens de programação que permitem escrever programas de computador em programação orientada a objetos?
R: As linguagens de programação que permitem que o senhor escreva programas de computador em programação orientada a objetos incluem C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# etc.
P: O que são objetos na programação orientada a objetos?
R: Objetos são entidades na programação orientada a objetos que contêm dados e métodos.
P: Como os objetos funcionam na programação orientada a objetos?
R: Os objetos interagem uns com os outros para alterar os dados nesses objetos e para trabalhar da maneira que o usuário deseja.