# hossain8078/comp285labs architecture

> Architecture diagram of the GitHub repository hossain8078/comp285labs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hossain8078/comp285labs
- Repository: https://github.com/hossain8078/comp285labs

## Overview

COMP285Labs is a Java console-learning application: a user enters through Driver, selects a lab in the launcher, and interacts with a framework-based program that operates on a collection or demonstrates recursion. Its documented branches cover arrays, linked lists, generic collections, recursion, binary search trees, doubly linked lists, and a preserved random-number program. A separate Lab 6 project analyzes array and linked-list efficiency. Relationships among unsampled programs are included only where README or source-index references support them; the excerpts do not expose every implementation detail.

Main entry points: [`src/comp258/programs/LabLauncher.java`](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/LabLauncher.java) (Lab launcher), [`src/comp258/framework/ConsoleProgram.java`](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/framework/ConsoleProgram.java) (Console lifecycle), [`src/comp258/programs/GenericListProgram.java`](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/GenericListProgram.java) (Generic-list program), [`src/comp258/programs/BinarySearchTreeProgram.java`](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/BinarySearchTreeProgram.java) (BST program)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_main["Console application"]
  node_driver["Driver<br/>[Driver.java]"]
  node_launcher["Lab launcher<br/>[LabLauncher.java]"]
  node_array_program["Array program"]
  node_linked_program["Linked-list program"]
  node_generic_program["Generic-list program"]
  node_recursive["Recursion app"]
  node_bst_program["BST program"]
  node_doubly_program["Doubly-list program"]
  node_random_program["Random-number program"]
end

subgraph group_framework["Console framework"]
  node_console["Console lifecycle"]
end

subgraph group_collections["Data structures"]
  node_array_manager["Array manager<br/>[ArrayManager.java]"]
  node_linked_list["Linked list<br/>[LinkedList.java]"]
  node_generic_list["Generic linked list"]
  node_widget["Widget values<br/>[Widget.java]"]
  node_bst["Binary search tree"]
  node_bst_node["BST node<br/>[BSTNode.java]"]
  node_doubly_list["Doubly linked list"]
end

subgraph group_analysis["Efficiency analysis"]
  node_lab6["Efficiency lab"]
  node_lab6_array["Analysis array manager<br/>[ArrayManager.java]"]
  node_lab6_linked["Analysis linked list<br/>[LinkedList.java]"]
end

node_user(("Console user"))

node_user -->|"starts"| node_driver
node_driver -->|"starts"| node_launcher
node_launcher -->|"runs as"| node_console
node_launcher -->|"dispatches"| node_array_program
node_launcher -->|"dispatches"| node_linked_program
node_launcher -->|"dispatches"| node_generic_program
node_launcher -->|"dispatches"| node_recursive
node_launcher -->|"dispatches"| node_bst_program
node_launcher -->|"dispatches"| node_doubly_program
node_array_program -->|"extends"| node_console
node_linked_program -->|"extends"| node_console
node_generic_program -->|"extends"| node_console
node_recursive -->|"extends"| node_console
node_bst_program -->|"extends"| node_console
node_doubly_program -->|"extends"| node_console
node_random_program -->|"extends"| node_console
node_array_program -->|"manages"| node_array_manager
node_linked_program -->|"manages"| node_linked_list
node_generic_program -->|"manages"| node_generic_list
node_generic_program -->|"uses values"| node_widget
node_recursive -->|"traverses"| node_generic_list
node_bst_program -->|"manages"| node_bst
node_bst_program -->|"orders values"| node_widget
node_bst -->|"delegates to"| node_bst_node
node_doubly_program -->|"manages"| node_doubly_list
node_lab6 -->|"analyzes"| node_lab6_array
node_lab6 -->|"analyzes"| node_lab6_linked

