TIPOS DE RELACIONAMENTOS GENÉRICOS 4 tipos 1. TR: ÉParteDe (parte:Entidade, todo:Entidade) 2. TR: ÉMembroDe (integrante:Entidade, Grupo:Entidade) 3. TR: Materializa (instancia:Entidade, especificação:Entidade) 4. TR: É PapelDe(ator:Entidade, produção:Entidade) Exemplo • Seja o TR Genérico ÉParteDe (parte:Entidade, todo:Entidade) com as seguintes três realizações: – {parte: Capítulo, todo:Livro} – {parte: Parágrafo, todo: Capítulo} – {parte: Exercício, todo: Capítulo} • A representação no esquema conceitual: – CapítuloDeLivro (parte: Capítulo, todo: Livro) – ParágrafoDeCapítulo (parte: Parágrafo, todo: Capítulo) – ExercícioDeCapítulo (parte: Exercício, todo: Capítulo) Representação em UML • O TR ÉparteDe é marcado por um losango na extremidade do TE todo • A UML diferencia entre duas variantes do TR ÉparteDe: agregação (losango transparente) e composição (losango opaco) • Os outros tipos de relacionamento podem ser marcados pelo mecanismo de estereótipo 1-Parte - Todo • ÉParteDe (parte:Entidade, todo:Entidade) • ÉParteDe (p, t) – p é parte de t. • O monitor é parte do computador. – t é um composto formado por p. • O computador tem (inclui) um monitor. • Relacionamentos parte-todo definem a estrutura parte – todo dos objetos do domínio. • Dicionários definem conceitos por suas partes ou pelos todos dos quais eles são parte Propriedades • Anti-simétrica – Se p é parte de t, t não pode ser parte de p. • Transitiva – Se p é parte de t e t parte de t2 então p é parte de t2 • No entanto – O braço do maestro é parte do maestro. – O maestro é parte da orquestra. – O braço do maestro é parte da orquestra ? Representação em UML 1 Cidade 1 Serviço Urbano Serviço Interurbano 1 0,,1 1..* 1..* 0,,1 * Linha de Ônibus 1..* 1..* Parada 1..* início 1 1..* 1..* 1 fim 1..* Segmento • Agregação: o todo é a “soma” de suas partes. • Uma linha de ônibus consiste em um conjunto de Paradas e um conjunto de Segmentos. Paradas e segmentos podem ser parte de várias linhas de ônibus. Uma parada é parte de uma cidade Representação em UML 1 Cidade 1 Serviço Urbano Serviço Interurbano 1 0,,1 1..* 1..* 0,,1 * Linha de Ônibus 1..* 1..* Parada 1..* início 1 1..* 1..* 1 fim 1..* Segmento • Composição: é uma agregação mais forte; requer que a parte seja parte de no máximo um todo a cada tempo. A cardinalidade do papel todo tem de ser 0..1 ou 1 • Uma linha de ônibus é parte de um serviço urbano ou interurbano. O serviço urbano é parte de uma cidade Aggregation Aggregation is a kind of association that specifies a whole/part relationship between the aggregate (whole) and component part. This relationship between the aggregate and component is a weak “has a” relationship as the component may survive the aggregate object. The component object may be accessed through other objects without going through the aggregate object. The aggregate object does not take part in the lifecycle of the component object, meaning the component object may outlive the aggregate object. The state of the component object still forms part of the aggregate object. An example of aggregation is a History-Class object contains zero or more of Student objects. The state of each Student object has an influence on the state of the HistoryClass object. If the History-Class object is destroyed, the Student objects may continue to exist. Composition Composition is a kind of association very similar to aggregation except where the composite object has sole responsibility for the disposition of the component parts. The relationship between the composite and the component is a strong “has a” relationship, as the composite object takes ownership of the component. This means the composite is responsible for the creation and destruction of the component parts. An object may only be part of one composite. If the composite object is destroyed, all the component parts must be destroyed, or the reference and responsibility of the component part must be handed over to another object. Composition enforces encapsulation as the component parts usually are members of the composite object An example of composition is a House object contains zero or more Room objects. The state of each Room object has an influence on the House object. If the House object is destroyed, the Room objects will also be destroyed. Compartilhamento de Partes • partes (compartilhadas) por vários todos • Tipos – Local: leva em conta apenas uma realização – Global: leva em conta todas as realizações. • Seja R(parte:P,todo:T) um TR correspondente a uma realização ÉParteDe – P é localmente exclusivo em R se as instâncias de P podem ser partes de apenas uma instância de T, ou seja, Cmax (parte, todo, R) = 1. – P é localmente compartilhado, caso contrário, ou seja, Cmax (parte, todo, R) ≥ 1. Compartilhamento de Partes 1 Cidade 1 Serviço Urbano Serviço Interurbano 1 0,,1 1..* 1..* 0,,1 * Linha de Ônibus 1..* 1..* Parada 1..* início 1 1..* 1..* 1 fim 1..* Segmento • As partes são localmente exclusivas em 4 das realizações e localmente compartilhadas em 2 Compartilhamento de Partes 1 Cidade 1 Serviço Urbano Serviço Interurbano 1 0,,1 1..* 1..* 0,,1 * Linha de Ônibus 1..* 1..* Parada 1..* início 1 1..* 1..* 1 fim 1..* Segmento • Linha de ônibus e Serviço Urbano são globalmente exclusivos. Linha de ônibus pode ser parte do Serviço Urbano ou do Serviço Suburbano, mas não de ambos. Parada e Segmento são globalmente compartilhadas Dependência de Parte 1 Cidade 1 Serviço Urbano Serviço Interurbano 1 0,,1 1..* 1..* 0,,1 * Linha de Ônibus 1..* 1..* Parada 1..* início 1 1..* 1..* 1 fim 1..* Segmento • As partes são localmente dependentes em 4 das realizações e localmente independentes em 2 Dependência de Parte • Seja P um TE, num dado esquema, parte de uma ou mais realizações ÉParteDe. – P é globalmente dependente neste esquema se as instâncias de P são partes em pelo menos uma dessas realizações – P é globalmente independente, caso contrário. Dependência de Parte 1 Cidade 1 Serviço Urbano Serviço Interurbano 1 0,,1 1..* 1..* 0,,1 * Linha de Ônibus 1..* 1..* Parada 1..* início 1 1..* 1..* 1 fim 1..* Segmento • Linha de ônibus, Parada, Segmento e Serviço Urbano são globalmente dependentes. Linha de ônibus é globalmente dependente porque suas instâncias tem de ser parte de uma instância de Serviço Urbano ou de Serviço Suburbano 2-Agrupamento • ÉMembroDe (membro:Entidade; grupo:Entidade) • ÉMembroDe (m, g) – m é um membro de g, ou • Uma pessoa é um membro de um clube. – g é uma coleção que inclui m. • Um time inclui um jogador • Diferentemente de ÉparteDe – membros desempenham a mesma função (?) – membros são independentes dos grupos (existência) – membros são compartilhados por grupos Propriedades • Anti-simétrica – Se m é um membro de g então g não pode ser um membro de m • Não transitiva – Uma pessoa é membro de um partido político. – O partido político é membro da Frente Ampla. – A pessoa é membro da Frente Ampla. (?) Representação em UML Técnico 1 «ÉMembroDe» * ◄ «ÉMembroDe» * Escola 1 * Time de Esporte * Aluno * Turma 1 * ◄ «ÉMembroDe» • Um aluno é membro de uma Turma e pode ser membro de vários times de esporte; um técnico pode ser membro de vários times de esporte. Homogeneidade • Um TE G é um grupo homogêneo se G desempenha o papel grupo em uma ou mais realizações onde o papel membro é desempenhado por apenas um TE M. • Caso contrário, G é heterogêneo. Homogeneidade Técnico 1 «ÉMembroDe» * ◄ «ÉMembroDe» * Escola 1 * Time de Esporte * Aluno * Turma 1 * ◄ «ÉMembroDe» • Turma é um grupo homogêneo; Time de Esporte é um grupo heterogêneo. 3-Papéis • ÉPapelDe é anti-simétrica – se er é um papel de e, e não pode ser um papel de er • ÉPapelDe é (considerada ser) transitiva: – um alunoDeGraduação é um papel de Pessoa • uma instância de um tipo papel é o papel de um e apenas um player • uma instância de um tipo player pode desempenhar vários papéis: – card (papel; player; ÉPapelDe) = (1,1) – card (player; papel; ;EPapelDe) = (0,∞) Pessoa email: String Participante Registrado email: String 1 * 1 1 ÉPapelDe 1 Conferência 1 ◄ 0..1 Participante * 1 ◄ ◄ ÉPapelDe ◄ ÉPapelDe ÉPapelDe 0..1 Organizador email: String 0..1 Membro da CP 1 ÉMembroDe * 1 Comissão de Programa ◄ 1 ÉPapelDe 0..1 Presente /email: String • Uma instância de participante corresponde ao papel desempenhado por uma pessoa na conferência • Uma pessoa pode participar de várias conferências • Ser um organizador é uma forma de participar, portanto, organizador é um papel de Participante • Quando os papéis são representados como representantes eles não herdam os atributos 4-Materialização • Materializa (materialização: Entity, modelo: Entity) • Ex. de realização: – {materialização: Carro, modelo: ModeloDoCarro} • a entidade modelo é um modelo, tipo, visão abstrata, especificação da entidade materialização Materialização • Materializa (materialização: Entity, modelo: Entity) • Ex. de realização: – {materialização: Carro, modelo: ModeloDoCarro} • a entidade modelo é um modelo, tipo, visão abstrata, especificação (conjuntos de atributos e restrições comuns) da entidade materialização • outras realizações – – – – – produção – peça performance – produção assento – tipo de assento exemplar – livro instância de vôo – vôo Propriedades • Materializa é anti-simétrica – se mat é uma materialização de mod, então mod não pode ser uma materialização de mat • Materializa é (considerada ser) transitiva – se performance materializa produção e produção materializa uma peça então performance materializa uma peça • Uma instância do TE materialização é a materialização de uma e apenas uma instância do TE modelo • Uma instância do TE modelo pode ser materializado em várias instâncias do TE materialização: – Card (materialização, modelo, Materializa) = (1, 1) – Card (modelo, materialização, Materializa) = (0, ∞) Peças título:String autor:String ◄Materializa 1 Produção /título:String * início:Data término:Data EncenadaEm Teatro 1 * 1 ◄ 1 Materializa * Performance data:Data 1 Reserva * numAssentos: * Natural Tipo de Assento 1 preço:Dinheiro 1 1 ◄ Materializa * • Uma produção materializa uma peça. • Uma performance materializa uma produção • Uma produção é encenada no teatro. • Um teatro classifica seus assentos em tipos. • Um assento materializa um tipo de assento • Uma reserva solicita um número de assentos de um dado tipo para uma particular performance Alocação * 1 * Assento /preço:Dinheiro numAssento: Natural Peças título:String autor:String ◄Materializa 1 Produção /título:String * início:Data término:Data EncenadaEm Teatro 1 * 1 ◄ 1 Materializa * Performance data:Data 1 Reserva * numAssentos: * Natural Tipo de Assento 1 preço:Dinheiro 1 1 ◄ Materializa •Entidades materialização herdam atributos, associações e restrições de seus modelos •Em UML podemos definir atributos e associações herdados como derivados •Os atributos e associações da entidade materialização podem ser restritos pelos atributos e associações do modelo * Alocação * 1 * Assento /preço:Dinheiro numAssento: Natural