Noções Básicas de Modelagem Alexandre Parra http://www.joinville.udesc.br/portal/professores/parra/ O que são Modelos? Modelos são representações simplificadas de domínios do mundo real. Por exemplo: objetos, pessoas, itens, tarefas, processos, conceitos, idéias, etc. Usados comumente por pessoas no seu dia-a-dia, independente do uso de computadores. Exemplo de Modelagem Consideremos o Restaurante Caseiro Hipotético (RCH). Características: Serve pratos, cujo gerente, fica na balança e no caixa anotando os pratos solicitados pelos clientes de cada mesa e demais pedidos que os garçons trazem em um “quadro-branco” de comandas para o gerente. Pergunta: Como modelar este restaurante ? Resp: Depende do objetivo. Exemplo do Modelo do RCH Restaurante Caseiro Hipotético Mesa 1 Mesa 2 Mesa 3 Prato 1 Prato 2 . . . Prato n Prato 1 Prato 2 . . . Prato n Prato 1 Prato 2 . . . Prato n refrigerante 2 L cerveja wisky ... refrigerante 2 L cerveja wisky ... refrigerante 2 L cerveja wisky ... Mesa 4 Mesa 5 Mesa 6 Prato 1 Prato 2 . . . Prato n Prato 1 Prato 2 . . . Prato n Prato 1 Prato 2 . . . Prato n refrigerante 2 L cerveja wisky ... refrigerante 2 L cerveja wisky ... refrigerante 2 L cerveja wisky ... Modelo expressando o Restaurante Caseiro Hipotético Atributos em Modelos O modelo (atributos). do RCH representa certos dados Estes atributos são relevantes para o domínio a ser representado (abstração do domínio). Este modelo preocupa-se com a marcação dos pedidos e cálculo da conta das mesas do restaurante. Atributos: endereço, data de inauguração, tamanho do restaurante entre outros são irrelevantes. Operações sobre Modelos Um modelo comumente contém (procedimentos) associados a ele. operações Estas operações são grupos de comandos que processarão os valores referentes aos atributos contidos no próprio modelo (e em alguns casos, valores adicionais). Pergunta: Quais operações são necessárias no modelo do RCH ? Resp: 1) Inclusão de pedidos para uma mesa; 2) a modificação do status da mesa (servida ou não); 3) encerramento dos pedidos de uma mesa etc... Características gerais dos modelos Alguns modelos podem possuir somente dados ou operações. Modelos que tem somente dados são pouco usados (normalmente os valores devem ser modificados) pag. Modelos que tem somente operações podem ser consideradas bibliotecas. (exemplo: grupos de funções matemáticas, processamento de imagens, etc). Modelos dentro de modelos Modelos podem conter sub-modelos (especialização) e além disso serem parte de (agregação) outros modelos. Exemplo de modelos dentro de modelos: Agregação: Um modelo de Automóvel é composto por diversos elementos que podem também ser modelos. Por exemplo: modelo motor, rodas, etc. Especialização: O modelo do RCH poderia então conter vários exemplares do modelo MesaDoRestaurante que representariam diferentes mesas do restaurante. Simplificação de modelos baseado no Contexto A simplificação dos modelos é em muitos casos necessária. Dependendo do contexto algumas devem ser ocultadas ou ignoradas. informações Exemplo: Modelagem de informações sobre uma pessoa em três cenários distintos: Diferentes Contextos para Pessoa Pessoa como Empregado de Empresa: para fins de processamento de FP seria necessário: (1/2) Atributos: nome, cargo, salario, horasExtrasTrabalhadas. Operações: calculaSalario e aumentaSalario. Pessoa como Paciente de uma Clínica Médica: Atributos: nome, sexo, idade, altura, peso, historico, etc. Operações: verificaObesidade (dados: altura, sexo e peso) e AdicionaInformacaoAoHistorico. Diferentes Contextos para Pessoa (2/2) Pessoa como Contato Comercial: Atributos: nome, telefone, cargo e empresa da pessoa em questão. Operações: mostraTelefone e trabalhaEmEmpresa Considerações sobre diferentes contextos (1/2) Atributos e operações que podem ser úteis para um modelo de representação podem ser irrelevantes para outros. Exemplos: Não faria sentido representar o salário de uma pessoa no BD de pacientes de uma clínica. Representar a operação verificaObesidade de uma pessoa que não seja paciente de uma clínica. Considerações sobre diferentes contextos (2/2) Apesar dos modelos representarem pessoas de forma genérica, é difícil, senão impossível de elaborar um “super-modelo”. Um super-modelo serve para representar todos os atributos e operações relativos a uma pessoa (independente de contexto). Exemplo: Formas Geométricas (quadrado, retângulo e triângulo). Reutilização de modelos Modelos podem ser reutilizados representar diferentes modelos. para Exemplo: o mesmo modelo Paciente do modelo Hospital poderia ser utilizado para representar pacientes de uma Clínica. Portanto, não é preciso a criação de um modelo (do nada) para cada domínio do mundo real a ser modelado. Conclusão A criação e uso de modelos é uma tarefa natural. A elaboração de modelos para representar entidades do mundo real pode ser considerada uma arte. A extensão desta abordagem (modelos) à programação deu origem ao paradigma Programação Orientada à Objetos (POO). Estudo de caso 1 Modelar uma lâmpada incandescente Pergunta: Quais os atributos possíveis presentes na modelagem de uma lâmpada? Pergunta: Quais as operações possíveis presentes na modelagem de uma lâmpada? Como representar o modelo !? Diagrama do modelo Lâmpada nome do modelo atributos do modelo Lampada - estado operações do modelo - acende() - apaga() - mostraEstado() Diagrama expressando o modelo da Lâmpada Pseudo-Código do modelo Lâmpada Lampada - estado - acende() - apaga() - mostraEstado() 1 modelo Lampada // representa uma lâmpada em uso 2 inicio do modelo 3 4 dado estado; // indica se esta ligada ou não 5 6 operacao acende() // acende a lâmpada 7 inicio 8 estado = aceso; // acende a lâmpada 9 fim 10 11 operacao apaga() // apaga a lâmpada 12 inicio 13 estado = apagado; // apaga a lâmpada 14 fim 15 16 operacao mostraEsdado() // mostra o estado da lâmpada 17 inicio 18 se (estado == aceso) 19 imprime “A lâmpada está acesa.”; 20 senão 21 imprime “A lâmpada está apagada.”; 22 fim 23 24 fim do modelo Listagem mostrando como o modelo Lampada pode ser descrito em pseudo-código Estudo de caso 2 Modelar uma conta bancária simplificada. Características do modelo: Atributos: Operações: nome do correntista; saldo da conta; Se a conta é especial ou não (pode ficar com saldo negativo). Abrir conta (indicando nome, valor do deposito e conta é especial); Abrir conta simples (indicando nome); Depositar (indicando valor do deposito); Retirar (indicando o valor da retirada); mostrarSaldo (imprimir nome e saldo da conta). Não presentes (senhas, taxas, impostos, etc) em nome da simplicidade. Diagrama do modelo ContaBancaria ContaBancaria - nomeDoCorrentista - saldo - contaEspecial - abreConta(nome,deposito,ehEspecial) - abreContaSimples(nome) - deposita(valor) - retira(valor) - mostraDados() Diagrama expressando o modelo da ContaBancaria Exercícios Fazer os exercícios propostos no arquivo “exercicios_modelagem.doc” que se encontra em http://www.joinville.udesc.br/portal/professores/parr a/ no link “Materiais” da disciplina LPG-II. Para realizá-los é importante ler o capítulo 1 do material disponível na URL acima. O material encontra-se no arquivo “introducao_POO_usando_Java.pdf”.