Design patterns approached from the functional paradigm within the programming language Java

  • H. (Hicham) Chafik

Student thesis: Master's Thesis

Abstract

Object georiënteerde programmeertalen bevatten elementen die als tekortkoming kunnen worden gezien. Deze tekortkomingen kunnen worden aangevuld door het inzetten van design patterns. Design patterns zijn bewezen oplossingen voor verschillende knelpunten binnen het OO-paradigma. Design patterns bieden daardoor oplossingen die een programmeertaal zelfstandig niet kan oplossen. Het doel van design patterns is om de flexibiliteit, uitbreidbaarheid en onderhoudbaarheid van een softwaresysteem te
optimaliseren in de situatie waarin de programmeertaal zelf onvoldoende mogelijkheden biedt. Elke pattern heeft een bepaald doel, dan wel een probleem dat het kan oplossen.
Daarnaast maken design patterns het mogelijk om de kwaliteitsattributen op
systeemniveau zoals flexibiliteit, begrijpbaarheid en herbruikbaarheid te verbeteren [13].
In het technisch rapport “Eliminating OO Patterns by Java Functional Features“ zijn een aantal OO design pattern herschreven door middel van first class functions. Waarbij de volgende design pattern zijn aangehaald:
• Strategy pattern.
• Template method pattern.
• Command pattern.
• Decorator pattern.
• The visitor pattern.
In dit onderzoek vormt het technisch rapport de basis, waarbij het doel van dit onderzoek, is het op hoofdlijnen bepalen of de functionele implementatievariant van de GoF patterns daadwerkelijk een verbetering zijn ten opzicht van de klassieke GoF patterns. Het onderzoek is voornamelijk kwalitatief van aard. Hierbij is getoetst wanneer het raadzaam is om bestaande desgin patterns te refactoren door gebruik te maken van first class functions. In dit kader zijn de bestaande GoF patterns vergeleken met de herziene design patterns die in het technisch rapport “Eliminating OO Patterns by Java Functional Features” zijn uitgewerkt.

Date of Award14 Apr 2020
Original languageDutch
SupervisorSylvia Stuurman (Examiner) & Harrie Passier (Co-assessor)

Master's Degree

  • Master Software Engineering

Cite this

'