# azuperalta/unqui-poo2-peralta architecture

> Architecture diagram of the GitHub repository azuperalta/unqui-poo2-peralta, 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/azuperalta/unqui-poo2-peralta
- Repository: https://github.com/azuperalta/unqui-poo2-peralta

## Overview

This repository is a collection of object-oriented programming assignments, not one integrated application. Its exercises model employee payroll, supermarket products and worker income, market-central sales and billing, bank credit requests, and an email client. The principal observable workflow is the email client connecting to a server, receiving messages into its inbox, and sending composed messages. Other assignment workflows are represented only where sampled source supports their relationships; the README provides no further behavioral detail.

Main entry points: [`tp6_Solid/src/clienteEmail/ClienteEMail.java`](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/ClienteEMail.java) (Email client), [`tp6_Solid/src/clienteEmail/IEmailServidor.java`](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/IEmailServidor.java) (Email server interface), [`tp6_Solid/src/banco/SolicitudCredito.java`](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCredito.java) (Credit request), [`tp5/mercado_central/src/mercado_central/Producto.java`](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Producto.java) (Product)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_payroll["Company payroll"]
  node_employee["Employee<br/>[Empleado.java]"]
  node_permanent["Permanent employee"]
  node_temporary["Temporary employee"]
  node_company["Company<br/>[Empresa.java]"]
end

subgraph group_supermarket["Supermarket"]
  node_shop["Supermarket<br/>[Supermercado.java]"]
  node_shop_product["Product<br/>[Producto.java]"]
  node_essential["Essential product"]
  node_worker["Worker<br/>[Trabajador.java]"]
  node_income["Income<br/>[Ingreso.java]"]
  node_overtime["Overtime income"]
end

subgraph group_market["Market central"]
  node_registerable["Registerable<br/>[Registrable.java]"]
  node_market_product["Product<br/>[Producto.java]"]
  node_cooperative["Cooperative product"]
  node_invoice["Invoice<br/>[Factura.java]"]
  node_service["Service<br/>[Servicio.java]"]
  node_agency["Collection agency"]
  node_cashbox["Cashbox<br/>[Caja.java]"]
  node_tax["Tax<br/>[Impuesto.java]"]
end

subgraph group_bank["Bank credit"]
  node_bank["Bank<br/>[Banco.java]"]
  node_customer["Customer<br/>[Cliente.java]"]
  node_property["Property<br/>[Propiedad.java]"]
  node_credit["Credit request"]
  node_mortgage["Mortgage request"]
  node_personal["Personal request"]
end

subgraph group_email["Email client"]
  node_email_client["Email client<br/>[ClienteEMail.java]"]
  node_email_interface["Email server interface"]
  node_pop["POP server<br/>[ServidorPop.java]"]
  node_mail["Email message<br/>[Correo.java]"]
end

node_user(("Email user"))

node_permanent -->|"extends"| node_employee
node_temporary -->|"extends"| node_employee
node_shop -->|"stores"| node_shop_product
node_worker -->|"totals"| node_income
node_overtime -->|"extends"| node_income
node_market_product -->|"implements"| node_registerable
node_cooperative -->|"extends"| node_market_product
node_service -->|"extends"| node_invoice
node_invoice -->|"uses"| node_agency
node_mortgage -->|"extends"| node_credit
node_personal -->|"extends"| node_credit
node_credit -->|"holds"| node_customer
node_user -->|"uses"| node_email_client
node_email_client -->|"calls"| node_email_interface
node_pop -->|"implements"| node_email_interface
node_email_client -->|"creates"| node_mail
node_email_client -->|"stores"| node_mail
node_email_client -->|"receives"| node_email_interface
node_email_interface -->|"returns messages"| node_email_client
node_email_client -->|"sends"| node_email_interface

