Saltar para o conteúdo

Introdução à programação/Orientação a objetos

Origem: Wikilivros, livros abertos por um mundo aberto.

A Orientação a Objeto é um paradigma de Análise orientada ao objeto, Projeto orientado ao objeto e Linguagem de programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas objetos.

Em alguns contextos, prefere-se usar Modelagem de dados orientada ao objeto, em vez de Projeto orientado ao objeto.

A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.

Hoje existem duas vertentes no projeto de sistemas orientados a objetos. O projeto formal, normalmente utilizando técnicas como a notação UML e processos de desenvolvimento como o RUP; e a programação extrema, que utiliza pouca documentação, programação em pares e testes unitários.

Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.

Smalltalk, Modula, Eiffel, Perl, Python, Ruby, PHP, C++, Java, D e Vala são as linguagens de programação mais importantes com suporte a orientação a objetos.

  • Classe representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos, através de métodos, e quais estados ele é capaz de manter, através de atributos.

Exemplo de classe:

HUMANO é uma classe e tem como atributos: 2 BRAÇOS, 2 PERNAS, 1 CABEÇA, etc...
  • Objeto é uma instância de uma classe. Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.

Exemplo de objetos da classe Humanos:

JOÃO é um objeto da classe HUMANOS, apresentando todos os atributos dessa classe mas com a sua individualidade.

Objeto é portanto uma discriminação da classe, sendo a classe uma generalização de um conjunto de objetos idênticos ou com a mesma base.

  • Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe.
  • Herança é o mecanismo pelo qual uma classe (subclasse) pode estender outra classe (superclasse), aproveitando seus comportamentos (métodos) e estados possíveis (atributos). Há herança múltipla quando uma subclasse possui mais de uma superclasse. Essa relação é normalmente chamada de relação "é um". Um exemplo de herança: Mamífero é superclasse de Humano. Ou seja, um Humano é um mamífero.
  • Associação é o mecanismo pelo qual um objeto utiliza os recursos de outro. Pode tratar-se de uma associação simples "usa um" ou de um acoplamento "parte de". Por exemplo: Um humano usa um telefone. A tecla "1" é parte de um telefone.
  • Encapsulamento consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados. Exemplo:
Você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom).
  • Abstração é a habilidade de concentrar-se nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software.
  • Polimorfismo permite que uma referência de um tipo de uma superclasse tenha seu comportamento alterado de acordo com a instância da classe filha a ela associada. O polimorfismo permite a criação de superclasses abstratas, ou seja, com métodos definidos (declarados) e não implementados, onde a implementação ocorre somente nas subclasses não abstratas.


Wikipedia
Wikipedia
A Wikipédia tem mais sobre este assunto:
Introdução à programação