Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Classes Modelagem Visual Sobre Classes • Classes são o elemento mais importante de qualquer sistema orientado a objetos • Uma classe é uma descrição de um conjunto de objetos com os mesmos atributos, relacionamentos, operações e semântica Modelagem Visual relacionamentos, operações e semântica • Classes são usadas para capturar o vocabulário de um sistema, representando os conceitos envolvidos • Classes podem ser abstrações do domínio do problema, como “Cliente”, “Banco”, “Conta” • Classes podem também ser usadas a nível de implementação (listas, filas, eventos) Nomes • Toda classe deve ter um nome no singular que a distingüa das outras classes • Um nome pode ser simples (apenas o nome), ou pode ser precedido pelo nome do pacote em que a classe está contida Modelagem Visual a classe está contida Sensor de temperatura ClienteParede Interface Gráfica:: JanelaPrincipal Exceções:: ClienteNaoEncontrado Notação básica origem Forma nome atributos Modelagem Visual mover() redimensionar() exibir() origem operações Atributos • Um atributo representa alguma propriedade do que está sendo modelado, que é compartilhada por todos os objetos da classe. • Os atributos descrevem os dados contidos nas instâncias de uma classe Modelagem Visual instâncias de uma classe • Em um momento dado, um objeto de uma classe conterá valores para todos os atributos descritos na sua classe. Atributos (notação) • Atributos podem ser identificados apenas com nomes. nome endereço telefone Cliente Modelagem Visual telefone dataNascimento • Atributos podem ter seus tipos (ou classes) especificados e terem valores padrão definidos. altura: Real largura: Real espessura: Real ehUmaViga: Boolean = false Parede Operações • Uma operação é uma abstração de alguma coisa que se pode fazer com um objeto – comportamento, e que é compartilhada por todos os objetos da classe • Uma classe pode ter qualquer número de Modelagem Visual • Uma classe pode ter qualquer número de operações, inclusive nenhuma Operações (notação) • Como para os atributos, você pode especificar uma operação apenas com seu nome • Você pode também especificar a mover() aumentar() diminuir() esticar() estaVazio() Retângulo Modelagem Visual • Você pode também especificar a assinatura da operação: seus parâmetros, o tipo desses parâmetros e o tipo de retorno estaVazio() mover(dx: int, dy: int) aumentar(perc: float) diminuir(perc: float) esticar(dx: int) estaVazio(): boolean Retângulo Visibilidade • Você pode usar marcações de acesso para especificar o tipo de acesso permitido aos atributos e operações • Classificador: classes, interfaces, componentes, nós, use cases, subsistemas Modelagem Visual nós, use cases, subsistemas + publico: todos os classificadores podem usar. # protegido: qualquer descendente do classificador poderá usar . - privado: somente o próprio classificador poderá usar. Visibilidade #creditoPermitido: Currency #nivelCredibilidade() -nome: String -endereco: String -dataPrimeiraCompra: Date -dataUltimaCompra: Date -totalComprado: Currency Cliente Modelagem Visual #nivelCredibilidade() nomeContato: String telefones[1..10]: String CGC: String FAX[1..3]: String Cliente pessoa-jurídica colocarListaNegra() nome: String CPF: String numCartaoCredito Cliente pessoa-física Sobre Relacionamentos • Poucas classes vivem sozinhas. • A maioria das classes colabora com outras classes de várias maneiras. • Tipos de relacionamentos especialmente importantes na modelagem orientada a objetos: Modelagem Visual importantes na modelagem orientada a objetos: – Dependências – Generalizações – Associações – Agregação – Composição – Realização Dependência • Dependências são relações de uso. • Uma dependência indica que mudanças em um elemento (o “servidor”) podem afetar outro elemento (o “cliente”). Modelagem Visual • Uma dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe Cliente Servidor Generalização • Uma generalização é um relacionamento entre um elemento mais geral (chamado de superclasse ou pai) e um mais específico (chamado de subclasse ou filho). Forma Ponto Modelagem Visual mover() redimensionar() exibir() origem Forma canto: Ponto Retângulo raio: float Circulo exibir() pontos: ListaPontos Polígono x: int y: int Ponto Quadrado Associação • A associação é um relacionamento estrutural que especifica que objetos de um elemento estão conectados a objetos de outro elemento. Modelagem Visual Companhia Empregado emprega Associação: Navegabilidade • Em geral a navegação entre as classes de uma associação é bi-direcional • Porém é possível limitá-la a apenas uma direção Modelagem Visual SenhaUsuário navegação da associação • Link: uma conexão física ou conceitual entre objetos. Um link é uma uma instância de uma associação Associação: um relacionamento entre instâncias de duas ou mais classes descrevendo um grupo de links, com estrutura e semântica comuns. Associação e Link Modelagem Visual Companhia nome endereço Empregado nome endereço cpf emprega links, com estrutura e semântica comuns. Associação com Atributos • Modela as propriedades associadas com uma associação. • Para indicar os atributos de uma associação, usamos uma linha tracejada para unir a associação às suas propriedades. Modelagem Visual associação às suas propriedades. • As propriedades e/ou conceitos devem ser representadas por uma classe. Associação com atributo Companhia Empregado Modelagem Visual Função Salário • Papéis : um dos lados da associação. • Uma associação binária possui duas “terminações”. Cada uma delas pode possuir um “nome de papel”. Uma associação n-ária pode Associação e papéis Modelagem Visual “nome de papel”. Uma associação n-ária pode possuir um “papel” para cada terminação. • Nomes de papéis são necessários para associação entre dois objetos da mesma classe Associação e papéis Companhia Empregado *1 contrata 0..1 1..* +chefe +subordinado gerencia0..1 *1 Modelagem Visual Função Salário performance � Nome de papéis são úteis para distinguir associações entre o mesmo par de classes. Associação e papéis 0..* contém 0..* Modelagem Visual usuário diretório +proprietário possui +user autorizado acessa * 0..*0..* * +sub-dir • Associação qualificada: uma associação que relaciona uma classe e um qualificador a outra classe. • O qualificador é um atributo especial que reduz a efetiva multiplicidade de uma associação • Associações do tipo um-para-muitos e muitos- Associação e Qualificador Modelagem Visual • Associações do tipo um-para-muitos e muitos- para muitos podem ser qualificadas microcomputador • Uma forma especial de associação, entre o todo e suas partes, no qual o todo é composto de partes. Agregação Modelagem Visual monitor caixa do sistema mouse teclado HD CPU RAM Ventilador Agregação • Distingue um “Todo” de uma “Parte”. • Não muda o significado de navegação entre o “Todo” e as “Partes”. Modelagem Visual “Todo” e as “Partes”. • Não impõe que a vida das “Partes”’ esteja relacionado com a vida do “Todo”. Composição • Uma forma mais forte de agregação. • Há uma coincidência da vida das partes. • Uma vez criada a parte ela irá viver e morrer com ele. Modelagem Visual com ele. • O “Todo” é responsável pelo gerenciamento da criação e destruição das partes. Composição +confirmar() +cancelar() -calcularTotal():Currency gerarNovoCodigo: String -codigo: Integer -dataRecebido -total: Currency Pedido Modelagem Visual -emEstoque: Boolean -quantidade: Integer -preco: Currency Item de Pedido Produto * * Realização • É um relacionamento semântico entre classificadores no qual um classificador especifica um contrato que outro classificador garante cumprir. • Entre dependência e generalização Modelagem Visual • Entre dependência e generalização • Será usado no contexto de interface. • Uma interface é uma coleção de operações que será usada para especificar os serviços de uma classe ou componente. • A interface especifica um contrato que a classe ou componente irá executar. Realização IAgentedeRegras adiçãoRegra() mudançaRegra() <<Interface>> RegrasdeNegóciodaConta Modelagem Visual mudançaRegra() explicarRegra() realiza Interfaces • Uma interface é um conjunto de operações usado para especificar um serviço de uma classe ou componente • Diferentemente das classes, as interfaces não especificam nenhuma estrutura Modelagem Visual especificam nenhuma estrutura • Interfaces não podem conter atributos Interfaces • Com as interfaces, é possível se concentrar apenas nos serviços oferecidos por classes ou componentes • O uso de interfaces é uma maneira elegante e poderosa de isolar a especificação da Modelagem Visual poderosa de isolar a especificação da implementação • Uma interface especifica o contrato para uma classe ou componente, sem definir como ele será implementado Interfaces (notação) <<interface>> Empregado Modelagem Visual verificarFicha( ) calcularSalario( ) calcularDeducoes( ) Empregado Interfaces e realização • Realização é uma relação pela qual um elemento especifica o contrato que outro elemento deve implementar • A realização é um relacionamento entre uma especificação e sua implementação Modelagem Visual especificação e sua implementação Realização (notação) verificarFicha( ) calcularSalario( ) <<interface>> Empregado Empregado_Impl Modelagem Visual calcularSalario( ) calcularDeducoes( ) Empregado Empregado_Impl Dicas • Não comece a construção do modelo apenas colocando junto classes, associações e herança. Primeiro você deve entender o problema que vai ser resolvido • Tente manter o modelo simples Modelagem Visual • Tente manter o modelo simples • Não tente resolver toda a multiplicidade tão cedo • Use sempre que possível associação qualificadas • Evite generalizações em muitos níveis • Desconfie de associações um-para-um. Em geral é opcional ou zero-ou-uma • Revise o modelo várias vezes • Peça a outros para fazer a revisão Dicas Modelagem Visual • Peça a outros para fazer a revisão • Sempre documente o seu Diagrama de Classe • Não é necessário o uso de todos os construtores apresentados no Diagrama de Classe Modelagem Visual Diagrama de classe 1 Associação Agregação {ou} Indivíduo Organização Cliente CódigoDoCliente limiteDeCrédito Pedido Incluir Pedido () atender Pedido () Modelagem Visual * 1 Agregação Multiplicidade Classe Atributos Organização cliente Produto Leite Chocolate Biscoito Operações Subclasse Generalização {disjunção, incompleto} Classe associativa Restrição Superclasse Pedido,item qualidade incluirItemPedido () calcularTotalPedido ()