Representação para Programação Orientada a Objetos

Documentos relacionados
Diagramas de Classes. ESII Profª. Andressa Falcade URI Santiago

Diagrama de Classes. Classes. Relacionamentos. Atributos Métodos. Associação. Generalização Dependência Realização. Agregação Composição

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Linguagem de Modelagem Unificada UML

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

Diagrama de Classes 2017

BANCO DE DADOS I. Prof. Luiz Antônio Vivacqua C. Meyer

Modelo Conceitual Parte 1 Banco de Dados I Prof. Luiz Antônio Vivacqua C. Meyer

Introdução à UML. Prof. Jesus José de Oliveira Neto

Modelagem de Processos

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

DIAGRAMAS DE CLASSE UML

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

Linguagem de Programação. Diagrama de classes

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

12/03/16. Generalização. Associação. Agregação UML Relações. entre Classes. Composição. Prof.Dr. Enzo Seraphim. Dependência

Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão

Revisão Diagrama de classes Elementos do diagrama de classes Exemplo: Sistema de matrícula

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Introdução a UML (Unified Modeling Language)

UML (Unified Modelling Language)

Aula 4 POO 1 Análise OO. Profa. Elaine Faria UFU

Análise de Sistemas 4º Bimestre (material 3)

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Diagrama de Classes (Notação) - Aula 11 (parte 2)

Modelagem de dados usando o modelo Entidade- Relacionamento (ER)

04/11/2016 UML. Prof. Esp. Fabiano Taguchi DIAGRAMAS DE CLASSE

Modelo Conceitual. Análise e Projeto de Sistemas Avançados. Aula 5. Allan Rodrigo Leite

Introdução a UML e seus diagramas

Requisitos de sistemas

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

INF1013 MODELAGEM DE SOFTWARE

UML. Diagrama de Classe

UML. Adriano J. Holanda 21/3/

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Project-Based Learning TADS MS Diagrama de Classes

Análise e Projeto de Software Parte I. Marcos Dósea

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

INTRODUÇÃO À ENGENHARIA DE SOFTWARE. Prof.: Tiago Alves

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

UNIVERSIDADE FEDERAL DE SERGIPE CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO E ESTATÍSTICA. Professor: Eduardo Coelho

IFSC/Florianópolis - CTI - Projeto de Sistemas - prof. Herval Daminelli

Modelagem Orientada a Objeto

UML. Diagrama de Classes

UML Relacionamentos. Relacionamento é uma conexão entre itens A maioria dos itens relacionam-se entre si. Quatro tipos de relacionamentos:

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001

INF1404 MODELAGEM DE SISTEMAS

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes

UML Diagrama de Classes

Programação Orientada a Objetos Relacionamentos entre classes

Unified Modeling Language (UML)

UML. Modelando um sistema

PROJETO DE DESENVOLVIMENTO DE SOFTWARE

ENGENHARIA DE SOFTWARE. Aula 10 Introdução ao Diagrama de Classes

Engenharia de Software 2012/3 Aula 5 Modelagem de Sistemas

ASSOCIAÇÃO ENTRE CLASSES

Panorama da notação UML

MER e DER Entidades Relacionamentos Atributos Ferramentas CASE Exemplos de DERs Exemplo de Minimundo. Banco de Dados. Aula 1.

UML - Diagrama de Classes

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Modelagem semântica permite aproximar o modelo obtido do mundo real Exemplo de modelos:

Analista de Sistemas S. J. Rio Preto

Modelos. Banco de dados. Professor: Jarbas Araújo CENTRO EDUCACIONAL RADIER.

Análise e Projeto de Sistemas

Diagramas de Classes. Diagramas de Classes. Diagramas de Classes. Análise e Projeto de Sistemas OO

FUNDAÇÃO UNIVERSIDADE ESTADUAL DE MARINGÁ

UML LINGUAGEM DE MODELAGEM UNIFICADA Diagrama de Classes

UML UNIFIED MODELING LANGUAGE LINGUAGEM DE MODELAGEM UNIFICADA

PCS3413 Engenharia de Software e Banco de Dados

Modelagem de Classes. Mestrado em Engenharia de Produção e Sistemas Computacionais. Profa. Adriana Pereira de Medeiros

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