click node_employee "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/Empleado.java"
click node_permanent "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/EmpleadoPermanente.java"
click node_temporary "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/EmpleadoTemporario.java"
click node_company "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/Empresa.java"
click node_shop "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/supermercado/Supermercado.java"
click node_shop_product "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/supermercado/Producto.java"
click node_essential "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/supermercado/ProductoPrimeraNecesidad.java"
click node_worker "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/trabajador/Trabajador.java"
click node_income "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/trabajador/Ingreso.java"
click node_overtime "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/trabajador/IngresoPorHsExtras.java"
click node_registerable "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Registrable.java"
click node_market_product "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Producto.java"
click node_cooperative "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/ProductoCooperativa.java"
click node_invoice "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Factura.java"
click node_service "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Servicio.java"
click node_agency "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/AgenciaRecaudadora.java"
click node_cashbox "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Caja.java"
click node_tax "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Impuesto.java"
click node_bank "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/Banco.java"
click node_customer "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/Cliente.java"
click node_property "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/Propiedad.java"
click node_credit "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCredito.java"
click node_mortgage "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCreditoHipotecario.java"
click node_personal "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCreditoPersonal.java"
click node_email_client "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/ClienteEMail.java"
click node_email_interface "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/IEmailServidor.java"
click node_pop "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/ServidorPop.java"
click node_mail "https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/Correo.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_employee,node_permanent,node_temporary,node_company,node_user toneBlue
class node_shop,node_shop_product,node_essential,node_worker,node_income,node_overtime toneAmber
class node_registerable,node_market_product,node_cooperative,node_invoice,node_service,node_agency,node_cashbox,node_tax toneMint
class node_bank,node_customer,node_property,node_credit,node_mortgage,node_personal toneRose
class node_email_client,node_email_interface,node_pop,node_mail toneIndigo
```

## Components

### Company payroll

- [Employee](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/Empleado.java): `tp2/src/empresa/Empleado.java`
- [Permanent employee](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/EmpleadoPermanente.java): `tp2/src/empresa/EmpleadoPermanente.java`
- [Temporary employee](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/EmpleadoTemporario.java): `tp2/src/empresa/EmpleadoTemporario.java`
- [Company](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp2/src/empresa/Empresa.java): `tp2/src/empresa/Empresa.java`

### Supermarket

- [Supermarket](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/supermercado/Supermercado.java): `tp4/src/supermercado/Supermercado.java`
- [Product](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/supermercado/Producto.java): `tp4/src/supermercado/Producto.java`
- [Essential product](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/supermercado/ProductoPrimeraNecesidad.java): `tp4/src/supermercado/ProductoPrimeraNecesidad.java`
- [Worker](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/trabajador/Trabajador.java): `tp4/src/trabajador/Trabajador.java`
- [Income](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/trabajador/Ingreso.java): `tp4/src/trabajador/Ingreso.java`
- [Overtime income](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp4/src/trabajador/IngresoPorHsExtras.java): `tp4/src/trabajador/IngresoPorHsExtras.java`

### Market central

- [Registerable](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Registrable.java): `tp5/mercado_central/src/mercado_central/Registrable.java`
- [Product](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Producto.java): `tp5/mercado_central/src/mercado_central/Producto.java`
- [Cooperative product](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/ProductoCooperativa.java): `tp5/mercado_central/src/mercado_central/ProductoCooperativa.java`
- [Invoice](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Factura.java): `tp5/mercado_central/src/mercado_central/Factura.java`
- [Service](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Servicio.java): `tp5/mercado_central/src/mercado_central/Servicio.java`
- [Collection agency](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/AgenciaRecaudadora.java): `tp5/mercado_central/src/mercado_central/AgenciaRecaudadora.java`
- [Cashbox](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Caja.java): `tp5/mercado_central/src/mercado_central/Caja.java`
- [Tax](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp5/mercado_central/src/mercado_central/Impuesto.java): `tp5/mercado_central/src/mercado_central/Impuesto.java`

### Bank credit

- [Bank](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/Banco.java): `tp6_Solid/src/banco/Banco.java`
- [Customer](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/Cliente.java): `tp6_Solid/src/banco/Cliente.java`
- [Property](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/Propiedad.java): `tp6_Solid/src/banco/Propiedad.java`
- [Credit request](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCredito.java): `tp6_Solid/src/banco/SolicitudCredito.java`
- [Mortgage request](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCreditoHipotecario.java): `tp6_Solid/src/banco/SolicitudCreditoHipotecario.java`
- [Personal request](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/banco/SolicitudCreditoPersonal.java): `tp6_Solid/src/banco/SolicitudCreditoPersonal.java`

### Email client

- [Email client](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/ClienteEMail.java): `tp6_Solid/src/clienteEmail/ClienteEMail.java`
- [Email server interface](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/IEmailServidor.java): `tp6_Solid/src/clienteEmail/IEmailServidor.java`
- [POP server](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/ServidorPop.java): `tp6_Solid/src/clienteEmail/ServidorPop.java`
- [Email message](https://github.com/azuperalta/unqui-poo2-peralta/blob/main/tp6_Solid/src/clienteEmail/Correo.java): `tp6_Solid/src/clienteEmail/Correo.java`

### Other components

- **Email user**

## Connections

- Permanent employee → Employee: extends
- Temporary employee → Employee: extends
- Supermarket → Product: stores
- Worker → Income: totals
- Overtime income → Income: extends
- Product → Registerable: implements
- Cooperative product → Product: extends
- Service → Invoice: extends
- Invoice → Collection agency: uses
- Mortgage request → Credit request: extends
- Personal request → Credit request: extends
- Credit request → Customer: holds
- Email user → Email client: uses
- Email client → Email server interface: calls
- POP server → Email server interface: implements
- Email client → Email message: creates
- Email client → Email message: stores
- Email client → Email server interface: receives
- Email server interface → Email client: returns messages
- Email client → Email server interface: sends
