Login | Register

Improving Object-Oriented Programming by Integrating Language Features to Support Immutability

Title:

Improving Object-Oriented Programming by Integrating Language Features to Support Immutability

Flageol, William (2023) Improving Object-Oriented Programming by Integrating Language Features to Support Immutability. PhD thesis, Concordia University.

[thumbnail of Flageol_PhD_F2023.pdf]
Preview
Text (application/pdf)
Flageol_PhD_F2023.pdf - Accepted Version
Available under License Spectrum Terms of Access.
1MB

Abstract

Nowadays developers consider Object-Oriented Programming (OOP) the de-facto general programming paradigm. While successful, OOP is not without problems. In 1994, Gamma et al. published a book with a set of 23 design patterns addressing recurring problems found in OOP software. These patterns are well-known in the industry and are taught in universities as part of software engineering curricula. Despite their usefulness in solving recurring problems, these design patterns bring a certain complexity in their implementation. That complexity is influenced by the features available in the implementation language. In this thesis, we want to decrease this complexity by focusing on the problems that design patterns attempt to solve and the language features that can be used to solve them. Thus, we aim to investigate the impact of specific language features on OOP and contribute guidelines to improve OOP language design.

We first perform a mapping study to catalogue the language features that have been proposed in the literature to improve design pattern implementations. From those features, we focus on investigating the impact of immutability-related features on OOP.

We then perform an exploratory study measuring the impact of introducing immutability in OOP software with the objective of establishing the advantages and drawbacks of using immutability in the context of OOP. Results indicate that immutability may produce more granular and easier-to-understand programs.

We also perform an experiment to measure the impact of new language features added into the C\# language for better immutability support. Results show that these specific language features facilitate developers' tasks when aiming to implement immutability in OOP.

We finally present a new design pattern aimed at solving a problem with method overriding in the context of immutable hierarchies of objects. We discuss the impact of language features on the implementations of this pattern by comparing these implementations in different programming languages, including Clojure, Java, and Kotlin.

Finally, we implement these language features as a language extension to Common Lisp and discuss their usage.

Divisions:Concordia University > Gina Cody School of Engineering and Computer Science > Computer Science and Software Engineering
Item Type:Thesis (PhD)
Authors:Flageol, William
Institution:Concordia University
Degree Name:Ph. D.
Program:Software Engineering
Date:22 March 2023
Thesis Supervisor(s):Guéhéneuc, Yann-Gaël and Badri, Mourad and Monnier, Stefan
ID Code:992371
Deposited By: William Flageol
Deposited On:17 Nov 2023 14:59
Last Modified:17 Nov 2023 14:59
All items in Spectrum are protected by copyright, with all rights reserved. The use of items is governed by Spectrum's terms of access.

Repository Staff Only: item control page

Downloads per month over past year

Research related to the current document (at the CORE website)
- Research related to the current document (at the CORE website)
Back to top Back to top