Diagramas de Classes e O Paradigma da Orientação a Objetos usando UML. Prof. Ricardo A. Ramos

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

PROGRAMAÇÃO ORIENTADA A

Nome da classe. Atributos. Serviços / métodos

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

Engenharia de Software II e III - Introdução ao Diagrama de Classe

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Análise e projeto de sistemas

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Unidade IV. Compreende uma conexão bidirecional entre classes que indica a existência de um relacionamento entre os objetos dessas classes.

Modelagem de Sistemas

Introdução. Pacote. Classe. UML Diagrama de. Atributo. Classes. Método. Prof. Dr. Enzo Seraphim. Visibilidade

Análise de Sistemas. Visão Geral - Orientação a Objetos. Prof. José Honorato Ferreira Nunes

Engenharia de Software II e III - Material para estudo Diagrama de Classe

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Diagrama de Classes. Diagrama mais. IMPORTANTE e UTILIZADO

Capítulo 5 Modelação do Sistema 1

TIC - Programação Visual

Unidade 2 Modelo Conceitual

Conceitos de Programação Orientada a Objetos

Aula 2 Abordagem Entidade-Relacionamento Cleverton Hentz

Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso. Diagrama de Casos de Uso

18/03/2012. Independência de Dados: capacidade de modificar a definição dos esquemas em. determinado nível, sem afetar o esquema do nível superior;

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Simbolos/Componentes desse diagrama:

Transcrição:

1 Representação para Programação Orientada a Objetos Profª. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com ENG10082 Programação II Créditos: Prof. Gustavo Willam Pereira e Prof. Clayton Vieira Fraga Filho

Modelagem Modelos são usados para representar uma realidade do ponto de vista de um observador; Podem ser um texto narrativo, uma figura, um gráfico, desde que definidas as convenções e notações, para permitir comunicação efetiva. Para implantação de um bom software, a modelagem é uma parte central. Construímos modelos para: Comunicar a estrutura e o comportamento desejados do sistema; Visualizar e controlar a arquitetura do sistema; Compreender melhor o sistema que estamos elaborando; Gerenciar os riscos. 2

Representação de Classes A Unified Modeling Language (UML) é uma linguagem de modelagem não proprietária, cujos objetivos UML são: especificação, documentação, estruturação para subvisualização e maior visualização lógica do desenvolvimento completo de um sistema de informação. A UML é independente do processo utilizado para desenvolvimento de software. A UML é um modo de padronizar as formas de modelagem. Conta com 21 tipos de diagramas, e neste momento introduziremos o diagrama de classes. 3

Representação de Classes Um diagrama de classes serve para modelar o vocabulário de um sistema, do ponto de vista do usuário/problema ou do desenvolvedor/solução; Em UML uma classe é representada por um retângulo com o nome da classe Escreve-se o nome da classe no singular (como se fosse o nome de uma instância), com a 1ª letra em maiúscula, por exemplo: ControleRemoto Aluno Professor 4

Representação de Classes Atributos são listados em um compartimento de atributos (opcional) abaixo do compartimento com o nome da classe Uma classe não pode ter dois atributos com o mesmo nome classe Compartimento dos atributos Pessoa nome datanascimento peso Nome do atributo 5

Representação de Classes Os tipos dos atributos podem ou não ser especificados e não estão pré-definidos em UML, podendo-se usar os da linguagem em que se pretende realizar a implementação. Classe Visibilidade do atributo: + público - privado # protegido ~ pacote Compartimento dos atributos Nome do atributo Pessoa +nome: String +datanascimento: Date +peso: real = 75.0 Tipo do atributo Valor inicial 6

Representação de Classes Compartimento de operações Pessoa -nome: String -datanascimento: Date -peso: real = 75.0 Compartimento de operações +setdatanascimento(data: Date) +calculaidade() +Pessoa() +Pessoa(nome: String) 7

Representação de Classes Atributo estático: tem um único valor para todas as instâncias da classe Operação estática: não é invocada para um objeto específico da classe Notação: nome sublinhado Cria um novo boleto Boleto -numero: Long -data: Date -valor: real +ultimonumero: Long = 0 +vencimento: Date +multa: real +Boleto(valor: real, data: Date) +calculavalortotal(): real... Calcula o valor total do boleto Tipo de retorno OBS: Em UML você especifica uma classe abstrata e operações abstratas escrevendo seu nome em itálico. 8