click node_driver "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/Driver.java"
click node_launcher "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/LabLauncher.java"
click node_array_program "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/ArrayManagerProgram.java"
click node_linked_program "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/LinkedListProgram.java"
click node_generic_program "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/GenericListProgram.java"
click node_recursive "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/RecursiveFunctionsApp.java"
click node_bst_program "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/BinarySearchTreeProgram.java"
click node_doubly_program "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/DoublyLinkedListProgram.java"
click node_random_program "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/RandomNumberProgram.java"
click node_console "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/framework/ConsoleProgram.java"
click node_array_manager "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/ArrayManager.java"
click node_linked_list "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/LinkedList.java"
click node_generic_list "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/GenericLinkedList.java"
click node_widget "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/Widget.java"
click node_bst "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/BinarySearchTree.java"
click node_bst_node "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/BSTNode.java"
click node_doubly_list "https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/DoublyLinkedList.java"
click node_lab6 "https://github.com/hossain8078/comp285labs/blob/main/Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/AlgorithmEfficiencyLab.java"
click node_lab6_array "https://github.com/hossain8078/comp285labs/blob/main/Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/collections/ArrayManager.java"
click node_lab6_linked "https://github.com/hossain8078/comp285labs/blob/main/Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/collections/LinkedList.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_driver,node_launcher,node_array_program,node_linked_program,node_generic_program,node_recursive,node_bst_program,node_doubly_program,node_random_program,node_user toneBlue
class node_console toneAmber
class node_array_manager,node_linked_list,node_generic_list,node_widget,node_bst,node_bst_node,node_doubly_list toneMint
class node_lab6,node_lab6_array,node_lab6_linked toneRose
```

## Components

### Console application

- [Driver](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/Driver.java): `src/comp258/Driver.java`
- [Lab launcher](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/LabLauncher.java): `src/comp258/programs/LabLauncher.java`
- [Array program](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/ArrayManagerProgram.java): `src/comp258/programs/ArrayManagerProgram.java`
- [Linked-list program](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/LinkedListProgram.java): `src/comp258/programs/LinkedListProgram.java`
- [Generic-list program](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/GenericListProgram.java): `src/comp258/programs/GenericListProgram.java`
- [Recursion app](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/RecursiveFunctionsApp.java): `src/comp258/programs/RecursiveFunctionsApp.java`
- [BST program](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/BinarySearchTreeProgram.java): `src/comp258/programs/BinarySearchTreeProgram.java`
- [Doubly-list program](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/DoublyLinkedListProgram.java): `src/comp258/programs/DoublyLinkedListProgram.java`
- [Random-number program](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/programs/RandomNumberProgram.java): `src/comp258/programs/RandomNumberProgram.java`

### Console framework

- [Console lifecycle](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/framework/ConsoleProgram.java): `src/comp258/framework/ConsoleProgram.java`

### Data structures

- [Array manager](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/ArrayManager.java): `src/comp258/collections/ArrayManager.java`
- [Linked list](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/LinkedList.java): `src/comp258/collections/LinkedList.java`
- [Generic linked list](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/GenericLinkedList.java): `src/comp258/collections/GenericLinkedList.java`
- [Widget values](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/Widget.java): `src/comp258/collections/Widget.java`
- [Binary search tree](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/BinarySearchTree.java): `src/comp258/collections/BinarySearchTree.java`
- [BST node](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/BSTNode.java): `src/comp258/collections/BSTNode.java`
- [Doubly linked list](https://github.com/hossain8078/comp285labs/blob/main/src/comp258/collections/DoublyLinkedList.java): `src/comp258/collections/DoublyLinkedList.java`

### Efficiency analysis

- [Efficiency lab](https://github.com/hossain8078/comp285labs/blob/main/Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/AlgorithmEfficiencyLab.java): `Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/AlgorithmEfficiencyLab.java`
- [Analysis array manager](https://github.com/hossain8078/comp285labs/blob/main/Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/collections/ArrayManager.java): `Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/collections/ArrayManager.java`
- [Analysis linked list](https://github.com/hossain8078/comp285labs/blob/main/Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/collections/LinkedList.java): `Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/collections/LinkedList.java`

### Other components

- **Console user**

## Connections

- Console user → Driver: starts (evidence: `README.md`)
- Driver → Lab launcher: starts (evidence: `src/comp258/Driver.java`)
- Lab launcher → Console lifecycle: runs as (evidence: `src/comp258/programs/LabLauncher.java`)
- Lab launcher → Array program: dispatches (evidence: `src/comp258/programs/LabLauncher.java`)
- Lab launcher → Linked-list program: dispatches (evidence: `src/comp258/programs/LabLauncher.java`)
- Lab launcher → Generic-list program: dispatches (evidence: `src/comp258/programs/LabLauncher.java`)
- Lab launcher → Recursion app: dispatches (evidence: `src/comp258/programs/LabLauncher.java`)
- Lab launcher → BST program: dispatches (evidence: `src/comp258/programs/LabLauncher.java`)
- Lab launcher → Doubly-list program: dispatches (evidence: `src/comp258/programs/LabLauncher.java`)
- Array program → Console lifecycle: extends (evidence: `src/comp258/programs/ArrayManagerProgram.java`)
- Linked-list program → Console lifecycle: extends (evidence: `src/comp258/programs/LinkedListProgram.java`)
- Generic-list program → Console lifecycle: extends (evidence: `src/comp258/programs/GenericListProgram.java`)
- Recursion app → Console lifecycle: extends (evidence: `src/comp258/programs/RecursiveFunctionsApp.java`)
- BST program → Console lifecycle: extends (evidence: `src/comp258/programs/BinarySearchTreeProgram.java`)
- Doubly-list program → Console lifecycle: extends (evidence: `src/comp258/programs/DoublyLinkedListProgram.java`)
- Random-number program → Console lifecycle: extends (evidence: `src/comp258/programs/RandomNumberProgram.java`)
- Array program → Array manager: manages (evidence: `src/comp258/programs/ArrayManagerProgram.java`)
- Linked-list program → Linked list: manages (evidence: `src/comp258/programs/LinkedListProgram.java`)
- Generic-list program → Generic linked list: manages (evidence: `src/comp258/programs/GenericListProgram.java`)
- Generic-list program → Widget values: uses values (evidence: `src/comp258/programs/GenericListProgram.java`)
- Recursion app → Generic linked list: traverses (evidence: `src/comp258/programs/RecursiveFunctionsApp.java`)
- BST program → Binary search tree: manages (evidence: `src/comp258/programs/BinarySearchTreeProgram.java`)
- BST program → Widget values: orders values (evidence: `src/comp258/programs/BinarySearchTreeProgram.java`)
- Binary search tree → BST node: delegates to (evidence: `src/comp258/collections/BinarySearchTree.java`)
- Doubly-list program → Doubly linked list: manages (evidence: `src/comp258/programs/DoublyLinkedListProgram.java`)
- Efficiency lab → Analysis array manager: analyzes (evidence: `Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/AlgorithmEfficiencyLab.java`)
- Efficiency lab → Analysis linked list: analyzes (evidence: `Lab_6_AlgorithmEfficiencyAnalysis/src/algorithmefficiencyanalysis/AlgorithmEfficiencyLab.java`)
