Anda di halaman 1dari 105

UML

Unified Modeling Language Linguagem de Modelagem Unificada

Professor Cleber @ Tavares Junior .com

UML

O que ? Uma linguagem no-proprietria para modelagem de sistemas Permite que os desenvolvedores visualizem os produtos de seus trabalhos de forma padronizada

Professor Cleber @ Tavares Junior .com

UML
Para qu serve? uma forma eficiente de comunicao entre analistas, dba's, programadores, usurios e stake-holders de sistemas Especificar, documentar, estruturar, sub-visualizar sistemas

Professor Cleber @ Tavares Junior .com

UML
O que no ? UML no metodologia de desenvolvimento (rup/scrum/xp...) No diz o que fazer antes ou depois ou como projetar seu sistema Ela sim auxilia a visualizar seu projeto/desenho e a comunicao entre seus objetos

Professor Cleber @ Tavares Junior .com

UML
Qual sua histria? 1994 Rumbaugh se junta a Booch na Rational, se juntam a Jacobson e fazem um esforo de um ano para unificar as melhores prticas de engenharia 1997 Aprovada como padro pela OMG (object management group)

Professor Cleber @ Tavares Junior .com

UML
Qual seu futuro? Pode ser estendida sem alterar sua estrutura Muitas ferramentas de desenvolvimento j a usam para modelagem visual Ajuda a acelerar o desenvolvimento de softwares orientados a objetos (reuso)

Professor Cleber @ Tavares Junior .com

UML
Como usa?

Professor Cleber @ Tavares Junior .com

UML
Quais ferramentas auxiliam? Astah (ex-Jude): http://astah.net/editions/community Free UML tool: http://www.visual-paradigm.com/solution/freeumltool/

E muitas outras...

Professor Cleber @ Tavares Junior .com

UML

Quais alguns conceitos? Ator papel relativo ao sistema Atividade fluxos conduzidos por processamento Evento resultado de uma ao

Professor Cleber @ Tavares Junior .com

UML
Quais alguns conceitos?

Classe abstrao de caractersticas similares Interface camada de abstrao que permite o reuso Pacote conjunto de classes

Professor Cleber @ Tavares Junior .com

UML
Quais alguns elementos e diagramas?
Diagrama de classes Diagrama de objetos Diagrama de interfaces Diagrama de pacotes

Diagrama de estrutura (fsica) Diagrama de implementao (estruturais)


Professor Cleber @ Tavares Junior .com

UML
Quais alguns elementos e diagramas?
Diagrama de casos de uso Diagrama de transio de estados Diagrama de atividades Diagrama de sequncia Diagrama de interatividade Diagrama de colaborao

(comportamentais e de interao)
Professor Cleber @ Tavares Junior .com

UML

Quais algumas referncias? Fonte original: http://www.uml.org/

Use a Cabea: Anlise e Projeto Orientado ao Objeto (UML)

Professor Cleber @ Tavares Junior .com

UML
Exerccios Descreva com suas palavras o qu voc entendeu por UML, qual a importncia que voc v nessa linguagem para sua vida profissional?

Mande sua resposta por email para o professor (vide rodap) com o assunto INFNET turmaA2011 tarefa01

Professor Cleber @ Tavares Junior .com

UML
Exerccios - Montagem dos grupos / empresas - Cada empresa deve definir rea de atuao (podendo ou no existirem iguais) - Cada empresa deve definir um sistema necessrio sua rea de atuao
Professor Cleber @ Tavares Junior .com

UML

Exerccios
- Cada empresa deve iniciar a anlise de requesitos deste sistema - Para isso, ser utilizado a descrio de Casos de Uso e seu diagrama UML

Professor Cleber @ Tavares Junior .com

UML

Casos de uso: Tratam da formalizao, documentao e comunicao de partes dos requisitos funcionais de sistemas computacionais e processos de negcios

Professor Cleber @ Tavares Junior .com

UML
Casos de uso: - No uma tarefa trivial - Requer ateno aos detalhes

Um exemplo: Saque de dinheiro em mquina ATM

Professor Cleber @ Tavares Junior .com

UML
Ator Primrio: Correntista Objetivo: Permitir ao correntista de um banco conveniado ao banco ATM realizar o saque de dinheiro em espcie. Fluxo Principal 1. O correntista insere o carto na mquina ATM. 2. O correntista insere a senha e o valor a ser retirado. 3. O correntista retira o dinheiro da mquina ATM.
Professor Cleber @ Tavares Junior .com