Representação de Classes Toolbar #currentselection: Tool #toolcount: int Método encapsulado: utilizado internamente por outros métodos. +gettool(i: real): real +addtool(t: Tool) +removetool(i: real) -compact() <<Constructor>>+Toolbar() Estereótipo amplia o vocabulário da UML, permitindo a criação de novos tipos de blocos de construção, derivados de outros já existentes, mas específico a determinado problema. Podem ser textuais ou visuais 9

Relacionamentos entre Classes Consideremos por um momento as semelhanças e diferenças entre as seguintes classes de objetos: flores, margaridas, rosas vermelhas, rosas amarelas, as pétalas e as joaninhas. Nós podemos fazer as seguintes observações: o A margarida é uma espécie de flor; o Uma rosa é uma espécie (diferente) de flor; o As rosas vermelhas e rosas amarelas são os dois tipos de rosas; o A pétala é uma parte de ambos os tipos de flores; o Joaninha comem certas pragas, como pulgões, que podem infestar certos tipos de flores; 10

Relacionamentos entre Classes Ao fazer a modelagem de um sistema, será necessário não somente identificar as classes, mas também modelar como essas classes relacionam-se entre si. Na modelagem orientada a objetos, existem três tipos de relacionamentos: Dependências - representam relacionamentos de utilização entre as classes Generalizações relacionam classes generalizadas a suas especializações Associações representam relacionamentos estruturais entre objetos Cada um desses relacionamentos fornece uma forma diferente de combinações de abstrações.

Relacionamentos entre Classes Estabelecemos relações entre duas classes por duas razões: 1.Uma relação de classe pode indicar algum tipo de compartilhamento. 2.Uma relação de classe pode indicar algum tipo de conexão semântica (significado). 12

Relacionamentos entre Classes Existem três tipos básicos de relações de classe: 1.Generalização / especialização relacionamento "é um". Por exemplo, uma rosa é uma espécie de flor, o que significa que uma rosa é uma subclasse especializada da classe de caráter mais geral, a flor. 2.Todo / parte relacionamento "parte de". Assim, uma pétala não é um tipo de flor, é uma parte de uma flor. 3.Dependência semântica entre classes independentes, tais como entre joaninhas e flores. Como outro exemplo, rosas e velas são classes bastante independentes, mas ambos representam coisas que podemos usar para decorar uma mesa de jantar. 13

Relacionamentos entre Classes J oaninha Dependência Associação por composição Generalização Flor Pétala Rosa Margarida 14

Relacionamentos entre Classes Generalização -x: int -y:int J anela +abrir() +fechar() +exibir() +mover() Dependência Evento J anelaconsole CaixadeDialogo Controle Associação 15

Relacionamentos entre Classes: Associação A partir de uma associação conectando duas classes, você é capaz de navegar do objeto de uma classe até o objeto de outra classe e vice-versa. Papel Nome da associação Direção do nome Pessoa +funcionario Trabalha para +empregador Empresa 1..* Associação * Papel (role): quando uma classe participa numa associação ela desempenha um papel específico Multiplicidade: especificação do nº de elementos que um conjunto pode assumir. Ex.: 1..*, *, 0..1, 3..9, 3..*, etc. Navegação: mostra como a partir de uma instância de uma classe se pode acessar a uma ou mais instâncias de outra classe 16

Nome da Associação A indicação do nome é opcional O nome é indicado no meio da linha que une as classes participantes Pode-se indicar o sentido em que se lê o nome da associação Empresa empregador Trabalha-para Emprega empregado Pessoa

Relacionamentos entre Classes: Associação Multiplicidade Muitos-para-Muitos Muitos-para-1 1-para-1 Professo r * * * 1 1 1 Curso Aluno Curso Curso Plano de Curso

Notação para a multiplicidade 1 - exatamente um 0..1 - zero ou um (zero a 1) * - zero ou mais 0..* - zero ou mais 1..* - um ou mais 1, 3..5 - um ou três a 5

