• Nenhum resultado encontrado

UML Diagrama de Classes [Pt Br]

N/A
N/A
Protected

Academic year: 2019

Share "UML Diagrama de Classes [Pt Br]"

Copied!
64
0
0

Texto

(1)

Business Informatics Group

Institute of Software Technology and Interactive Systems

Object-Oriented Modeling

(2)

© BIG / TU Wien

Literature

UML @ Classroom:

An Introduction to Object-Oriented Modeling

Martina Seidl, Marion Scholz, Christian Huemer and Gerti Kappel

Springer Publishing, 2015

ISBN 3319127411

§

The lecture is based on the following book:

§ Use Case Diagram

§ Structure Modeling

§ State Machine Diagram

§ Sequence Diagram

§ Activity Diagram

(3)

Conteúdo

§

Objetos

§

Classes

§

Atributos

§

Operações

§

Relacionamentos

§

Associação Binária

§

Associação N-ária

§

Classe de Associação

§

Agregação

§

Generalização

§

Creando um diagrama de classes

(4)

© BIG / TU Wien

Objeto

§

Indivíduos de um sistema

§

Notações alternativas:

Nome do objeto Classe

Atributo Valor atual Objetos anônimos= não tem nome

(5)

Diagrama de Objetos

§

Objetos de um sistema e seus relacionamentos (links)

§

Instantâneo de um objeto em um momento específico do tempo

(6)

© BIG / TU Wien

De Objeto para Classe

§

Indivíduos de um sistema frequentemente apresentam características e

comportamentos idênticos

§

Um classe é um plano de construção para um conjunto de objetos

similares de um sistema

§

Objetos são instâncias de classes

§

Atributos:

características estruturais de uma classe

§

Valor diferente para cada instância (= objeto)

§

Operações:

comportamento de uma classe

§

Idênticas para todos objetos de uma classe

à

não são exibidas no diagrama de objetos

Classe

Objeto da classe

(7)

Classe

Atributos

(8)

© BIG / TU Wien

Sintaxe de Atributos

(9)

Sintaxe de Atributos - Visibilidade

§

Quem tem permissão de acessar o atributo

§

+ ... public: todo mundo

§

- ... private: somente o próprio objeto

§

# ... protected: a classe e suas subclasses

(10)

© BIG / TU Wien

Sintaxe de Atributos – Atributo Derivado

§

Valor do atributo é derivado de outros atributos

§

age

: calculado a partir da data de nascimento

(11)

Sintaxe de Atributos - Nome

(12)

© BIG / TU Wien

Sintaxe de Atributos - Tipo

§

Tipo

§

Classes definidas pelo usuário

§

Tipo de dados

§ Tipos de dados primitivos

§ Pré-definidos: Boolean, Integer, UnlimitedNatural, String § Definidos pelo usuário: «primitive»

§ Tipos de dados compostos: «datatype»

§ Enumerações: «enumeration»

(13)

Sintaxe de Atributos - Multiplicidade

§

Número de valores que um atributo pode conter

§

Valor default: 1

§

Notação:

[min..max]

(14)

© BIG / TU Wien

Sintaxe de Atributos – Valor Default

§

Valor Default

§

Utiizado se o valor do atributo não foi atribuído

explicitamente pelo usuário

(15)

Sintaxe de Atributos – Propriedades

§

Propriedades pré-definidas

§

{readOnly}

… valor não pode ser alterado

§

{unique} … duplicatas não são permitidas

§

{non-unique} … duplicatas permitidas

§

{ordered} … ordem fixa dos valores

§

{unordered} … sem ordem fixa dos valores

§

Especificação de atributos

§

Set: {unordered, unique}

§

Multi-set: {unordered, non-unique}

(16)

Sintaxe de Operações - Parâmet

ros

§

Notação similar a dos atributos

§

Direção do parâmetro

§

in

… parâmetro de entrada

§ Quando a operação é utilizada, um valor é esperado do parâmetro

§

out

… parâmetro de saída

§ Após a execução da operação, o parâmetro adota um novo valor

§

inout

: parâmetro combinado de

entrada/saída

(17)

Sintaxe de Operações - Tipo

(18)

Variável de classe e Operação de classe

