# rashkennurdaulet/sdp-assignment1 architecture

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

- Interactive diagram: https://gitdiagram.com/rashkennurdaulet/sdp-assignment1
- Repository: https://github.com/rashkennurdaulet/sdp-assignment1
- Video tour (about a minute): https://gitdiagram.com/rashkennurdaulet/sdp-assignment1/video

## Overview

This is a small Java console pizza-customization example using the Builder pattern. A user selects a crust style and ingredients in Main; the selected builder accumulates options, enforces style-specific rules when building, and returns an immutable Pizza whose description is printed. PizzaDirector also defines two preset recipes, but the sampled Main does not invoke it. The map reflects sampled source; no README content or other runtime subsystems were provided.

Main entry points: [`src/pizza/Main.java`](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/Main.java) (Console flow), [`src/pizza/Pizza.java`](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/Pizza.java) (Pizza result), [`src/pizza/ItalianThinCrustBuilder.java`](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/ItalianThinCrustBuilder.java) (Italian builder), [`src/pizza/ChicagoDeepDishBuilder.java`](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/ChicagoDeepDishBuilder.java) (Chicago builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console interaction"]
  node_main["Console flow<br/>[Main.java]"]
end

subgraph group_construction["Pizza construction"]
  node_builder_api["Builder API<br/>[PizzaBuilder.java]"]
  node_italian["Italian builder"]
  node_chicago["Chicago builder"]
  node_pizza["Pizza result<br/>[Pizza.java]"]
end

subgraph group_recipes["Preset recipes"]
  node_director["Recipe director<br/>[PizzaDirector.java]"]
end

node_user(("User"))

node_user -->|"enters choices"| node_main
node_main -->|"selects builder"| node_italian
node_main -->|"selects builder"| node_chicago
node_main -->|"configures via"| node_builder_api
node_italian -->|"builds"| node_pizza
node_chicago -->|"builds"| node_pizza
node_main -->|"describes result"| node_pizza
node_director -->|"sets presets"| node_builder_api

click node_main "https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/Main.java"
click node_builder_api "https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/PizzaBuilder.java"
click node_italian "https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/ItalianThinCrustBuilder.java"
click node_chicago "https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/ChicagoDeepDishBuilder.java"
click node_pizza "https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/Pizza.java"
click node_director "https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/PizzaDirector.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_main,node_user toneBlue
class node_builder_api,node_italian,node_chicago,node_pizza toneAmber
class node_director toneMint
```

## Components

### Console interaction

- [Console flow](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/Main.java): `src/pizza/Main.java`

### Pizza construction

- [Builder API](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/PizzaBuilder.java): `src/pizza/PizzaBuilder.java`
- [Italian builder](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/ItalianThinCrustBuilder.java): `src/pizza/ItalianThinCrustBuilder.java`
- [Chicago builder](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/ChicagoDeepDishBuilder.java): `src/pizza/ChicagoDeepDishBuilder.java`
- [Pizza result](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/Pizza.java): `src/pizza/Pizza.java`

### Preset recipes

- [Recipe director](https://github.com/rashkennurdaulet/sdp-assignment1/blob/main/src/pizza/PizzaDirector.java): `src/pizza/PizzaDirector.java`

### Other components

- **User**

## Connections

- User → Console flow: enters choices
- Console flow → Italian builder: selects builder
- Console flow → Chicago builder: selects builder
- Console flow → Builder API: configures via
- Italian builder → Pizza result: builds
- Chicago builder → Pizza result: builds
- Console flow → Pizza result: describes result
- Recipe director → Builder API: sets presets