UML

O cenrio descrito acima est correto?

Apesar de atingir o fim esperado, no descreve a interao entre o ator e o sistema. O objetivo do caso de uso descrever a interao entre os atores e o sistema sob desenho. Deve haver captura dos processos de negcio que devem ser conduzidos pelo sistema.

Professor Cleber @ Tavares Junior .com

UML
Fluxo Principal 1. O correntista insere o carto na mquina ATM. 2. O sistema realiza a validao do carto. 3. O correntista insere a senha e o valor a ser retirado. 4. O sistema valida a senha e o saldo do correntista. 5. O sistema disponibiliza o dinheiro na dispensadora e o recibo da transao. 6. O correntista retira o dinheiro da mquina ATM.
Professor Cleber @ Tavares Junior .com

UML
E agora?
Existe uma evoluo. H dilogo entre o ator e o sistema em uso. Mas ainda h o que se melhorar. No passo 2, por exemplo. A mquina ATM no pode dizer se o carto est bloqueado, apenas a instituio financeira real (banco) pode fazer isso. Precisamos de um ator secundrio.

Professor Cleber @ Tavares Junior .com

UML

Ator Primrio: Correntista Ator Secundrio: Instituio de Crdito Objetivo: Permitir ao correntista de uma instituio de crdito conveniada ao banco ATM realizar o saque de dinheiro em espcie.

Professor Cleber @ Tavares Junior .com

UML
Fluxo Principal 1. O correntista insere o carto na mquina ATM 2. O sistema realiza a validao fsica do carto e solicita Instituio de Crdito realizar a validao da expirao ou restries associadas ao carto. 3. O correntista insere a senha e o valor a ser retirado. 4. O sistema solicita Instituio de Crdito que valide a senha e o saldo do correntista. 5. O sistema disponibiliza o dinheiro na dispensadora e o recibo da transao. 6. O correntista retira o dinheiro da mquina ATM.
Professor Cleber @ Tavares Junior .com

UML
E agora?

Um caso de uso deve capturar todos os processos de negcio, sem entrar no mrito de como eles sero implementados. Ou seja, casos de uso capturam interaes (O QU), sem se preocupar com o cdigo (COMO). Acima, faltam validaes de dinheiro disponvel na dispensadora, restrio de saque dirio e horrio, e dbito em conta ao final.
Professor Cleber @ Tavares Junior .com

UML
Fluxo Principal 1. O correntista insere o carto na mquina ATM. 2. O sistema realiza a validao fsica do carto e solicita Instituio de Crdito realizar a validao da expirao ou restries associadas ao carto. 3. O correntista insere a senha e o valor a ser retirado. 4. O sistema solicita Instituio de Crdito que valide a senha, o saldo do correntista e o limite dirio de saque. 5. O sistema verifica a disponibilidade de dinheiro na mquina ATM, os limites dirios de saque suportados e avalia as restries de limite de saque em horrios e dias especiais. 6. O sistema solicita Instituio de Crdito que realize o dbito do saque na conta corrente do Correntista. 7. O sistema disponibiliza o dinheiro na dispensadora e o recibo da transao. 8. O correntista retira o dinheiro da mquina ATM.
Professor Cleber @ Tavares Junior .com

UML

E agora? No podemos esquecer dos fluxos alternativos ou de extenso, ou seja, e se algo der errado, qual deve ser o procedimento? No fluxo principal acima, podemos colocar os seguintes pontos de extenso / fluxos alternativos:

Professor Cleber @ Tavares Junior .com

UML

Ativado do Passo 2 - Carto Invlido Ativado do Passo 2 - Carto Bloqueado ou Expirado Ativado do Passo 2 - Carto No Suportado pela Mquina 24 horas Ativado do Passo 4 - Senha Invlida Ativado do Passo 4 - Saldo Insuficiente Ativado do Passo 4 - Limite Dirio na Instituio de Crdito Ultrapassado Ativado do Passo 5 - Limite de Saque do Banco 24 horas Ultrapassado Ativado do Passo 5 - Limite de Saque no Horrio Ultrapassado Ativado em Qualquer Passo - Cancelamento da Operao pelo Correntista

Professor Cleber @ Tavares Junior .com

