Object Oriented Programming & Mathematics The Beauty of Implementing Abstract Structures as Abstract Structures. Marc Conrad, University of Luton. 17.11.2018 Marc Conrad, University of Luton
Once upon a time... Mathematics before the 20th century 17.11.2018 Marc Conrad, University of Luton
there was two branches of Mathematics axiomatic Mathematics before the 20th century algorithmic 17.11.2018 Marc Conrad, University of Luton
Axiomatic Hilbert, N. Bourbaki, etc. axiomatic Mathematics before the 20th century algorithmic 17.11.2018 Marc Conrad, University of Luton
Algorithmic axiomatic Mathematics before the 20th century algorithmic Turing, Church, etc. 17.11.2018 Marc Conrad, University of Luton
Pure Mathematics & Computer Science axiomatic "pure" mathematics Mathematics before the 20th century algorithmic computer science 17.11.2018 Marc Conrad, University of Luton
With links in between. axiomatic "pure" mathematics Mathematics before the 20th century computer algebra etc. algorithmic computer science 17.11.2018 Marc Conrad, University of Luton
However, 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 17.11.2018 Marc Conrad, University of Luton
as 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 17.11.2018 Marc Conrad, University of Luton
But 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 17.11.2018 Marc Conrad, University of Luton
Example: 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 17.11.2018 Marc Conrad, University of Luton
Marc Conrad, University of Luton Example: 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. Object Oriented programming allows having objects which do not implement everything! (Concept of overriding abstract methods) The good news is: n 17.11.2018 Marc Conrad, University of Luton
Marc Conrad, University of Luton A "UML" approach to a ring. Ring Z Q Polynomial Ring The child classes implement (override) the missing functionality of the parent class. 17.11.2018 Marc Conrad, University of Luton
Marc Conrad, University of Luton A "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. 17.11.2018 Marc Conrad, University of Luton
Marc Conrad, University of Luton A "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. 17.11.2018 Marc Conrad, University of Luton
Marc Conrad, University of Luton A "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. 17.11.2018 Marc Conrad, University of Luton
Marc Conrad, University of Luton The 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 17.11.2018 Marc Conrad, University of Luton
Results, 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. 17.11.2018 Marc Conrad, University of Luton
Results, 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, …) 17.11.2018 Marc Conrad, University of Luton
Results, 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. 17.11.2018 Marc Conrad, University of Luton