daily pastebin goal
47%
SHARE
TWEET

Untitled

a guest Sep 14th, 2018 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Video: implements {EntidadeBase}
  2.     string Título;
  3.     string Subtitulo;
  4.     {Idioma}[] IdiomasDeAudio: //pt-BR; en-US;, etc.
  5.     {Idioma}[] IdiomasDeLegenda: //pt-BR; en-US;, etc.
  6.     string[] Conteúdo:
  7.         Drama;
  8.         Comédia;
  9.         Adulto;
  10.         Pornochanchada;
  11.         Desenho oriental;
  12.         Desenho ocidental;
  13.         Documentário;
  14.         Terror;
  15.         etc.
  16.     {Midia} Mídia; //DVD, BLU-RAY, etc.
  17.     string Diretor;
  18.     string Produtora;
  19.     string Duração;
  20.     string Código de barras;
  21.     etc.
  22.  
  23. class Exemplar: implements {EntidadeBase}
  24.     {Video} Material;
  25.     string Tombo; //Número de referência interna. Normalmente é impresso em um papelzinho e colado no exemplar.
  26.     DateTime DataAquisição;
  27.     bool Bloqueado; //pode ser emprestado, ou não.
  28.     bool Emprestado; //este campo pode ser calculado ao invés de persistido.
  29.     DateTime? DataBaixa; //Quando o exemplar foi perdido, roubado, etc.
  30.     decimal Custo;
  31.     decimal ValorPersonalizadoDoEmprestimo;
  32.  
  33. class Cliente: implements {EntidadeBase}
  34.     string Nome;
  35.     string Cpf; // Para emissão de NFS-e
  36.     {Endereço} Endereço;
  37.     {Telefone} Telefone;
  38.     bool Ativo;
  39.     DateTime? DataBaixa;
  40.  
  41. class Reserva: implements {EntidadeBase}
  42.     {Cliente} Cliente;
  43.     {Video} Material;
  44.     DateTime Data;
  45.     bool ativa;
  46.     {Empréstimo} Empréstimo;
  47.  
  48. class Empréstimo: implements {EntidadeBase}
  49.     {Cliente} Cliente;
  50.     {Exemplar} Exemplar;
  51.     DateTime Data;
  52.     int Prazo; //em dias
  53.     DateTime? DataDevolucao;
  54.     bool Extraviado;
  55.  
  56. class Midia: extends {ItemSimples} implements {EntidadeBase}
  57. class Idioma: extends {ItemSimples} implements {EntidadeBase}
  58.  
  59. abstract class ItemSimples:
  60.     string Codigo;
  61.     string Descricao;
  62.  
  63. interface EntidadeBase:
  64.     ulong Id;
  65.     DateTime DataCriacao;
  66.     DateTime DataAlteracao;
  67.  
  68. Algumas explicações:
  69. * 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;
  70. * EntidadeBase é uma interface, porque ela pode implementar as entidades do framework que você estiver usando, ou um Mock para seus testes de unidade.
  71. * Quando tem um '?' após o tipo, quero dizer que é um campo núlável (nullable). Pode ter ou não algum valor.
  72. * Não estou colocando aqui classes relacionado às multas e cálculo de prazos. Fiz um esquema bem simples.
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top