UML
Fluxo Alternativo - Senha Invlida 4a. Se o nmero de tentativas invlidas for igual a 1: 4a1. O sistema exibe a mensagem Senha Invlida. 4a2. O sistema retorna ao passo 3. 4b. Se o nmero de tentativas invlidas for igual a 2: 4b1 O sistema exibe a mensagem Senha Invlida - O carto ser retido se trs tentativas invlidas forem realizadas. 4b2 O sistema retorna ao passo 3. 4c. Se o nmero de tentativas invlidas for igual a 3: 4c1. O sistema retm o carto 4c2. O sistema exibe a mensagem Senha Invlida - Carto Retido. Procure a sua agncia bancria para devoluo do carto. 4c3 O sistema termina a operao.
Professor Cleber @ Tavares Junior .com

UML
Isto deve ser detalhado para cada ponto acima. Porque tanto detalhe neste ponto de desenvolvimento do sistema? Menor custo de correo agora do que quando o sistema estiver implantado. Esta documentao vai do analista para os programadores.
Professor Cleber @ Tavares Junior .com

UML
Tarefa para *hoje*:
No sistema imaginado para a empresa, identificar *pelo menos um* caso de uso (cadastrar usurio, por exemplo normal ter vrios casos de uso no sistema) e descrev-lo em termos de: Atores (principal e secundrio) Objetivo (sem s, UM s) Fluxo (principal e secundrio)
Professor Cleber @ Tavares Junior .com

UML
Mande sua resposta por email para o professor (vide rodap) com o assunto INFNET turmaA2011 tarefa02

Prximas aulas, diagramas UML das descries de casos de uso desenvolvidos aqui em sala (Astah?)

Professor Cleber @ Tavares Junior .com

UML
Correes e alguns exemplos: Em geral: erros de portugus, esquecimento de autoria... Grupos: - Grupo restaurante - Grupo lanhouse - Grupo MALFT - Grupo construtora - Grupo segurana - Grupo ensino
Professor Cleber @ Tavares Junior .com

UML

Amostras: - Lanhouse

Professor Cleber @ Tavares Junior .com

UML
Ator Principal: Funcionrio Objetivo: cadastrar cliente Fluxo principal: 1- Inserir CPF do cliente 1- O funcionrio insere o CPF do cliente 2- o sistema validou o CPF? Sim 2- O sistema valida o CPF do cliente 3- Sistema encontrou cadastro com CPF informado? No 4- cadastrar cliente 5- informar Nome completo, CPF, telefone, data de nascimento e telefone para contato 3- O sistema abre a tela de novo registro j com o novo CPF informado, com os campos apelido*, senha*, CONFIRMAR SENHA*, nome completo, telefone e data de nascimento do cliente devendo ser digitados pelo funcionrio 6- Informar nick 7- nick ja existe? No 8- informar nova senha alfa numrica com mnimo de 6 caracteres 9- senha informada vlida? Sim 4- O sistema valida a presena dos campos obrigatrios (?), verifica se j existe o apelido (login), se as senhas so iguais e vlidas.
Professor Cleber @ Tavares Junior .com

UML

10-usurio cadastrado com sucesso 11-usurio salvo no sistema. 5- O sistema apresenta a tela de cliente cadastrado com sucesso, pergunta se deseja cadastrar outro ou ir para tela principal (CASO DE USO: BUSCAR CLIENTE)

ISTO OUTRO CASO DE USO: INSERIR TEMPO PARA CLIENTE 12-perguntar se o usurio deseja colocar tempo 13-se sim, informar o tempo desejado 14-tempo creditado. 15-aps tempo creditado, informar mquina disponvel

Professor Cleber @ Tavares Junior .com

UML

Extenses: Ativado do passo 2: CPF invlido Ativado do passo 2: CPF j existente no sistema Ativado do passo 4: apelido (login) j existente no sistema Ativado do passo 4: senha com caracteres invlidos Ativado do passo 4: senha e confirmao de senha no conferem Ativado do passo 4: campos no validados (vazios ou com caracteres invlidos)

Professor Cleber @ Tavares Junior .com

UML

Fluxo alternativo : 2A - CPF invlido 2A1 O sistema informa o ocorrido e volta ao passo 1 2B CPF j existente no sistema 2A1 O sistema informa o ocorrido e abre a tela de edio daquele usurio (CASO DE USO: editar usurio)

Professor Cleber @ Tavares Junior .com

UML