Relacionamentos entre Classes: Associação Associação reflexiva Pode-se associar uma classe com ela própria (com papéis diferentes) +pai 0..1 Pessoa * +filho 20

Relacionamentos entre Classes: Associação Associação unidirecionais As associações são classificadas quanto à navegabilidade em: Bi-direcionais (padrão) Classe 1 Classe 2 Unidirecionais Classe 1 Classe 2 Um objeto da classe 1 tem apontador(es) para o(s) objeto(s) correspondente(s) da classe 2 (nível de implementação) 21

Relacionamentos entre Classes: Associação Associação unidirecionais Associação Papel desempenhado Considerando um usuário, você desejará ser capaz de encontrar os objetos Senha correspondentes; mas considerando uma Senha, não desejará identificar o Usuário correspondente. 22

Relacionamentos entre Classes: Associação Associação unidirecionais Associação Papel desempenhado Especificar que uma associação é navegável é uma declaração de que, considerando um objeto em uma extremidade, você poderá chegar direta e facilmente a objetos na outra extremidade, geralmente porque o objeto de origem armazena algumas referências aos objetos de destino. 23

Relacionamentos entre Classes: Associação Associação ou associações? Uma propriedade que designa um objeto de uma classe presente no modelo, deve ser modelada como uma associação e não como um atributo. Exemplo: Pais -nome: String -capital: String -capital: Cidade Pertence a 1 * 0..1 1 +capital Cidade -nome: String 24

Relacionamentos entre Classes: Associação Classes associativas É uma classe que está ligada a uma associação, ao invés de estar ligada a outras classes. É normalmente necessária quando duas ou mais classes estão associadas, e é necessário manter informações sobre esta associação. Uma classe associativa pode estar ligada a associações de qualquer tipo de conectividade. 25

Relacionamentos entre Classes: Associação Classes associativas Representada pela notação utilizada para uma classe. A diferença é que esta classe é ligada a uma associação. Exemplo: Pessoa +nome +telefone +endereco Organização +razaosocial +endereco Emprego +salario +datacontratacao 26

Relacionamentos entre Classes: Agregação Representa um relacionamento do tipo tem-um, o que significa que um objeto do todo contém os objetos das partes. Equipe 0..1 * J ogador Uma equipe contém 0 ou mais jogadores Um jogador faz parte de uma equipe (num dado momento), mas também pode estar desempregado. Informa que uma classe faz parte de outra classe, mas não de forma exclusiva: não vincula o tempo de vida do todo e suas partes. 27

Relacionamentos entre Classes: Composição É uma forma de agregação onde há uma relação mais forte. As partes não podem existir sem o todo. Informa que uma classe faz parte de outra classe de forma exclusiva Exemplo 1: Empresa e departamentos Empresa 1 * Departamento Se a empresa for excluída, então deve-se excluir os departamentos. 28

Relacionamentos entre Classes: Composição Exemplo 2: Elementos de uma Janela de um software Window 1 1 1 +scrollbar 1 1 2 +title +body Slider Header Panel 29

Relacionamentos entre Classes: Composição Exemplo 3: Nota fiscal e seus itens Na composição os elementos que estão contidos dentro de outro objeto dependem dele para existir. Não faz sentido existirem itens de nota fiscal sem existir uma nota fiscal onde tais itens estariam contidos. Na agregação isso não acontece: se uma equipe é destruída, seus jogadores continuam existindo, pois podem participar de outras equipes.

Relacionamentos entre Classes Composição/Agregação x Associações Binárias As associações de Composição/Agregação podem em muitos casos ser substituída por uma associação binária simples, dependendo da visão de quem faz a modelagem. A função principal de uma associação do tipo Agregação/Composição é identificar a obrigatoriedade de uma complementação das informações de um objetotodo por seus objetos-parte, quando este for consultado. Em uma associação binária esta obrigatoriedade não está explícita. 31

Relacionamentos entre Classes Composição/Agregação x Associações Binárias 32

Relacionamentos entre Classes: Dependência Relacionamento de utilização, determinando que um item usa informações e serviços de outro item, e não necessariamente o inverso. Uma alteração no item independente pode afetar a semântica do item dependente. Dependência -nome Clipe +reproduzir(c: Canal) +iniciar() +parar() Canal 33

