# bedvedmalu/oop architecture

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

- Interactive diagram: https://gitdiagram.com/bedvedmalu/oop
- Repository: https://github.com/bedvedmalu/oop

## Overview

This is a small console student-group manager. The user selects an operation in the menu; Program dispatches it to Group, which gathers student or group-leader details, lists or clears the roster, and saves or loads the group as XML. Student is the shared record model and GroupLeader extends it with leader-specific fields. Evidence is limited to the supplied source; no README describes additional capabilities.

Main entry points: [`group.cs`](https://github.com/bedvedmalu/oop/blob/main/group.cs) (Group roster), [`Program.cs`](https://github.com/bedvedmalu/oop/blob/main/Program.cs) (Menu and dispatch), [`student.cs`](https://github.com/bedvedmalu/oop/blob/main/student.cs) (Student record), [`groupleader.cs`](https://github.com/bedvedmalu/oop/blob/main/groupleader.cs) (Group leader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Console workflow"]
  node_program["Menu and dispatch<br/>[Program.cs]"]
end

subgraph group_domain["Roster domain"]
  node_group["Group roster<br/>[group.cs]"]
  node_student["Student record<br/>[student.cs]"]
  node_leader["Group leader<br/>[groupleader.cs]"]
end

subgraph group_persistence["XML persistence"]
  node_xmlfile["XML file"]
end

node_user(("User"))

node_user -->|"chooses action"| node_program
node_program -->|"dispatches roster action"| node_group
node_program -->|"shows menu"| node_program
node_group -->|"creates and reads"| node_student
node_group -->|"creates and reads"| node_leader
node_group -->|"displays records"| node_student
node_leader -->|"calls base methods"| node_student
node_group -->|"writes XML"| node_xmlfile
node_xmlfile -->|"provides XML"| node_group

click node_program "https://github.com/bedvedmalu/oop/blob/main/Program.cs"
click node_group "https://github.com/bedvedmalu/oop/blob/main/group.cs"
click node_student "https://github.com/bedvedmalu/oop/blob/main/student.cs"
click node_leader "https://github.com/bedvedmalu/oop/blob/main/groupleader.cs"

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_program,node_user toneBlue
class node_group,node_student,node_leader toneAmber
class node_xmlfile toneMint
```

## Components

### Console workflow

- [Menu and dispatch](https://github.com/bedvedmalu/oop/blob/main/Program.cs): `Program.cs`

### Roster domain

- [Group roster](https://github.com/bedvedmalu/oop/blob/main/group.cs): `group.cs`
- [Student record](https://github.com/bedvedmalu/oop/blob/main/student.cs): `student.cs`
- [Group leader](https://github.com/bedvedmalu/oop/blob/main/groupleader.cs): `groupleader.cs`

### XML persistence

- **XML file**

### Other components

- **User**

## Connections

- User → Menu and dispatch: chooses action
- Menu and dispatch → Group roster: dispatches roster action
- Menu and dispatch → Menu and dispatch: shows menu
- Group roster → Student record: creates and reads
- Group roster → Group leader: creates and reads
- Group roster → Student record: displays records
- Group leader → Student record: calls base methods
- Group roster → XML file: writes XML
- XML file → Group roster: provides XML