Casos de uso para o ator Funcionrio (lanhouse) gerado com a ferramenta Gliffy: http://www.gliffy.com Professor Cleber @ Tavares Junior .com

UML
Exerccios
- Pesquisa individual a ser realizada e entregue via email ao professor at a prxima aula de segunda-feira com o assunto INFNET turmaA2011 tarefa03:

Uma apresentao (doc ou ppt) com a diferena entre Casos de Uso (utilizada neste levantamento de requesitos) e User Stories (histrias de usurio, utilizada em agile)
Professor Cleber @ Tavares Junior .com

UML

Amostras: - Alessandra

Professor Cleber @ Tavares Junior .com

UML
Resumo e reviso de casos de uso: - Descrevem relacionamentos entre um grupo de Caso de Uso (atividades num sistema que produzem um resultado concreto e tangvel) e os Atores participantes deste processo. - So feitos para facilitar a comunicao com os futuros usurios do sistema, com o cliente, e so especialmente teis para determinar os recursos que o sistema deve ter. - No so adequados para representar o desenho (design, projeto) e no podem descrever os mecanismos internos de um sistema. - Dizem o qu o sistema deve fazer, mas no fazem, e no podem, especificar o como isso ser conseguido (implementao) - Representam a interface externa do sistema e especificam um conjunto de exigncias do que o sistema deve fazer (lembre-se: somente o qu, no o como) - Quando trabalhar com Casos de Uso, importante lembrar-se de algumas regras simples: Cada Caso de Uso est relacionado com no mnimo um ator Cada Caso de Uso possui um iniciador (isto , um ator) Cada Caso de Uso liga-se a um resultado relevante (um resultado com valor de negcio)

Professor Cleber @ Tavares Junior .com

UML
Resumo e reviso de casos de uso: Atores Um ator uma entidade externa (fora do sistema) que interage com o sistema. Atores podem ser pessoas reais (por exemplo usurios do sistema), outro sistema de computador ou eventos externos. Um ator no representa a pessoa fsica ou sistema, mas sua regra. Isto significa que quando por exemplo uma pessoa interage com o sistema de diferentes maneiras (assumindo diferentes regras, usando diferentes chapus) ela ser representada por diferentes atores. Por exemplo uma pessoa que fornece suporte ao cliente por telefone e recebe ordens de compra do cliente para o sistema pode ser representado por um ator Equipe de Suporte e um ator Representante de Venda.

Professor Cleber @ Tavares Junior .com

UML
Resumo e reviso de casos de uso: Descrio do Caso de Uso Descrio do Caso de Uso so narrativas de texto dos Diagramas de Caso de Uso. Elas usualmente tomam a forma de um documento que de alguma maneira ligado ao Caso de Uso, e explana o processo ou atividades que tomaro lugar no Caso de Uso.

Professor Cleber @ Tavares Junior .com

UML
Resumo e reviso de casos de uso: Casos de uso podem incluir dependncias entre si, a saber: <<inclui>> que especifica que um Caso de Uso toma lugar dentro de outro Caso de Uso <<estende>> que especifica que em determinadas situaes, ou em algum ponto (chamado um ponto de extenso) um Caso de Uso ser estendido por outro. Generalizao especifica que um Caso de Uso herda as caractersticas do Super Caso de Uso, e pode sobrepor algumas delas ou adicionar novas de maneira semelhante a herana.

Professor Cleber @ Tavares Junior .com

UML
Resumo e reviso de casos de uso: Um exemplo de Diagrama de Caso de Uso:

Professor Cleber @ Tavares Junior .com

UML

CLASSES

Professor Cleber @ Tavares Junior .com

UML
Iniciemos com um exemplo prtico de um Diagrama de Classes:

Professor Cleber @ Tavares Junior .com

UML
Iniciemos com um exemplo prtico de um Diagrama de Classes

Professor Cleber @ Tavares Junior .com

UML
O qu o Diagrama de Classes anterior representa?

Professor Cleber @ Tavares Junior .com

UML
Ressaltando que a modelagem de classes de um sistema pode representar qualquer coisa: - Um sistema de entretenimento (jogo);

- Um sistema de segurana bancria;


- Um sistema de controle de acesso de lanhouse; - Um sistema de pedidos em um restaurante;

- Um sistema de venda de construo de casas online;


- Um sistema de ensino distncia; - Um sistema de controle de estoque;

Professor Cleber @ Tavares Junior .com

