UML Unified Modeling Language Linguagem de Modelagem Unificada
A linguagem UML UML (Unified Modeling Language) Linguagem de Modelagem Unificada É uma linguagem para especificação, É uma linguagem para especificação, construção, visualização e documentação de artefatos de um sistema de software.
A linguagem UML É uma família de notações gráficas, apoiada em um metamodelo único, que ajuda na descrição e no projeto de sistemas de software, particulamente daqueles construídos utilizando o estilo orientado a objetos.
A linguagem UML É uma linguagem de modelagem (visual), não uma linguagem de programação É uma linguagem de modelagem não proprietária Permite a utilização de diagramas padronizados para especificação e visualização de um sistema
De onde surgiu? Da união de três metodologias de modelagem: Método de Booch, de Grady Booch; Método OMT (Object Modeling Technique) de Ivar Jacobson; Método OOSE (Object Oriented Software Engineering) de James Rumbaugh. Os três amigos.
UML Fundadores da UML
De onde surgiu? A primeira versão foi lançada em outubro de 1994. Em novembro de 1997 a UML 1.1 foi Em novembro de 1997 a UML 1.1 foi adotada pela a OMG (Object Management Group Grupo de gerenciamento de Objetos, seu orgão aprovador) como linguagem padrão de modelagem.
O que é modelagem? Atividade de construir modelos que expliquem as características ou comportamentos de um sistema. A UML pode ser usada com todos os processos durante o ciclo de desenvolvimento do projeto Análise de requisitos; Análise de sistema; Design; Programação e Testes.
O que é modelagem? A modelagem existe porque não podemos compreender os sistemas completamente. A UML é uma linguagem completa e cheia de recursos, que permite não apenas capturar as informações, mas também expressá-las com uma sintaxe clara e objetiva.
Modelos Modelos Proporcionam: Visualização do sistema; Especificação da estrutura ou comportamento do sistema; Guia para a construção do sistema; Documentação das decisões tomadas.
Por que usar UML?
Por que usar UML? Desenvolver o modelo de uma aplicação antes de construí-la, é tão essencial quanto ter uma planta para a construção de uma casa. Analisar o projeto sobre vários aspectos; Diminui a possibilidade de erros.
Por que usar UML? Entregar um produto ou serviço (solução) de acordo com os requisitos (problema) do cliente. Ajuda o desenvolvedor a organizar a solução (arquitetura) de modo que sua construção e entrega esteja de acordo com os requisitos do cliente.
Por que usar UML? Bons modelos são essenciais para a comunicação entre os times de projetos. Facilita a programação; Todo o time entende a modelagem, facilitando assim a manutenção.
Por que usar UML? Ter um rigoroso padrão de linguagem de modelagem é um fator essencial para o sucesso de um projeto. Sistemas são dinâmicos;
E onde fica a modelagem? Análise de requisitos Modelagem Testes Implementação Manutenção Modelo de desenvolvimento mais comum. Todos os modelos são derivados dessa idéia
Recomeçando o ciclo Análise de requisitos Modelagem Testes Implementação Manutenção
Diagramas da UML DIAGRAMA OBJETIVO GRUPO DIAGRAMA CLASSES Classe, características e relacionamentos Estrutural COMPONENTES Estrutura e conexão de componentes Estrutural ESTRUTURAS COMPOSTAS Decomposição de uma classe em tempo de execução Estrutural INSTALAÇÃO Distribuição e artefatos nos nós Estrutural OBJETOS Exemplo de configurações de instâncias Estrutural PACOTES Estrutura hierárquica em tempo de compilação Estrutural CASOS DE USO Como os usuários interagem com um sistema Comportamental ATIVIDADES Comportamento procedimental e paralelo Comportamental MÁQUINAS DE ESTADO Como os eventos alteram um objeto durante sua vida Comportamental SEQUÊNCIA Interação entre objetos: ênfase na seqüência Interação COMUNICAÇÃO Interação entre objetos; ênfase nas ligações Interação INTERAÇÃO Mistura de diagrama de seqüência e de atividades Interação SINCRONISMO Interação entre os objetos;ênfase no sincronismo Interação
Ferramentas CASE Auxiliam na construção e gerenciamento de diagramas UML Rational Rose Enterprise Architect Jude MS Visio PowerDesign ArgoUML Poseidon
Paradigmas de Programação Orientado a objetos
Paradigma Orientado a Objetos Nome: joão Data Nascimento: 13/02/78 Endereço:avenida pará,22 DADOS - Inserir informações - Alterar informações - Excluir informações - Consultar informações PROCESSOS
Paradigma Orientado a Objetos A OO surgiu como uma nova forma de modelar e construir sistemas de softwares de organizar e gerir as informações manipuladas e geradas dentro das Empresas. Na OO Dados e Processos são vistos como Atributos e Métodos (ou Operações) realizadas por Objetos.
Paradigma Orientado a Objetos A análise orientada a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema; Na programação orientada a objetos, Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema;
Paradigma Orientado a Objetos Programa Processos Classe Atributos Dados Métodos
Paradigma Orientado a Objetos MOTIVAÇÃO PARA USO: Independência de implementação Esconder Detalhes (Ocultamento) Flexibilidade Clareza conceitual Modularização Reusabilidade
Paradigma Orientado a Objetos Objetivo Objetivo de criar programas que sejam facilmente adaptados a mudanças; Essa funcionalidade existe em função do projeto, de como a solução foi pensada;
POO- Troca de mensagens Mundo é um conjunto de objetos que interagem entre si por meio de mensagens; Os objetos enviam mensagens uns para os outros e esperam um retorno dessas mensagens; Um objeto pode fazer solicitações a outros objetos sem precisar conhecer a estrutura interna desses objetos; Isso facilita a mudança pois o comportamento dos objetos pode ser alterado sem prejudicar a comunicação entre os objetos;
Paradigma Orientado a Objetos O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados.
POO Principais conceitos
Paradigma Orientado a Objetos Classe Descrição de um tipo de objeto; Conjunto de objetos que apresentam características em comum; Descrevem as propriedades e comportamentos dos objetos através dos atributos e dos métodos;
Paradigma Orientado a Objetos Classe Ex: para descrever todas as canetas, poderia haver a classe CANETA, com seus atributos (cor da tinta, capacidade da tinta) e com suas operações especificadas (escrita, recarga). Tendo definido a classe, é possível criar objetos particulares para representar as diversas canetas. Ao criar um objeto é necessário inicializar seus atributos; As operações podem requerer a leitura desses atributos;
Paradigma Orientado a Objetos Classe Ex: Classe Pessoa, atributos (data_nascimento, peso, profissão) Objeto: Paulo (25/01/1979, 80 quilos, estudante) Objeto: Maria (09/07/1950, 98 quilos, professora) Classe Pedidos, atributos(número Pedido, Nome do destinatário, Valor do frete) Objeto: 10251 (10251, Hanari Carnes, R$ 148,33) Objeto: 10252 (10252, Que Delícia, R$ 3,05)
Paradigma Orientado a Objetos Representação gráfica de uma classe
public class Carro { POO Implementação da classe Carro //Atributos da classe public String cor = ""; public String modelo = ""; public String motor = ""; } //Métodos da classe public void ligar(){ } System.out.println("Ligando o carro"); public void desligar(){ } System.out.println("Desligando o carro"); public void acelerar(){ } System.out.println("Acelerando o carro");
Paradigma Orientado a Objetos Tipos de Classes (Abstrata x Concreta): Abstrata: Serve apenas como superclasse, isto é, não existem instâncias desta classe. Os métodos são declarados mas seu comportamento não é definido Normalmente usadas para definição de classes que serão utilizadas através de herança por classes concretas;
Paradigma Orientado a Objetos Por exemplo, a compilação do seguinte trecho de código: abstract class AbsClass { public static void main(string[] args) { AbsClass obj = new AbsClass(); } geraria a seguinte mensagem de erro: AbsClass.java:3: class AbsClass is an abstract class. It can t be instantiated. AbsClass obj = new AbsClass(); 1 error
POO Classe abstrata exemplo de implementação abstract class AbsClass { public abstract int NomeDoMetodo(); } class ConcClass extends AbsClass { public int ummetodo() { return 0; }}
Paradigma Orientado a Objetos Tipos de Classes: Concreta: Possui todas as definições dos seus métodos, portanto desta classe podem ser instanciados objetos; Exemplo: Vide classe carro anteriormente apresentado.
Paradigma Orientado a Objetos Objetos Instâncias de uma classes, possuem um conjunto de atributos e métodos; Modelam entidades do mundo real; É algo real, que pode ser visualizado, pensado, tocado; Ex: carro, pessoa
Paradigma Orientado a Objetos Objetos É Capaz de: armazenar estados através de seus atributos reagir a mensagens enviadas se relacionar e enviar mensagens a outros objetos;
Paradigma Orientado a Objetos Objetos Todos os dados que o sistema pode requerer devem estar definidos nos objetos; Todas as interações e cálculos só podem ser realizados pelos objetos; Necessidade de compreender exatamente qual a funcionalidade e como o objeto será utilizado para definir todos os atributos e métodos necessários;
Paradigma Orientado a Objetos Classe X Objeto Objetos existem apenas em tempo de execução, classe são conceitos São os objetos que armazenam valor, as classes apenas mapeiam esses atributos; Classe: idéia, conceito; Objeto: elemento concreto, real de uma classe; Classe = forma de objetos;
Paradigma Orientado a Objetos Exemplo: Declarando uma Classe: class Pessoa { string nome; void Andar() { } } Declarando um Objeto: Pessoa objpessoa1 = new Pessoa();
Paradigma Orientado a Objetos Classe pessoa Nome: Idade: Profissão: Objeto Maria, Objeto Paulo,... Maria 20 anos estudante
Paradigma Orientado a Objetos Atributo Conjunto de características específicas de um objeto; Informações interessantes sobre algum objeto; Ex: Classe: Pessoa Atributos:nome, idade, cor dos olhos; Classe: Automóvel Atributos: placa, cor, ano; Classe: Produtos Atributos: NomeDoProduto, CódigoDoFornecedor, UnidadesEmEstoque;
Paradigma Orientado a Objetos Métodos Definem a habilidade dos objetos; Característica que permite alterar a funcionalidade de um atributo; São os serviços que o objeto pode prover; São as ações designadas aos objetos; Ex: Objeto: Maria Métodos: caminhar,comer, dormir; Objeto: Cachorro Métodos: latir, morder, rosnar; Objeto: Gol Métodos: andar, buzinar,abastecer;
Paradigma Orientado a Objetos Mensagens Mecanismo de comunicação entre objetos; Chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe Para invocar um método de um objeto, deve-se enviar uma mensagem para este objeto. Para enviar uma mensagem deve-se: identificar o objeto que receberá a mensagem identificar o método que o objeto deve executar passar os argumentos requeridos pelo método. EX: tbarquivohistoricodata.inserttbarquivohistorico(idarquivo, EnumStatusArquivoHistorico.ProblemaEnviarEmailArquivoRetorno);
POO Exemplo implementação Exemplo envio de mensagens public class Clientes { protected String status; protected int codigo = 0; public void setcodigo(int codigo) { this.codigo = codigo; } public int getcodigo(){ return this.codigo; } public class TesteCliente { public static void main (String[] args) { String status = ""; Clientes c = new Clientes(); c.setcodigo(999); c.excluir(); status = c.getstatus(); System.out.println("Status: " + status); } } //Métodos public void excluir(){ status = "Código " + codigo + " excluído!"; }
Características Abstração: Habilidade de modelar características do mundo real do problema que se quer resolver; Descrever as características essenciais de uma entidade que as distinguem de todos os outros tipos de entidades; Exemplo: Entre pessoa física e pessoa jurídica abstrair pessoa. Entre dados Oracle e dados Postgre abstrair dados.
Características Abstração - Exemplo de aplicação:
Características Encapsulamento: Separação de aspectos internos e externos dos objetos Ocultamento de informações, objetivo de proteger os dados; Permite que se ignore detalhes de baixo nivel de como as coisas funcionam internamente;
Características Encapsulamento: Mecanismo utilizado para impedir o acesso direto ao estado de um objeto(seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados; Ex: botões e funções de um dvd, lidamos apenas com a interface disponibilizada.
Características Variáveis privadas Métodos privados Internos do objeto Variáveis públicas Métodos públicos Interface para outros objetos
Encapsulamento - Exemplo public class Clientes { // Atributos tipo propriedades private int codigo = 0; private String nome = ""; } public void SetCodigo(int codigo){ this.codigo = codigo; } public int getcodigo(){ return this.codigo; } public void setnome(string nome){ this.nome = nome; } public String getnome(){ return this.nome; }
Características Herança: Permite que uma sub-classe estenda uma classe pai, aproveitando seus comportamentos e estados possíveis; capacidade de uma classe filho herdar um ou mais atributos e métodos de uma classe pai; além das propriedades definidas na própria classe filho; permite a reutilização de código; Mecanismo pelo qual elementos mais específicos incorporem a estrutura e o comportamento de elementos mais genéricos;
Características Mamíferos -peso -nr. Patas -ambiente de vida Homem Cão Gato Baleia -peso -nr. Patas -ambiente de vida -rir() -falar() -peso -nr. Patas -ambiente de vida -latir() -morder() -peso -nr. Patas -ambiente de vida -arranhar() -miar() -peso -nr. Patas -ambiente de vida -nadar() -esguichar()
Características ESTUDANTE especialização (herança) generalização ESTUDANTE DE GRADUAÇÃO ESTUDANTE DE PÓS GRADUAÇÃO
Características Ao se estabelecer uma Especialização (subclasse) de uma classe, a subclasse herda as características comuns da superclasse, isto é, a especificação dos atributos e dos métodos da superclasse passam a fazer parte da especificação dos atributos e dos métodos da subclasse A subclasse pode adicionar novos métodos, como também reescrever métodos herdados
Características Polimorfismo: Possuir várias formas, Uma classe possui uma operação e suas Uma classe possui uma operação e suas sub-classes possuem a mesma operação com outro comportamento;
Características Ex 1: dentro de uma classe, diversos métodos com assinaturas diferentes; Para invocar um método de um objeto, deve-se enviar uma mensagem para este objeto. Para enviar uma mensagem deve-se: identificar o objeto que receberá a mensagem identificar o método que o objeto deve executar passar os argumentos requeridos pelo método
Exemplo 1 Somar (Num1,Num2) X=Num1 + Num2 Escreve X Somar(Num1, Num2, Num3) Y= Num1 + Num2 + Num3 Escreve Y Calculadora -somar ( Num1, Num2) -somar ( Num1, Num2,Num3)
Exemplo 2 Mamíferos -falar() Homem Cão Gato -falar() -falar() -falar() Msg: Eu posso falar!! Au!au!au Miau! Miau!