Ementário • O Modelo de Objetos – Histórico da evolução das linguagens de programação, PE versus POO, fundamentos do modelo de objetos, a importância da modelagem, métodos OO • Tecnologias para apoio a orientação a objetos • UML- Unified Modeling Language • A Linguagem Java – introdução, a sintaxe e estruturas de controle • Vocabulário da Orientação a Objetos (Abordagem com Java)
83
Embed
Ementário O Modelo de Objetos –Histórico da evolução das linguagens de programação, PE versus POO, fundamentos do modelo de objetos, a importância da modelagem,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Ementário
• O Modelo de Objetos– Histórico da evolução das linguagens de programação,
PE versus POO, fundamentos do modelo de objetos, a importância da modelagem, métodos OO
• Tecnologias para apoio a orientação a objetos• UML- Unified Modeling Language • A Linguagem Java
– introdução, a sintaxe e estruturas de controle
• Vocabulário da Orientação a Objetos (Abordagem com Java)
Diagrama de Classe
• é a essência da UML (OMT e Booch)
• coleção de elementos declarativos de modelo, como classes, tipos e seus respectivos conteúdos e relações
• estruturar atributos e operações em classes é fundamental para o trabalho de modelagem através do enfoque da orientação a objetos
Chocolate
Produto
Pedido, item
quantidade
incluirItemPedido()calcularTotalPedido()
Pedido
incluirPedido()atenderPedido()
1
*
1
*
Indivíduo
Organização
Cliente
códigoDoClientelimiteDeCredito
{ disjunção, incompleto }
{ ou }
Organização cliente
Leite Biscoito
-----------------------------------------------
Agregação
Multiplicidade
Subclasses
Superclasse
Restrição
Classe associativa
Associação
Operações
Classe
Atributos
Generalização (herança)
Visibilidade
Relacionamentos (1/4)
• ligam as classes/objetos entre si criando relações lógicas entre estas entidades
• tipos de relacionamentos:– generalização/ especificação (herança)– associação– agregação– dependência
Relacionamentos (2/4)
• Generalização/ especificação– indica relacionamento entre um elemento mais
geral e um elemento mais específico (respectivamente, superclasse e subclasse)
– também conhecido como herança ou classificação (por exemplo, um enfermeira “é um tipo de” pessoa)
Relacionamentos (3/4)
• Agregação– usada para denotar relacionamentos todo/parte – por exemplo, um Item de compra é parte de um Pedido
• Associação– é um relacionamento que descreve um conjunto de
vínculos, onde cada vínculo é definido como uma conexão semântica entre tuplas de objetos
– por exemplo, um Cliente possui Conta Corrente
Relacionamentos (4/4)
• Dependência– é um relacionamento entre elementos, um
independente e outro dependente– uma modificação no elemento independente
afetará diretamente os elementos dependentes do anterior
– é um relacionamento de utilização
Elementos Chaves
1. Objeto
2. Classe
3. Atributo
4. Operação
5. Associação
6. Restrição
7. Classe de associação
8. Dependência
9. Interface
10. Normalização do modelo de classes
1. Objeto
• é uma unidade real ou abstrata, individualizada e identificável
• características básicas:– estado: características herdadas ou distintas– identidade (id.): propriedade que o distingue de
todos os demais– comportamento: modo como age e reage a
estímulos externos (passagem de mensagens)
2. Classe
• “um conjunto de objetos que compartilham estrutura e comportamento comuns” (Booch)
• se a classe possuir como instâncias classes em vez de objetos, ela será denominada de metaclasse
• abstração = seleção de alguns aspectos de domínio do problema para modelagem
Ao definir classes, é importante:
• Buscar equilíbrio entre funcionalidade e reutilização, resistindo-se ao desejo de criar classes grandes que abrangem tudo:– Classes grandes são mais difíceis de entender e
reutilizar, assim a criação de classes de objetos que possuam propósitos bem definidos contribui significativamente na reutilização por outras aplicações.
– Classes menos complicadas são mais fáceis de entender e manter, e se uma classe não puder ser explicada de forma simples ela é forte candidata a subdivisão em classes menores.
As classes são os blocos de construção mais importantes de qualquer sistema orientado a objetos.
Notação gráfica para declarar e usar Classes
Nome da Classeatributo
atributo: tipo do dado
atributo: tipo do dado = valor inicial
...
operação ()
operação (lista de parâmetros)
operação (lista de parâmetros): tipo de resultado
...
Classes
Nome da Classeatributos da classe
(opcional)
operações da classe
(opcional)
Indivíduo
Indivíduo
Indivíduo
+incluirIndivíduo(códigoDoIndivíduo)
+destruirIndivíduo(códigoDoIndivíduo)
Indivíduo+códigoDoIndivíduo:long
+sexo: M ou F
+dataDoNascimento: data
+incluirIndivíduo(códigoDoIndivíduo)
+destruirIndivíduo(códigoDoIndivíduo)
+códigoDoIndivíduo:long
+sexo: M ou F
+dataDoNascimento: data
1)
2)
3)
4)Variações
Nome da Classe (1/2)
• cada classe deve ter um nome que a diferencie de outras classes
• o nome é uma seqüência de caracteres• o nome de uma classe deve ser único no pacote
que a contém• somente o nome da classe é conhecido como nome
simples• nome de caminho é o nome da classe, tendo como
prefixo o nome do pacote a que essa classe pertence
Nome da Classe (2/2)
Nomes Simples Nomes de caminho
HelloWorld
Cliente
TButton
Regras de Negócio::ValidaPedido
Tabelas::Cliente
Quick Report::TQuickRep
3. Atributo
• menor unidade que em si possui significância própria e interrelacionada com o conceito lógico da classe à qual pertence (equivale aos campos de um registro)
• uma propriedade nomeada de um tipo• em síntese, armazena valores em células
• nomeDoAtributo– é uma seqüência de caracteres de identificação
começando tipicamente com letra minúscula– primeira letra de cada palavra em maiúscula– ex: nomeDoIndivíduo, limiteDeCréditoDoCliente
• TipoDeExpressão– depende da linguagem de programação e do tipo
de implementação de um atributo
Sintaxe padrão p/ atributos (1/2)
• ValorInicial– é uma expressão que também depende da
linguagem de programação
• Propriedade– descrição do atributo– tipo de dado– tipo de atributo– domínios de valores (valores mínimo e máximo)
+ visibilidade pública (valor default)todos têm acesso
# visibilidade protegidaé acessível dentro da mesma classe e por classes aolongo do pacote no qual a classe é definida
- visibilidade privadaé acessível apenas por operações declaradas dentro damesma classe
Visibilidade de atributo (1/2)
Visibilidade de atributo (2/2)
Cliente+códigoDoCliente
#situação
-limiteDeCrédito
Nome do atributo
Nome da classe
Visibilidade pública
Visibilidade protegida
Visibilidade privada
4. Operação
• um serviço que é requisitado a um objeto como parte de seu comportamento em resposta a estímulos (procedimento algorítmico)– operação é algo invocado por um objeto (procedimento
• nomeDaOperação– é uma seqüência de caracteres de identificação
começando tipicamente com letra minúscula– primeira letra de cada palavra em maiúscula– exemplos:
• obterNomeDoIndivíduo
• obterLimiteDeCréditoDoCliente
Sintaxe padrão p/ operações (2/3)
• Parâmetro– é uma lista de valores separados por vírgula– nome tipo: tipo-expressão = valor-padrão
• nome é o nome de um parâmetro formal
• tipo é in, out, ou inout, com padrão in
• tipo-expressão é a especificação de um tipo de implementação dependente da linguagem
• valor-padrão é uma expressão de valor opcional para o parâmetro
Sintaxe padrão p/ operações (3/3)
• ExpressãoDeTipoDeRetorno– é uma especificação dependente de linguagem de
programação sobre o tipo de implementação do valor retornado pela operação
• Propriedade– indica valores de propriedade que se aplicam ao
elemento• classificação, pré-condição, pós-condição, tipo de
execução, concorrência, transformação e estereótipo
Visibilidade para operações (1/2)
• definida da mesma forma que se define para os atributos.
+ visibilidade pública (valor default)
# visibilidade protegida
- visibilidade privada
Visibilidade de operação (2/2)
Cliente
+obterLimiteDeCrédito
#bloquearCliente
-cancelarCliente
Nome da operação
Nome da classe
Visibilidade pública
Visibilidade protegida
Visibilidade privada
Organização de atributos e operações (1/2)
• Ao representar uma classe, não é preciso exibir todos os atributos e operações ao mesmo tempo. Na verdade, na maioria dos casos, isso não é possível (haverá um número muito grande de itens) nem é adequado (somente um subconjunto desses atributos e operações será relevante para uma determinada visão).
• Um compartimento vazio não significará necessariamente que não existam atributos ou operações, mas apenas foi decidido não mostrá-los.
• Para especificar explicitamente a existência de mais atributos ou métodos do que os apresentados, terminar cada lista com reticências (...).
• Para melhor organização de listas extensas de atributos e operações cada grupo pode receber um prefixo com uma categoria descritiva, utilizando-se estereótipos. Por exemplo, organizando métodos construtores:<<constructor>>
Create()
Create(y, m, d: word)
Organização de atributos e operações (2/2)
5. Associação
• é uma relação que descreve um conjunto de vínculos entre elementos de modelo
• uma associação representa que duas classes possuem uma ligação (link) entre elas:– conhecem uma a outra– estão conectadas com– para cada X existe um Y
Nomenclatura de associações
• quando duas classes, ou mesmo uma classe consigo própria, apresenta interdependência onde determinada instância de uma delas origina ou se associa a uma ou mais instâncias da outra
• a nomenclatura da associação depende do número de classes envolvidas:– unária (recursiva), binária (normal), n-ária
Associação unária
• associação reflexiva ou recursiva
• quando há um relacionamento de uma classe consigo própria conectando-se ambos os fins da associação a ela mesma (mas os dois fins são distintos)
• semanticamente representa a conexão entre dois objetos da mesma classe
Marido
Esposa
é casado com
Pessoa
Associação binária (normal)
• quando há duas classes envolvidas na associação de forma direta de uma para a outra
Cliente Pedido1 0..*
Associação n-ária
• é uma associação entre três ou mais classes
Funcionário Quesito Projeto
Avaliação
* * *
Semântica da associação
Classe A Classe Bnome da associação
papel-1 papel-2
onde:nome da associação: usado para definir, ou qualificar, a natureza da relação entre as classes associadas
papel-1, papel-2: mostram como uma classe é vista pela outra, ou, o papel desempenhado pela classe no relacionamento
• Nome da associação– a associação possui um nome que a representa,
freqüentemente atribuído a um verbo
– podem existir dois nomes, um para cada direção do relacionamento
– “um cliente possui conta corrente”
Cliente Conta correntePossui
é Possuída por
Multiplicidade, ou cardinalidade (1/2)
• especifica a quantidade de correspondência de um objeto na classe [A] em objetos equivalentes na classe [B]– 1 exatamente um
– * muitos (zero ou mais)
– 0..1 opcional (zero ou um)
– m..n seqüência especificada (5..11)
Multiplicidade, ou cardinalidade (2/2)
Pessoas Empresafuncionário empregador1..* *
Multiplicidade
Uma “Pessoa” é funcionário de nenhuma ou mais (*) “Empresas”.
Cada “Empresa” possui um ou vários (1..*) “Funcionários”.
Papéis em associação
• Ordenação {ordenado}– se a multiplicidade é maior que um, o conjunto
de elementos relacionados é ordenado ou não ordenado (padrão)
• Qualificador– é um atributo de associação ou uma estrutura de
atributos cujos valores particionam um conjunto de objetos relacionados a um objeto por uma associação (reduz a multiplicidade)
Associação qualificada
PedidoPedido, item0..1
Produto
O qualificador ‘Produto’ diz que em conexão com um pedido pode haver um item de pedido para cada ocorrência de produto. Conceitualmente, esse exemplo indica que não é possível haver dois itens de pedido para um mesmo produto. Para acessar um item de pedido em particular, é necessário identificar o produto como argumento.
AgregaçãoUma agregação é uma forma especial de associação utilizadapara mostrar que um tipo de objeto é composto, pelo menos em parte, de outro em uma relação de todo/ parte.
PedidoPedido, item
1..*1
Tem
Todo ParteAgregação regular, relacionamento por-referência
Agregação de composição
Indivíduo,endereço
0..11
Tem
Todo Parte
Indivíduo,complemento de endereço
Agregação de composição, relacionamento por-valor
É uma forma de agregação com uma forte propriedade e vidacoincidente da parte com o todo. Na composição, ou relacionamentopor-valor, o objeto todo declara uma instância real do objetoparte dentro do seu próprio corpo tornando o objeto parte fisicamente nele contido.
NavegabilidadeUma instância de uma classe pode navegar a instâncias deoutra classe e vice-versa.
Pedido1*
Cliente
{ordenado}
Fonte Alvo
sentido da navegação
Navegabilidade na agregação
Todo
Parte 1 Parte 2
1 1
0..* 0..*
Navegabilidadeunidirecional em agregação regular
Navegabilidadebidirecional em agregação decomposição
Papéis em associação (1/2)
• Especificador de Interface– define o comportamento exigido para habilitar a
associação– nome de um classificador com a sintaxe:
“:”nome-do-classificador
• Mutabilidade– se os vínculos são mutáveis podem ser somados,
apagados e movidos– outras propriedades: congelado, somarSomente
Papéis em associação (2/2)
• Visibilidade– especificado por um indicador de visibilidade
– (“+”, “#”, “-” ou palavra-chave explícita tal como {público})
• Generalização– um relacionamento de taxinomia entre um elemento
mais geral e um elemento mais específico que é completamente consistente com o primeiro elemento somando-o informação adicional especializada
Generalização
• Indica que uma classe mais geral, a superclasse, tem atributos, operações e associações comuns que são compartilhados por classes mais especializadas, as subclasses.
• Por sua vez, as subclasses herdam atributos, operações e associações da superclasse e agregam atributos e operações particulares ao elemento de especialização a que se referem.
Restrições para generalização/ especificação
A
B C N...
{Restrição}
Generalização
{completo}: N é conhecido
{incompleto}: N não é conhecido
{disjunção}: B, C, ..., N sãomutuamente exclusivos
Exemplo de generalização/ especificação com restrição
Animal
Mamífero Ave Peixe
{disjunção, incompleto}
Herança
• É o mecanismo de reutilização de atributos e operações definidos em classes gerais por classes mais específicas.
• Permite organizar tipos similares de classes de objetos em categorias hierárquicas, onde é permitida à classe de menor nível, que é uma especialização ou extensão de outra classe, compartilhar atributos e operações de classes superiores na hierarquia.
Redefinição de atributos e operações na herança
Veículo terrestre
partida()parada()
Automóvel
partida()parada()
Caminhão
partida()parada()
Operaçõesredefinidas pelasubclasse
Superclasse
Subclasses
{disjunção}
Herança múltipla
Veículo
Veículoterrestre
Veículoaquático
Veículoanfíbio
{sobreposição, incompleto}
Agregação versus Generalização
Pedido
Pedido, item
Agregação:Pedido, item é parte-de (ouatributo-de)Pedido
Árvore
Pinus
Generalização:Pinus é um tipo-de Árvore
6. RestriçãoUma restrição é um relacionamento semântico entre elementosde modelo que especifica condições e proposições que devemser mantidas como verdadeiras, caso contrário o sistema descritopelo método é nulo.
7. Classe de AssociaçãoUma classe de associação é um elemento de modelagem quetem associação e propriedades de classe, podendo ser vista tanto como uma associação que tem propriedades de classecomo uma classe que tem propriedades de associação.
Classe A Classe B
Nome da classe de associação
atributos da classe de associação
operações da classe de associação
8. Dependência
• Dependência indica a ocorrência de um relacionamento semântico entre dois ou mais elementos de modelo onde uma classe cliente é dependente de alguns serviços da classe fornecedora.
• Indica uma situação na qual uma mudança em um elemento (elemento independente) pode afetar outro elemento da dependência (elemento dependente).
Classe A Classe B
Fornecedor Cliente
Dependência
Dependências predefinidas na UML (1/2)• Rastro
– uma conexão histórica entre dois elementos que representam o mesmo conceito em níveis diferentes de significado
• Refinamento– um histórico ou conexão de derivação entre
dois elementos com um mapeamento entre eles
Dependências predefinidas na UML (2/2)• Uso
– uma situação na qual um elemento requer a presença de outro para sua implementação correta ou funcionamento
• Ligação– uma ligação de parâmetros de modelo para
valores reais visando criar um elemento não parametrizado
9. Interface
Classe deimplementação
Interface
É um especificador para operações externamente visíveis de uma classe ou um componente sem especificação de sua estrutura interna.Fornece um modo para dividir e caracterizar grupos de operações.
Classe cliente
dependência
nome da interface
Interface
• especifica uma parte limitada do comportamento de uma classe real e não tem implementação
• formalmente eqüivale a uma classe abstrata sem atributos, estados ou associações, mas com um conjunto de operações abstratas
• designa a face externa de uma classe ou um pacote• descreve as interações entre dois objetos
Classe A Classe B
Fornecedor Clientearmazenável
executável
Classe C
Fornecedorexecutável
«interface» Executável {abstrado}
executar() {abstrato}
processar() {abstrato}
«interface» Armazenável
{abstrado}
carregar() {abstrato}
salvar() {abstrato}
Classe A implementa a interface executável e armazenável
Classe C implementa a interface executável
Classe B usa a interface executável e armazenável de A e executável de C
10. Normalização do modelo de classes• Normalização é um processo formal que examina
os atributos de classes com o intuito de minimizar redundância em objetos específicos.
• A normalização causa a simplificação de atributos dentro das respectivas classes colaborando para a integridade e a estabilidade do modelo.
• O segredo das formas normais está em perceber que alguns atributos determinam o valor de outros.
Normalização do modelo de classes• São mais necessárias para os modelos
relacionais.
• Primeira, Terceira e Quarta Forma Normal.
• A Segunda não ocorre em banco de objetos– identificador único e universal ao objeto
• Uma estrutura de atributos não normalizada é dita estar na zerésima forma normal
1ª Forma Normal
• é verificada quando em determinadas estruturas de atributos, existem dados que se repetem várias vezes
• objetivo = remoção de grupos repetitivos
Exemplo para normalização de classes:
Pedido
Número do pedido: ________Código do cliente: _________Nome do cliente: _________________________________________________Data do pedido: ___/ ___/ ____
• dependência transitiva é a dependência indireta que um determinado atributo tem com o identificador do objeto através de um outro atributo explícito ou implícito do qual é diretamente dependente
Para atingir a 3ª forma normal
• verificar se a classe [C] analisada possui atributos que são dependentes de outros atributos nela contidos;
• destacar os atributos com dependência transitiva e suas respectivas operações, incorporando-os na classe [D];
• eliminar os atributos obtidos por cálculo a partir de outros atributos da classe [C].
Resultado da 3ª forma normal
Pedido
quantidadeDoProdutonúmeroDoPedidodataDoPedido
Pedido, item1..*1
Cliente
códigoDoClientenomeDoCliente
*
1
Produto
códigoDoProdutodescriçãoDoProduto
*
1
4ª Forma Normal
Curso ProfessorLivrotexto
CPL
* * *
Tendo como pré-requisito a terceira forma normal, a quarta formanormal busca remover dependências multivaloradas.
classe de associação
Resultado da 4ª forma normal
CursoProfessorLivrotexto
*
classe de associação
* * *
ProfessorCurso
Livro textoCurso
Referência
• Modelagem de Objetos através da UML - the Unified Modeling Language– José Davi Furlan– MAKRON Books, 1998– Capítulo 2- Modelando com a UML, item 3.– pg. 91..167