UML
Lembrando que o diagrama de classes um diagrama estrutural de um sistema, ou seja, representa a forma como ele contrudo!

Professor Cleber @ Tavares Junior .com

UML
Enquanto os Diagramas de Caso de Uso representam o comportamento esperado de um sistema, isto , o qu ele deve fazer, no Diagrama de Classes estamos olhando para dentro do sistema, isto , o como ele est construdo. E isto pode ser feito de diferentes maneiras. Mas o tempo revela as melhores prticas em cada caso.

Professor Cleber @ Tavares Junior .com

UML
Mas o qu so Classes? Classes so uma maneira de representar objetos do mundo real em termos de linguagens de programao (paradigma de programao orientada objetos)

Por exemplo, olhando para o mundo real, podemos ver uma srie de objetos, e a realidade construda segundo a interao entre estes objetos:
Na sala, temos uma srie de computadores, cada um com caractersticas em comum entre si (todos tem um tamanho e peso e possuem uma posio no espao da sala), mas cada um possui determinadas caractersticas que o distingue dos outros (todos possuem o mesmo tamanho e peso mas certamente esto em posies diferentes no espao da sala...) Cada computador possui uma srie de comportamentos (por exemplo, ligar() e desligar()) Palavras-chave: Classe, objeto, atributo e mtodo.

Professor Cleber @ Tavares Junior .com

UML
Mas o qu so Classes? Cada computador possui uma srie de comportamentos (por exemplo, ligar() e desligar()), que so acionados quando objetos do tipo Pessoa (professor, aluno...) enviam mensagens eles acionando estes comportamentos. Mas como um computador ligado, qual exatamente seus processos internos para que isto ocorra? No necessariamente sabemos, nem precisamos saber disso para faz-lo funcionar. Dizemos que esta caracterstica est encapsulada no objeto. Palavra-chave: Encapsulamento

Professor Cleber @ Tavares Junior .com

UML
Mas o qu so Classes? Voltando Classe Pessoa, cada objeto deste tipo tem caractersticas (atributos e metodos()) em comum, mas em termos do nosso sistema de exemplo (um simulador da sala de aula), interessante termos uma Classe Aluno que represente os alunos, e uma Classe Professor, que represente os professores. Tanto Aluno quanto Professor compartilham caractersticas com Pessoa. (nome, cpf...) Mas tem diferenciais suficientes (aluno tem matricula, aluno recebePassagem(), professor tem dataEfetivacao, professor acessaSalaProfessores()) Dizemos que as Classes Professor e Aluno herdam de Pessoa Palavra-chave: Herana

Professor Cleber @ Tavares Junior .com

UML
Mas o qu so Classes? Mesmo que Aluno e Professor possuam um mesmo comportamento / mtodo (acessarAVA();) eles no produzem necessariamente o mesmo resultado (se um Professor acessarAVA() ele ativar outros privilgios de acesso ao sistema). Um mesmo comportamento / mtodo pode ser chamado / acionado de diversas maneiras (com diferentes parmetros): uma Pessoa pode Andar(15 passos), Andar(15 passos, rpido), Andar(rpido), ou apenas Andar())

Palavra-chave: Polimorfismo e sobrecarga.

Professor Cleber @ Tavares Junior .com

UML
Mas o qu so Classes? Nem toda Classe pode / precisa ser instanciada instanciar = criar um objeto de uma certa Classe Na nossa modelagem de sistemas, podemos imaginar classes genricas apenas para organizar nosso cdigo Voc consegue imaginar uma Classe em um sistema que no possa ser instanciada (representada) por um objeto concreto? Palavra-chave: Classe abstrata

Professor Cleber @ Tavares Junior .com

UML
Mas o qu so Classes? Exerccio: Pensem no sistema de janelas do programa de vocs. Quais seriam as classes que o compe?

Professor Cleber @ Tavares Junior .com

UML
Revisando e continuando o conceito de Classes e sua representao esquemtica. Em POO, os conceitos devem ser pensados em forma de objetos, seus atributos e mtodos (e no as de variveis e funes pensadas na programao estruturada). Por isso, se estou pensando em um sistema de locadora (eca! rs ;-) devo pensar em objetos (no geral, classes) que fariam parte deste sistema: Funcionrio, cliente, cd, aluguel... Um objeto uma representao abstrata de uma entidade do mundo real. "Uma classe representa um conjunto de objetos que possuem caractersticas em comum. No exemplo acima, vamos pegar a representao da funcionria Carla e transform-la em um conceito geral no nosso sistema. Classe Funcionario Atributos: Nome, login, senha, salario Mtodos: AbrirLocacao(), FecharLocacao() Professor Cleber @ Tavares Junior .com

