Taxionomia de uma Entidade 

Dec/09
21

Nos recentes anos começámos a ouvir falar mais em Entidades no mundo orientado a objetos. O crédito disso vai para a popularidade do Domain Driven Development que introduziu a Entidade como um dos pilares dos sistemas orientados a domínio.  Contudo entidades sempre existiram porque no fundo a maior parte do desenvolvimento é orientado por esse conceito. Em EJB temos o conceito de entidade. Mais simples ou mais complexo de descrever em código ela sempre está lá. E mesmo antes da Orientação a Objetos tinhamos entidades. Afinal os modelo de Entidade-Relacionamento partem desse mesmo conceito. Mas qual é esse conceito?

Identidade

Entidade é um conceito fortemente acoplado ao conceito de identidade de tal forma que o conceito de entidade é definido como : Aquilo que tem identidade.
Entender o que é uma Entidade ou se algo é entidade ou não, passar por reconhecer se esse algo possui uma identidade. Mas o que seria a identidade?

A identidade √© uma¬†caracter√≠stica¬†meta-fisica que diferencia um individuo do outro. ¬†Por exemplo, todo o ser humano tem uma identidade. √Č isso que nos permite¬†distinguir¬†um individuo do outro. Contudo a identidade n√£o √© uma propriedade do individuo. Numa conversa frente a frente os tra√ßos da fisionomia podem permitir reconhecer o¬†individuo. Mas existem pessoas muito parecidas (s√≥sias). A voz da pessoa ajuda a completar o senso de identidade para quem a tenta diferenciar. Isso √© especialmente util na aus√™ncia de poder ver a pessoa, como ao telefone ou na r√°dio. Mas existem pessoas que sabem¬†imitar¬†vozes. Nenhuma das propriedades fisicas da pessoas servem completamente para estabelecer a sua identidade e por isso dizemos que a identidade √© uma propriedade meta-f√≠sica, al√©m do que podermos pegar.

Muitas propriedades tem sido usadas para identificar a pessoa. Procuram-se propriedades que sejam t√£o intrinsecamente √ļnicas que podemos dizer – com grande margem de confian√ßa – que se duas pessoas t√™m essa propriedade igual; s√£o a mesma pessoa. N√£o certeza , mas confian√ßa.
Exemplos clássicos destas propriedades são a impressa digital, o mapa de veias na retina e até o próprio DNA. Estas propriedades biológicas de todo o ser humano são utilizadas para identificar as pessoas e até certo ponto traduzir nelas a identidade da pessoa. Mas isto só funciona porque todos os seres humanos são pessoas , e até hoje todas as pessoas são seres humanos. No dia que isso mudar e outro tipo de ser for considerado uma pessoa Рum robot, por exemplo, essa identificação biológica poderá não ser suficiente.

A conclusão aqui é que podemos utilizar propriedades da entidade para servir como comparação de identidade. Mas a identidade ela mesma, não é capturável por nenhuma propriedade ou conjunto de propriedades.

Identificadores

Identificadores s√£o propriedades que: se¬†diferentes¬†nos conferem a certeza que os¬†indiv√≠duos n√£o s√£o o mesmo, mas que se iguais apenas nos d√£o uma margem de confian√ßa de que os¬†indiv√≠duos¬†s√£o o mesmo. Essa margem de confian√ßa √© muito elevada para coisas como as impress√Ķes digitais e baixa para coisas como a cor dos olhos.¬†Curiosamente¬†a confian√ßa √© proporcional √† dificuldade em determinar o valor dessas propriedades e est√°¬†intimamente¬†ligada √† confian√ßa em os obter. Na pr√°tica esta confian√ßa √©¬†considerada¬†100%. Se dois¬†indiv√≠duos t√™m as mesmas impress√Ķes digitais eles s√£o o mesmo.

Os identificadores s√£o tamb√©m utilizados para encontrar os¬†indiv√≠duos¬†no meio de muitos. ¬†Isto se deve √†¬†assun√ß√£o¬†que eles s√£o¬†√ļnicos para cada ind√≠viduo o que n√£o √© sempre verdade. Por exemplo, o nome √© um identificador. Se dois¬†indiv√≠duos¬†t√™m nomes diferentes s√£o¬†indiv√≠duos¬†diferentes. Sabemos que existem hom√≥nimos – pessoas com o mesmo nome- e que isso nem √© t√£o incomum assim. Mas utilizar o nome para procurar uma pessoa numa multid√£o, mesmo com¬†hom√īnimos¬†√© eficiente. No pior caso teremos que decidir usando outras propriedades (como o nome da m√£e) mas ai, estaremos fazendo isso num universo de op√ß√Ķes muito menor.

