Skip to Main Content
Object oriented programming and design patterns introduce a high level of abstraction that allows us to implement and work with mathematical abstractions. Classic algebraic libraries, based on imperative programming, contain subalgorithms for working with polynomials, matrices, vectors, etc. Their main inconvenience is the dependency on types. In this paper we analyze and design the kernel for an object oriented computational algebra system based on design patterns. This approach allows us to work not only with concrete algebraic structures, but also with abstract algebraic structures. The advantages of this approach are given mainly by the creational design patterns, by reflection and dynamic loading, and by representation independence. These introduce significant flexibility and abstraction. Using this representation we may work with abstract algebraic structures, such as: groups, rings, fields, etc., define new algebraic structures, and operate with them in abstract and concrete ways.