UML
Novamente: Uma classe descreve como certos tipos de objetos se parecem do ponto de vista da programao, e quando definimos uma classe devemos definir seus atributos (substantivos) e mtodos (verbos). "Na UML o nome de uma classe um texto contendo letras e dgitos e algumas marcas de pontuao. Na realidade, melhor guardar os nomes curtos com apenas letras e dgitos. UML sugere capitalizar todas as primeiras letras de cada palavra no nome (ex.: ``Lugar'', ``DataReserva''). melhor tambm manter nomes de classe no singular, classes por padro contem mais de um objeto, o plural implcito.". [Nicolas Anquetil] Padres so sugestes... O sugerido para C# em sua documentao oficial letraMinuscula para atributos e LetraMaiuscula() para mtodos. O importante voc seguir o seu prprio padro de criao que faa sentido ao fazer um projeto novo (+- 10%) , e seguir o padro ao trabalhar em um projeto existente (+- 90%) Mas estamos nos distanciando do foco. Vamos ver o Diagrama UML da classe acima.

Professor Cleber @ Tavares Junior .com

UML
Geralmente em um sistema de mdio porte sero identificados diversas classes que compem o sistema. Neste contexto a UML surgiu como uma proposta de ser uma linguagem para modelagem de dados que usava diversos artefatos para representar o modelo de negcio; um destes artefatos o Diagrama de Classes. A representao de uma classe usa um retngulo dividido em trs partes:

Na verdade, para ser mais especfico, vejamos o exemplo geral a seguir:

Professor Cleber @ Tavares Junior .com

UML

Nossa! Quanta coisa nova! Que so essas coisas todas? Calma. Podemos dizer que o Diagrama de Classes o principal da UML, pois ilustra as Classes (com atributos e mtodos...), interfaces e relacionamentos entre elas, e est muito prximo da *codificao*. O Diagrama de Classes ilustra as restries com que os objetos devem ser criados e conectados, bem como seus tipos e relacionamentos entre si. Vamos ver mais sobre isso:

Professor Cleber @ Tavares Junior .com

UML
Visibilidade: Quando criamos as classes, podemos definir como seus atributos e mtodos sero visveis aos usurios dessas classes. (programadores!) Por exemplo, em nossa Classe Funcionario, temos o atributo salario (que do tipo inteiro...). Se este atributo for pblico, quer dizer que ele pode ser alterado sem restrio (dentro de nmeros inteiros...) O que significa, que ao usar o sistema, em algum momento, um programador via cdigo ou um usurio digitando pode tentar dar um valor negativo para este atributo. Funcionario func1 = new Funcionario(); // criei um funcionrio no sistema! func1.salario = -1000; // coitado Como impedimos de isso acontecer?

Professor Cleber @ Tavares Junior .com

UML
Na nossa Classe Funcionario, teremos um mtodo pblico DefinirSalario(int) Sempre que um salrio precisa ser definido, chamamos este mtodo. Assim: func1.DefinirSalario(1000); // Ok. E se eu fizer isso: func1.DefinirSalario(-1000); // ? O que acontece? Agora estamos protegidos, pois dentro deste mtodo (uma funo, um procedimento, um conjunto de aes) eu, programador, posso tomar providncias caso isso ocorra... Mas estamos novamente nos afastando, indo um pouco alm do puro Diagrama de Classes em UML. Estamos falando de Encapsulamento e Testes... Vamos voltar ao padro UML:

Professor Cleber @ Tavares Junior .com

UML
Atribumos o valor da visibilidade do atributo salario para privado. Com isso, ns, criadores da classe, criadores do sistema, responsveis pela sua integridade e bom funcionamento, queremos dizer que aquele atributo no vai mais poder ser alterado de fora da nossa classe (fora de nosso controle). Isso: Funcionario func1 = new Funcionario(); // aqui estamos fora da classe, nos utilizando dela func1.salario = -1000; NO vai poder mais ser feito, pois dissemos que salario era privado da classe, certo? E como que algum (via cdigo ou uso do sistema) poderia definir o valor do salrio de um funcionrio?

