Muhammad Khair's Project Portfolio Page
Project: TuitiONE
TuitiONE is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project.
- New Feature: Added a new entity
Lesson
and established bi-directional linkages withStudent
(previouslyPerson
) entities.- What it does: Allows users to establish better relationship and collection of data such as lessons enrolled and subscription prices. Overall, a key element for the application to serve its purpose.
- Justification: A driving factor in the application to serve its purpose. Establishing the new entity allows the user to fulfill their needs to link
Student
entities withLesson
ones. - Highlights:
- Establishing weaker equality checks using a dependent entity
LessonCode
, numerous constraints and abstracting the initialLesson
class to dependent field classes such asSubject
andPrice
in iterationsv1.2
andv1.3
. - Ensuring defensive programming is embedded in the bidirectional relationship with multiple constraints so that it can be tapped on by other packages such as
model
,storage
as well aslogic
. - Abstracting logic for ease of usage within other packages (similar to previous pointer).
- Ensuring and maintaining the new entity into
storage
integration with Jackson JSON processing library.
- Establishing weaker equality checks using a dependent entity
- Enhancements to existing features:
- Ensuring and maintaining the new and existing (modified) entities into
storage
integration with Jackson JSON processing library (Pull requests #76, #86) - Wrote additional tests for existing features to increase coverage for new entities and constraints (Pull requests #104, #114, #178, #195)
- Evolve
Lesson
entity from a single container of primitive data to a class that depends on field entities using abstraction (Pull requests #167, #86) - Refactoring message and command logic to ensure easier readability (Pull requests #287)
- Ensuring and maintaining the new and existing (modified) entities into
-
Code contributed: RepoSense link
- Project management:
- Managed release
v1.3
- Managed release
- Documentation:
- Community: