Created
September 14, 2018 20:12
-
-
Save zoiosilva/c11203618db8d3c6c4b1e4d4377c56ea to your computer and use it in GitHub Desktop.
Esqueminha rápido de entidades para uma locadora
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Video: implements {EntidadeBase} | |
string Título; | |
string Subtitulo; | |
{Idioma}[] IdiomasDeAudio: //pt-BR; en-US;, etc. | |
{Idioma}[] IdiomasDeLegenda: //pt-BR; en-US;, etc. | |
string[] Conteúdo: | |
Drama; | |
Comédia; | |
Adulto; | |
Pornochanchada; | |
Desenho oriental; | |
Desenho ocidental; | |
Documentário; | |
Terror; | |
etc. | |
{Midia} Mídia; //DVD, BLU-RAY, etc. | |
string Diretor; | |
string Produtora; | |
string Duração; | |
string Código de barras; | |
etc. | |
class Exemplar: implements {EntidadeBase} | |
{Video} Material; | |
string Tombo; //Número de referência interna. Normalmente é impresso em um papelzinho e colado no exemplar. | |
DateTime DataAquisição; | |
bool Bloqueado; //pode ser emprestado, ou não. | |
bool Emprestado; //este campo pode ser calculado ao invés de persistido. | |
DateTime? DataBaixa; //Quando o exemplar foi perdido, roubado, etc. | |
decimal Custo; | |
decimal ValorPersonalizadoDoEmprestimo; | |
class Cliente: implements {EntidadeBase} | |
string Nome; | |
string Cpf; // Para emissão de NFS-e | |
{Endereço} Endereço; | |
{Telefone} Telefone; | |
bool Ativo; | |
DateTime? DataBaixa; | |
class Reserva: implements {EntidadeBase} | |
{Cliente} Cliente; | |
{Video} Material; | |
DateTime Data; | |
bool ativa; | |
{Empréstimo} Empréstimo; | |
class Empréstimo: implements {EntidadeBase} | |
{Cliente} Cliente; | |
{Exemplar} Exemplar; | |
DateTime Data; | |
int Prazo; //em dias | |
DateTime? DataDevolucao; | |
bool Extraviado; | |
class Midia: extends {ItemSimples} implements {EntidadeBase} | |
class Idioma: extends {ItemSimples} implements {EntidadeBase} | |
abstract class ItemSimples: | |
string Codigo; | |
string Descricao; | |
interface EntidadeBase: | |
ulong Id; | |
DateTime DataCriacao; | |
DateTime DataAlteracao; | |
Algumas explicações: | |
* Fiz bem corrido, usando o estilo de entidades para mapear as classes. Usando entidades (entity framework, Hibernate, nHibernate, etc), você pode herdar os campos Id da entidadeBase; | |
* EntidadeBase é uma interface, porque ela pode implementar as entidades do framework que você estiver usando, ou um Mock para seus testes de unidade. | |
* Quando tem um '?' após o tipo, quero dizer que é um campo núlável (nullable). Pode ter ou não algum valor. | |
* Não estou colocando aqui classes relacionado às multas e cálculo de prazos. Fiz um esquema bem simples. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment