Upload
internet
View
106
Download
2
Embed Size (px)
Citation preview
Ceça Moraes
Programação Orientada a Objetos: os problemas de programação são
pensados em termos de objetos Em vez de funções e rotinas
Problema = desenvolver um sistema para locadoras Dividir o problema em objetos Clientes,DVDs,Filmes,Locação,...
"Um objeto é um termo que usamos para representar uma entidade do mundo real" Fazemos isto através de um
exercício de abstração...
Podemos descrever o cachorro Bilú em termos de seus atributos físicos: é pequeno sua cor principal
é castanha olhos pretos orelhas pequenas
e caídas, rabo pequeno
Podemos também descrever algumas ações que ele faz (temos aqui os métodos):
balança o rabo foge e se deita
quando leva reclamação
late quando ouve um barulho ou vê um cão ou gato
atende quando o chamamos pelo seu nome
Representação do cachorro Bilú: Propriedades : [Cor
do corpo : castanha; cor dos olhos : pretos; altura: 15 cm; comprimento: 38 cm largura : 24 cm]
Métodos : [balançar o rabo , latir , correr, deitar , sentar ]
Uma classe representa um conjunto de objetos que possuem comportamentos e características comuns Têm os mesmos atributos, operações, relacionamentos e semântica
Uma classe descreve como certos tipos de objetos se parecem do ponto de vista da programação
Ao definir uma classe é necessário definir : Propriedades
▪ Informações específicas relacionadas a uma classe de objeto
▪ Características dos objetos da classe▪ Exemplo: Cor , altura , tamanho , largura ,...
Métodos:
▪ São ações que os objetos de uma classe podem realizar
▪ Exemplo : Latir , correr , sentar , comer, etc.
Ilustram atributos e operações de uma classe e as restrições como que os objetos podem ser conectados ;
Descrevem também os tipos de objetos no sistema e os
relacionamentos entre estes objetos
Atributos visibilidade nome:
tipo + altura: float
Métodos visibilidade
nome(args): tipo retorno
+ latir() + media(n1,n2): float
Atributos
Métodos
Visibilidade dos atributos e métodos em uma classe : + (público)
▪ visível em qualquer classe # (protegido)
▪ qualquer descendente pode usar – (privado)
▪ visível somente dentro da classe
Os relacionamentos determinam conexões entre os objetos das classes
Fornecem um caminho para a comunicação entre os objetos
Tipos de Relacionamentos: Associações : agregação e
composição Generalização (herança) Dependências
Os relacionamentos possuem:
Nome: descrição dada ao relacionamento (faz, tem, possui,...)
Sentido de leitura
Navegabilidade: indicada por uma seta no fim do relacionamento
Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
Tipo: associação (agregação, composição), generalização e dependência
Papéis: desempenhados por classes em um relacionamento
Pessoa Empresa1..*
Tipo: associação
multiplicidade
*trabalha para
empregado
papéis
empregador
sentido de leitura
E a navegabilidade?
nome
© LES/PUC
-Rio
▪ O cliente sabe quais são seus endereços, mas o endereço não sabe a quais clientes pertence
EndereçoClientereside
1 *
navegabilidade
Uma associação é um vínculo que permite que objetos de uma ou mais classes se relacionem
Não há conceito de posseAs associações podem ser:
unárias - quando a associação ocorre entre objetos de uma mesma classe
binárias - quando a associação ocorre entre dois objetos de classes distintas
Uma associação é uma conexão entre classes (linha sólida)
Indicadores de multiplicidade: 1 Exatamente um
1..* Um ou mais
0..* Zero ou mais (muitos)
* Zero ou mais (muitos)
0..1 No máximo um (zero ou um)
m..n Faixa de valores (por exemplo: 4..7)
"Qualquer empregado é chefiado por no máximo um chefe."
UMLUMLEmpregado Chefe
Chefia* 0..1
empregados chefe
Person +employee
1..*
+employer
*
Company
+worker
*
+supervisor 1
Navegação por definição, a navegação entre classes
associadas é bidirecional por conveniência, a navegação pode
ser restringida a uma única direção
Um Estudante pode ser: Um aluno de uma Disciplina e
Um jogador da Equipe de Futebol
Cada Disciplina deve ser cursada por no mínimo 1 aluno
Um Aluno pode cursar de 0 até 8 disciplinas
Ocorre quando a associação tem propriedades
Person Company
salarydateHired
Job
1..*
+employer
*
+employee
É um tipo especial de associação Utilizada para indicar “todo-parte”
um objeto “parte” pode fazer parte de vários objetos “todo”
Mostra como classes são compostas de outras classes
"Uma empresa possui vários veículos.""Uma empresa possui vários veículos."
UMLUML
Empresa Veículo*
frota
0..1
Tipo especial de agregação
é um relacionamento de contenção Um objeto (container) CONTÉM outros
objetos (elementos)
Elementos que estão contidos dentro de outro objeto dependem dele para existir
Agregação: estabelece uma relação
todo-parte entre classes, sendo que a parte pode existir sem o todo.
Ex: Carro e Roda. Uma Roda é parte de um Carro, porém a Roda existe por si só fora do Carro. Você pode por exemplo remover a roda de um carro para colocar em outro.
Composição: estabelece uma
relação todo-parte entre classes, sendo que a parte NÃO existe sem o todo.
Ex: Pedido e Itens de Pedido. Se você destruir o Pedido, os Itens são destruídos junto, eles não tem sentido se não houver um Pedido.
Company Department
1 *
Língua naturalLíngua natural"Um humano é composto por uma cabeça e dois braços."
UMLUMLHumano
Braço
Cabeça1
2
Uma classe pode ser definida a partir de outra já existente
Abstrai classes genéricas (superclasse), a partir de classes com propriedades (atributos e operações) semelhantes
Modelar aspectos semelhantes entre classes, preservando suas diferenças
As subclasses herdam todas as propriedades de sua superclasse E possuem as suas próprias
Relacionamento entre itens gerais (superclasses) e itens mais específicos (subclasses)
“é um”“é um tipo de”
superclasse
subclasses
Veículo
Terrestre Aéreo
Forma
RetânguloCírculo FormaComposta
uma Forma pode ser um Círculo, um Retângulo ou uma FormaComposta
Identificar classes com propriedades semelhantes
Definir uma nova classe com as propriedades comuns
As classes originais tornam-se subclasses da nova classe e herdam as propriedades desta
Os relacionamentos em comum passam para a superclasse e os demais continuam nas subclasses
Definir uma ou mais subclasses a partir de uma classe existente
Adicionar propriedades e relacionamentos específicas de cada nova subclasse
Relacionamentos comuns a todas as subclasses são ligados à superclasse
A Universidade XYZ deseja informatizar seu sistema de matrículas: A universidade oferece vários cursos. O Coordenador de um curso define as disciplinas que serão oferecidas pelo seu
curso num dado semestre. Várias disciplinas são oferecidas em um curso. Várias turmas podem ser abertas para uma mesma disciplina, porém o número de
estudantes inscritos deve ser entre 3 e 10. Estudantes podem se matricular em 4 disciplinas. Quando um estudante matricula-se para um semestre, o Sistema de Registro
Acadêmico (SRA) é notificado. Após a matrícula, os estudantes podem, por um certo prazo, utilizar o sistema para
adicionar ou remover disciplinas. Professores usam o sistema para obter a lista de alunos matriculados em suas
disciplinas. Todos os usuários do sistema devem ser validados.
Diagrama de Casos de Uso
Descrição Resumida do Caso de Uso “Matricular em Disciplina”
Esse caso de uso se inicia quando o Estudante de Curso inicia uma sessão no sistema e apresenta suas credenciais.
O sistema verifica se a credencial é válida.
O sistema solicita que o estudante realize sua matrícula, selecionando 4 disciplinas.
O estudante preenche um formulário eletrônico de matrícula e o submete para análise de consistência.
O sistema analisa as informações contidas no formulário.
Se as informações são consistentes, o estudante é incluído em turmas abertas de 4 disciplinas, iniciando pelas preferenciais.
Se as informações não são consistentes, o sistema informa o motivo da inconsistência e solicita que o formulário seja alterado.
Professor Coordenador Estudante
TurmaUniversidade Disciplina
FormularioMatricula
Curso
AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
Diagrama de Classes: identificando as classes
Exemplos de possibilidades de relacionamentos entre as classes A e B: A é parte física ou lógica de B A está contido fisicamente ou logicamente em B A é uma descrição de B A é membro de B A é subunidade organizacional de B A usa ou gerencia B A se comunica/interage com B A está relacionado com uma transação B A é possuído por B A é um tipo de B
Diagrama de Classes: identificando os relacionamentos
O formulário de matrícula é processado por um analisador de matrícula
FormularioMatricula AnalisadorMatriculaé-processado-por
10..*
Diagrama de Classes: identificando os relacionamentos
O analisador de matrícula gerencia a disciplina
Disciplina
FormularioMatricula AnalisadorMatriculaé-processado-por
10..*1
0..*
Diagrama de Classes: identificando os relacionamentos
Professor
Coordenador
Estudante Turma
Disciplina
FormularioMatricula AnalisadorMatricula
é-preenchido-por
está-matriculado-em
é-processado-por
é-ministrada-por
é-definida-por
aluno
gerencia
1
1
10..*1
0..*
11..*1
1..*
10..33..10 4
Diagrama de Classes
Os atributos podem ser encontrados examinando-se as descrições dos casos de uso e também pelo conhecimento do domínio do problema.
Cada turma oferecida possui um código, uma sala e um horário.
Turma
códigosalahorário
Diagrama de Classes: identificando os atributos
Coordenador
FormularioMatricula AnalisadorMatricula
é-preenchido-por
está-matriculado-em
é-processado-por
é-ministrada-por
é-definida-por
aluno
gerencia
1
1
10..*1
0..*
11..*
1
1..*
10..33..10 4
Turma
códigosalahorário
Professor
nometitulação
Estudante
nomematricula
Disciplina
nomenumCréditos
Diagrama de Classes
modelar antes os diagramas de seqüência
SIM
submeterFormulario(formulario)
AnalisadorMatricula
adicionar(aluno, disciplina)
: SIM : AnalisadorMatricula
2: adicionar(a,d )
1: submeterFormulario(f)
Diagrama de Classes: identificando os métodos
E a navegabilidade?
public class Turma {
private String codigo;private String sala;private Estudante alunos[];...
}
Diagrama de Classes:
public class Estudante {
private String nome;
private String matricula;...}
OBS: Turma não aparece como atributo de Estudante!
TurmaEstudante
3..10
está-matriculado-em
3..10 4
Acrescentando generalizações: Atributos, operações e/ou relacionamentos comuns
podem ser movidos para uma classe mais geral.
Estudante
matricula : Inteiro
definirMatricula(matricula)obterMatricula()
Usuario
nome : Texto
definirNome(nome)obterNome()
Professor
titulacao : Texto
definirTitulacao(titulacao)obterTitulacao()
Diagrama de Classes:
SIM
Usuario
nome : Texto
definirNome(nome)obterNome()
FormularioMatricula
obterEstudante() : EstudanteobterNomeDIsciplina(i : Inteiro) : Texto
Estudante
matricula : Inteiro
definirMatricula(matricula)obterMatricula()
1
1
é-preenchido-por
1
1-aluno
Professor
titulacao : Texto
definirTitulacao(titulacao)obterTitulacao()
AnalisadorMatricula
adicionar(aluno, disciplina) 1 11 1
usa
10..* 10..*
é-processado-por
Disciplina
nome : TextonumCreditos : Inteiro
estaCompleta()adicionar(aluno : Estudante)
0..*
1
0..*
1
gerencia
Turma
codigo : Textosala : Textohorario : HorarionumAlunos : Inteirocompleta : Booleano
estaCompleta() : Booleano
3..10
4
3..10
4
está-matriculado-em
0..3 10..3 1
responsável-por
1..*
11
1..*