Title: Object Oriented Programming
1Object Oriented Programming Mathematics
- The Beauty of Implementing Abstract Structures
as - Abstract Structures.
- Marc Conrad, University of Luton.
2Once upon a time...
Mathematics before the 20th century
3there was two branches of Mathematics
axiomatic
Mathematics before the 20th century
algorithmic
4Axiomatic
Hilbert, N. Bourbaki, etc.
axiomatic
Mathematics before the 20th century
algorithmic
5Algorithmic
axiomatic
Mathematics before the 20th century
algorithmic
Turing, Church, etc.
6Pure Mathematics Computer
Science
axiomatic
"pure" mathematics
Mathematics before the 20th century
algorithmic
computer science
7With links in between.
axiomatic
"pure" mathematics
Mathematics before the 20th century
computer algebra etc.
algorithmic
computer science
8However, some topics of Computer Science seemed
to be unrelated to mathematics...
axiomatic
"pure" mathematics
Mathematics before the 20th century
algorithmic
computer science
software design
operating systems
9as e.g. object oriented programming.
axiomatic
"pure" mathematics
Mathematics before the 20th century
algorithmic
object oriented programming is a technique to
solve the "software crisis". It evolved in a
context completely unrelated to mathematics.
computer science e.g. object oriented
programming
10But object oriented programming is closer to
"axiomatic" mathematics than it appeared in the
first place.
object oriented programming... ... allows to
implement abstract structures in an "axiomatic"
way.
"pure" mathematics
axiomatic
Mathematics before the 20th century
algorithmic
object oriented programming
computer science
11Example A ring (abstract).
- We cannot implement
- addition
- negation
- multiplication
- inversion
- "zero"
- "one"
- check if zero
- We can implement
- subtraction (because of addition and negation)
- exponentiation a
- embedding of Z, Q.
- check for equality
- polynomials over this ring
- etc.
n
12Example A ring.
- We cannot implement
- addition
- negation
- multiplication
- inversion
- "zero"
- "one"
- check if zero
- We can implement
- subtraction (because of addition and negation)
- exponantiation a
- embedding of Z, Q.
- check for equality
- polynomials over this ring
- etc.
The good news is Object Oriented programming
allows having objects which do not implement
everything!(Concept of overriding abstract
methods)
n
13A "UML" approach to a ring.
Ring
Z
Q
Polynomial Ring
- The child classes implement (override) the
missing functionality of the parent class.
14A "UML" approach to a ring.
Ring
Z
Q
Polynomial Ring
- But things are more complicated, a polynomial is
defined over a ring. It both inherits and
aggregates a ring.
15A "UML" approach to a ring.
Leads to multivariate polynomials by implementing
univariate polynomials!
Ring
Z
Q
Polynomial Ring
- But things are more complicated, a polynomial is
defined over a ring. It both inherits and
aggregates a ring.
16A "UML" approach to a ring.
Ring Element
Ring
Z
Q
Polynomial Ring
- And in order to perform computations we also need
a class for the elements of a ring.
17The practical side.
- In order to get experience with the idea, an
experimental implementation in Java classes has
been developed. - Java is highly object oriented but not very
common in mathematical context. - Results can be viewed at
http//ring.perisic.com - The name of the Java package is consequently
- com.perisic.ring
18Results, Remarks, Conclusions
- It is possible to work with abstract structures!
- E.g. Modular Ring R/p(x), where R is abstract.
- E.g. Quotient Field Quot(R), where R is abstract.
- Same amount of work as implementing Z/mZ or Q.
- Multivariate polynomials can be used although
only univariate polynomials have been implemented
(over R). - Complex structures can easily be derived as child
classes - Cyclotomic fields, complex numbers, rational
function fields, ... - Concepts for automatic mapping from one ring to
another.
19Results, Remarks, Conclusions
- It is astonishing simple to implement complex
mathematical structures in an object oriented
environment "from scratch". - You are invited to experiment, contribute, or
share experiences. The package com.perisic.ring
is available and documented at http//ring.perisic
.com. - Caveat There are drawbacks performance,
decisions on how to organise classes,
implementing specialised algorithms (primality
testing, factoring, )
20Results, Remarks, Conclusions
- The experiments with the Java package
com.ring.perisic show that object oriented
programming deserves a closer look in the context
of mathematics - The mechanism of overriding and dynamic binding
allows protoyping of abstract mathematical
structures. - Object oriented programming should be a main
feature in CAS (as user defined functions a
couple of years ago). - Mathematical software should use object oriented
terminology instead of "reinventing the wheel". - Disseminate object oriented concepts to the
mathematical community.