Nicolas
Sumário 1
2. Fundamentos da Metafísica e Lógica Aristotélico-Porfiriana 3
3. Pilares da Programação Orientada a Objetos (com exemplos em Java) 7
4. Tecendo a Conexão: Mapeando Conceitos Filosóficos na POO (Java) 17
5. Conclusão: A Relevância Perene das Estruturas Fundamentais do Pensamento 22
Que a filosofia aristotélica está objetivamente presente em tudo o que podemos compreender pela razão1 — e até mesmo naquilo que nos escapa à plena inteligibilidade — é algo inegável. Sendo as aulas de Programação Orientada a Objetos um campo acessível à nossa razão, segue-se, por consequência lógica, que nelas há traços dessa filosofia. É precisamente essa conexão que, de modo informal, proponho-me a explorar neste texto2 — se é que assim o posso denominar. Não pretendo, evidentemente, elaborar um tratado3, mas apenas apresentar reflexões e relações que pude estabelecer entre o conteúdo abordado em sala de aula e a filosofia de Aristóteles e Porfírio, ainda que esta última de maneira auxiliar.
Este artigo4 propõe uma investigação acerca das correspondências entre os conceitos fundamentais da Programação Orientada a Objetos (POO), exemplificada pela linguagem Java, e os princípios estruturantes da metafísica e da lógica aristotélicas, bem como da sistematização de Porfírio. Argumentar-se-á que a maneira pela qual a POO modela entidades, suas propriedades, comportamentos e relações hierárquicas ecoa, em larga medida, a análise aristotélica da realidade em termos de substâncias, acidentes, essência, forma, matéria, ato e potência, além de refletir a estrutura classificatória da Árvore de Porfírio, pautada em gênero, espécie e diferença específica.
Neste estudo, buscar-se-á demonstrar como Classes podem ser vistas como análogas às Substâncias Secundárias (espécies e gêneros) ou às Formas; Objetos, às Substâncias Primárias (indivíduos concretos); Atributos, aos Acidentes; Métodos, às Potencialidades e Atos (ações e paixões); e Herança, à própria estrutura hierárquica de gêneros e espécies delineada por Porfírio.
O propósito desta investigação é evidenciar que a POO, longe de constituir mera convenção técnica5, reflete profundas estruturas ontológicas e lógicas clássicas6 (pela sua natureza; pois, como dito, de intencional não há nada), permitindo, assim, um enriquecimento mútuo na compreensão de ambos os domínios7. Se tal intento logrará êxito, contudo, dependerá sempre de ti, dileto leitor8.
À primeira vista, os domínios da filosofia metafísica clássica, ancorada nas investigações ontológicas de Aristóteles e na lógica classificatória de Porfírio, e da engenharia de software contemporânea, particularmente no paradigma da Programação Orientada a Objetos (POO) exemplificado pela linguagem Java em nosso artigo, parecem habitar esferas intelectuais radicalmente distintas910. Uma lida com as questões mais fundamentais do ser, da substância, da essência e da categorização do real; a outra, com a construção pragmática de sistemas computacionais abstratos, porém funcionais. Contudo, sob a superfície da aparente disparidade disciplinar, proponho-me a desafiar essa percepção inicial, argumentando e demonstrando a existência de paralelos estruturais e conceptuais profundos e significativos entre os princípios fundamentais da POO e os pilares da metafísica e da lógica desenvolvidos por Aristóteles e sistematizados por Porfírio.
A Programação Orientada a Objetos consolidou-se, desde as últimas décadas do século XX, como um paradigma dominante na engenharia de software moderna. Seu sucesso reside na sua capacidade de fornecer um poderoso arsenal conceptual para modelar sistemas complexos de forma mais intuitiva e gerenciável. Através da organização do código em torno de "objetos" – entidades que encapsulam dados (atributos) e comportamentos (métodos) – a POO permite aos desenvolvedores espelhar, com maior fidelidade, as entidades do mundo real ou conceptual11 que se pretende representar e manipular computacionalmente. Linguagens como Java oferecem um conjunto robusto de mecanismos – classes, herança, polimorfismo, encapsulamento – que facilitam essa abordagem, promovendo a reutilização de código, a modularidade e a manutenibilidade dos sistemas.12
Por outro lado, o legado de Aristóteles (384-322 a.C.), particularmente a sua Metafísica e as suas Categorias, juntamente com a clarificação lógica providenciada por Porfírio (c. 234-c. 305 d.C.) na sua Isagoge (Introdução às Categorias de Aristóteles), constitui a pedra angular da ontologia e da lógica ocidentais13. Aristóteles empreendeu a monumental tarefa de analisar a estrutura fundamental da realidade, distinguindo entre substância (aquilo que é em si mesmo14) e acidentes (as propriedades que inerem na substância), explorando os conceitos de matéria e forma, ato e potência, e estabelecendo as categorias do ser – os modos fundamentais de predicação. Porfírio, por sua vez, sistematizou a lógica da classificação através dos cinco predicáveis (gênero, espécie, diferença específica, próprio, acidente) e da célebre "Árvore de Porfírio", um modelo hierárquico para organizar o conhecimento e definir entidades através de divisões sucessivas. Estas ferramentas conceptuais estabeleceram um quadro rigoroso para a análise do ser, da predicação e da classificação hierárquica que influenciou indelevelmente o pensamento subsequente ao longo de mais de dois milênios.15
Dar-se-á o objetivo primordial deste trabalho, portanto, duplamente: primeiramente, aprofundar a compreensão da própria natureza da POO, revelando as suas fundações conceptuais não como meras convenções técnicas arbitrárias, mas como ecos, possivelmente inconscientes porém notavelmente precisos16, de estruturas lógicas e ontológicas clássicas que visam apreender e organizar a realidade17 (ao menos esta é a minha percepção); secundariamente, ilustrar a aplicabilidade e a perene relevância dos conceitos filosóficos aristotélicos e porfirianos em domínios aparentemente distantes e eminentemente práticos (melhor dito, também, “aplicados” para alguns certos alguéns não dizerem que cedi um ponto numa certa argumentação/debate) como a ciência da computação18. Argumentaremos que a forma como modelamos "objetos" em software reflete, de maneira consistente, a análise aristotélica da substância individual e suas propriedades, e que as hierarquias de classes espelham a lógica classificatória porfiriana.
Nesta investigação, procederemos a um mapeamento sistemático onde conceitos centrais da POO em Java serão cuidadosamente correlacionados com suas contrapartes filosóficas. Analisaremos como a `Classe` pode ser interpretada à luz da Substância Secundária (espécie, gênero) ou da Forma aristotélica; como o `Objeto` (instância) corresponde à Substância Primária (o indivíduo concreto); como os `Atributos` (campos) se assemelham aos Acidentes que qualificam a substância, enquadrando-se nas Categorias; como os `Métodos` refletem as noções de Potência (a capacidade definida) e Ato (a execução da ação); e, de forma particularmente notável, como o mecanismo da `Herança` em Java replica a estrutura taxonômica da Árvore de Porfírio, articulando Gênero, Espécie e Diferença Específica na criação de hierarquias de tipos. Outros conceitos como Abstração, Encapsulamento e Polimorfismo serão igualmente examinados sob esta ótica filosófica19.
Ao tecer estas conexões, aspiro não apenas a iluminar meus estudos
(e, espero, o teu), mas também a suscitar uma reflexão mais ampla sobre
a natureza da modelagem computacional como uma forma contemporânea de
ontologia aplicada20, onde as estruturas fundamentais do
pensamento humano, identificadas milênios atrás, encontram nova e
poderosa expressão no silício. Esta introdução estabelece, assim, o
palco pra bobo dançar21 para uma exploração
detalhada destas correspondências.
Para estabelecer solidamente as pontes conceituais22 entre a filosofia clássica23 e a programação orientada a objetos, é imprescindível uma exposição detalhada dos elementos centrais do pensamento de Aristóteles sobre o ser e a realidade24, bem como da sistematização lógica proposta por Porfírio25. Estes sistemas, embora desenvolvidos há mais de dois milênios, oferecem um arcabouço de análise da estrutura do mundo e do pensamento26 que, como argumentaremos, encontra ecos notáveis na modelagem computacional moderna.
2.1 Aristóteles: A Arquitetura do Ser27
A filosofia de Aristóteles, particularmente sua metafísica (ou "filosofia primeira"28), representa uma investigação radical sobre os princípios e causas fundamentais do ser enquanto ser (on hê on29). Nela, Aristóteles busca desvendar as estruturas mais básicas da realidade, estabelecendo categorias e distinções que se tornaram canônicas no pensamento ocidental.
2.1.1 Substância (Ousia): O Sujeito Fundamental
No coração da ontologia aristotélica reside o conceito de Substância (Ousia)30. Para Aristóteles, a substância é aquilo que é no sentido mais fundamental e primário. É o sujeito último da predicação31, aquilo de que todas as outras coisas são ditas (predicadas), mas que não é dito de nenhum outro sujeito32. É o substrato33 (hypokeimenon) que persiste através das mudanças e ao qual as propriedades pertencem. Aristóteles opera uma distinção crucial dentro do conceito de substância:
Substância Primária34 (Prôte Ousia): Refere-se ao indivíduo concreto e existente35, "este homem" (Sócrates), "este cavalo" (Bucéfalo). É a substância no sentido mais próprio e fundamental, pois existe independentemente e serve como sujeito para todas as outras categorias de predicados. As substâncias primárias são numericamente únicas, incomunicáveis em sua individualidade. Elas não são predicadas de nenhum outro sujeito36, nem estão presentes em um sujeito como uma propriedade. São elas que verdadeiramente "existem".
Substância Secundária37 (Deutera Ousia): Refere-se à espécie (eidos) e ao gênero (genos) nos quais as substâncias primárias estão contidas. "Homem" e "Animal" são substâncias secundárias. Elas são predicadas das substâncias primárias (dizemos "Sócrates é um homem" e "Sócrates é um animal"), indicando o que a substância primária é. Embora não existam separadamente dos indivíduos, elas expressam a natureza ou essência compartilhada por eles. Aristóteles considera a espécie como "mais substância" que o gênero, pois está mais próxima do indivíduo concreto e fornece uma determinação mais específica de sua natureza38. A substância secundária está intimamente ligada à definição.
2.1.2 Acidentes (Symbebekota) e as Categorias (Kategoriai)
Enquanto a substância é o que existe por si, os Acidentes (Symbebekota) são aquilo que existe em outro, isto é, na substância. São as propriedades, qualidades ou atributos que pertencem a uma substância, mas não constituem sua essência fundamental. Um acidente pode estar presente ou ausente sem que a substância deixe de ser o que é (Sócrates pode estar sentado ou de pé, pálido ou corado, sem deixar de ser Sócrates). Aristóteles sistematizou os tipos de predicados que podem ser afirmados de um sujeito nas suas famosas Categorias (Kategoriai), que são os gêneros mais elevados do ser e da predicação:
Substância (Ousia): O próprio sujeito (homem, cavalo).
Quantidade (Poson): Quanto (dois côvados de comprimento, cinco quilos).
Qualidade (Poion): Que tipo (branco, gramático, virtuoso).
Relação (Pros ti): Em relação a quê (dobro, metade, maior que).
Lugar (Pou): Onde (no Liceu, na ágora).
Tempo (Pote): Quando (ontem, ano passado).
Posição (Keisthai): Qual postura (está sentado, está deitado).
Estado/Posse (Echein): Ter (está calçado, está armado).
Ação (Poiein): Fazer algo (corta, queima).
Paixão (Paschein): Sofrer algo (é cortado, é queimado).
As categorias (excluindo a primeira, Substância) representam os diferentes modos como os acidentes podem inerir na substância. Elas classificam as respostas possíveis à pergunta "o que se pode dizer sobre esta substância?". Os acidentes dependem ontologicamente da substância para existir.
2.1.3 Essência (To ti ên einai): O "Quê É Ser"
Intimamente ligado à substância, especialmente à secundária, está o conceito de Essência (To ti ên einai), frequentemente traduzido como "o quê era ser" ou "o que faz uma coisa ser o que ela é". A essência é a natureza intrínseca de uma coisa, aquilo que é expresso em sua definição (horismos). A definição de "homem", por exemplo, como "animal racional", captura sua essência. A essência é o conjunto de propriedades necessárias que um indivíduo deve possuir para pertencer a uma determinada espécie. Ela corresponde à forma (ver abaixo) e à substância secundária, distinguindo-se dos acidentes, que são propriedades contingentes. Saber a essência de algo é saber o que ele fundamentalmente é.
2.1.4 Hilemorfismo: Matéria (Hyle) e Forma (Morphe/Eidos)
Para explicar a natureza das substâncias sensíveis (as que percebemos no mundo físico)39, Aristóteles desenvolveu a doutrina do Hilemorfismo40. Segundo esta teoria, toda substância sensível individual é um composto inseparável41 de dois princípios metafísicos:
Matéria (Hyle): O substrato indeterminado, o "material" do qual algo é feito. A matéria é pura potencialidade42 (dynamis), capaz de receber diferentes formas, mas em si mesma desprovida de características definidas. É o princípio da continuidade na mudança43 (a madeira que se torna mesa) e, para muitos intérpretes, o princípio da individuação44 (o que faz esta estátua ser diferente daquela, mesmo que compartilhem a mesma forma).
Forma (Morphe ou Eidos): O princípio determinante, a estrutura, a organização, a atualidade (energeia)45 que faz a matéria ser um tipo específico de coisa. A forma corresponde à essência e à definição da substância46. É a "alma" nos seres vivos47, o "plano" no artefacto. A forma é o que confere identidade e inteligibilidade à substância. A forma de uma estátua de bronze é a sua figura; a forma de um ser humano é sua alma racional.
Matéria e Forma não existem separadamente no mundo sensível48 (exceto, talvez, para formas puras como o pensamento divino); elas são aspectos co-constituintes da substância primária concreta. A substância individual é matéria informada49.
2.1.5 Ato (Energeia/Entelecheia) e Potência (Dynamis): A Dinâmica do Ser
Para explicar a mudança e o movimento no universo, Aristóteles introduziu a fundamental distinção entre Potência (Dynamis) e Ato (Energeia ou Entelecheia).
Potência (Dynamis): É a capacidade, a possibilidade ou a potencialidade inerente a uma coisa para ser ou fazer algo diferente do que é ou faz atualmente. Uma semente tem a potência de se tornar árvore; uma criança tem a potência de se tornar um adulto letrado; a madeira tem a potência de se tornar uma mesa. A matéria é fundamentalmente potência.
Ato (Energeia/Entelecheia): É a realização, a atualização ou a plena existência dessa capacidade ou potencialidade. A árvore é o ato da semente; o adulto letrado é o ato da criança; a mesa é o ato da madeira (através da ação do carpinteiro). A forma é fundamentalmente ato. Energeia denota a atividade ou o exercício de uma capacidade, enquanto Entelecheia (ter seu fim em si mesmo) frequentemente se refere ao estado de completude ou perfeição alcançado.
A mudança, para Aristóteles, é a atualização de uma potência: o passagem daquilo que existe em potência para aquilo que existe em ato. O ato é logicamente e ontologicamente anterior à potência (algo deve existir em ato para poder agir e atualizar uma potência). Esta distinção é crucial para entender não apenas a mudança física, mas também as atividades e funções das substâncias.
2.2 Porfírio: A Lógica da Classificação
Porfírio de Tiro50, um filósofo neoplatônico51, escreveu a Isagoge (Introdução), um breve tratado destinado a facilitar a compreensão das Categorias de Aristóteles. A Isagoge tornou-se um texto fundamental na lógica medieval e renascentista52, principalmente por sua clarificação dos modos como os predicados universais se relacionam com os sujeitos.
2.2.1 A Isagoge53 e os Cinco Predicáveis (Quinque Voces)
O objetivo central da Isagoge é analisar cinco termos ou relações lógicas fundamentais que descrevem como um predicado universal pode ser atribuído a um sujeito: os Cinco Predicáveis. Eles não são os predicados em si, mas as relações que esses predicados têm com o sujeito do qual são ditos. São eles:
Gênero (Genos): Um predicado que se atribui essencialmente a múltiplas coisas que diferem entre si em espécie. É a parte da essência que é comum a diferentes espécies. Ex: "Animal" é gênero de "Homem" e "Cavalo". Responde de forma mais ampla à pergunta "O que é isto?".
Espécie (Eidos): Um predicado que se atribui essencialmente a múltiplas coisas que diferem entre si apenas numericamente (os indivíduos). É a essência completa de um tipo de coisa. Ex: "Homem" é espécie de "Sócrates" e "Platão". Responde de forma precisa à pergunta "O que é isto?". A espécie é subordinada ao gênero.
Diferença Específica (Diaphora): Um predicado que se atribui essencialmente a uma espécie e a distingue das outras espécies dentro do mesmo gênero. É a parte da essência que especifica o gênero. Ex: "Racional" é a diferença específica que distingue a espécie "Homem" dentro do gênero "Animal". A definição clássica de uma espécie é dada pelo seu gênero próximo mais a sua diferença específica (Homem = Animal Racional).
Próprio (Idion): Um predicado que não expressa a essência, mas pertence necessária e exclusivamente a uma espécie e a todos os seus membros. Ele decorre da essência. Ex: "Capaz de rir" ou "Capaz de aprender gramática" são considerados próprios do Homem. Não definem o homem, mas só o homem os possui.
Acidente (Symbebekos): Um predicado que pode pertencer ou não pertencer a um sujeito (seja um indivíduo ou uma espécie) sem afetar sua essência. Ex: "Estar sentado", "ser branco", "ser músico" (para um homem). Corresponde ao acidente aristotélico, mas aqui visto sob a ótica da predicação lógica.
2.2.2 A Árvore de Porfírio (Arbor Porphyriana)
Embora não desenhada explicitamente por Porfírio, a Árvore de Porfírio é a representação gráfica e conceptual da estrutura hierárquica de gêneros e espécies resultante da aplicação dos predicáveis, especialmente Gênero, Espécie e Diferença Específica. Ela ilustra o método da divisão lógica (diairesis), que parte de um gênero supremo (summum genus) e o divide progressivamente por meio de diferenças contraditórias ou opostas, gerando subgêneros (subalterna genera) até chegar às espécies ínfimas (infimae species), que contêm apenas indivíduos.
O exemplo clássico da Árvore de Porfírio é a classificação do ser humano:
Substância
dividida por (Corpórea / Incorpórea) -> Corpo (Gênero Subalterno)
dividida por (Animado / Inanimado) -> Vivente (Gênero Subalterno)
dividida por (Sensível / Insensível) -> Animal (Gênero Próximo)
dividida por (Racional / Irracional) [Diferença Específica] -> Homem (Espécie Ínfima)
contém (Sócrates, Platão, etc.) [Indivíduos / Substâncias Primárias]
A Árvore de Porfírio fornece um modelo poderoso para:
Organização hierárquica do conhecimento: Mostra como os conceitos se subordinam e superordenam54.
Definição rigorosa: A definição de qualquer termo na árvore (exceto o gênero supremo) é dada pela soma de todas as diferenças que levam até ele a partir do topo, ou, mais concisamente, pelo seu gênero próximo mais sua diferença específica55.
Visualização das relações lógicas: Clarifica a relação entre extensão (o número de indivíduos aos quais um termo se aplica, que aumenta ao subir na árvore) e intensão56 (o número de características definidoras, que aumenta ao descer na árvore).
Com estes fundamentos da metafísica aristotélica e da lógica porfiriana expostos em detalhe, possuímos agora o instrumental conceitual necessário para proceder à análise comparativa com os pilares da Programação Orientada a Objetos, explorando as surpreendentes ressonâncias57 entre estas antigas estruturas de pensamento e as práticas contemporâneas de modelagem de software58. A próxima seção se debruçará sobre os conceitos chave da POO, preparando o terreno para o mapeamento direto entre os dois domínios.
A Programação Orientada a Objetos (POO) é um paradigma de programação que utiliza "objetos" – instâncias de classes – para projetar e desenvolver aplicações de software. Baseia-se na ideia de que o mundo (ou o domínio do problema a ser modelado) pode ser representado como uma coleção de objetos que interagem entre si. Java é uma linguagem de programação proeminente que implementa integralmente os princípios da POO. Compreender estes princípios é fundamental para apreciar as analogias com a filosofia aristotélica e porfiriana.
3.1 Classe (Class): O Molde Conceitual
Definição: Uma Classe é a unidade fundamental de estruturação na POO. Funciona como um "molde", "planta" ou "protótipo" que define uma categoria ou tipo de objeto. Ela especifica a estrutura (quais dados o objeto terá) e o comportamento (quais ações o objeto poderá realizar) que todas as instâncias (objetos) dessa classe compartilharão.
Propósito: A classe serve para definir um novo tipo de dado abstrato. Ela permite agrupar logicamente dados e funcionalidades relacionadas, promovendo a organização, a reutilização e a abstração no código. É o modelo a partir do qual os objetos concretos são criados.
Mecanismo em Java: Em Java, uma classe é definida usando a palavra-chave class, seguida pelo nome da classe (por convenção, iniciado com letra maiúscula) e um bloco de código {} que contém seus membros (atributos e métodos).
// Exemplo de definição de Classe em Java
public class Cachorro60 {
// Atributos (dados/estado) - serão detalhados em 3.3
String nome;
int idade;
String raca;
// Métodos (comportamentos) - serão detalhados em 3.4
public void latir() {
System.out.println("Au au!");
}
public void buscarOsso() {
System.out.println(nome + " está buscando o osso.");
}
// Construtor (método especial para criar objetos) - será implícito em 3.2
public Cachorro(String nomeInicial, int idadeInicial, String racaInicial) {
this.nome = nomeInicial;
this.idade = idadeInicial;
this.raca = racaInicial;
}
}
3.2 Objeto (Object / Instância): A Entidade Concreta
Definição: Um Objeto é uma instância concreta e específica de uma classe. Enquanto a classe é o molde, o objeto é a entidade real criada a partir desse molde. Cada objeto possui seu próprio estado (valores específicos para os atributos definidos na classe) e pode executar os comportamentos (métodos) definidos pela sua classe.
Propósito: Objetos representam as entidades individuais do domínio do problema (um cachorro específico, uma conta bancária específica, um botão específico na interface gráfica). São as unidades ativas do sistema, que mantêm informações e interagem entre si.
Mecanismo em Java: Objetos são criados (instanciados) a partir de uma classe usando o operador new, seguido por uma chamada ao construtor da classe (um método especial, geralmente com o mesmo nome da classe, responsável por inicializar o novo objeto).
// Exemplo de criação (instanciação) de Objetos em Java
public class Main {
public static void main(String[] args) {
// Criando dois objetos da classe Cachorro
Cachorro rex = new Cachorro("Rex", 5, "Pastor Alemão"); // rex é uma instância de Cachorro
Cachorro bela = new Cachorro("Bela", 2, "Poodle"); // bela é outra instância de Cachorro
// Cada objeto tem seu próprio estado
System.out.println("Nome do primeiro cachorro: " + rex.nome); // Saída: Rex
System.out.println("Idade do segundo cachorro: " + bela.idade); // Saída: 2
// Objetos podem executar os comportamentos de sua classe
rex.latir(); // Saída: Au au!
bela.buscarOsso(); // Saída: Bela está buscando o osso.
}
}
3.3 Atributos (Fields / Campos / Propriedades): O Estado do Objeto
Definição: Atributos (também chamados de campos, variáveis de instância ou propriedades) são as variáveis declaradas dentro de uma classe que representam os dados ou características que cada objeto dessa classe possuirá. O conjunto dos valores dos atributos de um objeto em um determinado momento constitui o seu estado.
Propósito: Atributos armazenam as informações que definem um objeto e o distinguem de outros objetos da mesma classe. Eles capturam as propriedades relevantes da entidade que está sendo modelada.
Mecanismo em Java: Atributos são declarados dentro do corpo da classe, especificando seu tipo de dado e nome. Geralmente, seguem convenções de nomenclatura (camelCase) e podem ter modificadores de acesso (como private) para controlar como são acessados (ver Encapsulamento, 3.6).
public class ContaBancaria {
// Atributos que definem o estado de uma ContaBancaria
private String numeroConta; // Exemplo de atributo privado
private String nomeTitular;
private double saldo; // O valor deste atributo varia, mudando o estado do objeto
// Construtor para inicializar os atributos
public ContaBancaria(String numero, String titular) {
this.numeroConta = numero;
this.nomeTitular = titular;
this.saldo = 0.0; // Saldo inicial
}
// Métodos para interagir com os atributos (ver 3.4 e 3.6)
// ... (depositar, sacar, getSaldo, etc.) ...
}
3.4 Métodos (Methods / Comportamentos): As Ações do Objeto
Definição: Métodos são as funções ou procedimentos definidos dentro de uma classe que especificam as ações que um objeto dessa classe pode realizar ou as operações que podem ser realizadas sobre ele. Métodos operam sobre os atributos do objeto (podem ler ou modificar seu estado) e definem seu comportamento.
Propósito: Métodos implementam a lógica e as funcionalidades associadas ao tipo de objeto definido pela classe. Eles permitem que os objetos interajam, processem dados e realizem tarefas.
Mecanismo em Java: Métodos são definidos dentro da classe com uma assinatura (modificadores de acesso, tipo de retorno, nome e lista de parâmetros) e um corpo de código {} contendo as instruções a serem executadas. Métodos são invocados (chamados) em um objeto específico usando o operador ponto (.).
public class ContaBancaria {
// Atributos ...
private String numeroConta;
private String nomeTitular;
private double saldo;
// Construtor ...
public ContaBancaria(String numero, String titular) { /*...*/ }
// Métodos que definem o comportamento
public void depositar(double valor) {
if (valor > 0) {
this.saldo += valor; // Modifica o estado (saldo)
System.out.println("Depósito realizado. Novo saldo: " + this.saldo);
}
}
public boolean sacar(double valor) {
if (valor > 0 && valor <= this.saldo) {
this.saldo -= valor; // Modifica o estado (saldo)
System.out.println("Saque realizado. Novo saldo: " + this.saldo);
return true;
} else {
System.out.println("Saque não permitido. Saldo insuficiente ou valor inválido.");
return false;
}
}
public double getSaldo() {
return this.saldo; // Acessa o estado (saldo)
}
}
// Uso dos métodos:
// ContaBancaria minhaConta = new ContaBancaria("123", "João");
// minhaConta.depositar(100.0);
// minhaConta.sacar(50.0);
// double saldoAtual = minhaConta.getSaldo();
3.5 Abstração (Abstraction): Foco no Essencial
Definição: Abstração é o princípio de modelar as características essenciais de uma entidade do domínio, ignorando os detalhes irrelevantes ou complexos. Em POO, a classe em si é uma forma de abstração, representando um conceito (e.g., Cachorro) em vez de uma instância específica. A abstração também se manifesta ao expor apenas interfaces relevantes (métodos públicos) e ocultar a complexidade interna da implementação.
Propósito: Simplificar a complexidade, permitindo que nos concentremos nos aspectos importantes de um objeto para um determinado contexto. Facilita a compreensão, o design e a manutenção do sistema.
Mecanismo em Java: A própria definição de classes e o uso de tipos abstratos (classes abstratas e interfaces - ver 3.9) são mecanismos de abstração. A escolha de quais atributos e métodos incluir em uma classe é um ato de abstração. Ocultar detalhes de implementação (ver Encapsulamento) também contribui para a abstração.
// Exemplo: A classe 'Veiculo' abstrai características comuns
// a diferentes tipos de veículos, sem detalhar como cada um funciona internamente.
public abstract class Veiculo { // Classe abstrata: não pode ser instanciada diretamente
protected String marca;
protected String modelo;
protected int ano;
public abstract void ligar(); // Método abstrato: define o 'o quê', não o 'como'
public abstract void desligar();
public abstract void acelerar(int incremento);
public String getDescricao() {
return marca + " " + modelo + " (" + ano + ")";
}
// Detalhes complexos do motor, transmissão, etc., são abstraídos.
}
3.6 Encapsulamento (Encapsulation): Agrupamento e Proteção
Definição: Encapsulamento é o mecanismo de agrupar os dados (atributos) e os métodos que operam nesses dados dentro de uma única unidade (a classe) e restringir o acesso direto ao estado interno do objeto. O acesso aos dados geralmente é controlado por meio de métodos públicos (getters e setters).
Propósito: Proteger a integridade dos dados do objeto, evitando modificações externas inesperadas ou inconsistentes. Ocultar a complexidade interna (information hiding), expondo apenas uma interface controlada. Promover a modularidade e facilitar a manutenção (a implementação interna pode mudar sem afetar quem usa a classe, desde que a interface pública permaneça a mesma).
Mecanismo em Java: O encapsulamento é implementado usando modificadores de acesso (private, protected, public, default). Atributos são tipicamente declarados como private (acessíveis apenas dentro da própria classe), e métodos públicos (public) são fornecidos para interagir com eles de forma controlada (ex: getSaldo(), depositar(valor)).
public class ContaBancaria {
private String numeroConta; // Atributo privado (encapsulado)
private double saldo; // Atributo privado (encapsulado)
// Métodos públicos que fornecem acesso controlado ao estado
public String getNumeroConta() {
return numeroConta;
}
public double getSaldo() {
return saldo;
}
public void depositar(double valor) {
if (valor > 0) { // Lógica de validação dentro do método
this.saldo += valor;
}
}
// O acesso direto 'minhaConta.saldo = -1000;' é impedido,
// garantindo a integridade do saldo através do método 'depositar'.
}
3.7 Herança (Inheritance): Relação "É-UM-TIPO-DE"
Definição: Herança é um mecanismo que permite que uma classe (a subclasse ou classe filha) adquira (herde) atributos e métodos de outra classe (a superclasse ou classe pai). A subclasse pode usar os membros herdados como se fossem seus, e também pode adicionar novos membros ou modificar (sobrescrever) os métodos herdados.
Propósito: Promover a reutilização de código (evitando duplicação). Estabelecer uma relação hierárquica do tipo "é-um-tipo-de" (is-a relationship) entre classes, refletindo classificações do mundo real ou lógico. Permitir a criação de tipos mais especializados a partir de tipos mais gerais. É fundamental para o polimorfismo (3.8).
Mecanismo em Java: A herança é implementada usando a palavra-chave extends. Java suporta herança simples (uma classe só pode herdar diretamente de uma única superclasse). Toda classe em Java herda implicitamente da classe Object, que está no topo da hierarquia.
// Superclasse (Geral)
public class Animal {
protected String nome; // protected: acessível na classe e subclasses
public Animal(String nome) {
this.nome = nome;
}
public void comer() {
System.out.println(nome + " está comendo.");
}
public void fazerSom() {
System.out.println(nome + " faz um som genérico.");
}
}
// Subclasse (Especializada) - Herda de Animal
public class Cachorro extends Animal {
private String raca;
public Cachorro(String nome, String raca) {
super(nome); // Chama o construtor da superclasse (Animal)
this.raca = raca;
}
// Método específico da subclasse
public void latir() {
System.out.println(nome + " (" + raca + ") está latindo: Au au!");
}
// Sobrescrita (Override) de método herdado (ver 3.8 Polimorfismo)
@Override // Anotação opcional, mas recomendada
public void fazerSom() {
System.out.println(nome + " late.");
}
}
// Uso:
// Cachorro rex = new Cachorro("Rex", "Labrador");
// rex.comer(); // Método herdado de Animal
// rex.latir(); // Método específico de Cachorro
// rex.fazerSom(); // Método sobrescrito em Cachorro
3.8 Polimorfismo (Polymorphism): Muitas Formas
Definição: Polimorfismo (do grego: "muitas formas") é a capacidade de objetos de diferentes classes responderem à mesma mensagem (chamada de método) de maneiras diferentes, específicas de suas classes. Em POO, geralmente se manifesta através da sobrescrita de métodos (method overriding) em conjunto com a herança. Permite tratar objetos de subclasses como se fossem objetos da superclasse.
Propósito: Proporcionar flexibilidade e extensibilidade ao sistema. Permite escrever código mais genérico que pode operar sobre objetos de diferentes tipos sem precisar conhecer suas classes específicas em tempo de compilação. Facilita a adição de novas classes ao sistema sem modificar o código existente que usa a superclasse.
Mecanismo em Java: O polimorfismo é alcançado principalmente através da herança e da sobrescrita de métodos (usando a mesma assinatura do método da superclasse na subclasse, frequentemente com a anotação @Override). Uma variável do tipo da superclasse pode referenciar um objeto de qualquer uma de suas subclasses. Quando um método é chamado através dessa variável, a versão do método que será executada é determinada em tempo de execução, com base no tipo real do objeto (late binding ou dynamic dispatch).
public class TestePolimorfismo {
public static void main(String[] args) {
// Criando objetos de diferentes subclasses de Animal
Animal animal1 = new Cachorro("Rex", "Labrador"); // Objeto Cachorro referenciado por variável Animal
Animal animal2 = new Gato("Mimi", "Siamês"); // Objeto Gato referenciado por variável Animal (Gato também herda de Animal)
// Chamando o mesmo método 'fazerSom()' em objetos diferentes
fazerBarulho(animal1); // Executará o fazerSom() de Cachorro -> "Rex late."
fazerBarulho(animal2); // Executará o fazerSom() de Gato -> "Mimi mia."
}
// Método genérico que opera sobre qualquer Animal
public static void fazerBarulho(Animal animal) {
System.out.print("O animal faz: ");
animal.fazerSom(); // Polimorfismo em ação: a versão correta é chamada
}
}
// Supondo que exista a classe Gato:
/*
public class Gato extends Animal {
// ... construtor ...
@Override
public void fazerSom() {
System.out.println(nome + " mia.");
}
public void arranharSofa() { // Método específico
System.out.println(nome + " está arranhando o sofá.");
}
}
*/
3.9 Interface: O Contrato Comportamental
Definição: Uma Interface em Java é um tipo de referência, similar a uma classe, mas que define um "contrato" de comportamentos. Ela pode conter apenas constantes, assinaturas de métodos (abstratos por padrão até Java 7), métodos default (com implementação, a partir do Java 8) e métodos estáticos. Uma classe pode implementar uma ou mais interfaces, obrigando-se a fornecer uma implementação para todos os métodos abstratos declarados na interface.
Propósito: Definir um conjunto de capacidades ou comportamentos que diferentes classes podem oferecer, independentemente de suas hierarquias de herança. Permite alcançar um tipo de polimorfismo mais flexível (classes não relacionadas podem implementar a mesma interface e serem tratadas uniformemente com base nessa capacidade). Desacoplar o sistema, programando para interfaces em vez de implementações concretas.
Mecanismo em Java: Interfaces são definidas usando a palavra-chave interface. Classes usam a palavra-chave implements para declarar que aderem a um contrato de interface.
// Definição da Interface
public interface Voavel {
int ALTITUDE_MAXIMA = 10000; // Constante (public static final implicitamente)
void decolar(); // Método abstrato (public abstract implicitamente)
void voar();
void aterrar();
// Método default (com implementação, desde Java 8)
default void checarAsas() {
System.out.println("Checando as asas...");
}
}
// Classe que implementa a interface
public class Aviao implements Voavel {
private String modelo;
public Aviao(String modelo) { this.modelo = modelo; }
@Override
public void decolar() { System.out.println("Avião " + modelo + " decolando."); }
@Override
public void voar() { System.out.println("Avião " + modelo + " voando na altitude."); }
@Override
public void aterrar() { System.out.println("Avião " + modelo + " aterrando."); }
// Não precisa implementar checarAsas(), pode usar a default ou sobrescrever.
}
// Outra classe, não relacionada com Aviao na herança, pode implementar Voavel
public class Passaro implements Voavel {
private String especie;
public Passaro(String especie) { this.especie = especie; }
@Override
public void decolar() { System.out.println(especie + " levanta voo."); }
@Override
public void voar() { System.out.println(especie + " está voando."); }
@Override
public void aterrar() { System.out.println(especie + " pousa."); }
}
// Uso polimórfico via interface:
// Voavel meuVoador = new Aviao("Boeing 747");
// meuVoador.decolar();
// meuVoador = new Passaro("Canário");
// meuVoador.voar();
Estes pilares – Classe, Objeto, Atributos, Métodos, Abstração, Encapsulamento, Herança e Polimorfismo, juntamente com o conceito de Interface – formam o núcleo da Programação Orientada a Objetos e fornecem as ferramentas conceituais e práticas utilizadas em linguagens como Java para modelar e construir sistemas de software complexos. Com esta base técnica estabelecida, estamos prontos para, no próximo capítulo, traçar as conexões diretas com os conceitos filosóficos de Aristóteles e Porfírio.
Com os fundamentos da metafísica aristotélico-porfiriana e os pilares da Programação Orientada a Objetos (POO) devidamente estabelecidos nos capítulos anteriores, estamos agora posicionados para empreender a tarefa central deste artigo: o mapeamento sistemático e a análise comparativa entre estes dois domínios61. Este capítulo demonstrará, ponto por ponto, como as estruturas e mecanismos da POO, exemplificados em Java, espelham de forma notavelmente precisa os conceitos ontológicos e lógicos clássicos. Revelaremos que a maneira como concebemos e implementamos classes, objetos, atributos, métodos e hierarquias em software não é arbitrária, mas ecoa profundamente as tentativas de Aristóteles e Porfírio de compreender e categorizar a própria estrutura da realidade e do pensamento.
4.1 Classe como Substância Secundária / Forma / Essência
A Analogia: A Classe na POO corresponde fundamentalmente à Substância Secundária (Deutera Ousia) de Aristóteles (a espécie e o gênero) e, de forma complementar, à Forma (Morphe/Eidos) e à Essência (To ti ên einai).
Justificação Lógica e Técnica:
Definição do "Quê": Assim como a substância secundária ("Homem", "Animal") responde à pergunta "O que é isto?" aplicada a uma substância primária (Sócrates), a Classe (Cachorro, Animal) define o que um objeto é. Ela estabelece a natureza fundamental, o tipo ou a categoria à qual uma instância pertencerá. A declaração public class Cachorro {...} é a própria definição da espécie "Cachorro" no contexto do software62.
Blueprint Universal: A substância secundária e a essência representam aquilo que é comum e definidor para todos os indivíduos de um tipo63. Similarmente, a Classe é um molde ou blueprint universal; todos os objetos (new Cachorro(...)) criados a partir dela compartilharão a mesma estrutura (conjunto de atributos possíveis) e o mesmo conjunto de comportamentos definidos (métodos). Ela captura as características invariantes do tipo64.
Predicação Essencial: A substância secundária é predicada essencialmente da substância primária ("Sócrates é um homem"). Da mesma forma, em POO, dizemos que um objeto é uma instância de uma classe (rex instanceof Cachorro retorna true). A classe informa a identidade essencial do objeto no sistema de tipos.
Forma vs. Matéria: Na dicotomia hilemórfica, a Forma é o princípio organizador e determinante que atualiza a matéria. A Classe atua como a Forma: ela define a estrutura lógica, os relacionamentos e as capacidades (potencialidades comportamentais) que serão "impressas" na "matéria" (o espaço de memória alocado) quando um objeto for instanciado. A classe é pura definição, sem existência concreta individual até ser instanciada.
Essência e Definição: A Essência é aquilo expresso pela definição. A Classe é a definição computacional da essência de um tipo de objeto, especificando os atributos e métodos que são considerados constitutivos desse tipo dentro do modelo de software.
4.2 Objeto como Substância Primária / Indivíduo Hilemórfico
A Analogia: O Objeto (instância de uma classe) corresponde diretamente à Substância Primária (Prôte Ousia) de Aristóteles, o indivíduo concreto, e pode ser visto como um composto hilemórfico (matéria + forma).
Justificação Lógica e Técnica:
Existência Individual e Concreta: A substância primária é "este homem", "este cavalo" – a entidade individual que existe no mundo. O Objeto (rex, bela criados com new Cachorro(...)) é a entidade individual e concreta que existe na memória do computador durante a execução do programa. É a "coisa" real com a qual o programa interage.
Sujeito da Predicação (Estado e Comportamento): A substância primária é o sujeito último ao qual pertencem os acidentes. O Objeto é a entidade que possui um estado (valores específicos para seus atributos: rex.nome é "Rex", bela.nome é "Bela") e que realiza ações (invocação de métodos: rex.latir()). Os atributos e métodos "inerem65" no objeto.
Instanciação da Forma na Matéria: Se a Classe é a Forma, o Objeto é a realização dessa Forma em uma "matéria" específica66. A operação new aloca memória (a matéria ou substrato computacional67) e inicializa essa memória de acordo com a estrutura definida pela Classe (a forma), resultando em um indivíduo hilemórfico computacional68. Cada objeto é uma combinação única de forma (a definição da classe) e matéria (seu espaço de memória e estado específico).
Não Predicado de Outro Sujeito: Uma substância primária não é dita de outro sujeito. Um Objeto específico (rex) não é usado para definir outro objeto no mesmo nível; ele é a entidade final na cadeia de instanciação69.
4.3 Atributos como Acidentes / Predicados Categoriais
A Analogia: Os Atributos (campos ou propriedades de um objeto) correspondem amplamente aos Acidentes (Symbebekota) aristotélicos e se enquadram nas Categorias (exceto a substância).
Justificação Lógica e Técnica:
Inerência na Substância: Os Acidentes existem na substância, não por si mesmos. Os Atributos (nome, idade, saldo) existem no objeto; seus valores ("Rex", 5, 150.75) constituem o estado desse objeto específico (rex, minhaConta). Eles não têm existência independente do objeto ao qual pertencem (no contexto da instância).
Propriedades Não Essenciais (Frequentemente): Muitos acidentes podem mudar sem que a substância deixe de ser o que é (Sócrates pode estar sentado ou em pé). Muitos Atributos representam o estado mutável do objeto. O saldo de uma ContaBancaria pode mudar, mas o objeto continua sendo a mesma conta bancária. A idade de um Cachorro aumenta, mas ele continua sendo o mesmo cachorro. A essência (definida pela classe) permanece.
Correspondência com Categorias: Os tipos de dados dos atributos frequentemente se alinham com as Categorias aristotélicas:
int idade, double saldo: Quantidade (Poson)
String nome, String corPelo, boolean estaVacinado: Qualidade (Poion)
(Referência a outro objeto, e.g., Dono donoDoCachorro): Relação (Pros ti)
(Coordenadas int x, y): Lugar (Pou) (em um contexto espacial)
(Timestamp Date dataCriacao): Tempo (Pote)
(enum Estado { SENTADO, DEITADO, EM_PE } estadoAtual): Posição (Keisthai)
(List<Item> inventario): Posse/Estado (Echein)
Distinção Próprio vs. Acidente: Na filosofia, há acidentes meramente contingentes e "próprios" (que pertencem necessariamente à espécie). Na modelagem POO, alguns atributos podem ser considerados mais "próprios" ou até essenciais no contexto do modelo70 (e.g., numeroDePatas para Cachorro), enquanto outros são claramente acidentais (corDaColeira). A classe define quais propriedades são relevantes para o tipo.
4.4 Métodos como Potencialidades e Atos / Ações e Paixões
A Analogia: A definição de um Método em uma classe corresponde à Potência (Dynamis)71 aristotélica, enquanto a invocação (chamada) de um método em um objeto corresponde ao Ato (Energeia/Entelecheia). Os métodos também se relacionam com as categorias de Ação (Poiein) e Paixão (Paschein).
Justificação Lógica e Técnica:
Capacidade Definida (Potência): A declaração de um método na classe (public void latir() { ... }) não é a ação em si, mas a definição da capacidade ou potencialidade que todo objeto daquela classe terá. Define que um Cachorro pode latir. É uma potência (dynamis) inscrita na forma (classe).
Realização da Capacidade (Ato): A chamada do método em um objeto específico (rex.latir();) é a atualização dessa potência72. É o exercício da capacidade, a ação ocorrendo em ato (energeia). O comportamento potencial torna-se um evento real na execução do programa.
Ação (Poiein): Métodos frequentemente representam as ações que um objeto pode realizar sobre si mesmo ou sobre outros objetos (e.g., conta.depositar(100);, cachorro.buscarOsso();). Correspondem à categoria aristotélica de Ação.
Paixão (Paschein): Métodos também podem representar a capacidade de um objeto sofrer uma ação ou ser modificado por uma ação externa ou interna (e.g., o método receberDano(int quantidade) em um objeto Personagem, ou a modificação do saldo dentro do método sacar). Isso se alinha com a categoria de Paixão (ser afetado). Métodos que modificam o estado interno do objeto (setters, ou métodos como depositar, sacar) implicam uma "paixão" no sentido de sofrer uma mudança.
4.5 Herança como a Árvore de Porfírio / Hierarquia de Gênero e Espécie
A Analogia: O mecanismo de Herança (extends) na POO espelha quase que perfeitamente73 a estrutura da Árvore de Porfírio e a relação lógica entre Gênero (Genos), Espécie (Eidos) e Diferença Específica (Diaphora).
Justificação Lógica e Técnica:
Hierarquia Taxonômica: A Árvore de Porfírio organiza conceitos do mais geral (Gênero Supremo) ao mais específico (Espécie Ínfima). A herança em Java cria hierarquias de classes: Object (análogo à Substância ou Gênero Supremo) -> Animal (Gênero) -> Mamifero (Sub-Gênero) -> Cachorro (Espécie).
Gênero e Espécie: A superclasse (Animal) atua como o Gênero, definindo características e comportamentos comuns a todas as suas subclasses. A subclasse (Cachorro) atua como a Espécie, pertencendo ao gênero e herdando suas características. A relação Cachorro extends Animal significa literalmente "Cachorro é um tipo de Animal", a definição da relação Gênero-Espécie.
Diferença Específica: A espécie é definida pelo gênero mais a diferença específica74. Na POO, a subclasse herda tudo do gênero (superclasse) e adiciona seus próprios atributos e métodos (raca, latir()) ou sobrescreve métodos herdados (fazerSom()). Esses novos ou modificados membros constituem a Diferença Específica computacional – aquilo que distingue a Espécie (Cachorro) de outras espécies dentro do mesmo Gênero (Animal, que poderia ter também a espécie Gato). A sobrescrita (@Override public void fazerSom()) implementa a maneira específica como a espécie realiza uma ação genérica.
Herança de Propriedades: Na lógica porfiriana, a espécie herda as propriedades essenciais do gênero. Na POO, a subclasse herda os atributos e métodos (não privados) da superclasse.
Definição por Gênero e Diferença: Assim como "Homem = Animal (Gênero) + Racional (Diferença)", a "definição" da classe Cachorro é implicitamente "Animal (Superclasse) + raca, latir(), fazerSom() sobrescrito (Diferenças)".
4.6 Abstração como Identificação da Essência / Gênero
A Analogia: O princípio da Abstração na POO se correlaciona com o processo filosófico de identificar a Essência ou considerar um Gênero em si mesmo, abstraindo dos detalhes individuais ou das diferenças específicas.
Justificação Lógica e Técnica:
Foco no Essencial: A abstração em POO envolve selecionar as características (atributos e métodos) relevantes e essenciais para definir um tipo, ignorando detalhes supérfluos. Isso é análogo à busca pela Essência (o que faz algo ser o que é) em filosofia.
Classes Abstratas como Gêneros: Classes abstratas (abstract class Animal) em Java representam conceitos que não podem ser instanciados diretamente, apenas através de subclasses concretas. Elas definem uma estrutura e comportamento comuns (a essência do gênero), mas deixam alguns aspectos (métodos abstratos, abstract void fazerSom();) para serem definidos pelas espécies (subclasses). Isso espelha a consideração de um Gênero ("Animal") sem especificar qual espécie particular.
Interfaces como Formas Puras (ver 4.9): Interfaces levam a abstração adiante, definindo apenas o contrato comportamental, análogo a uma forma ou conjunto de potencialidades puras.
4.7 Encapsulamento como Unidade e Integridade da Substância
A Analogia: O Encapsulamento reflete a noção aristotélica da Substância como uma unidade coesa, autossuficiente e com uma certa integridade interna.
Justificação Lógica e Técnica:
Unidade de Dados e Comportamento: O encapsulamento agrupa dados (atributos) e os métodos que operam sobre eles dentro da classe, criando uma unidade lógica coesa. Isso reflete a ideia da substância como um todo unificado, onde propriedades e capacidades estão intrinsecamente ligadas.
Ocultação e Proteção (Integridade): O uso de modificadores de acesso (private) para proteger o estado interno do objeto contra acesso e modificação direta e arbitrária do exterior (information hiding) é análogo à integridade da substância. Garante que o estado do objeto só possa ser alterado através de operações controladas (métodos públicos), preservando sua consistência e aderência às regras definidas na classe (sua "natureza"). Impede que a "substância" (objeto) seja corrompida externamente.
4.8 Polimorfismo como Variação da Ação na Espécie
A Analogia: O Polimorfismo (especialmente via sobrescrita de métodos) corresponde à ideia de que uma capacidade ou ação genérica definida no Gênero se manifesta de maneiras diferentes e específicas em cada Espécie, de acordo com sua Diferença Específica.
Justificação Lógica e Técnica:
Uma Mensagem, Múltiplas Formas: A capacidade de enviar a mesma mensagem (chamar o mesmo método, e.g., animal.fazerSom()) para objetos de diferentes classes (subclasses de Animal, como Cachorro e Gato) e obter comportamentos específicos da classe (latir vs. miar) é o cerne do polimorfismo.
Ação Genérica vs. Implementação Específica: O método definido (ou abstrato) na superclasse (Animal.fazerSom()) representa a ação ou capacidade genérica pertencente ao Gênero. O método sobrescrito na subclasse (Cachorro.fazerSom(), Gato.fazerSom()) representa a forma específica como essa capacidade se atualiza na Espécie, determinada pela sua natureza particular (sua Diferença Específica). O polimorfismo permite tratar todos como "Animais" (Gênero) mas obter a ação correta para o "Cachorro" ou "Gato" (Espécie) em tempo de execução.
4.9 Interface como Contrato de Potencialidades / Forma Comportamental Pura
A Analogia: As Interfaces em Java podem ser vistas como uma representação de um conjunto de Potencialidades (Dynamis) ou uma espécie de Forma puramente comportamental, um contrato que diferentes tipos de "substâncias" (classes) podem adotar.
Justificação Lógica e Técnica:
Definição de Capacidades: Uma interface (interface Voavel { void voar(); }) define um conjunto de capacidades ou comportamentos (potencialidades) sem especificar como são implementados e sem associar estado (atributos de instância). Ela diz o que algo pode fazer, não o que é ou como faz75.
Independência da Hierarquia de Substância: Diferentes classes (Aviao, Passaro), que podem não ter relação de herança direta (não pertencem ao mesmo "gênero" imediato em termos de implementação), podem implementar a mesma interface. Isso sugere que a capacidade ("ser voável") pode ser uma "forma" ou conjunto de potências que pode "informar" diferentes tipos de "matéria" ou substâncias.
Contrato Abstrato: A interface funciona como um contrato puramente formal que especifica certas potencialidades de ação, abstraindo completamente da "substância" (classe concreta) que irá realizá-las.
Este mapeamento detalhado revela que os conceitos fundamentais da
POO, longe de serem meras invenções técnicas, ressoam com uma
longa tradição filosófica de análise da realidade e do conhecimento. As
estruturas que usamos para organizar o código parecem refletir
estruturas que filósofos identificaram na própria tessitura do ser e da
lógica. O próximo capítulo explorará as implicações e os limites desta
FASCINANTE analogia.
Alcançamos o ápice da presente investigação, a qual se propôs desvelar e perscrutar os liames entre os preceitos da Programação Orientada a Objetos (POO), com particular enfoque na linguagem Java, e os alicerces da metafísica e da lógica legadas por Aristóteles e Porfírio. O itinerário intelectual percorrido, que se estendeu da exposição dos fundamentos filosóficos clássicos à análise dos mecanismos inerentes à POO e ao subsequente mapeamento conceitual, facultou-nos a transcendência da aparente incomensurabilidade que pairava sobre estes domínios do saber. A tese fulcral, que advoga a existência de significativos paralelismos estruturais e conceituais, não somente logrou certa sustentação, mas outrossim revelou uma notável ressonância entre o modo pelo qual concebemos a arquitetura do ser e a maneira pela qual erigimos a arquitetura do software.
Recapitulando as correspondências fundamentais identificadas no Capítulo 4, constatamos que:
A Classe na POO encontra um análogo robusto na Substância Secundária (espécie e gênero), na Forma e na Essência aristotélicas, servindo como o molde definidor universal que estabelece o "quê" de uma entidade computacional.
O Objeto, enquanto instância concreta de uma classe, corresponde diretamente à Substância Primária, o indivíduo existente e sujeito de propriedades, podendo ser compreendido como um composto hilemórfico computacional (a "matéria" da memória informada pela estrutura da classe).
Os Atributos de um objeto espelham os Acidentes que inerem na substância, representando seu estado mutável ou propriedades, e seus tipos frequentemente se alinham com as Categorias aristotélicas (quantidade, qualidade, relação, etc.).
Os Métodos refletem a dinâmica aristotélica de Potência (a definição do método na classe, representando a capacidade) e Ato (a invocação do método no objeto, representando a atualização dessa capacidade), bem como as categorias de Ação e Paixão.
O mecanismo de Herança replica, de maneira surpreendentemente fiel, a estrutura taxonômica da Árvore de Porfírio, articulando as relações lógicas de Gênero, Espécie e Diferença Específica na construção de hierarquias de classes.
A Abstração na POO se assemelha ao processo filosófico de identificar a Essência ou de considerar um Gênero, focando nos aspectos definidores e comuns, abstraindo dos detalhes particulares.
O Encapsulamento, ao agrupar dados e comportamentos e proteger o estado interno, ecoa a noção de Substância como uma unidade íntegra e coesa.
O Polimorfismo corresponde à manifestação variada de uma ação ou capacidade genérica (definida no Gênero/Superclasse) de acordo com a natureza específica de cada Espécie (Subclasse), governada por sua Diferença Específica (método sobrescrito).
Mesmo conceitos como Interface podem ser interpretados filosoficamente como representações de contratos de Potencialidades ou formas comportamentais abstratas, aplicáveis a diferentes tipos de substâncias (classes).
A elucidação destas correspondências encerra implicações de monta para ambas as disciplinas. No que tange à Ciência da Computação e à Engenharia de Software, a presente análise propicia uma perspectiva sobremaneira enriquecedora acerca dos fundamentos conceituais da POO. Distantes de se afigurarem meras convenções técnicas ou artifícios pragmáticos da programação, os pilares da POO manifestam-se ancorados em estruturas lógicas e ontológicas que o pensamento filosófico ocidental laboriosamente desenvolveu com o fito de apreender a realidade. Apreender a herança qual taxonomia rigorosa, nos moldes porfirianos, ou vislumbrar o encapsulamento como a salvaguarda da integridade substancial, pode facultar aos cultores da arte da programação um arcabouço conceitual mais profundo para a reflexão sobre modelagem, desígnio e arquitetura de software. A propalada "intuitividade" amiúde atribuída à POO quiçá resida, em parte, nesta sua intrínseca capacidade de espelhar categorias basilares do nosso próprio aparelho cognitivo acerca do mundo.
Para a Filosofia, esta incursão constitui um testemunho da notável perenidade e ampla aplicabilidade dos constructos aristotélicos e porfirianos. Constatar que estruturas como a distinção substância/acidente, matéria/forma, ato/potência, e a lógica classificatória de gênero/espécie, afloram espontaneamente (conquanto talvez não conscientemente invocadas pelos pioneiros da POO) em um domínio tão hodierno e tecnológico quão a programação, sublinha a universalidade e a firmeza destas ferramentas analíticas. Ademais, a POO pode propiciar um modelo concreto e dinâmico para ilustrar e veicular pedagogicamente conceitos metafísicos e lógicos que, diversamente, poderiam afigurar-se sobremodo abstratos. O objeto computacional, enquanto instância tangível da substância primária hilemórfica, erige-se em exemplo pedagógico de invulgar potência.
Embora reconhecendo, consoante previamente discutido (no hipotético Capítulo 5), os limites e as zonas onde a analogia demanda nuance – tais como a natureza fluida do estado do objeto em contraponto à relativa estabilidade da essência, a existência de conceitos como métodos `static`, os quais não se coadunam perfeitamente à estrutura, ou a índole por vezes puramente funcional e não "substancial" de certas classes e métodos –, a vitalicidade das correlações identificadas permanece incontrovertível. A paralelização não sugere identidade cabal, mas antes uma homologia estrutural profunda.
Em suma, o presente ensaio advogou que a Programação Orientada a Objetos, mormente exemplificada por Java, não se restringe a um paradigma de engenharia de software, senão que representa outrossim uma manifestação contemporânea de estruturas de pensamento ontológico e lógico profundamente radicadas na tradição filosófica ocidental, com raízes que remontam a Aristóteles e Porfírio. O modo pelo qual organizamos o código para modelar o mundo espelha, em grande medida, a maneira pela qual os filósofos se esforçaram por organizar o próprio pensamento acerca do mundo e de sua estrutura fundamental. Esta constatação incita a uma reflexão mais abrangente sobre a "metafísica implícita" no desígnio de software e na tecnologia em geral – as cosmovisões e as estruturas categoriais que, cônscia ou inconscientemente, plasmamos nas ferramentas que engendramos.
O diálogo interdisciplinar entre a Filosofia e a Ciência da Computação, tal como procuramos exemplificar aqui, desvela-se, portanto, não qual exercício de erudição esotérica, mas sim como uma via profícua para a mútua iluminação. Ao perscrutarmos as fundações filosóficas subjacentes às nossas práticas de programação, logramos não apenas exaltar nossa apreciação histórica e conceitual, mas potencialmente aprimorar nossa destreza na modelagem de sistemas complexos com acrescida clareza e rigor. A lógica perene de Aristóteles e Porfírio continua, destarte, a informar, ainda que tacitamente, a vanguarda da tecnologia digital, demonstrando que as interrogações fundamentais acerca do ser, da definição e da classificação remanescem no cerne do esforço humano por compreender e interagir com a realidade, quer seja ela física, quer virtual.
E assim, dileto leitor, concluímos esta nossa peregrinação intelectual, que ousou buscar os vestígios da Sabedoria perene de Aristóteles e Porfírio nas estruturas lógicas da moderna Programação Orientada a Objetos. Rogo que, ao término desta leitura, não a encerres com a frieza de quem apenas percorreu linhas de código ou páginas de lógica antiga76, mas sim com o assombro renovado diante da ordem e da inteligibilidade que permeiam toda a Criação, desde o ser mais profundo até as estruturas que o engenho humano concebe, muitas vezes sem se dar conta da Mão que o guia.
Se, porventura, em meio a estas reflexões que buscaram traçar pontes entre mundos, incorri em alguma imprecisão ou falha de juízo – e suplico a Deus por Sua misericórdia, pois a mente humana, mesmo buscando a luz, é propensa a tropeços – , confio que tua caridade e discernimento saberão relevar. Lembra-te: não se pretendeu aqui esgotar as profundezas nem da técnica nem da filosofia, mas antes acender uma centelha, sugerir uma harmonia, um testemunho da Razão divina que se reflete mesmo nas ferramentas que forjamos para ordenar nosso mundo.
Se algum vislumbre de verdade ou beleza pôde transparecer nestas páginas, que toda a glória seja dada Àquele que é a própria Verdade e Beleza, Fonte de toda ordem e inteligência, o Logos Eterno pelo qual "todas as coisas foram feitas" (Jo 1, 3), e sem o qual nada do que foi feito se fez.
Que o Espírito Santo, Doador de todo o entendimento, ilumine agora a tua própria mente e coração, para que possas discernir as pegadas do Criador não apenas nos céus estrelados ou na profundidade da alma, mas também na lógica que estrutura o silício. Que Ele te fortaleça na busca incessante pelo verdadeiro, pelo bom e pelo belo, onde quer que se manifestem, conduzindo teus passos na jornada rumo àquela Luz que não conhece ocaso. E que a Virgem Santíssima, Sedes Sapientiae, Trono da Sabedoria, te ampare e guie sempre.
Itinera cum Deo, et vale!
Pois a razão humana, em seu operar correto, move-se segundo princípios lógicos e ontológicos universais, primeiramente articulados por Aristóteles. Como comenta Santo Tomás, "o modo de proceder em todas as ciências é adquirido através do conhecimento da Lógica" (Santo Tomás de Aquino, Comentário aos Analíticos Posteriores, Livro I, Lição 1), a qual se funda na apreensão da estrutura do ser.↩︎
Que não se espere, pois, a demonstração apodíctica, mas antes um exercício que busca analogias e correspondências prováveis, mais afim à dialética que à ciência estrita, à semelhança do que se advertiu no opúsculo de estudos.↩︎
Não serão traduzidas nenhuma citação que eu já não encontrar traduzida. Livros e sites foram usados, com as obras originais dos autores, ou traduções confiáveis; em não se tratando de um sério artigo, mas antes uma certa “paródia frutífera”, não manterei este rigor. No entanto, certamente colocarei as citações.↩︎
Adotarei, no presente escrito, o método de exposição por tópicos, a exemplo do que se encontra nos lavores menores do preceptor Guilherme.↩︎
Isto, naturalmente, considerando-se um cenário ideal, no qual se deveria contar com profissionais que compreendessem a realidade antes de ingressarem na chamada “vida acadêmica”; o que se observa, contudo, na atualidade, são “acadêmicos” cujo conhecimento é inversamente proporcional àquilo que “dominam”.↩︎
A convergência não denota, necessariamente, uma influência histórica direta, mas antes sugere que a tentativa de modelar computacionalmente a realidade reencontra, por exigência da própria inteligibilidade do real, as estruturas ontológicas e lógicas que a filosofia perene já havia identificado. A razão, ao buscar ordem, tende a espelhar a ordem do ser.↩︎
Assim espero.↩︎
Pois, como adverte Santo Tomás, a compreensão requer não apenas a verdade do que é dito, mas também a adequada disposição do intelecto que ouve ou lê. Que estas linhas sirvam de estímulo à tua própria reflexão.↩︎
De antemão, peço desculpas pela escrita labiríntica.↩︎
Distinção aparente, pois, como ensina Aristóteles, todas as ciências e artes, enquanto produtos da razão humana que busca conhecer ou fazer algo, compartilham princípios lógicos e ontológicos fundamentais, ainda que seus objetos formais difiram. A Metafísica considera o ser enquanto ser (Metafísica, IV, 1), fundamento último de toda inteligibilidade, inclusive a das artes práticas ou poiéticas.↩︎
Sugere uma intenção mimética ou representacional da POO, buscando uma adequatio rei et intellectus, ainda que a "coisa" aqui seja um modelo computacional e o "intelecto" o do programador que busca capturar a estrutura do domínio modelado.↩︎
PROGRAMAÇÃO ORIENTADA A OBJETOS. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2024. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Programa%C3%A7%C3%A3o_orientada_a_objetos&oldid=68176672>. Acesso em: 28 mar. 2025.↩︎
A centralidade de Aristóteles é inegável. Santo Tomás afirma que ele "alcançou o cume do engenho humano" na filosofia (De unitate intellectus, cap. 1). Porfírio, por sua vez, tornou acessível e sistemática a porta de entrada para a lógica aristotélica, sendo sua Isagoge leitura fundamental por séculos.↩︎
O que aqui fora dito não se pode entender de forma absoluta, pois a mesma definição é respondida em “ST: De potentia q. 7, a. 3 arg. 4”; Santo Tomás, para responder a “Praeterea, cuicumque convenit ratio generis substantiae, est in genere. Sed ratio substantiae est per se existere, quod maxime convenit Deo. Ergo Deus est in genere substantiae.” diz “Ad quartum dicendum, quod ens per se non est definitio substantiae, ut Avicenna dicit. Ens enim non potest esse alicuius genus, ut probat philosophus, cum nihil possit addi ad ens quod non participet ipsum; differentia vero non debet participare genus. Sed si substantia possit habere definitionem, non obstante quod est genus generalissimum, erit eius definitio: quod substantia est res cuius quidditati debetur esse non in aliquo. Et sic non conveniet definitio substantiae Deo, qui non habet quidditatem suam praeter suum esse. Unde Deus non est in genere substantiae, sed est supra omnem substantiam.” (Thomas de Aquino, Quaestiones disputatae de potentia, q. 7)↩︎
Giovanni Reale (2001). Metafísica de Aristóteles I. [S.l.]: Loyola. p. sup. 250-278. ISBN 978-85-15-02361-5↩︎
Reitera-se que a precisão da correspondência não implica necessariamente conhecimento filosófico por parte dos criadores da POO, mas pode indicar que a estrutura lógica da realidade impõe-se à razão quando esta busca modelá-la eficazmente. A verdade pode ser encontrada mesmo por quem não a busca diretamente sob o nome de filosofia. Como já foi dito na nota 4.↩︎
A finalidade da lógica e da metafísica aristotélicas não é meramente especulativa, mas busca fornecer as ferramentas para um conhecimento verdadeiro e ordenado do real. "O fim da ciência especulativa é a verdade", diz Aristóteles (Metafísica, II, 1, 993b20).↩︎
A distinção pode remeter à classificação aristotélica das ciências em especulativas (conhecimento pelo conhecimento), práticas (conhecimento para a ação moral/política) e poiéticas ou produtivas (conhecimento para fazer/produzir algo). A engenharia de software seria uma ciência poiética ou aplicada, mas que, argumenta-se aqui, utiliza instrumentalmente estruturas descobertas pela ciência especulativa (metafísica, lógica).↩︎
Com o perdão da minha falta de conhecimento em Java, basear-me-ei em informações das documentações e mais propriamente no já observado em sala de aula. Isso pois não é necessário saber muito de Java para montar a correlação.↩︎
Entenda-se aqui como o uso prático, na construção de sistemas computacionais, de princípios e estruturas que originalmente pertencem à investigação filosófica sobre a natureza e a organização do ser.↩︎
Sinto a necessidade disso explicar. Expressão de humildade (ou ironia) perante a tarefa proposta, reconhecendo a possibilidade de erro ou insuficiência na análise, à semelhança do tom encontrado em outros de meus escritos; para que, destoando-se da linguagem comum, não, por conseguinte, confunda-se e creia se tratar de um artigo..↩︎
Tais pontes se fundam na analogia, não na univocidade. Como ensina Santo Tomás, o ente se diz de múltiplos modos (analogia entis), permitindo que estruturas descobertas em um domínio (metafísico) encontrem correspondentes, guardadas as devidas proporções, em outro (computacional).↩︎
Entenda-se aqui, primordialmente, o realismo filosófico de Aristóteles e seus comentadores medievais, notadamente Santo Tomás de Aquino, que tomaram o Estagirita como mestre no que concerne ao conhecimento natural da realidade.↩︎
Refere-se ao núcleo da ontologia aristotélica exposta principalmente em sua Metafísica (a ciência do ser enquanto ser) e nas Categorias (os gêneros supremos do ser predicamental), onde se tratam conceitos como substância, acidente, ato, potência, matéria e forma.↩︎
Alusão direta à Isagoge de Porfírio, obra introdutória às Categorias aristotélicas, que organiza os cinco predicáveis (gênero, espécie, diferença, próprio, acidente) e delineia a estrutura hierárquica da classificação lógica (a "Árvore de Porfírio"), essencial para a definição e divisão conceitual.↩︎
"A ordem das partes da lógica é tomada da ordem dos atos da razão."↩︎
Ou “ente”. Não proponho aqui um tratado, então não entrarei em discussões sobre “ente” e “ser”. Os mais acalorados que me corrijam.↩︎
Denominação utilizada pelo próprio Aristóteles (prôtê philosophia), por versar sobre os princípios primeiros e as causas mais elevadas de todas as coisas, fundamento das demais ciências. Cf. Aristóteles, Metafísica, Livro VI (Epsilon), 1, 1026a29-31.↩︎
É este o objeto formal e próprio da Metafísica, distinto das ciências particulares que recortam uma parcela do ser (e.g., os números, as figuras, os viventes). A Filosofia Primeira investiga o ser em sua universalidade e os atributos que lhe são inerentes por sua própria natureza. Cf. Aristóteles, Metafísica, Livro IV (Gamma), 1, 1003a21-22.↩︎
Conceito nuclear. Ousia, frequentemente traduzida como substância ou essência, significa literalmente 'entidade' ou 'ser-idade'. É aquilo que possui o ser de modo primário e fundamental, o suporte dos acidentes. Como adverte Santo Tomás, "substância significa essência à qual compete ser por si, e não em outro" (Santo Tomás de Aquino, Summa Theologiae, I, q. 3, a. 5, ad 1).↩︎
Esta é a definição lógica primordial da substância nas Categorias: aquilo que não se predica de outro nem inere em outro como em seu sujeito. Cf. Aristóteles, Categorias, 2a11-13.↩︎
Diz Edward Feser, em seu livro “Aristotle on Methods and Metaphysics”: “Aristotle, in the Categories, seems to have been the first to propose explicitly an independence criterion for substances.2 Those entities which are classified as primary substances in the Categories (e.g., individual organisms and artifacts) are, in Aristotle’s view, ontologically independent, since they are neither “said of” nor “in” anything else as a subject.”↩︎
Literalmente, 'o que jaz sob'. A substância é o substrato último que recebe as determinações acidentais e, na análise hilemórfica, a forma substancial.↩︎
Assim denominada por ser a substância no sentido mais forte, mais próprio e primeiro (kyriôtata kai prôtôs kai malista), fundamento de toda predicação e existência concreta. Cf. Aristóteles, Categorias, 2a11.↩︎
A substância primeira é sempre singular (tode ti, 'este algo'), numericamente una. Sua existência concreta é o pressuposto para a existência (derivada) das substâncias secundárias e dos acidentes.↩︎
Pode-se predicar "homem" de Sócrates, mas não se pode predicar "Sócrates" (este indivíduo) de outra coisa como sua essência. Ele é o limite da predicação essencial.↩︎
São as naturezas universais (espécies e gêneros) abstraídas dos indivíduos. Seu modo de ser é no intelecto (como conceito) e nas substâncias primeiras (como sua forma ou natureza). Cf. Aristóteles, Categorias, 2a14-19.↩︎
Aristóteles justifica esta hierarquia pelo grau de proximidade e determinação em relação à substância primeira: "a espécie é mais substância que o gênero porque está mais perto da substância primeira" (Aristóteles, Categorias, 2b7-8). Dizer "Sócrates é homem" informa mais sobre sua entidade do que dizer "Sócrates é animal".↩︎
São as substâncias compostas de matéria e forma, sujeitas à geração, corrupção e mudança, que constituem o objeto de estudo da Física (no sentido aristotélico de ciência da natureza). Cf. Aristóteles, Física, Livro II, 1.↩︎
Termo posterior (do grego hyle, matéria, e morphe, forma) que designa a teoria central de Aristóteles para explicar a constituição das substâncias corpóreas como um composto de matéria e forma. É desenvolvida principalmente na Física e na Metafísica (Livros VII-IX).↩︎
Embora distinguíveis pela análise intelectual, matéria e forma, nas substâncias sensíveis, constituem uma unidade ontológica indissociável. A substância concreta não é matéria mais forma, mas matéria informada. Como diz Santo Tomás: "A forma e a matéria estão compreendidas na essência do composto como suas partes" (Santo Tomás de Aquino, De Ente et Essentia, cap. 2).↩︎
A matéria, em si, não é 'algo' em ato, mas a capacidade de 'tornar-se algo'. É o princípio de receptividade e mutabilidade nas substâncias. "Chamo matéria o que em si não é nem um 'quê', nem uma quantidade, nem nenhuma outra das coisas pelas quais o ser é determinado." (Aristóteles, Metafísica, Livro VII, 3, 1029a20-21).↩︎
Na mudança substancial (e.g., a madeira que queima e vira cinza), algo deve permanecer para garantir a continuidade do processo: este algo é a matéria primeira, que perde uma forma (madeira) e adquire outra (cinza). Cf. Aristóteles, Física, Livro I, 7.↩︎
Na tradição tomista, é a matéria assinalada pela quantidade (materia signata quantitate) o princípio que individua a forma específica, explicando como podem existir múltiplos indivíduos da mesma espécie (e.g., muitos homens, todos com a mesma forma 'alma racional'). Cf. Santo Tomás de Aquino, Summa Theologiae, I, q. 50, a. 2, ad 3.↩︎
A forma é ato (energeia ou entelecheia - enteléquia, perfeição possuída) porque realiza a potencialidade da matéria, conferindo-lhe existência determinada e específica. "O ato é quando a coisa existe, não da maneira como dizemos que existe em potência." (Aristóteles, Metafísica, Livro IX, 6, 1048a30-31).↩︎
A definição expressa o 'o quê é' da coisa, sua essência (to ti ên einai), que é dada primariamente pela forma substancial. Por exemplo, a definição de homem (animal racional) expressa sua forma/alma. Cf. Aristóteles, Metafísica, Livro VII, 4-6.↩︎
Para Aristóteles, a alma (psychê) é a forma substancial dos corpos naturais que têm vida em potência, o princípio primeiro pelo qual vivemos, sentimos e pensamos. Cf. Aristóteles, De Anima, Livro II, 1, 412a27-28.↩︎
A existência separada da matéria ou da forma é uma abstração mental. A realidade concreta é o composto (synolon). A crítica à separação das Formas platônicas é um ponto central da metafísica aristotélica.↩︎
Esta é a natureza da substância sensível: um substrato material determinado por uma estrutura formal específica que lhe confere seu ser e sua inteligibilidade.↩︎
Filósofo nascido na Fenícia (c. 234–c. 305 d.C.), discípulo de Plotino e figura central na sistematização e divulgação do Neoplatonismo, além de importante comentador de Aristóteles.↩︎
O Neoplatonismo, escola filosófica iniciada por Plotino no século III d.C., buscava reinterpretar e desenvolver a filosofia de Platão, integrando elementos aristotélicos e de outras tradições. A obra de Porfírio reflete essa síntese, buscando harmonizar Platão e Aristóteles onde possível, especialmente no campo da lógica.↩︎
A tradução latina de Boécio da Isagoge tornou-a, juntamente com as Categorias e Sobre a Interpretação de Aristóteles (também traduzidos e comentados por Boécio), a base da chamada Logica Vetus (Lógica Antiga), currículo padrão de lógica nas universidades europeias por séculos.↩︎
Notas - Isagoge & Categorias; Opúsculo de Lógica aos Novatos; Explicação da Definição Clássica das Quinque Voces.↩︎
Esta estrutura hierárquica não é mera convenção, mas visa espelhar as relações de inclusão essencial que se dão entre as naturezas das coisas, desde o mais universal até o mais específico.↩︎
Reitera-se a importância capital da definição essencial (definitio essentialis) para o conhecimento distinto. Sem ela, vagueia-se na penumbra da opinião, incapaz de apreender a natureza mesma do objeto estudado. Cf. Aristóteles, Analíticos Posteriores, Livro II, 3-10.↩︎
Também conhecidos como denotação e conotação. Quanto mais universal um conceito (maior extensão, e.g., 'ser vivo'), menos notas definidoras ele possui (menor intensão); inversamente, quanto mais específico (menor extensão, e.g., 'Sócrates'), mais determinações o constituem (maior intensão). Esta relação inversa é um pilar da lógica clássica.↩︎
A surpresa advém, talvez, do preconceito moderno que tende a ver o pensamento antigo como superado. Contudo, as estruturas fundamentais do ser e do pensar, uma vez corretamente identificadas, manifestam sua perenidade nos mais diversos domínios da atividade humana, inclusive naqueles mediados pela técnica.↩︎
Que sirva de lição: a verdade não envelhece. As categorias do ser e os modos de predicar, desvelados por Aristóteles e Porfírio, continuam a informar, ainda que implicitamente, as tentativas humanas de organizar e representar a realidade, mesmo sob a veste da computação. E isto, pois, escrevo, por se dar aqui a finalização destas notas — ao menos por ora. É que, evidentemente, não detenho em Java o mesmo domínio que possuo em Lógica Básica; por isso, abstenho-me de tecer comentários que extrapolem o que se encontra no site tomado por referência.↩︎
Talvez te interrogues, como eu, por que razão o cão serve tão amiúde de exemplo nas explanações sobre os Predicáveis (vide Nougué). Pois bem, para não destoar do costume, hás de ver que me valerei do mesmo arquétipo canino.↩︎
A tarefa não é de mera justaposição, mas de busca por analogias estruturais, como já dito. Recorde-se, caro leitor, que tal mapeamento procede por via de analogia, buscando as correspondências estruturais e não uma identidade absoluta, como convém à investigação que respeita a distinção formal dos objetos estudados. A tarefa é de inteligência, não de simples decalque.↩︎
A classe, neste âmbito, cumpre a função da definição real (embora aplicada a um ente de razão ou artificial), pois manifesta a estrutura inteligível que todos os objetos daquele tipo deverão possuir para serem o que são.↩︎
Esta é a natureza do universal enquanto predicável essencial (espécie ou gênero): expressar a forma ou natureza una que se multiplica nos diversos indivíduos concretos, sem perder sua identidade inteligível.↩︎
A Classe, tal como a forma substancial aristotélica, representa o princípio de estabilidade e identidade específica que permanece constante através das variações acidentais (estados) dos objetos individuais.↩︎
A inerência é a marca do acidente (symbebekos), aquilo que existe em outro como em seu sujeito (hypokeimenon), neste caso, o Objeto, que aqui desempenha o papel análogo ao da substância primeira. Os atributos e as capacidades de ação (métodos) não subsistem por si, mas pertencem ao objeto.↩︎
Tal como a forma substancial aristotélica informa a matéria prima para constituir a substância primeira (o synolon), a Classe (forma computacional) informa a memória (matéria computacional) para constituir o Objeto individual e concreto.↩︎
A memória alocada serve como a matéria próxima (deutera hyle) que recebe a determinação formal da Classe. É o substrato potencial apto a ser atualizado pela estrutura e comportamento definidos.↩︎
Expressão que busca capturar a analogia: o Objeto é um composto de uma estrutura inteligível (Forma/Classe) e um substrato individualizado (Matéria/Memória+Estado), espelhando a constituição hilemórfica das substâncias sensíveis.↩︎
No modelo computacional, o objeto individual (rex) é o ente último sobre o qual se opera, o sujeito das ações e dos estados, não servindo ele mesmo como "molde" para outros no mesmo nível de abstração.↩︎
A modelagem computacional, sendo uma construção orientada a um fim prático (rs!, e, por isso, APLICADA), pode tratar como "essencial" para o modelo (e.g., incluído na definição da classe) algo que, filosoficamente, seria um próprio ou mesmo um acidente constante. A distinção aqui é mais pragmática, definida pelo escopo do sistema, do que estritamente ontológica.↩︎
Assim como as potencialidades de um ser natural derivam de sua forma substancial (a alma, para os vivos), as capacidades operacionais de um objeto (métodos) derivam de sua forma computacional (a classe).↩︎
A invocação do método é o momento em que a potência passa ao ato, a capacidade se torna operação efetiva. É a passagem da dynamis à energeia no domínio computacional.↩︎
A ressalva "quase" indica que, embora a estrutura seja análoga, a implementação computacional possui suas próprias especificidades (e.g., herança múltipla de interfaces, não existente na estrutura estrita da Árvore porfiriana para substâncias). Contudo, a correspondência no modelo de herança simples é notável.↩︎
Esta é a definitio fit per genus proximum et differentiam specificam, o método clássico e mais rigoroso de definição, que expressa o 'o quê é' (essência) da coisa.↩︎
Distinção crucial. A interface define a potência (posse facere), deixando a essência (quid est) e a implementação concreta (quomodo facit) para a classe que a implementa. Foca no agere, não no esse.↩︎
Referências a partir daqui, rs.↩︎