Se o atributo privado e preciso alter-lo, teremos um mtodo pblico para isso.


Professor Cleber @ Tavares Junior .com

UML
Para podermos representar a visibilidade dos atributos e mtodos em uma classe utiliza-se as seguintes marcas e significados: + pblico, visvel em qualquer outra classe

- privado, visvel somente dentro da prpria classe


# protegido, visvel somente dentro da prpria classe e dentro das classes descendentes Vejamos nossa classe funcionario:

Professor Cleber @ Tavares Junior .com

UML

Atributos normalmente privados. Quase todos precisam ser lidos ou alterados em algum momento, mas de forma controlada, o que nos leva aos gets e sets, mas isso um outro captulo... Vamos ver agora relacionamentos entre classes.

Professor Cleber @ Tavares Junior .com

UML
Vamos ver agora relacionamentos entre classes. Os objetos (instncias concretas de classes) tem relaes entre eles: um professor ministra uma disciplina para alunos numa sala um cliente aluga um filme ... Essas relaes so representadas tambm no diagrama de classe. O relacionamento e a comunicao entre as classes definem responsabilidades. A UML reconhece trs tipos mais importantes de relaes: herana, associao e dependncia. As representaes usam a seguinte notao:

Professor Cleber @ Tavares Junior .com

UML

- Herana (simples ou composta, tambm chamada de generalizao) - Relacionamento entre um elemento mais geral e um mais especfico, onde o elemento mais especfico herda as caractersticas do elemento mais geral. - Associao - relacionamentos estruturais entre instncias e especificam que objetos de uma classe esto ligados a objetos de outras classes. Podemos ter associao uniria , binria, etc. - Dependncia - a dependncia entre classes indica que os objetos de uma classe usam servios (implements) dos objetos de outra classe.

- Agregao e composio Professor Cleber @ Tavares Junior .com

UML
O diagrama de de classes lista todos os conceitos do domnio que sero implementados no sistema e as relaes entre os conceitos. Ele muito importante pois define a estrutura do sistema a desenvolver. O diagrama de classes no surge do nada ele consequncia do prvio levantamento de requisitos , definio de casos de usos e classes. Ainda em nosso exemplo de locadora, vamos a uma visualizao mais completa:

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML
Vejamos alguns outros exemplos de modelagem de classes:

Professor Cleber @ Tavares Junior .com

UML
Vejamos alguns outros exemplos de modelagem de classes:

Professor Cleber @ Tavares Junior .com

UML
Exerccios de modelagem de classes:

Professor Cleber @ Tavares Junior .com

UML
Construa o modelo de classes de domnio de um sistema de informaes para controlar o campeonato da Frmula 1. Restries: Um piloto no troca de equipe durante uma temporada Um mecnico no troca de equipe durante uma temporada

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML
Desenhe um diagrama de classes com relacionamentos, nomes de papis e multiplicidades para as seguintes situaes: Uma Pessoa pode ser casada com outra Pessoa; Uma Disciplina pr-requisito para outra Disciplina; Uma Pea pode ser composta de diversas outras Peas.

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML
Construa um diagrama de classes inicial para a seguinte situao: Pacotes so enviados de uma localidade a outra. Pacotes tm um peso especfico. Localidades so caracterizadas pelas facilidades de transporte (por exemplo, ferrovirias, aeroportos e auto-estradas). Algumas localidades so vizinhas, isto , existe uma rota direta de transporte entre tais localidades. A rota de transporte entre as localidades tem um certo comprimento (a distncia entre as localidades). Trens, avies e caminhes so usados para o transporte de pacotes. Cada um destes meios de transporte pode suportar uma carga mxima de peso. A cada momento, durante o seu transporte, necessrio saber a posio (localidade) de cada pacote. Tambm necessrio manter o controle de que meio de transporte est sendo utilizado em cada parte da rota para um certo pacote. Restries: Uma rota liga facilidades de um mesmo tipo Trens so usados em rotas entre ferrovias Avies so usados em rotas entre aeroportos Caminhes so usados em rodovias

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML
Considere o seguinte discurso relativo a um sistema de partidas de tnis: "Num torneio de tnis, cada partida jogada entre 2 jogadores. Pretende-se manter informao sobre o nome e idade dos jogadores; data da partida e atribuio dos jogadores s partidas. O mximo de partidas que um jogador poder realizar 6 e o mnimo 1. Desenhe o diagrama de classes correspondente.

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML
Identifique classes e/ou relacionamentos a partir das seguintes regras do negcio: a) Pedidos so compostos de vrios itens de pedido. b) Um item de pedido diz respeito a um e exatamente um produto. c) Um pedido pode conter at 20 itens.

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML
Considere um sistema de software para controlar um hotel. Normalmente, um hspede ocupa um quarto por estadia. Mas, suponha que uma nova regra foi criada no negcio: agora, um hspede pode utilizar at trs quartos. Desenhe o diagrama de classe para essas duas situaes. hspede ocupa um quarto hspede ocupa at trs quartos