Em bancos de dados, identificadores são ótimos candidatos à indexação para acelerar as pesquisas e constrangimentos podem ser incluídos para diminuir a possibilidade de repetição. Por exemplo, não permitindo o cadastro de pessoas com o mesmo nome cujo nome da mãe e pai seja o mesmo. O que nos leva ao conceito de identificador composto.

Um identificador composto √© um identificador montado a partir de v√°rias propriedades da entidade ou at√© de entidades relacionadas a ela. Considerando esta defini√ß√£o , todos os identificadores s√£o realmente compostos mesmo quando s√£o formados por uma √ļnica propriedade.

O conceito de identificador e o conceito de identidade se¬†distinguem pela sua natureza. A identidade √© um conceito meta-fisico irrepresent√°vel¬†¬†no seu todo enquanto o identificador √© uma¬†caracter√≠stica¬†real que permite distinguir inst√Ęncias de uma mesma entidade. Al√©m disso, a entidade tem apenas uma entidade, enquanto t√™m v√°rios identificadores.

Antigamente – na era do banco de dados – era comum basear todo o sistema de dados em chaves naturais que funcionam como¬†identificadores. ¬†Em particular¬†n√ļmeros¬†de identifica√ß√£o nacionais ou internacionais como CPF ou numero do passaporte. O problema com estes identificadores √© que eles s√£o¬†definidos¬†com base em protocolos e os protocolos tendem a ser modificados ao longo do tempo. O que significa que alongo prazo esse numero de identifica√ß√£o vai mudar. Isto √© um pesadelo para a integridade referencial do banco de dados.

Se todos os campos identificadores est√£o sujeitos – em maior ou menor grau – a altera√ß√Ķes, isso significa que n√£o podemos confiar neles para vincular as entidades. O exemplo √© simples, se eu tenho um pai e ele muda de nome eu ainda continuo sendo filho dele. O que na realidade precisamos √© vincular as identidades. Isso nos indica que precisamos de uma¬†caracter√≠stica que possamos armazenar e relacionar que n√£o seja modificada pela modifica√ß√£o das propriedades da entidade e que esteja¬†intimamente¬†ligada √† identidade. A solu√ß√£o √© usar um identificador que √© garantido √ļnico para cada individuo de uma entidade, mas n√£o tem nenhum significado. Esta propriedades “artificial” da entidade atua agora como representa√ß√£o¬†f√≠sica¬†da identidade da entidade e como tal √© imut√°vel uma vez¬†atribu√≠da. Entenda-se que isto s√≥ √©¬†poss√≠vel porque teremos controle sobre o dado que servir√° de aproxima√ß√£o para ser a identidade da entidade. Normalmente um numero¬†sequencial, n√£o repet√≠vel,√© suficiente.

Identificadores, Igualdade e Equivalência

Igualdade √© uma caracteristica matem√°tica que significa que a identidade de dois ou mais objetos √© a mesma. 2=2 significa que 2 √© 2. Embora seja lido como “igual” o sinal matem√°tico de igual est√° relacionado ao conceito de identidade; se os dois objetos s√£o o mesmo.

Equivalência pretender determinar se para um certo contexto dois indivíduos podem representar o mesmo estado e/ou executar as mesmas tarefas. O método equals() de java.lang.Object pretende determinar se o objeto é equivalente ao objeto que foi passado. Claro que se o objeto passado for o mesmo a equivalência está garantida, mas caso contrário o método equals() é consultado.

A equivalência é portanto determinada pela comparação de um ou mais identificadores Рo que for mais de acordo com o contexto Рenquanto que a igualdade é comparada através da característica utilizada como determinante da identidade.

Rela√ß√Ķes

Entidades s√£o especialmente uteis como temos diferentes tipos delas que se relacionam num modelo de¬†dom√≠nio. Al√©m da identidade, das propriedades, dos identificadores a entidade n√£o est√° completa sem as suas rela√ß√Ķes. ¬†As rela√ß√Ķes entre as entidades permitem navegar entre¬†indiv√≠duos de diferentes tipos de entidade.

Na pr√°tica estas rela√ß√Ķes s√£o mantidas criando propriedades nas entidades que se relacionam aos¬†determinantes¬†de identidade das outras entidades.

Resumo

Entidades s√£o abstra√ß√Ķes dotadas de identidade. Identidade √© uma¬†caracter√≠stica¬†meta-f√≠sica¬†intang√≠vel¬†e irrepresent√°vel. ¬†Entidades t√™m tamb√©m um conjunto de¬†identificadores¬†que s√£o compostos por subconjuntos de uma ou mais de suas propriedades . Identificadores s√£o utilizados tamb√©m para encontrar um¬†individuo¬†da entidade no meio de muitos.

Comente

Artigos