Um pouco de Filosofia
Mas antes de falarmos em nosso tema diretamente, vamos voltar no tempo e discutir a obra de um filósofo grego muito comentado: Aristóteles.
A razão disso é bem simples: apesar do conceito de Programação Orientada a Objetos ter surgido apenas na segunda metade dos anos 80, a verdade é que as idéias básicas por trás desse conceito já haviam sido descritas por Aristóteles, lá na Grécia antiga, num trabalho chamado KATEGORIEN (Categorias), que faz parte de sua obra principal, conhecida como ORGANON (Organismo ou Método).
O ORGANON de Aristóteles é a tentativa dele de sistematizar as formas de pensamento. É nessa obra que ele descreve, por exemplo, os silogismos, que são as formas básicas de raciocínio, tipo:
PREMISSA MAIOR: Todos os homens têm pêlos no rosto.
PREMISSA MENOR: Ed Lonewolf é um homem.
CONCLUSÃO: Ed Lonewolf tem pêlos no rosto.
Conclusão, aliás, muito correta, já que estou barbudo no momento!
Mas cuidado, porque nem todo silogismo leva a uma conclusão correta como esse. Tomemos um outro exemplo, só para tornar isso claro.
PREMISSA MAIOR: Os homens são seres racionais.
PREMISSA MENOR: As mulheres não são homens.
CONCLUSÃO: As mulheres não são seres racionais.
Essa, é claro, é uma conclusão errada, embora muitos questionem esse ponto...
Deixando porém o debate "machismo versus feminismo" de lado, foi raciocinando dessa forma que Aristóteles chegou às conclusões que nos interessam.
Quando eu digo algo como "Todos os homens têm pelos no rosto", estou pensando em uma categoria de seres (os homens) e caracterizando essa categoria através de um atributo (ter pelos no rosto).
Aristóteles notou que alguns atributos de certas categorias podem ser mudados, sem que com isso a categoria mude, enquanto que outros atributos não podem ser mudados sem que a categoria perca a sua identidade. Para facilitar as coisas, e sair dessa conversa de filósofo um pouco, tomemos um exemplo mais prático.
Imagine uma cadeira e um banco. Apesar de suas óbvias diferença, ambos podem ser enquadrados em uma categoria de objetos que vamos chamar de "objetos de sentar".
Para ser um "objeto de sentar" é preciso, antes de tudo, que o objeto em questão tenha um assento onde possamos repousar nossas nádegas, e um suporte estável composto de uma certa quantidade de pernas. Esses atributos são chamados essenciais. São eles que definem a funcionalidade de uma categoria, ou seja, para que aquela categoria serve.
Assim, se tirarmos o assento de uma cadeira ou de um banco, o objeto deixa de ser um "objeto de sentar", pois perde a funcionalidade básica dessa categoria de objetos. Da mesma forma, se reduzirmos gradativamente o número de pernas de uma cadeira ou banco, veremos que não é nada seguro sentar numa cadeira ou banco com apenas duas pernas. Essa experiência pode ser muito dolorosa para as já citadas nádegas...
Por outro lado, podemos ter muitos tipos de cadeiras. Cadeiras com braços, acolchoadas, giratórias... Mas todos esses tipos tem as duas características básicas de um "objeto de sentar", ou seja, um assento e um suporte (pernas ou rodinhas) que o mantém longe do solo.
Revisando então, só para ter certeza de que a coisa ficou clara até aqui: As propriedades "essenciais", segundo Aristóteles, são as que definem a funcionalidade de uma categoria de objetos.
Há porém propriedades que ele chamou de "acidentais". A cor dos nossos "objetos de sentar", por exemplo, é acidental, ou seja, ela pode mudar sem que os objetos em questão percam sua funcionalidade.
De fato, você pode sentar numa cadeira preta da mesma forma que numa de cor verde. E o fato de pintarmos uma cadeira, mudando sua cor, não impede que façamos uso dela como "objeto de sentar". Só é bom esperar a tinta secar, é claro...
RESUMINDO:
Propriedade essencial é aquela que, se alterada, faz com que a categoria perca sua funcionalidade.
Propriedade acidental é aquela que pode ser alterada sem que a categoria de objetos perca sua funcionalidade.
Agora deixemos Aristóteles em paz e vamos à POO.
1.
2. Um pouco de Filosofia
3.
4.
5.
6.
7.
8.
9.
10.
11.