Orientação a Objetos e UML Parte I Objetivos – Apresentar os conceitos fundamentais de modelagem e orientação a objetos; – Apresentar os quatro diagramas principais da UML: Casos de Uso, Classes, Seqüência e Atividade; – Estabelecer a ligação entre a modelagem e a programação de sistemas orientados a objetos. Bibliografia 1. Modelagem de Objetos Através da UML, José Davi Furlan, Editora Makron Books, 2000, ISBN 8534609241; 2. UML Guia do Usuário, Grady Booch, James Rumbaugh, Ivar Jacobson, Editora Campus, 2000, ISBN 8535205624; 3. Mastering UML com Rational Rose 2002 – Bíblia, Boggs Wendy, Michael Boggs, Editora Alta Books Ltda, 2002; 4. UML Essencial: Um breve guia para a linguagem-padrão de modelagem de objetos, Martin Fowler e Kendal Scott, Ed. Bookman, 2000. Referências na Internet 1. http://www.uml.org 2. http://www.uml-forum.com 3. http://www.rational.com 4. http://argouml.tigris.org/ (Ferramenta CASE Argo) 5. http://www.gentleware.com (Ferramenta CASE Poseidon) 6. http://www.borland.com/together/index.ht ml (Ferramenta CASE Together) 1. Conceitos Fundamentais Unidade de Aprendizado 1. Conceitos Fundamentais • Objetivos – Apresentar os conceitos envolvidos na Modelagem de Sistemas; – Explorar a importância e a necessidade de modelar sistemas. – Apresentar os conceitos fundamentais sobre Orientação a Objetos. • Conteúdo 1. Modelagem de Sistemas. 2. Orientação a Objetos. 1.1. Objetivo da Modelagem de Sistemas 1.1. Objetivo da Modelagem de Sistemas • A Atividade de Desenvolvimento de Sistemas – Objetivos da Empresa de Desenvolvimento de Software: • Produtos de Qualidade; • Atender as necessidades do cliente; • Preços competitivos. – Foco nos Clientes: • Centro da atenção no desenvolvimento; • Atender aos requisitos do usuário. – Viabilidade do Projeto: • Equilíbrio entre custos de desenvolvimento e benefícios para o cliente. 1.1. Objetivo da Modelagem de Sistemas • O Papel da Modelagem – Existem dois tipos de modelos: • Estrutura; • Comportamento; – Os modelos traduzem COMO as coisas serão construídas: • Relações entre as partes; • Funcionamento; • Disposição. – Os modelos traduzem o tamanho e a complexidade do sistema. 1.1. Objetivo da Modelagem de Sistemas • O Que é um Modelo? – Um modelo é uma simplificação da realidade. – Modelos são esquemas gráficos que representam o sistema. – Os modelos traduzem: • ESTRUTURA: – Organização de módulos; – Relacionamentos; • COMPORTAMENTO: – Dinâmica; – Inter-relacionamento; – Funcionalidade. 1.1. Objetivo da Modelagem de Sistemas • O Que é um Modelo? – Construímos modelos para: • Visualizar o sistema como ele é ou como desejamos que ele seja; • Dominar a complexidade e entender o sistema; • Delimitar o escopo de um problema; • Comunicação entre equipe; • Ajudar a planejar as soluções; • Guiar o desenvolvimento do sistema. 1.1. Objetivo da Modelagem de Sistemas • O Que é um Modelo? – Características dos Modelos: • Perspectivas diferentes; • Analogia com a realidade; • Complementaridade; 1.1. Objetivo da Modelagem de Sistemas • Modelagem Orientada a Objetos – Tradicional: • Foco do desenvolvimento nos processos; – Orientada a Objetos: • Foco do desenvolvimento nas entidades que participam dos processos. – Entidades do mundo real: • Pessoas - Funcionário, Vendedor, Professor, Aluno. • Lugares - Sala, Estoque, Estante, Prateleira. • Fatos - Conta-Corrente, Matrícula, Pedido de Compra, Apólice de Seguro. • Coisas - Livro, Caminhão, Fita VHS, Computador. 1.1. Objetivo da Modelagem de Sistemas • Modelagem Orientada a Objetos 1.1. Objetivo da Modelagem de Sistemas • Modelagem Orientada a Objetos - Benefícios – Benefícios Técnicos: • Reusabilidade; • Extensibilidade e manutenção; • Aumento da qualidade; – Benefícios Econômicos: • Apoio ao planejamento; • Reaproveitamento de esforços. 1.1. Objetivo da Modelagem de Sistemas • Modelagem Orientada a Objetos - Definições – James Rumbaugh Uma nova maneira de pensar os problemas, utilizando modelos organizados a partir de conceitos do mundo real. O componente fundamental é o objeto, que combina estrutura e comportamento em uma única entidade. 1.1. Objetivo da Modelagem de Sistemas • Modelagem Orientada a Objetos - Definições – Grady Booch Leia a especificação do software que você quer criar. Sublinhe os verbos se quiser uma codificação procedural ou os substantivos se visar a um programa orientado a objetos. 1.1. Objetivo da Modelagem de Sistemas • Exercício Nº 1 2 3 Substantivos Verbos 1.2. Orientação a Objetos 1.2. Orientação a Objetos • Analogia Orientada a Objetos – Imagine que você recebeu como herança, um grande terreno. – Esse terreno é identificado por um número. 1.2. Orientação a Objetos • Analogia Orientada a Objetos – Você contrata um arquiteto a fim de projetar uma casa. – O arquiteto faz várias perguntas sobre a casa, a sua forma, estilo e funcionalidade. – O arquiteto trabalha algum tempo no projeto da casa e entrega as plantas para que você possa construir. 1.2. Orientação a Objetos • Analogia Orientada a Objetos – Você contrata uma construtora para erguer a casa. – A construtora leva algum tempo e termina o serviço. – Existe alguma casa no terreno? Sim, a casa ocupa espaço no terreno. 1.2. Orientação a Objetos • Processador e Memória – A memória é dividida em partes referenciadas por endereços. – Existem partes da memória que estão ocupadas e outras livres. – Dentro de um programa, podemos alocar espaço na memória e construir objetos. – Esses objetos são acessados através de um endereço de memória ou de uma referência ao endereço. 1.2. Orientação a Objetos • Classe – Conceito de Classe: • As plantas da casa representam a classe. • É a partir da classe que se constrói um objeto na memória. • É a definição da forma e funcionalidade de alguma coisa. – Responsabilidade da Classe: • É o que a classe “sabe” e o que ela “faz”. • O que a classe “sabe” são as propriedades ou seus atributos. • O que a classe “faz” são os seus métodos ou funções. 1.2. Orientação a Objetos • Exemplo – Vamos imaginar que em um sistema exista a classe Aluno. – O que Aluno sabe? • Seu nome, • Seu endereço, • Seu número de matrícula etc. – O que o Aluno faz? • Se matricula em um Curso, • Tranca a matricula, • Tem Avaliações etc. 1.2. Orientação a Objetos • Tipos de Classes – Classes de Interface: • • • • Botões, Listas, Checkboxes, Scrollbars etc. – Classes de Negócio: • • • • Cliente, Pedido, Item de Pedido, Produto etc. – Classes de Controle: • • • • Data, Conexão com Banco de Dados, Gerenciador de Impressão, Leitura e Gravação de Arquivos etc. 1.2. Orientação a Objetos • Objeto – Quando alocamos espaço na memória e usamos o construtor de uma classe, um objeto é criado. – Um objeto não interfere em outro. – Instância é sinônimo de objeto. – Instanciar significa criar um objeto a partir de uma classe. 1.2. Orientação a Objetos • Classe e Objeto 1.2. Orientação a Objetos Outra forma de desenhar a classe Propriedades Cliente Nome Idade Funções 1.2. Orientação a Objetos • Propriedade – As propriedades são os dados que guardam as características e o estado dos objetos criados a partir da classe. – É o que a classe “sabe”. – O relógio digital tem as propriedades “hora” e “minuto”. 1.2. Orientação a Objetos • Método – O termo método representa as funcionalidades inerentes à classe. – É o que a classe “faz”. – Para alterar o mostrador do relógio digital não podemos simplesmente exibir um número qualquer. – Existe um “método” para fazer isso. 1.2. Orientação a Objetos • Método Construtor e Destrutor – A função do método construtor é inicializar um objeto na memória. • Através dele é possível que o objeto na memória tenha valores iniciais. • Esse método é usado, por exemplo, para construir a tela da aplicação e abrir a conexão com o banco de dados. – O método destrutor permite “fechar” o ciclo de vida do objeto, dando condições de finalização ao programador. 1.2. Orientação a Objetos • Assinatura – É a chamada de um método. Identifica um método pelo nome, a quantidade e tipos dos argumentos passados por parâmetros. – Um método é reconhecido pelo seu nome e seus parâmetros CancelarAssinatura(codAssinante) AlterarPagamento(codAssinante, novaDataPagamento) 1.2. Orientação a Objetos • Herança – Relacionamento de generalização e especialização entre classes. – Permite ao programador criar uma nova classe “estendendo” uma classe anterior. – A herança define uma hierarquia onde o conceito mais genérico fica sobre o conceito mais específico. 1.2. Orientação a Objetos • Herança 1.2. Orientação a Objetos • Encapsulamento • • • • A Classe é um “pacote”, contendo dados e operações; O objeto é referenciado como um módulo único; É a proteção dos dados internos da classe; Os dados só podem ser acessados sob determinadas condições. • É implementado através da “Visibilidade” mais restrita. 1.2. Orientação a Objetos • Encapsulamento – Um sistema não deve depender da sua implementação interna e sim de sua interface com o mundo exterior. – A interface de uma classe é a forma pela qual ela Cliente será acionada e se relacionará com as outras partes do sistema. Encapsulamento – acessar os Nome Dt_nascim dados através dos métodos da classe 1.2. Orientação a Objetos • Polimorfismo – Vários comportamentos que uma mesma operação pode assumir. – Polimorfismo (muitas formas) é a capacidade de um programa orientado a objetos distinguir, dentre métodos homônimos, qual deverá ser executado. 1.2. Orientação a Objetos Polimorfismo – Métodos Sobrecarregados - são os métodos homônimos dentro de uma mesma classe. Retângulo Desenhar(p1,p2,p3,p4) Desenhar(alt,larg) Métodos na mesma classe com assinatura diferente - Sobrecarga Empregado Nome Funcao Dt_Admissao Empregado(nome) Empregado(nome,funcao,dt) 1.2. Orientação a Objetos • Polimorfismo • Métodos Sobrescritos - são métodos homônimos em uma relação de herança. Empregado nome ObterEmpregado( ) Métodos com a mesma assinatura em uma herança - Sobrescrita Vendedor comissão ObterEmpregado( ) 1.2. Orientação a Objetos • Polimorfismo 1.2. Orientação a Objetos • Modularidade – É a separação dos serviços em um conjunto de módulos que guardam independência de compilação e execução. – A modularidade leva a uma separação entre a interface do sistema e o código que vai executar os serviços. – Otimiza o processo de manutenção de código. 1.2. Orientação a Objetos • Persistência – É o tempo total que um objeto permanece na memória (auxiliar ou principal). – Os objetos de negócio devem ser persistentes. – É comum a utilização de bancos de dados para tornar os objetos persistentes. 1.2. Orientação a Objetos • Abstração – É a ocultação de certos aspectos de implementação. – O objetivo é diminuir a complexidade, focando um problema por vez. 1.2. Orientação a Objetos • Classe Abstrata – E uma classe que define o comportamento e atributos para subclasses. – Não é instanciada diretamente. 1.2. Orientação a Objetos • Estereótipo – Os estereótipos são extensões de elementos do modelo. Podem ser usados para denotar especializações significativas de classes. – Os atores, por exemplo, são tratados pelas ferramentas de modelagem como classes estereotipadas. – Os estereótipos podem ser indicados através de ícones próprios, ou incluindo-se o nome do estereótipo em aspas francesas (os caracteres « », representados nos desenhos por << >>). 1.2. Orientação a Objetos • Estereótipo – Estereótipos são usados para criar especializações da UML em relação a determinadas áreas de modelagem. – Ivar Jacobson propõe a divisão das classes do Modelo de Análise de acordo com estereótipos, que foram incorporados ao padrão oficial da UML. Esses estereótipos podem ser representados por textos ou ícones. São eles: Entidades (tabelas), Fronteiras (telas) e de Controle (conexão com banco, gerenciador de impressão,...). 1.2. Orientação a Objetos • Exercício • Identifique as propriedades e métodos das classes listadas. Nº Nome da Classe Propriedades Métodos 1 Professor Nome, Endereço, Telefone, Disciplina Lançar Notas, Fornecer Nome, Requisitar lista de Alunos 2 Aluno 3 Filme 1.2. Conclusão da UA 1 – A Orientação a Objetos é uma TECNOLOGIA que envolve desde a concepção do sistema e da sua modelagem até a implementação utilizando linguagens orientadas a objetos. 2. A UML e o Processo de Desenvolvimento de Sistemas 2. A UML e o Processo de Desenvolvimento de Sistemas • Objetivos – Apresentar as origens da UML e suas versões; – Mostrar os diagramas da linguagem e os seus principais conceitos; – Relacionar como ocorre o processo de desenvolvimento iterativo e incremental. • Conteúdo 1. Origens da UML; 2. Versionamento da UML; 3. Diagramas da UML; 4. Rational Unified Process; 2.1. Origens da UML 2.1. Origens da UML • O Que é UML? – A Unified Modeling Language nasceu (1994) da junção de vários métodos (Booch, OOSE e OMT), por isso se chama unificada. – A UML é uma linguagem para especificar, visualizar, construir e documentar os artefatos de software. – Padrão OMG (UML 1.1 – 1997) – Contribui para as melhores práticas de engenharia de software, pois é uma linguagem visual. 2.1. Origens da UML • Definição em Três Partes – Primeiro: a UML funde os conceitos de Grady Booch, James Rumbaugh e Ivar Jacobson. 2.1. Origens da UML • Definição em Três Partes – Segundo, a UML é genérica e flexível. – Se aplica a uma diversidade de sistemas. 2.1. Origens da UML • Definição em Três Partes – Terceiro, a UML tem como foco uma linguagem de modelagem padronizada e não se preocupa com a metodologia de desenvolvimento. – Método = Linguagem (UML) + Processo (RUP) 2.1. Origens da UML • Versionamento da Linguagem – Atualmente na versão 1.5, em atualização para a 2.0, novidades: • • • • • XMI, Comunication Diagram, Composite Structure Diagram, Interaction Overview Diagram, Timming Diagram (http://www.agilemodeling.com) 2.1. Origens da UML • Certificação em UML – Provas para UML Professional: • Iniciante (Class Diagrams, Activity diagrams, Interaction Diagrams, Use Case Diagrams, Miscellaneous basic notions) • Intermediária (Composite Structure Diagrams, Component diagrams, Action Model, Activity Diagrams, Interaction Diagrams, State Machines, Deployment diagrams) • Avançada (Class Diagrams, Composite Structure diagrams, Component diagrams, Action Model, Activity Diagrams, Deployment diagrams, State Machine Diagrams, Miscellaneous Advanced Constructs and Diagramming, Language Architecture, Object Constraint Language) 2.2. Rational Unified Process 2.2. Rational Unified Process • Processo de Desenvolvimento – O processo de desenvolvimento é composto por diversas fases; – Em cada fase precisamos executar diversas atividades. – Esse esforço tem como alvo principal a construção de um sistema de qualidade. 2.2. Rational Unified Process • Origens – O RUP foi desenvolvido originalmente na Suécia por Ivar Jacobson, sendo batizado, na ocasião da sua concepção, de Objectory. – Trata-se de um processo iterativo e incremental e indica o uso da UML. – O RUP é um framework. 2.2. Rational Unified Process • Descrição em Duas Dimensões Concepção Elaboração Construção Transição Levantamento de Dados Análise e Projeto Implementação Teste Gerenciamento Suporte ao Desenvolvimento Suporte à Produção Tempo Iterações 2.2. Rational Unified Process • Descrição em Duas Dimensões As “ondas” representam a carga de trabalho 2.2. Rational Unified Process • Fase de Concepção – Na fase de concepção é estabelecido o contexto de negócio para o sistema e delimitado o escopo do projeto. – O contexto de negócio inclui também um critério de sucesso, ponderado em função de recursos e tempo. – Devemos elaborar um cronograma básico de execução com as principais fases e datas de entrega. – Nessa fase o sistema é descrito através de um texto sumário, resumindo o que é o sistema, e de um diagrama de Caso de Uso geral, contendo os atores e as suas principais funcionalidades. 2.2. Rational Unified Process • Fase de Elaboração – Consiste de uma análise mais refinada do sistema a ser construído, juntamente com um plano detalhado de trabalho a ser feito. – Elaboração de um projeto completo, com o detalhamento de interações e estrutura do sistema. – Construir um protótipo que teste a arquitetura escolhida. – Nessa fase os Casos de Uso são completamente detalhados, são elaborados todos os diagramas de classes identificadas, são feitos protótipos das telas e o projeto lógico do banco de dados é elaborado. 2.2. Rational Unified Process • Fase de Construção – Trabalhamos sobre o protótipo da fase anterior adicionando novas funcionalidades e refinando as funcionalidades pré-existentes. – O gerente do projeto define várias versões que devem ser liberadas a cada ciclo. – A cada ciclo é necessário rever os requisitos de cada parte da aplicação. – Nessa fase os módulos do sistema são implementados e refinados em ciclos (iterações). O projeto físico do banco de dados é implementado. 2.2. Rational Unified Process • Fase de Transição – Nessa fase o software pode ser instalado em ambiente de produção para que os clientes possam trabalhar com ele - versão beta. – A medida em que testes são executados e melhorias são implementadas é produzida a versão final do produto. – Nessa fase, além da versão beta e do produto final, são produzidos os manuais e componentes de distribuição do software. 2.2. Rational Unified Process • Exercício – Que documentos e produtos são obtidos a partir de cada fase do RUP? • Concepção: • Elaboração: • Construção: • Transição: 2.3. Diagramas da UML Bloco de Construção do Aprendizado 2.3. Diagramas da UML (V 1.5) Diagrama de Seqüência Diagrama de Objetos Diagrama de Caso de Uso Diagrama de Classe Diagrama de Colaboração Modelos Diagrama de Estado Diagrama de Atividade Diagrama de Componente Diagrama de Implantação 2.3. Diagramas da UML Captura de Requisitos Análise e Projeto Implementação Estados Casos de Uso Sequência Distribuição Classes Colaboração Atividade (fluxo de trabalho, casos de uso) Componentes Atividade (comportamento objeto, Algoritmo, operação) 2.3. Diagramas da UML • Cenário de uma Aplicação – Este cenário apresenta os oito tipos de diagramas UML na modelagem de um sistema de software para uma locadora de veículos. 2.3. Diagramas da UML • Diagrama de Caso de Uso – Especifica uma interação entre um usuário e o sistema, no qual o usuário tem um objetivo muito claro a atingir. • O cliente faz a reserva de um carro; • O cliente retira o carro; • O cliente devolve o veículo. 2.3. Diagramas da UML • Diagrama de Caso de Uso Sistema de Aluguel de Carro Reservar Carro Cliente Retirar Carro Devolver Carro 2.3. Diagramas da UML • Diagrama de Classe – A próxima tarefa é a classificação dos objetos envolvidos neste processo e a relação de uns com os outros. – Diagramas de classe mostram a estrutura geral do sistema e também as suas propriedades relacionais e de comportamento. • Cliente; • Mecânica; • Locação. 2.3. Diagramas da UML • Diagrama de Classe Os diagramas são complementares ! Se o sistema controlar todas essas informações teremos alteração no Diag. Caso de Uso anterior 2.3. Diagramas da UML • Diagrama de Seqüência – Mostra uma interação organizada em forma de uma seqüência, dentro de um determinado período de tempo. – Os participantes são apresentados dentro do contexto das mensagens que transitam entre eles. – O diagrama de seqüência é um diagrama de interação. 2.3. Diagramas da UML •Diagrama de Seqüência Objetos : Cliente Fronteira Solicitação de Carro : Carro : Cliente' : Aluguel BuscaCarro( ) •Reservar Carro •Curso Normal Mensage m Informa Reserva (data,carro) Calcula Aluguel( ) Identificação Pessoal VerificaHistorico( ) CadastraReserva( ) Tempo VerificaHistorico( ) 2.3. Diagramas da UML • Diagrama de Colaboração – Mostra como um grupo de objetos num caso de uso interage com os demais. – Cada mensagem é numerada para documentar a ordem na qual ela ocorre. – O diagrama de colaboração também é um diagrama de interação. 2.3. Diagramas da UML • Diagrama de Colaboração 1: Solicitação de Carro 3: Informa Reserva (data,carro) 5: Identificação Pessoal 2: BuscaCarro( ) 4: Calcula Aluguel( ) Fronteira : Carro : Cliente 8: CadastraReserva( ) : Aluguel 6: VerificaHistorico( ) : Cliente' 7: VerificaHistorico( ) 2.3. Diagramas da UML • Diagrama de Estado – Mapeia diferentes estados em que se encontram os objetos, e desencadeia eventos que levam os objetos a se encontrarem em determinado estado em um dado momento. 2.3. Diagramas da UML Diagrama de Estado – Classe Carro Início Fim Na Garagem Vendido Em manutenção Alugado 2.3. Diagramas da UML • Diagrama de Atividade – Apresenta a lógica que ocorre em resposta a ações desencadeadas internamente. – Se reporta a uma determinada classe ou caso de uso. 2.3. Diagramas da UML • Diagrama de Atividade • Reservar Carro O losango mostra o desvio de execução Verificar Histórico Cliente Informações do Aluguel Cadastra Reserva Rejeição do Cliente 2.3. Diagramas da UML • Diagrama de Componentes – Mostra como os diferentes subsistemas de software formam a estrutura total de um sistema. 2.3. Diagramas da UML • Diagrama de Componentes Linhas tracejadas indicam dependência Página ASP Segurança.DLL SistemaWEB.DLL BancoGenerico.DLL SQL Server 2.3. Diagramas da UML • Diagrama de Implantação – Mostra como estão configurados o hardware e o software dentro de um determinado sistema. 2.3. Diagramas da UML • Diagrama de Implantação Servidor de Aplicação Página ASP Servidor de Negócios Segurança.DLL SistemaWEB.DLL BancoGenerico.DLL Servidor de Banco de Dados SQL Server 2.3. Diagramas da UML • Exercício – Divida os diagramas vistos nessa seção em três grupos: – Visão dos Requisitos do Sistema: – Visão da Estrutura do Sistema: – Visão da Dinâmica do Sistema: – Visão do Funcionamento das “Partes Físicas” do Sistema: Conclusão da UA 2 – A UML não tem uma metodologia embutida, permitindo que o desenvolvedor use os diagramas como bem entender. – Cada diagrama da UML mostra uma “visão” do sistema. Nenhum diagrama permite ter a idéia do sistema por inteiro. – O RUP é uma proposta de metodologia de desenvolvimento de sistemas que usa a UML como notação.