§ Variável de instância (= atributo de instância): atributos definidos no nível de instância § Variável de classe (= atributo de classe, atributo estático)

§ Definida somente uma vez por classe, ou seja, compartilhada por todas instâncias da classe

§ Por exemplo, contadores do número de instâncias da classe, constantes etc. § Operação de classe (= operação estática)

§ Pode ser utilizada quando nenhuma instância da classe correspondente foi criada

§ Por exemplo, construtores, operações de contagem, funções matemáticas (sin(x)) etc.

§ Notação: nome da variável de classe ou operação de classe sublinhado

Variável de classe

Operação de classe

class Person {

public String firstName; public String lastName; private Date dob;

protected String[] address; private static int pNumber;

public static int getPNumber() {…} public Date getDob() {…}

(19)

Especificação de Classes: Níveis Diferentes de Detalhes

(20)

© BIG / TU Wien

§

Modela relacionamentos possíveis entre instâncias de classes

Associação

(21)

Associação Binária

§

Conecta instâncias de duas classes

Nome da associação Direção de leitura

Não-navegabilidade

Multiplicidade

Papel Visibilidade

(22)

© BIG / TU Wien

§

Navegabilidade: um objeto conhece seu objeto parceiro e, portanto,

pode acessar seus atributos e operações visíveis

§

Indicado por uma seta aberta

§

Não-navegabilidade

§

Indicado por um x

§

Exemplo:

§

A

pode acessar os atributos e operações

visíveis de

B

§

B

não pode acessar qualquer atributo ou

operação de

A

§

Navegabilidade indefinida

§

Navegabilidade bidirecional é assumida

Associação Binária - Navegabilidade

(23)

Navegabilidade – Padrão da UML Standard vs. Melhor Prática

(24)

Associação Binária como Atributo

§

Notação de Java:

Preferível

class Professor {…}

class Student{

public Professor[] lecturer; …

}

(25)

Associação Binária – Multiplicidade e Papel

§

Multiplicidade:

Número de

objetos que podem estar associados com

exatamente um objeto do lado oposto

(26)

© BIG / TU Wien

Associação Binária – Restrição

xor

§

Restrição “ou exclusivo”

§

Um objeto da classe

A

está associado com um objeto da classe

B

ou

com um objeto da classe

C

mas não com ambos.

(27)
(28)

© BIG / TU Wien

Associação n-ária (1/2)

§

Mais de dois objetos parceiros estão envolvidos no relacionamento

§

Sem direção de navegação

Associação ternária

(29)

Associação n-ária (2/2)

§

Exemplo

§

(

Student

,

Exam

)

à

(

Lecturer

)

§ Um estudante faz uma prova com um ou nenhum professor

§

(

Exam

,

Lecturer

)

à

(

Student

)

§ Uma prova com um professor pode ser feita por qualquer número de estudantes

§

(

Student

,

Lecturer

)

à

(

Exam

)

§ Um estudante pode ser avaliado por um professor através de qualquer número de provas

(30)

© BIG / TU Wien

Classe de Associação

§

Especifica atributos para o relacionamento entre classes em vez de

uma classe específica

(31)

§

Necessária quando associações n:m são modeladas

§

Com associações 1:1 ou 1:n é possível mas não obrigatório

Classe de Associação

(32)

© BIG / TU Wien

Classe de Associação vs. Classe Regular

Um estudante pode ter múltiplas inscrições para um mesmo programa de estudos

Um estudante pode se inscrever para um mesmo programa de estudos somente uma vez

(33)

§

Default:

sem duplicatas

§

non-unique:

duplicatas

permitidas

Classe de Associação –

unique/non-unique

(1/2)

Um estudante pode ter uma única

ocasião de fazer uma prova específica.

Um estudante pode ter mais de uma

(34)

© BIG / TU Wien

Classe de Associação –

unique/non-unique

(2/2)

(35)

Agregação

§

Forma especial de associação

§

Usada para expressar que uma classe é parte de outra classe

§

Propriedades da agregação:

§

Transitiva

: se

B

é parte de

A

e

C

é parte de

B

,

C

também é parte de

A

§

Assimé

trica

: não é possível para

A

ser parte de

B

e

B

ser parte de

A

simultaneamente.

§

Dois tipos:

§

Agregação compartilhada

(36)

© BIG / TU Wien

Agregação Compartilhada

§

Expressa uma relação fraca entre a parte e o todo

= Partes também existem independentemente do todo

§

Multiplicidade do lado agregador pode ser >1

= Um elemento pode ser parte de vários outros elementos simultaneamente

§

Gera um grafo direcionado acíclico

§

Sintaxe:

Losango no lado agregador

§

Exemplo:

§

Student

é parte de LabClass

§

Course

é parte de StudyProgram

(37)

Composição

§

Dependência de existência entre o objeto composto e suas partes

§

Uma parte somente pode estar contida em, no máximo, um objeto

composto em dado momento

Multiplicidade no lado agregador é, no máximo, 1

-> Os objetos compostos formam uma árvore

§

Se o objeto composto é apagado, suas partes também são apagadas.

§

Sintaxe: Losango sólido no lado agregador

§

Example:

Beamer

é parte de

LectureHall

é parte de

Building

Se Building é apagado,

LectureHall é apagado também Beamer

pode existir sem

LectureHall, se ele é parte de

(38)

© BIG / TU Wien

Agregação Compartilhada e Composição

§

Quais modelos são aplicáveis?

(39)

§

Quais modelos são aplicáveis?

Agregação Compartilhada e Composição

Tire pode existir sem Car. Tire pertence a um Car no máximo.

Um Tire não pode existir sem um Car.

Um Tire pode pertencer a vários Cars ----Ye s --- ---No

---Um Car tem um ou dos tipos de Tires. Vários Cars podem ter o mesmo tipo defTires.

----Ye

s

(40)

---© BIG / TU Wien

Generalização

§

Características (atributos e operações),

associações e agregações que são

especificadas para uma classe geral

(superclasse) são passadas para suas

subclasses.

§

Cada instância de uma subclasse é também

uma instância indireta da superclasse.

§

Uma subclasse herda todas características,

associações e agregações da

superclasse exceto aquelas privadas.

§

A subclasse pode ter outras características,

associações e agregações.

§

Generalizações são transitivas.

Superclasse

Subclasses herdam características,

associações e agregações

Uma Secretary é um Employee e uma Person

(41)

§

Usada para destacar características comuns das subclasses.

§

Usada para garantir que não existam instâncias da superclasse.

§

Somente subclasses não-abstratas podem ser instanciadas.

§

Útil no contexto do relacionamento de generalização

§

Notação: Palavra-chave {abstract} ou nome da classe

em itálico.

Generalização – Classe Abstrata

Dois tipos de Person: Man e Woman

(42)

© BIG / TU Wien

Generalização – Herança Múltipla

§

UML permite herança múltipla.

§

Uma classe pode ter várias superclasses.

§

Exemplo:

Um Tutor é um Employee e um Student

(43)
(44)

© BIG / TU Wien

Criando um Diagrama de Classes

§

Não é possível extrair classes, atributos e associações a partir de um

texto em linguagem natural de forma completamente automática.

§

Diretrizes

§

Substantivos frequentemente indicam classes

§

Adjetivos indicam valores de atributos

§

Verbos indicam operações

§

Exemplo: O sistema de gestão de blibliotecas armazenam usuários

com um ID único, nome e endereço, bem como livros com título, autor

e número ISBN. Ann Foster quer utilizar o sistema da biblioteca.

(45)

Exemplo – University Information System

§ A university consists of multiple faculties which are composed of various institutes. Each faculty and each institute has a name. An address is known for each institute. § Each faculty is led by a dean, who is an employee of the university.

§ The total number of employees is known. Employees have a social security number, a name, and an email address. There is a distinction between research and

administrative personnel.

§ Research associates are assigned to at least one institute. The field of study of each research associate is known. Furthermore, research associates can be

involved in projects for a certain number of hours, and the name, starting date, and end date of the projects are known. Some research associates hold courses. Then they are called lecturers.

(46)

Exemplo – Passo 1: Identificando Classes

§ A university consists of multiple faculties which are composed of various institutes. Each faculty and each institute has a name. An address is known for each institute.

§ Each faculty is led by a dean, who is an employee of the university.

§ The total number of employees is known. Employees have a social security number, a name, and an email address. There is a distinction between research and

administrative personnel.

§ Research associates are assigned to at least one institute. The field of study of each research associate is known.

Furthermore, research associates can be involved in projects for a certain number of hours, and the name, starting date, and end date of the projects are known. Some research associates hold courses. Then they are called lecturers.

§ Courses have a unique number (ID), a name, and a weekly duration in hours.

Nos modelos os sistema “University“

Dean não tem outros atributos além daqueles de Employee

(47)

Exemplo – Passo 2: Identificando os Atributos

§ A university consists of multiple faculties which are composed of various institutes. Each faculty and each institute has a name. An address is known for each institute.

§ Each faculty is led by a dean, who is an employee of the university.

§ The total number of employees is known. Employees have a social security number, a name, and an email address. There is a distinction between research and

administrative personnel.

§ Research associates are assigned to at least one institute. The field of study of each research associate is known.

(48)

© BIG / TU Wien

Exemplo – Passo 3: Identificando Relacionamentos (1/6)

§

Três tipos de relacionamento:

§

Associação

§

Generalização

§

Agregação

§

Indicação de generalização

§

“There is a distinction between research

and administrative personnel.”

§

“Some research associates hold courses.

Then they are called lecturers.”

Abstrato, ou seja, não há outros tipo de employees

(49)

§

“A university consists of multiple faculties which are composed of

various institutes.”

Exemplo – Passo 3: Identificando Relacionamentos (2/6)

(50)

© BIG / TU Wien

§

“Each faculty is led by a dean, who is an employee of the university”

Exemplo – Passo 3: Identificando Relacionamentos (3/6)

Na associação leads, o

Employee desempenha uma papel de dean.

(51)

§

“Research associates are assigned to at least one institute.”

Exemplo – Passo 3: Identificando Relacionamentos (4/6)

Agregação compartilhada para mostrar que

(52)

© BIG / TU Wien

§

“Furthermore, research associates can be involved in projects for a

certain number of hours.”

Exemplo – Passo 3: Identificando Relacionamentos (5/6)

Classe de associação permite armazenar o número de horas para cada Project

de cada ResearchAssociate

(53)

§

“Some research associates hold courses. Then they are called

lecturers.”

Exemplo – Passo 3: Identificando Relacionamentos (6/6)

Lecturer herda todas as características, associações e agregações de

ResearchAssociate.

Além disso, Lecturer está envolvido

(54)

Exemplo – Diagrama de Classes Completo

(55)

Geração de Código

§

Diagramas de classes são frequentemente criados com o

objetivo de permitir a implementação dos elementos modelados

em uma linguagem de programação orientada a objetos.

(56)

© BIG / TU Wien

Exemplo – Geração de Código (1/6)

class Course {

public int courseNo; }

class Course {

public int courseNo;

}

class Course {

public int courseNo;

}

class Course {

public int courseNo; }

(57)

Exemplo – Geração de Código (2/6)

abstract class UniversityMember { public String firstName;

public String lastName; public int ssNo;

}

abstract class UniversityMember { public String firstName;

public String lastName; public int ssNo;

}

abstract class UniversityMember { public String firstName;

public String lastName; public int ssNo;

}

abstract class UniversityMember { public String firstName;

public String lastName; public int ssNo;

(58)

© BIG / TU Wien

Exemplo – Geração de Código (3/6)

Enumeration ESemester { winter,

summer }

Enumeration ERole { lecturer,

tutor, examiner }

Enumeration ESemester { winter,

summer }

Enumeration ESemester { winter,

summer }

Enumeration ERole { lecturer,

tutor, examiner }

(59)

Exemplo – Geração de Código (4/6)

class Student extends UniversityMember {

public int matNo;

public CourseExecution [] completedCourses;

}

class Student extends UniversityMember {

public int matNo;

public CourseExecution [] completedCourses;

}

class Student extends UniversityMember {

public int matNo;

public CourseExecution [] completedCourses;

}

class Student extends UniversityMember {

public int matNo;

public CourseExecution [] completedCourses;

}

class Student extends

UniversityMember { public int matNo;

(60)

© BIG / TU Wien

Exemplo – Geração de Código (5/6)

class Employee extends UniversityMember { private int acctNo;

public int getAcctNo { return acctNo;

}

public CourseExecution [] courseExecution; }

class Employee extends UniversityMember {

private int acctNo;

public int getAcctNo { return acctNo;

}

public CourseExecution [] courseExecution;

}

class Employee extends UniversityMember {

private int acctNo;

public int getAcctNo { return acctNo;

}

public CourseExecution [] courseExecution; }

class Employee extends UniversityMember { private int acctNo;

public int getAcctNo { return acctNo;

}

public CourseExecution [] courseExecution; }

class Employee extends UniversityMember { private int acctNo;

public int getAcctNo { return acctNo;

}

public CourseExecution [] courseExecution;

}

class Employee extends UniversityMember { private int acctNo;

public int getAcctNo () { return acctNo;

}

public CourseExecution [] courseExecutions; }

(61)

Exemplo – Geração de Código (6/6)

class CourseExecution { public int year;

public ESemester semester; public Student [] student; public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours) }

class CourseExecution {

public int year;

public ESemester semester; public Student [] student; public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours)

}

class CourseExecution {

public int year;

public ESemester semester; public Student [] student; public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours) }

