Ementrio O Modelo de Objetos Histrico da evoluo
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, estruturas de controle e mecanismos de modularização. • Vocabulário da Orientação a Objetos: uma abordagem com Java.
Considerações Iniciais: a importância da modelagem A modelagem é uma parte central de todas as atividades que levam à implantação de um “bom” software. Construímos modelos para compreender melhor o sistema que estamos desenvolvendo. Objetivos da Modelagem: • Os modelos ajudam a visualizar o sistema como ele é ou como desejamos que seja. • Os modelos permitem especificar a estrutura (organização) ou o comportamento (dinâmica) de um sistema. • Os modelos proporcionam um guia para a construção (implementação) do sistema. • Os modelos documentam as decisões tomadas.
Considerações Iniciais: fundamentos do modelo de objetos Nesta visão, o principal bloco de construção de todos os sistemas de software é o objeto ou a classe. Um objeto é alguma coisa geralmente estruturada a partir do vocabulário do espaço do problema ou do espaço da solução; uma classe é a descrição de um conjunto de objetos comuns. Objeto: pessoa 1 {“Hommer Jay Simpson”, Classes: ‘M’, 15/01/1955} “Data” e “Pessoa” Objeto: pessoa 2 {“Madre Teresa de Calcutá”, ‘F’, 26/08/1910}
Considerações Iniciais: métodos OO A UML (Unified Modeling Language, ou Linguagem de Modelagem de Objetos Unificada) é uma linguagem de modelagem padrão para elaboração da estrutura de projetos de software orientado a objetos. Evolução da UML Industrialização Normalização Unificação Fragmentação
Considerações Iniciais: tecnologia “front-end” para Orientação a Objeto • Ferramentas de modelagem: – easy. UML for Netbeans, Omondo Eclipse UML, Rational Rose Modeler, Together, Poseidon for UML, Argo. UML, Star. UML, Astah Community, . . . • Linguagens Orientadas a Objetos: – Smalltalk, C++, Delphi, Java, Python, . . .
Modelando com a UML (The Unified Modeling Language) Linguagem de Modelagem de Objetos Unificada
Conceitos Fundamentais da Orientação a Objetos: 1. Uma classe é um modelo utilizado para criar objetos específicos e relacionados, uma descrição de um conjunto de instâncias que compartilham as mesmas operações, atributos, relacionamentos e semântica. 2. Uma instância de uma classe é um objeto real, possui dados e aguarda por executar serviços. 3. Na Programação Orientada a Objetos, a herança permite expressar relacionamentos entre classes onde as classes base subjacentes derivam em subclasses mais complexas. 4. Uma classe básica contém todos os atributos que são compartilhados entre as classes derivadas da classe base. 5. Subclasses usam atributos compartilhados existentes, reimplementam atributos compartilhados ou criam novos atributos.
Objetivo apresentar Semântica da UML implementação Conceitos fundamentais da Orientação a Objetos
Definição • A UML (Unified Modeling Language) é uma linguagem-padrão para elaboração da estrutura de projetos de software orientado a objetos. • A UML poderá ser empregada para a visualização, a especificação, a construção e a documentação de artefatos que façam uso de sistemas complexos de software.
Aplicações da UML • A UML é adequada para a modelagem de sistemas, cuja abrangência poderá incluir sistemas de informação corporativos a serem distribuídos, a aplicações baseadas em Web e até sistemas complexos embutidos em tempo real. • É uma linguagem muito expressiva, abrangendo todas as visões necessárias ao desenvolvimento e implantação de sistemas.
Semântica da UML • Aprender a aplicar a UML de maneira efetiva tem início com a formação de um modelo conceitual da linguagem, o que pressupõe o entendimento de três principais elementos: – os blocos básicos de construção da UML; – as regras que determinam como esses blocos de construção deverão ser combinados; e – alguns mecanismos básicos que se aplicam a toda a linguagem.
A UML é uma Linguagem • As linguagens fornecem um vocabulário e as regras para a combinação de palavras desse vocabulário com a finalidade de comunicar algo. • Uma linguagem de modelagem é uma linguagem cujo vocabulário e regras têm seu foco voltado para a representação conceitual e física de um sistema. Portanto, uma linguagem de modelagem, como a UML, é uma linguagem-padrão para a elaboração da estrutura de projetos de software.
Visualização • Para muitos programadores, não existe diferença entre pensar em uma implementação e transformá-la em código. • Eventuais problemas: – todos os envolvidos deverão conhecer e usar a mesma linguagem; – existem aspectos nos sistemas de software que não podem ser efetivamente compreendidos sob o prisma de linguagens de programação textual (ex. hierarquia de classes). • A UML oferece símbolos de semântica bem definida para elaboração de modelos que facilitam a comunicação.
Especificação • Especificar significa construir modelos precisos, sem ambiguidades e completos. • Em particular, a UML atende a todas as decisões importantes em termos de análise, projeto e implementação, que devem ser tomadas para o desenvolvimento e implantação de sistemas complexos de software.
Construção (1/2) • A UML não é uma linguagem visual de programação, mas seus modelos podem ser diretamente conectados a várias linguagens de programação. • Isso significa que é possível mapear os modelos UML em linguagens de programação tais como Java, C++, Visual Basic ou até tabelas de bancos de dados relacionais ou o armazenamento de dados persistentes de um banco de dados OO.
Construção (2/2) • A UML é capaz de representar tudo que possa ser melhor expresso em termos gráficos, enquanto as linguagens de programação representam o que é melhor expresso em termos textuais. • Esse mapeamento permite a realização de uma engenharia de produção: a geração de código a partir de um modelo em UML para uma linguagem de programação.
Documentação • A UML abrange a documentação da arquitetura do sistema e de todos os seus detalhes. • A UML também proporciona uma linguagem para expressão de requisitos e para a realização de testes. • Por fim, a UML oferece uma linguagem para a modelagem das atividades de planejamento do projeto e de gerenciamento de versões.
Notação da UML (1/2) • Visões: – mostram os diferentes aspectos do sistema que está sendo modelado. • Modelos de Elementos (ou itens): – conceitos usados nos diagramas: classes, objetos, mensagens, relacionamentos entre classes incluindo associação, dependência e herança. • Diagramas: – são os gráficos que descrevem o conteúdo de um visão.
Notação da UML (2/2) • Mecanismos Gerais: – comentários suplementares, informações, ou semântica sobre os elementos que compõem os modelos – mecanismos de extensão para adaptar ou estender a UML Modelagem de Objetos através da UML - the Unified Modeling Language. José Davi Furlan, 1998.
Visões de um Sistema (1/2) • Estrutural: – descreve as partes estáticas ou estruturais dos sistemas e ignora o processamento • Comportamental: – descreve como o sistema muda, qdo as coisas acontecem • Funcional: – descreve o que está sendo feito • Arquitetural: – descreve os domínios (ou módulos, ou assuntos)
Visões de um Sistema (2/2) • Não Funcional: – requisitos de tempo, confiabilidade, desenvolvimento • Organizacional: – organização do trabalho, mapeamento dos módulos de códigos Cada visão é descrita em um número de diagramas que contém informação enfatizando um aspecto particular do sistema.
Blocos de Construção da UML • O vocabulário da UML abrange três tipos de blocos de construção: – itens, diagramas e relacionamentos. • Os itens são abstrações dos elementos identificados em um modelo; os relacionamentos reúnem esses itens; os diagramas agrupam coleções de itens interessantes.
Itens da UML • Existem quatro tipos de itens na UML: – itens estruturais, itens comportamentais, itens de agrupamento, e itens anotacionais. • Os itens estruturais representam elementos conceituais ou físicos: – classes (objetos), interfaces, colaborações, casos de uso, classes ativas, componentes e nós.
Itens Estruturais (1/3) • Classes • Objetos • Interface • Classes ativas descrição de um tipo de objeto elemento que pode-se manipular, acompanhar seu comportamento, criar, destruir, . . . uma coleção de operações que especificam serviços de uma classe ou componente classes cujos objetos têm um ou mais processos ou threads e, portanto, podem iniciar a atividade de controle.
Itens Estruturais (2/3) • Colaboração • Caso de uso definem interações e são sociedades de papéis e outros elementos que funcionam em conjunto para proporcionar um comportamento cooperativo superior à soma de todos os elementos. descrição de um conjunto de sequência de ações realizadas pelo sistema que proporciona resultados observáveis de valor para um determinado ator.
Itens Estruturais (3/3) • Componentes • Nós partes físicas e substituíveis de um sistema, que proporcionam a realização de um conjunto de interface. (ex. código em linguagem de programação, DLL, . . . ) elemento físico existente em tempo de execução que representa um recurso computacional, geralmente com pelo menos alguma memória e, frequentemente, capacidade de processamento.
Itens Comportamentais (1/2) • Os itens comportamentais são as partes dinâmicas dos modelos de UML. • São os verbos de um modelo, representando comportamentos no tempo e no espaço: – interação – máquina de estado
Itens Comportamentais (2/2) • Interação • Máquina de estado comportamento que abrange um conjunto de mensagens trocadas entre um conjunto de objetos em determinado contexto para a realização de propósitos específicos. comportamento que especifica as sequências de estados pelas quais objetos ou interações passam durante sua existência em resposta a eventos, bem como suas respostas a esses eventos.
Itens de Agrupamento • Os itens de agrupamento são as partes organizacionais dos modelos de UML. São os blocos em que os modelos podem ser decompostos. • Pacotes mecanismo de propósito geral para a organização de elementos em grupos.
Itens Anotacionais • Os itens anotacionais são as partes explicativas dos modelos de UML. São comentários, incluídos para descrever, esclarecer e fazer alguma observação sobre qualquer elemento do modelo. • Notas símbolo para representar restrições e comentários anexados a um elemento ou uma coleção de elementos.
Diagramas da UML (1/2) Um diagrama é uma apresentação gráfica de uma coleção de elementos de modelo, frequentemente mostrado como um gráfico conectado de arcos (relacionamentos) e vértices (outros elementos do modelo ou itens). A maioria dos diagramas da UML refere-se a gráficos que contêm nós conectados por caminhos, sendo que a informação está principalmente na topologia e não no tamanho ou na colocação dos símbolos.
Modelo x Diagrama • Modelo – contém informações a respeito dos elementos subjacentes de um sistema em estudo de maneira independente de como são apresentados visualmente. • Diagrama – é uma visualização particular de certos elementos de tipos de um modelo.
Diagramas da UML (2/2) • relacionamentos topológicos: – Conexão: • Normalmente de linhas para formas 2 -d; – Retenção: • De símbolos para formas 2 -d com limites; – Anexo visual: • Um símbolo que está próximo a outro em um diagrama. • elementos gráficos: – Ícones, Símbolos 2 -d, Caminhos e Texto.
Elementos gráficos usados na UML Ícone (classe) Símbolo 2 -d (agregação) Texto (restrição) Caminhos (hierarquia)
Notação da UML A é sempre associada a B A 1 A é associada a um ou vários Bs A 1. . * B A é associada a zero ou um B A 0. . 1 B A é associada a zero, um ou vários Bs A * B B
Relacionamentos na UML • ligam as classes/ objetos entre si criando relações lógicas entre estas entidades • tipos de relacionamentos: – Generalização/ especialização – Associações – Agregação – Dependência herança ligação todo/ parte
Diagramas Propostos pela UML • • • Diagrama de classe (objeto) Diagrama de caso de uso Diagrama de pacotes Diagrama de estrutura Diagramas de interação: – sequência e colaboração • Diagrama de tempo • Diagrama de estado: – atividade • Diagrama de interatividade • Diagrama de implementação: – componente e implantação
Classificação dos Diagramas (1/2) • Diagramas de Estrutura: – Especificação estrutural dos elementos independente do tempo. • Diagramas de Comportamento: – Demonstram os aspectos comportamentais e de reação do sistema ou da lógica de negócio do projeto. • Diagramas de Interação: – Sub-conjunto de diagramas de comportamento que enfatizam a interação entre os objetos.
Classificação dos Diagramas (2/2) Diagramas Estruturais • Diagrama de Classes • Diagrama de Objetos • Diagrama de Componentes • Diagrama de Implantação (ou instalação) • Diagrama de Pacotes • Diagrama de Estrutura Diagramas Comportamentais • Diagrama de Caso de Uso • Diagrama de Estado • Diagrama de Atividade Diagramas de Interação • Diagrama de Sequência • Diagrama de Colaboração (ou comunicação) • Diagrama de Interatividade • Diagrama de Tempo
Hierarquia dos Diagramas da UML Diagramas Comportamentais Diagramas Estruturais Diagrama de Classes Diagrama de Objetos Diagrama de Componentes Diagrama de Implantação Diagrama de Pacotes Diagrama de Atividade Diagrama de Estrutura Composta Diagrama de Sequência Diagrama de Caso de Uso Diagrama de Estado Diagramas de Interação Diagrama de Colaboração Diagrama de Interatividade Diagrama de Tempo
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 • Um diagrama de classe denota a estrutura estática de um sistema e as classes representam “coisas” que são manipuladas por esse sistema.
Diagrama de Classes UML Associação Atributos Agregação Classe associativa Classe Visibilidade Multiplicidade Superclasse Generalização/ espcialização (herança) Operações Restrição Subclasses
Diagrama de Classes UML Atributos (ou propriedades) Classe Superclasse Multiplicidade Associação Agregação Generalização/ especialização (herança) Operações (ou métodos) Subclasses Visibilidade
Diagrama de Objetos • O diagrama de objetos é uma variação do diagrama de classes e utiliza quase a mesma notação. A diferença é que o diagrama de objetos mostra os objetos que foram instanciados das classes. • Diagramas de objetos também são usados como parte dos diagramas de colaboração, onde a colaboração dinâmica entre os objetos do sistema são mostrados.
Diagrama de Caso de Uso Descrevem a funcionalidade do sistema percebida por atores externos. Um ator interage com o sistema podendo ser um usuário, dispositivo ou outro sistema interação Ator Caso de uso
Diagrama de Pacotes • O Diagrama de pacotes definido pela UML descreve os pacotes ou pedaços do sistema divididos em agrupamentos lógicos mostrando as dependências entre estes, ou seja, pacotes podem depender de outros pacotes. • Este diagrama é muito utilizado para ilustrar a arquitetura de um sistema mostrando o agrupamento de suas classes.
Diagrama de Estrutura • O Diagrama de estrutura composta foi definido a partir da UML 2. 0 da RUP e destina-se à descrição dos relacionamentos entre os elementos. • Utilizado para descrever a colaboração interna de classes, interfaces ou componentes para especificar uma funcionalidade. RUP = Rational Unified Process (ou Processo Unificado da Rational)
Diagramas de Interação • Diagrama de sequência: – apresenta a interação de sequência de tempo dos objetos que participam na interação • Diagrama de colaboração: – mostra uma interação dinâmica de um caso de uso organizada em torno de objetos e seus vínculos mútuos, de maneira que são usados números de sequência para evidenciar a sequência de mensagens.
Diagrama de Sequência objeto 1: nome da classe objeto 2 objeto 3 : nome da classe 1. evento 2. operação texto de script 4. operação (lista de parâmetros) 3. operação (lista de parâmetros) 5. operação (lista de parâmetros)
Diagrama de Colaboração 3: operação(lista de parâmetros) 1: evento objeto 1: nome da classe nome do ator: classe do autor 2: operação objeto 2 4: operação(lista de parâmetros) 5: operação(lista de parâmetros) objeto 3 fluxo do objeto : nome da classe
Diagrama de Tempo • O Diagrama de tempo foi incluído a partir da UML 2. 0. • No diagrama de tempo é apresentado o comportamento dos objetos e sua interação em uma escala de tempo, focalizando as condições que mudam no decorrer desse período.
Diagrama de Estado: Atividade • Um diagrama de estado é tipicamente o complemento de uma classe e relaciona os possíveis estados que objetos da classe podem ter e quais eventos podem causar a mudança de estado (transição). • Diagrama de atividade – seu propósito é estudar os fluxos dirigidos por processamento interno, descrevendo as atividades desempenhadas em uma operação.
Diagrama de Estado
Diagrama de Atividade 1 [condição 1] Atividade 2 [condição 2] Atividade 3 Atividade i [condição de sincronização] Atividade n
Diagrama de Interatividade • Diagramas de interatividade são variações de “Diagrama de atividades”. • No diagrama de interatividade, sequências formam um fluxo de atividades, mostrando como elas trabalham em uma sequência de eventos.
Diagrama de Implementação • Diagrama de componente: – são mostradas dependências entre componentes de software, inclusive componentes de código fonte, código binário e componentes executáveis. • Diagrama de implantação (ou instalação): – mostra elementos de configuração de processamento run-time e os componentes de software, processos e objetos que neles se mantêm.
Diagrama de Componente
Diagrama de Implantação
• Diagrama de classe (objeto) • Diagrama de caso de uso • Diagrama de pacotes • Diagrama de estrutura • Diagramas de interação: – sequência e colaboração • Diagrama de tempo • Diagrama de estado: atividade • Diagrama de interatividade • Diagrama de Implementação: – componente e implantação Todos esses diagramas, junto com uma documentação de suporte, são elementos primários de modelagem de um sistema orientado a objetos.
Regras da UML • Nomes • Escopo • Visibilidade • Integridade • Execução quais nomes podem ser atribuídos a coisas, relacionamentos e diagramas. o contexto que determina um significado específico para um nome. como esses nomes podem ser vistos e utilizados pelos outros. como os itens se relacionam entre si de forma adequada e consistente. o que significa executar ou simular um modelo dinâmico.
Tipos de Modelos Os modelos construídos durante o desenvolvimento de sistemas complexos de software tendem a evoluir e podem ser visualizados pelos participantes de diferentes maneiras e em momentos distintos. Parciais certos elementos ficam ocultos para simplificar a visão do modelo. Incompletos certos elementos podem ser omitidos. Inconsistentes a integridade do modelo não é assegurada.
Mecanismos básicos da UML (1/4) • Especificações: – A UML é mais do que apenas uma linguagem gráfica. Por trás de cada parte de suas notações gráficas, existe uma especificação capaz de fornecer uma declaração textual da sintaxe e da semântica do respectivo bloco de construção. – p. ex. , relacionada a um ícone de classe, existe uma especificação que fornece o conjunto completo de atributos, operações (incluindo suas assinaturas completas) e comportamentos da classe.
Mecanismos básicos da UML (2/4) • Adornos: – A notação de classe expõe os aspectos mais importantes da classe: nome, atributos e operações. – A especificação da classe pode inclui outros detalhes, como se a classe é abstrata ou como é a visibilidade de seus atributos e operações. – Muitos desses detalhes podem ser representados como adornos gráficos ou textuais para a notação retangular básica da classe.
Notação gráfica para declarar Classes: A figura mostra uma classe ornamentada com a finalidade de indicar que é uma classe: a) com um atributos privado (-): raio; e b) seis métodos públicos (+): Circulo (construtor), get. Raio, set. Raio, area, perímetro e diâmetro. Nome da Classe Atributo (ou propriedade) Operações (ou métodos)
Mecanismos básicos da UML (3/4) • Divisões comuns: – Na modelagem de sistemas orientados a objetos, o mundo costuma ser divido pelo menos de duas maneiras. – Primeiro, existe a divisão de classes e objetos. Uma classe é uma abstração; um objeto é uma manifestação concreta dessa abstração. – Segundo, existe uma separação de interface e implementação. Uma interface declara um contrato e a implementação representa uma realização completa e fiel desse contrato.
Mecanismos básicos da UML (4/4) • Mecanismos de extensibilidade: – mecanismos para ampliar a linguagem de maneira controlada: estereótipos, valores atribuídos e restrições. – valores atribuídos: permite a criação de novas informações na especificação de um elemento (nro da versão, nome do autor, . . . ) – restrições: amplia a semântica dos blocos de construção da UML, permitindo acrescentar novas regras ou modificar as já existentes.
Estereótipo (1/2) • Introdução de novos elementos no metamodelo para permitir que usuários estendam a capacidade de modelagem da linguagem. • Os estereótipos são indicados com um nome que é incluso através de guillemets ( « » )
Estereótipo (2/2) « Estereótipo » Nome da Classe Atributo: tipo do dado Atributo: tipo do dado = valor inicial. . . . Operação (lista de argumentos): tipo de resultado. . . . Classe A « Estereótipo » Classe B
Estereótipo « Utilitário » gerar. Extenso. De. Valor(valor) verificar. Feriado(data). . . Nota é um comentário colocado em um diagrama sem qualquer conteúdo semântico. Nota
Noções Genéricas • Pacote: – é um mecanismo de propósito geral para organizar elementos de modelo em grupos, podendo, inclusive, estar aninhado dentro de outros pacotes (pacotes subordinados) – ajudam na administração da complexidade de sistemas de grande porte
Pacote Pessoa Parte Indivíduo Organização
Nome do pacote Conteúdo do pacote Se o conteúdo for mostrado ou Se o conteúdo não for mostrado
Pacotes • Classes são possuídas por pacotes e definidas dentro deles. • O nome de uma classe tem escopo dentro do pacote no qual é declarado (único entre nomes de classe no pacote): – classe X em um pacote Y não é igual a outra classe X em um pacote Z. • Para se referir a uma classe definida em outro pacote: – Nome. Do. Pacote: : Nome. Da. Classe
Visibilidade para Pacotes (1/2) • Privada – somente o pacote que possui o elemento ou um pacote que importa o elemento pode usá-lo • Protegida – apenas pacotes com visibilidade protegida podem usar elementos de pacotes herdados
Visibilidade para Pacotes (2/2) • Pública (default) – permite que outros elementos possam ver e usar o conteúdo do pacote • Implementação – similar à visibilidade privada, mas elementos de modelo que têm uma dependência com um pacote não podem usar os elementos dentro daquele pacote
Dependência de Pacotes (1/2) • Uma classe ou várias classes são colocadas dentro de um pacote e se uma classe em um pacote precisa utilizar uma classe em outro pacote pode desenhar uma dependência entre pacotes. • Uma dependência entre dois pacotes existe se houver dependência entre as duas ou mais classes dentro desses pacotes. Dependências não são transitivas, isso significa que se o pacote A tem dependência de B e este por sua vez tem dependência de C, não implica que A tenha dependência de C.
Dependência de Pacotes (2/2) Cliente Dependência Pacote Fornecedor pacote Classe 1 Nome do pacote Classe 2 Classe 3
Referência I • Modelagem de Objetos através da UML the Unified Modeling Language – José Davi Furlan – MAKRON Books, 1998 – Capítulo 2 - Modelando com a UML, itens 1 e 2. – pg. 72. . 89
Referência II • UML, Guia do Usuário – Grady Booch, James Rumbauch & Ivar Jacobson – Editora Campus Ltda, 2000 – Capítulo 2 - Introdução a UML. – pg. 13. . 36
- Slides: 79