# josevictorbdbr/trainingfactorymethod architecture

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

- Interactive diagram: https://gitdiagram.com/josevictorbdbr/trainingfactorymethod
- Repository: https://github.com/josevictorbdbr/trainingfactorymethod

## Overview

This is a small Java veterinary-visit demonstration. Main runs one visit for each animal type; Atendimento creates the animal through a type-specific factory, then prints its summary, whose cost, vaccination, and care details are supplied by the animal subtype. The README is empty, so this map reflects the sampled source only; there is no persistence or external integration.

Main entry points: [`Atendimento.java`](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Atendimento.java) (Atendimento), [`Animal.java`](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Animal.java) (Animal), [`AtendimentoCachorro.java`](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoCachorro.java) (Dog visit), [`AtendimentoGato.java`](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoGato.java) (Cat visit)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Visit workflow"]
  node_main["Main<br/>[Main.java]"]
  node_atendimento["Atendimento<br/>[Atendimento.java]"]
  node_dog_visit["Dog visit"]
  node_cat_visit["Cat visit"]
  node_bird_visit["Bird visit"]
end

subgraph group_animals["Animal domain"]
  node_animal["Animal<br/>[Animal.java]"]
  node_dog["Cachorro<br/>[Cachorro.java]"]
  node_cat["Gato<br/>[Gato.java]"]
  node_bird["Ave<br/>[Ave.java]"]
end

node_console(("Console"))

node_main -->|"runs visit"| node_dog_visit
node_main -->|"runs visit"| node_cat_visit
node_main -->|"runs visit"| node_bird_visit
node_dog_visit -->|"uses"| node_atendimento
node_cat_visit -->|"uses"| node_atendimento
node_bird_visit -->|"uses"| node_atendimento
node_atendimento -->|"dispatches factory"| node_dog_visit
node_atendimento -->|"dispatches factory"| node_cat_visit
node_atendimento -->|"dispatches factory"| node_bird_visit
node_dog_visit -->|"creates"| node_dog
node_cat_visit -->|"creates"| node_cat
node_bird_visit -->|"creates"| node_bird
node_dog -->|"extends"| node_animal
node_cat -->|"extends"| node_animal
node_bird -->|"extends"| node_animal
node_atendimento -->|"summarizes"| node_animal
node_animal -->|"dispatches details"| node_dog
node_animal -->|"dispatches details"| node_cat
node_animal -->|"dispatches details"| node_bird
node_atendimento -->|"prints summary"| node_console

click node_main "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Main.java"
click node_atendimento "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Atendimento.java"
click node_dog_visit "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoCachorro.java"
click node_cat_visit "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoGato.java"
click node_bird_visit "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoAve.java"
click node_animal "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Animal.java"
click node_dog "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Cachorro.java"
click node_cat "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Gato.java"
click node_bird "https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Ave.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_atendimento,node_dog_visit,node_cat_visit,node_bird_visit toneBlue
class node_animal,node_dog,node_cat,node_bird toneAmber
class node_console toneIndigo
```

## Components

### Visit workflow

- [Main](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Main.java): `Main.java`
- [Atendimento](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Atendimento.java): `Atendimento.java`
- [Dog visit](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoCachorro.java): `AtendimentoCachorro.java`
- [Cat visit](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoGato.java): `AtendimentoGato.java`
- [Bird visit](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/AtendimentoAve.java): `AtendimentoAve.java`

### Animal domain

- [Animal](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Animal.java): `Animal.java`
- [Cachorro](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Cachorro.java): `Cachorro.java`
- [Gato](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Gato.java): `Gato.java`
- [Ave](https://github.com/josevictorbdbr/trainingfactorymethod/blob/main/Ave.java): `Ave.java`

### Other components

- **Console**

## Connections

- Main → Dog visit: runs visit
- Main → Cat visit: runs visit
- Main → Bird visit: runs visit
- Dog visit → Atendimento: uses
- Cat visit → Atendimento: uses
- Bird visit → Atendimento: uses
- Atendimento → Dog visit: dispatches factory
- Atendimento → Cat visit: dispatches factory
- Atendimento → Bird visit: dispatches factory
- Dog visit → Cachorro: creates
- Cat visit → Gato: creates
- Bird visit → Ave: creates
- Cachorro → Animal: extends
- Gato → Animal: extends
- Ave → Animal: extends
- Atendimento → Animal: summarizes
- Animal → Cachorro: dispatches details
- Animal → Gato: dispatches details
- Animal → Ave: dispatches details
- Atendimento → Console: prints summary
