Todos os algoritmos usuais em Matemática reduzem-se fundamentalmente às quatro operações aritméticas. De facto, apesar de várias estruturas matemáticas não serem de natureza numérica, a sua representação em sistemas de informação recorrem ao uso intensivo dos números sobre os quais se realizam, entre outras, as operações fundamentais.
Computacionalmente, os números são representados por vários tipos de dados. Por exemplo, um número inteiro poderá ser representado por uma variável do tipo int, por uma variável do tipo long ou por uma variável do tipo BigInteger caso seja pretendido o manuseamento de números com um número arbitrário de casas decimais. Sobre esses mesmos números definem-se vários algoritmos como a factorização ou a resolução do problema do resto chinês. De modo a evitar a implementação do mesmo algoritmo sobre os vários tipos de dados que representam as mesmas entidades, as operações sobre as várias estruturas são delegadas para objectos específicos.
Com este propósito em mente, foi definida uma estrutura de interfaces lógicas, designada por estrutura algébrica, que estabelece os contratos a serem implementados pelos objectos responsáveis por operações sobre outros objectos. Apresenta-se de seguida uma lista com as interfaces seguidas de uma breve descrição.
  • IAdditionOperation: Define a operação de adição de dois objectos.
  • IAlgebra: Define as operações de espaço vectorial onde é incluída a operação de multiplicação. O conjunto de todas as matrizes quadradas de ordem n munido com as operações de espaço vectorial e a conhecida multiplicação forma uma álgebra.
  • IConversion: Indica como é possível converter um objecto em outro.
  • IEuclideanDomain: Define as operações associadas a um espaço euclideano, tais como a determinação do quociente e respectivo resto de uma divisão.
  • IField: Estabelece um contrato para os objectos que implementam todas as funções de corpo numérico. Para além das operações de adição e multiplicação, também está definida uma unidade aditiva, uma unidade multiplicativa e as funções que determinam o simétrico ou o inverso de qualquer número.
  • IGeneralFactory: Todos os contratos de fábricas de objectos deverão herdar deste contrato.
  • IGroup: Define as operações de grupo, incluindo a determinação da unidade bem como o cálculo do inverso.
  • IIntegerNumber: Estabelece o contrato que deverá ser implementado por todos os objectos que permitem efectuar operações sobre os números inteiro. Para além das operações aritméticas habituais, define as funções para a obtenção do sucessor e do predecessor de um número.
  • IMatrix: Define os métodos essenciais que caracterizam uma matriz.
  • IModularField: Define todas as operações de corpo obedecendo à aritmética modular.
  • IMonoid: Define todas as operações de monóide.
  • IMultidimensionalRange: Define os métodos que caracterizam um alcance multidimensional. Trata-se de uma entidade que generaliza o conceito de matriz mas cujo número de dimensões pode ser definido em tempo de execução. Note-se que o número de dimensões das matrizes multidimensionais nativas podem apenas ser definidas em tempo de compilação.
  • IMultiplication: É equivalente ao monóide no qual é considerada a multiplicação ao invés da adição.
  • IMultiplicationOperation: Define a operação de multiplicação de dois objectos.
  • INaturalNumber: Define todas as operações que caracterizam o espaço de números inteiros.
  • INearest: Define a função que permite indicar qual é o objecto de um tipo que se encontra mais perto de outro. Este contrato encontra aplicações nos algoritmos que requerem o arredondamento de valores decimais que podem ser representados com precisão dupla ou fracções em inteiros.
  • INormSpace: Define a operação de norma ou módulo.
  • IRing: Define todas as operações de anel.
  • IScalarProduct: Define a operação de produto escalar sobre objectos que representam elementos de um espaço vectorial.
  • ISemigroup: Define as operações de semigrupo.
  • ISparseMatrix: Define os métodos que caracterizam uma matriz esparsa.
  • ISquareMatrix: Define os métodos que caracterizam uma matriz quadrada.
  • IUniqueFactorizationDomain: Estabelece os métodos que permitem a obtenção das unidades multiplicativas de um domínio de factorização única para além das funções de anel.
  • IVectorSpace: Caracteriza um vector como um mapeamento entre as coordenadas lineares e o respectivo valor.
  • IVectorSpace: Define o método que permite multiplicar um escalar por um elemento de um espaço vectorial.

Last edited Jul 26, 2014 at 11:20 AM by SergioMarques, version 4

Comments

No comments yet.