Professor Cleber @ Tavares Junior .com

UML

Professor Cleber @ Tavares Junior .com

UML pause
A UML serve para modelar sistemas.

A criao de sistemas faz parte de projetos.


Existem vrias metodologias de se gerenciar projetos. Por exemplo o conjunto de metodologias geis, o modelo PMI...

Mas o que um projeto?

Professor Cleber @ Tavares Junior .com

UML pause
Um processo com incio, meio e fim para criao de um produto ou servio ou metodologia nova.

Professor Cleber @ Tavares Junior .com

UML pause

Professor Cleber @ Tavares Junior .com

UML pause

Professor Cleber @ Tavares Junior .com

UML pause

Professor Cleber @ Tavares Junior .com

UML pause

Seguem-se 2 exemplos de modelos de projetos seguindo o padro PMI.

Pede-se que os grupos faam o primeiro artefato de projeto seguindo este padro, que o Termo de Abertura do Projeto.

Professor Cleber @ Tavares Junior .com

UML resume

O prximo diagrama UML a ser criado, depois dos Diagramas de Casos de Uso e dos Diagramas de Classes, seria o Diagrama de Sequncia. O Diagrama de Sequncia um diagrama de interao, que mostra ao longo do tempo o que acontece no nosso sistema.

Professor Cleber @ Tavares Junior .com

UML resume

Professor Cleber @ Tavares Junior .com

UML resume
O objetivo deste diagrama apresentar, em ordem de chamada, as interaes entre os mtodos das classes. No devemos fazer diagramas de sequncia para todos os casos de uso do sistema. Apenas as partes mais complicadas. (crud no...) A primeira dica para identificar casos de uso que devem gerar diagramas de sequncia buscar pelas quantidades de entidades e passos envolvidos. A segunda dica procurar as aes descritas no caso de uso e podemos fazer isso identificando os verbos nas sentenas. Isto est relacionado ao fato de que os mtodos (que so o ponto chave deste diagrama) modelam o comportamento dos objetos de uma classe e portanto o que pode ou no ser feito. Essa relao entre aes e mtodos direciona o analista para pensar em termos de cdigo e por isso que este diagrama faz parte da fase de projeto. Quando criamos um diagrama de sequncia pensamos de forma mais concreta identificando nomes de mtodos, dependncias, tipos de retorno e listas de parmetros. Professor Cleber @ Tavares Junior .com

UML resume

Exemplos de Diagrama de Sequncia:

Professor Cleber @ Tavares Junior .com

UML resume

Professor Cleber @ Tavares Junior .com

UML resume

Lembrando: a notao tenta ser padro, mas alguns programas (como o prprio Gliffy que usamos...) s vezes no implementam tudo... Mais alguns exemplos:

Professor Cleber @ Tavares Junior .com

UML resume

Lembrando: os Diagramas de Sequncia vem dos casos de uso e das classes...

Professor Cleber @ Tavares Junior .com

UML resume

Professor Cleber @ Tavares Junior .com

UML resume

Professor Cleber @ Tavares Junior .com

UML resume

Professor Cleber @ Tavares Junior .com

UML resume
Exerccio de SALA DE AULA (AGORA):

Criar os diagramas de sequncia adequados para o seu sistema.

Professor Cleber @ Tavares Junior .com

UML resume
Exerccio de CASA (ENTREGA/APRESENTAO NA QUINTAFEIRA NO INCIO DA AULA): Pesquisa sobre outros diagramas da UML. Sugestes: Diagrama de Estados; Diagrama de Pacotes; Diagrama de Entidade-Relacionamento; Estes diagramas da pesquisa podem ou no estar relacionados com o projeto do sistema de vocs. Caso estejam, melhor.

Professor Cleber @ Tavares Junior .com