class CourseExecution { public int year;

public ESemester semester;

public Student [] student; public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours) }

class CourseExecution { public int year;

public ESemester semester;

public Student [] student;

public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours) }

class CourseExecution { public int year;

public ESemester semester; public Student [] student;

public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours) }

class CourseExecution { public int year;

public ESemester semester; public Student [] student; public Course course;

public Hashtable support; // Key: employee

// Value: (role, hours)

}

class CourseExecution { public int year;

public ESemester semester; public Student [] student; public Course course;

public Hashtable support; // Key: employee

(62)

© BIG / TU Wien

Nome

Notação

Descrição

Classe

Descrição da estrutura e do

comportamento de um conjunto de

objetos

Classe Abstrata

Classe que não podem ser

instanciadas

Associação

Relacionamento entre classes:

navegabilidade indefinida,

navegabilidade em ambas direções,

não navegável em uma direção

Elementos de Notação (1/3)

oder

(63)

Nome

Notação

Descrição

Associação

n-ária

Relacionamento entre n (aqui 3)

classes

Classe de

Associação

Descrição mais detalhada de uma

associação

Relacionamento

xor

Um objeto de

C

se relaciona com

um objeto de

A

ou com um objeto

de

B

mas não com ambos

(64)

© BIG / TU Wien

Elementos de Notação (3/3)

Nome

Notação

Descrição

Agregação

Compartilhada

Relacionamento parte-todo (

A

é

parte de

B

)

Agregação

Forte =

Composição

Relacionamento parte-todo com

dependência de existência (

A

é

parte de

B

)

Generalização

Relacionamento de herança (

herda de

A

B

)

Objeto

Instância de uma classe

Link

Relacionamento entre objetos

Referências

Documentos relacionados

33 (a) Institute of High Energy Physics, Chinese Academy of Sciences, Beijing; (b) Department of Modern Physics, University of Science and Technology of China, Anhui; (c) Department

The variables included identification (name and number), date of birth, sex, date of initial medical training, date of re- cruitment to the Cape Verdean National Health Service

Furthermore, research associates can be involved in projects for a certain number of hours, and the name, starting date, and end date of the projects are known. Some

Os autores concluíram que a clorexidina possui ação sobre microrganismos gram positivos e negativos, é efetiva como antifúngico, aumenta sua atividade antimicrobiana quando

Ou ela é sinalizada logo de início, tem uma equipa de intervenção precoce, que mais tarde na estimulação também apoia nessa parte, ou então só mesmo quando chega à escola, e

Diante dos vários estudos mostrando a importância da implementação do diagnóstico diferencial das doenças exantemáticas nos países onde o sarampo e a rubéola estão sob controle,

Percibimos que el grupo control, presentó más dificultad en utilizar los conceptos sobre el tema ense- ñado durante la intervención, demostrando, según aclara Moreira (2008),