Conceito
Paradigma de análise e desenvolvimento de sistemas baseado na composição e interação entre componentes de software denominados objetos.
O termo Programação Orientada a Objetos foi criado por Alan Kay, autor da linguagem Smalltalk, mas mesmo antes da Smalltalk, algumas idéias de POO já era utilizada com a linguagem Simula 67, portanto não é um paradigma novo, mas ganhou mais notoriedade com o advento dos sistemas web, atualmente sendo desenvolvimento com a utilização de frameworks.
Linguagens antigas já ofereciam suporte a POO (Programação Orientada a Objetos), como por exemplo pascal.
Ex.: Programa escrito em linguagem pascal utilizando conceitos de POO
program poo;
type cubo = object
arestas: integer;
lado: integer;
function area(l:integer): integer;
procedure setLado(l: integer);
end;
function cubo.area(l:integer):integer;
begin
area:=l*l;
end;
procedure cubo.setLado(l:integer);
begin
lado := l;
end;
var c: cubo;
begin
c.setLado(5);
writeln('A área é: ',c.area(c.lado));
readln;
end.
A Orientada a Objetos está baseada em 4 conceitos fundamentais: Abstração, Encapsulamento, Herança e Polimorfismo
Abstração - é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais;
Encapsulamento - determina o nível de acesso para atributos e métodos da classe;
Herança - mecanismo que possibilita uma classe usar campos e métodos definidos em outra classe, o que significa compartilhamento de membros entre classes;
A herança pode simples (a classe secundária herda de uma única classe primária); ou múltipla (uma classe secundária herda métodos e atributos de mais de uma classe);
Polimorfismo - muitas formas, em Programação Orientada a Objetos significa realização de uma tarefa de formas diferentes;
Classe - modelo para um novo tipo de objeto que pode ser definido pelo programador, que relaciona suas características e comportamentos;
Objeto - estrutura que agrupa atributos, bem como ações (métodos) para manipulá-los;
Métodos - ações ou funções desempenhadas pela classe;
Correção: ações ou funções (sub-rotinas) executadas por um objeto de uma classe ao receber uma mensagem;