Programação Orientada a Objetos
Origem: Enciclopédia Omega, a enciclopédia livre.
Programação Orientada a Objetos revolucionou a programação ao criar elementos complexos, que reúnem comportamento (métodos, parecidos com as funções da Programação Estruturada), estado (atributos, parecidos com as variáveis da P.E.) e identidade (como as variáveis, algo que os distingue uns dos outros).
Há o conceito de classes, que são 'moldes' para esses elementos complexos, chamados de objetos. Entre classes há associações. Entre estas, algumas são especialmente interessantes, como a herança - que é quando uma classe é, a princípio, igual a outra: claro que apenas a princípio, aí acrescentamos ou retiramos algo. Programação Orientada a Objetos é algo realmente interessante e útil.
Na Programação Orientada a Objetos, temos trechos de código que representam objetos. Objetos digitais estão jogados em um ambiente montando um inteiro.
Composição
Um objeto pode ser composto por valores (computacionalmente falando, inteiros, strings, booleanos...) e outros objetos.
Considere como coisas simples uma barra de ferro ou madeira, um pedaço de vidro ou qualquer elemento feito apenas com um material. Assim sendo, uma automóvel não é uma coisa simples, mas um objeto. Poderíamos falar diretamente do volante (e até comprá-lo separadamente), daí temos que o volante é outra coisa. Faz parte do carro, mas existe completamente, mesmo sem carro (se vai ser útil ou não sem o carro é uma outra questão). Mas o volante é simples? Não, é um outro objeto. E assim temos objetos e mais objetos se compondo, uns formados por outros, até um momento em que não há mais objetos, apenas coisas simples.

