A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Exemplo dos Internamentos

Apresentações semelhantes


Apresentação em tema: "Exemplo dos Internamentos"— Transcrição da apresentação:

1 Exemplo dos Internamentos
Considere o seguinte esquema de uma BD de um hospital. O hospital organiza-se em serviços, cada qual com a designação da respectiva especialidade e o número de camas onde pode internar doentes. Os doentes são pessoas adicionalmente descritas pelo organismo de segurança social e respectivo número. Relativamente a cada internamento, regista-se o momento de entrada no serviço, o motivo, o respectivo momento de alta, o estado à saída e o médico responsável; uma transferência de serviço corresponde a uma alta do primeiro em simultâneo com um novo internamento no segundo. Os funcionários são pessoas com um vencimento e o serviço a que estão adstritos. Os médicos são funcionários com uma especialidade e os enfermeiros são também funcionários com uma categoria e que pertencem a uma equipa. Obtenha o modelo de objectos (em ODL) da situação descrita.

2 Resolução Equipa

3 Algumas classes interface Servico { attribute string designacao;
attribute int camas; relationship Set<Funcionario> pessoal inverse Funcionario::serviço; relationship Set<Internamento> internados } a associação pessoal tem uma inversa na classe de Funcionarios chamada serviço de forma a garantir a consistência da sua representação em ambas as classes, i.e., que se um funcionário indica a pertença a um serviço, então esse serviço tem que o referir como parte do seu pessoal (idem para Internamento::internado) interface Internamento { relationship Doente internado inverse Doente::internamentos; attribute date entrada; attribute date alta; attribute string motivo; attribute string estado; relationship Servico servico; relationship Medico medico; } a associação Serviço::internados não tem inversa; no conjunto só se incluem os internamentos correntes; do lado dos internamentos, mantém-se o registo completo, incluindo o histórico, dos internamentos, pelo que há referências a objectos serviço sem que nestes existam as correspondentes ligações a internamentos (apagadas quando o doente teve alta)

4 Modelo Objecto Modelo Objecto ODMG objecto: primitiva base
tipo: definição das propriedades e comportamento comuns a um conjunto de objectos propriedades: estado (atributos ou associações) operações: comportamento herança: hierarquias de generalização

5 Métodos BDOO: integração linguagem de dados e linguagem hospedeira
ODL suporta definição de assinaturas de métodos implementação na linguagem hospedeira (Smalltalk, C++, Java); na interface fica só a assinatura, i.e., nomes e tipos dos parâmetros e da função ligação forte entre ODL e a linguagem hospedeira, com tradução directa e acesso às mesmas variáveis OQL define as interrogações mais baseadas em conjuntos (“relacionais”) e os métodos são mais virados para o objecto individual métodos sempre definidos numa classe e executados relativamente a um objecto dessa classe que funciona como parâmetro implícito métodos podem ser vistos como atributos especiais Métodos estilo declaração de função C++ (suporta polimorfismo) parâmetros são declarados in (entrada), out (saída) ou inout (entrada-saída) -- dois últimos passados por referência levantamento de excepções, para tratamento de situações anormais ou inesperadas que são tratadas pelo chamador fora da sequência normal de chamada resposta

6 Exemplo de declaração de métodos
interface Filme (extent Filmes key (titulo, ano)) { attribute string titulo; attribute integer ano; attribute integer comprimento; attribute enum Filme {cor, pretoBranco} tipoFilme; relationship Set<Estrela> estrelas inverse Estrela::filmes; relationship Estudio proprietario inverse Estudio::possui; float comprimentoHoras() raises(semDuracao); nomesActores( out Set<string> ); outrosFilmes( in string, out Set<Filme> ) raises (estrelaInexistente); }; a declaração extent nomeia o conjunto de instâncias da classe existentes no momento - funciona como uma relação as perguntas em OQL referem-se à extensão e não ao nome da classe

7 Estender LPOO com capacidades BD
Extensões à linguagem: OPAL é uma extensão do Smalltalk com classes e primitivas de gestão de BD colecções com restrições para armazenar grandes quantidades de dados blocos de selecção especiais com capacidade para usar índices, onde os haja Fornecimento de bibliotecas de gestão de BD para uso de linguagem standard (C++) Ontos, Objectivity, Object Store usa compiladores standard distinção entre preprocessamento e uso de bibliotecas é ténue Objectivos: eliminar a impedância entre as linguagens especializadas de BD e as de uso geral reduzir o abismo semântico para a especificação do problema Resultado ainda é mais navegacional e menos declarativo do que o modelo relacional forneceu


Carregar ppt "Exemplo dos Internamentos"

Apresentações semelhantes


Anúncios Google