types.aug diagrams
Project overview · Compiled explanation
Class interactions
Mermaid source
flowchart TD
n0["Console"]
n1["IProgram"]
n2["NumberRepository"]
n3["Program"]
n4["Repository"]
n1 -->|"depends on"| n0
n2 -->|"implements"| n4
n3 -->|"calls write; depends on"| n0
n3 -->|"implements"| n1
n3 -->|"calls get; depends on repository"| n4
Sequences
Call arrows identify checked targets; loop and branch frames determine when they run. Open that target’s module to follow its implementation. Branches describe alternatives; loops describe repeated work. Native calls and interface dispatch stop at their declared contracts. Exit notes end that path; enclosing recovery and cleanup remain visible.
Repository.get
It returns T.
Interface contract; implementation selected at runtime. Explanation.
NumberRepository constructor
It implements Repository<int>.
NumberRepository.get
Return 7; required cleanup runs before exit. Explanation.
Program constructor
It implements IProgram.
The repository dependency is injected as Repository<int> and stored read-only.
Receive fields: injected repository. Explanation.
Program.start
It gets console (Console) from dependency injection.
It can call Console.write.
Mermaid source
sequenceDiagram
participant p0 as Program.start
participant p1 as repository: Repository
participant p2 as console: Console
p0->>p1: get() · interface dispatch
p1-->>p0: get result: int
p0->>p2: write(value=get result) · interface dispatch
IProgram.start
It gets console (Console) from dependency injection.
It can call Console.write.
Interface contract; implementation selected at runtime. Explanation.
Called contracts
- Console — august/io/contracts.aug
- Console.write — august/io/contracts.aug
- IProgram — types.aug
- Repository — types.aug
- Repository.get — types.aug