Relacionamentos entre Classes: Dependência Pode-se observar dois tipos diferentes de dependência: quando uma classe só utiliza a outra como parâmetro para suas operações (mais comum). quando o relacionamento é unilateral, ou seja, a classe dependente interage com a classe independente, que por sua vez, não tem conhecimento da classe dependente.

Relacionamentos entre Classes: Generalização A herança é representada no diagrama de classes da seguinte forma: ItemBiblioteca é mais geral que ItemPublicado Filme é mais específico que ItemGravado Generalização ItemBiblioteca -numerocatalogacao -dataaquisicao -precocusto -status -numcopias +adquirir() +catalogar() +arquivar() ItemPublicado -titulo -editora ItemGravado -titulo -meio Livro -autor -edicao -datapublicacao -ISBN -ano -volume Revista Filme -diretor -datalancamento -distribuidor 35

Relacionamentos entre Classes: Realização Uma realização é um relacionamento no qual um item concretiza o comportamento de outro item. class Realização «interface» EntradaDados + leentrada() : void + validaentrada() : void EntradaDeDadosTexto + leentrada() : void + validaentrada() : void 36

Dependências, Generalizações e Associações Dependências, generalizações e associações, com nomes, multiplicidade e papéis são os recursos utilizados com maior freqüência para a criação das abstrações Na maioria dos modelos que você criar, a forma básica desses três relacionamentos será suficiente para definir a semântica mais importante dos seus relacionamentos.

Técnicas básicas de modelagem Modelagem de dependência simples O tipo mais comum de relacionamento de dependência é a conexão entre uma classe que somente utiliza outra classe como parâmetro para determinada operação. Para fazer a modelagem usando este relacionamento: Crie uma dependência apontando, a partir da classe que executa a operação, a classe utilizada como parâmetro nessa operação.

Técnicas básicas de modelagem Modelagem de herança simples Ao fazer a modelagem do seu sistema, você sempre encontrará classes com semelhanças estrutural e comportamental. Uma solução é extrair quaisquer características que sejam comuns e colocá-las em classes mais gerais a partir das quais serão herdadas por classes mais especializadas.

Técnicas básicas de modelagem Modelagem de herança simples

Técnicas básicas de modelagem Modelagem de relacionamentos estruturais Dependência: uma classe depende da outra, mas a outra classe não tem nenhum conhecimento sobre aquela dependente. Generalização: a classe-filha herda de sua classe-mãe, mas a classe-mãe não terá qualquer conhecimento específico sobre as classes-filha. Resumindo, as dependências e os relacionamentos de generalização são unilaterais.

Técnicas básicas de modelagem Modelagem de relacionamentos estruturais Ao fazer a modelagem com relacionamentos de associação, você está modelando classes que são pares umas das outras. Sempre que a dependência é um relacionamento de utilização e a generalização é um relacionamento é-um-tipo-de, uma associação especifica um caminho estrutural por meio do qual os objetos das classes interagem.

Técnicas básicas de modelagem Modelagem de relacionamentos estruturais Para fazer a modelagem de relacionamentos estruturais: Para cada par de classes, se for necessário navegar de um objeto para outro, especifique uma associação entre eles. Isso constitui uma visão de associações orientadas a dados. Para cada uma dessas associações, especifique uma multiplicidade, papéis e nomes de associações Se uma das classes de uma associação for, estrutural ou organizacionalmente, um todo quando comparada às classes encontradas na outra extremidade, que, por sua vez, parecem partes, marque esse caso como uma agregação/composição.

Técnicas básicas de modelagem Modelagem de relacionamentos estruturais Como identificar que objetos de uma determinada classe devem interagir com os objetos de outras classes? A análise de casos de uso será de grande ajuda, obrigando você a considerar cenários estruturais e comportamentais. Sempre que descobrir que duas ou mais classes interagem, especifique uma associação.

Diagrama estrutural da UML. Pode ser visto como uma instância de diagramas de classes. Representa uma fotografia do sistema em um certo momento. exibe as ligações formadas entre objetos conforme estes interagem e os valores dos seus atributos. Formato nomeclasse nomeobjeto: NomeClasse Exemplo Pedido umpedido: Pedido