orientação a objetos - início - sefazwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf ·...

80
1 Orientação a Objetos Hyggo Oliveira de Almeida Laboratório de Sistemas Embarcados e Computação Pervasiva Centro de Engenharia Elétrica e Informática Universidade Federal de Campina Grande Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso Conteúdo Resultado esperado Avaliação Bibliografia Dúvidas???

Upload: vokhanh

Post on 10-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

1

Orientação a Objetos

Hyggo Oliveira de Almeida

Laboratório de Sistemas Embarcados e Computação PervasivaCentro de Engenharia Elétrica e Informática

Universidade Federal de Campina Grande

Apresentação do cursoMotivação para o curso

Objetivos do cursoEstudo de caso

ConteúdoResultado esperado

AvaliaçãoBibliografia

Dúvidas???

Page 2: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

2

Pós-Sistemas de Informação - FAL 3

Motivação para o curso

Por que orientação a objetos???Voltemos um pouco no tempo...... nos anos 80 e antes disso!O que é que está na moda?

Paradigma estruturado!!!Análise (Entender o problema)Projeto (Modelar a solução)Programação (Implementar a solução)

Pós-Sistemas de Informação - FAL 4

Motivação para o curso

Entidades de abstraçãoFunções e procedimentos

Sistemas comerciais tradicionaisControle de estoque, por exemplo

LinguagensPascal, Cobol, C, Fortran

Page 3: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

3

Pós-Sistemas de Informação - FAL 5

Motivação para o curso

Conjunto de procedimentos e funções invocados com base em uma seqüênciaNível de complexidade dos sistemas condiz com o suporte do paradigmaProblema

Calcular o total do estoque

SoluçãocalcularTotalEstoque();

Pós-Sistemas de Informação - FAL 6

ProblemasAumento da complexidade dos sistemasDifícil gerenciamentoEntidade de abstração muito granular

Função Sistema corporativo“Calcular lucro das vendas”

Recuperar informações das filiaisTransmitir dados via redeRecuperar informações de câmbioRecuperar informações de taxas de juros...

Motivação para o curso

Page 4: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

4

Pós-Sistemas de Informação - FAL 7

SIMULA 67Simulação de objetos do mundo realObjetos e relacionamento entre eles

Que tal aproveitar a abstração???

Motivação para o curso

Cadeira

Mesa

Sala

Funções e dadosdispersos e não

coesos

Enxergar o problema... pensando em objetos!!!

Pós-Sistemas de Informação - FAL 8

Objetivo do curso

Convencê-los de que OO é uma boa ferramenta para o desenvolvimento de sistemas de informaçãoIntroduzir conceitos básicos de OONoções de...

Análise orientada a objetosProjeto orientado a objetosProgramação orientada a objetos

Notação UML diagramas mais usados

Page 5: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

5

Pós-Sistemas de Informação - FAL 9

Estudo de caso

Sistema de informação, em geral, possui complexidade de projeto

Maior que a complexidade algorítmicaDe acordo com o tempo de curso...

...foco em aprender os conceitos

...saber como aplicá-losVamos desenvolver uma agenda simples

Nomes, endereços e telefones

Pós-Sistemas de Informação - FAL 10

Conteúdo do curso (Parte I)

OO - Conceitos básicosVisão abstrata

ClassificaçãoEspecializaçãoPolimorfismo

Visão concretaEncapsulamento, information hiding, passagem de mensagemHerançaLigação dinâmica, variáveis polimórficas

Entendendo o estudo de caso com OO!

Page 6: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

6

Pós-Sistemas de Informação - FAL 11

Conteúdo do curso (Parte II)

Análise Orientada a ObjetosAnálise de requisitosUML – O que é? Pra que serve? Diagrama de casos de usoModelo conceitualAnalisando o estudo de caso!

Pós-Sistemas de Informação - FAL 12

Conteúdo do curso (Parte III)

Projeto Orientado a ObjetosExplodindo casos de uso: diagramas de interação

Diagrama de seqüênciaDiagrama de colaboração

Definindo classes, atributos e métodos: diagrama de classesProjetando o estudo de caso!

Page 7: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

7

Pós-Sistemas de Informação - FAL 13

Conteúdo do curso (Parte IV)

Programação Orientada a ObjetosIntrodução à linguagem JavaMapeando conceitos para elementos da linguagem“Oi, eu sou um programa Java!”Programando o estudo de caso!

Pós-Sistemas de Informação - FAL 14

Ao terminar o curso vocês devem...

conhecer conceitos básicos da orientação a objetos!entender por que OO pode ser uma boa solução para o desenvolvimento de softwaresaber realizar uma análise orientada a objetosentender conceitos de projeto orientado a objetoster noções básicas de programação orientada a objetos

Page 8: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

8

Pós-Sistemas de Informação - FAL 15

Avaliação (em dupla)

Entendendo o estudo de caso com OO!Exercício: 2,5 pontos

Analisando o estudo de caso!Exercício: 2,5 pontos

Projetando o estudo de caso!Exercício: 2,5 pontos

Programando o estudo de caso!Exercício: 2,5 pontos

Pós-Sistemas de Informação - FAL 16

Bibliografia

LivrosObject-Oriented Analysis and Design with Applications, Grady Booch,1993 Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Larman, Prentice-Hall, 1998UML – Guia do usuário, James Rambaugh, Campus, 2000Java How to Program, Harvey M. Deitel Paul J. Deitel, Prentice Hall, 2002

ArtigosObject Orientation Revealed!, Dr Ashley M. Aitken, School of InformationSystems, Curtin University of Technology, Perth, Australia

Outras fontesInternet!!!

Page 9: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

9

Pós-Sistemas de Informação - FAL 17

Dúvidas sobre o curso???

Dúvidas sobre o conteúdo...É só isso???Isso tudo professor???E vai dar tempo???

Meu e-mail de contato:[email protected]

Conceitos Básicos de Orientação a Objetos

Visão abstrataClassificação

EspecializaçãoPolimorfismo

Visão concretaEncapsulamento

Information hidingPassagem de mensagem

HerançaLigação dinâmica

Variáveis polimórficasEntendendo o estudo de caso com OO!

Page 10: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

10

Pós-Sistemas de Informação - FAL 19

Visão abstrata

Por que visão abstrata?Em geral, os conceitos de orientação a objetos são ensinados utilizando a tecnologia que dá suporte à OO

“Java em 15 dias e meio”“C++ e OO, sem desespero”“Agora vai! PHP com OO”“É pra amanhã? Java e OO em uma noite!”

Problema!Não se sabe a diferença entre conceito e tecnologia

É possível implementar um código Java que não é orientado a objetos!!!

Pós-Sistemas de Informação - FAL 20

Visão abstrata

Os conceitos de OO são independentes de tecnologiaO paradigma de OO define uma nova maneira de enxergar o mundo (leia-se, contexto do problema)Primeiro vamos aprender a enxergar o mundo pensando em objetos...... depois aprendemos uma tecnologia para tornar a implementação possível

Em Java!

Page 11: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

11

Pós-Sistemas de Informação - FAL 21

Visão abstrata

Orientação a objetos é...“enxergar e modelar o mundo como

um conjunto de objetos inter-relacionados e em interação”

Pós-Sistemas de Informação - FAL 22

Visão abstrataUma vez que já vemos o mundo desta forma... torna-se bem conveniente

Enxergar o mundo...... ou qualquer outro “sistema”... inclusive um “sistema de software”.

Page 12: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

12

Pós-Sistemas de Informação - FAL 23

Visão abstrata

Ok... mas o que são objetos?

ÁrvoreCarroChurrasqueiraBicicleta

Casa PessoaÁrvore

Pós-Sistemas de Informação - FAL 24

Visão abstrata

Um objeto é uma entidade física ou conceitual que possui uma identidade,

propriedades e operações. E que pode ser construído e destruído.

Page 13: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

13

Pós-Sistemas de Informação - FAL 25

Visão abstrata

Identidade define a unicidade do objeto!

MinhaOutraÁrvoreMeuCarroMinha

ChurrasqueiraMinha

Bicicleta

MinhaCasa MeuPaiMinhaÁrvore

Pós-Sistemas de Informação - FAL 26

Visão abstrata

Propriedades definem o estado do objeto!!!

cor: verdeespécie: pé de pau! ☺

cor: azulmarca: fordano: 1975quilometragem: 5000

grelhas: 4material: ferro

cor: pretamarchas:32

cor: marromvalor: 50000

nome: Joãoprofissão: jogadoridade: 45

cor: verdeespécie: pé de mato ☺

Page 14: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

14

Pós-Sistemas de Informação - FAL 27

Visão abstrata

Operações definem os comportamentos que podem ser desempenhados pelo objeto!!!

• germinar• fazer sombra

• acelerar• frear• ligar• desligar

• assar • acelerar• frear

• andar• comer• beber

• germinar• fazer sombra

Pós-Sistemas de Informação - FAL 28

Visão abstrata

Mas eu preciso sempre enxergar todos os objetos do meu mundo (ou do meu sistema)???

Não!!! A maneira como eu enxergo o mundo depende do contexto do problema!!!

Page 15: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

15

Pós-Sistemas de Informação - FAL 29

Visão abstrata

De que ferramenta eu preciso pra enxergar o mundo de acordo com o contexto???

Conceito fundamental da OO

Exercício intelectual de seleção de alguns aspectos de domínio do problema, desconsiderando outros aspectos

não interessantes para o problema em questão

Abstração

Pós-Sistemas de Informação - FAL 30

Visão abstrataMundo

Contexto do problema

Apenas o que interessa no mundo...

... de acordo com ocontexto!

Page 16: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

16

Pós-Sistemas de Informação - FAL 31

Visão abstrataObjeto

Vendedor

• Propriedades:• Modelo• Descrição• Custo• Preço de venda

Estudante

• Propriedades:• Tamanho• Velocidade• Número• Instruções

Pós-Sistemas de Informação - FAL 32

Visão abstrataObjeto

Vendedor

• Operações:• faturar• garantir• requisitar

Estudante

• Operações:• somar• subtrair• multiplicar• dividir

Abstração

Enxergar os objetosde acordo com o

contexto

Page 17: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

17

Pós-Sistemas de Informação - FAL 33

Visão abstrata

Outros conceitos fundamentais da OO

Orientação a Objetos

Classificação

PolimorfismoEspecialização

Pós-Sistemas de Informação - FAL 34

Visão abstrata

ClassificaçãoAgrupamento de objetos que possuem um conjunto de propriedades e operações em comum.Define um tipo de objetos pelo conjunto de propriedades e operações

cor: verdeespécie: pé de pau!

cor: verdeespécie: pé de mato

• germinar• fazer sombra• germinar• fazer sombra

Page 18: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

18

Pós-Sistemas de Informação - FAL 35

Visão abstrata

ClassificaçãoTipo: árvore

Propriedades: cor e espécieOperações: germinar e fazer sombra

Objetos que são do tipo “árvore”

Pé de mato

Pé de pau

Pós-Sistemas de Informação - FAL 36

Visão abstrata

EspecializaçãoIdentificação de um subconjunto de objetos dentro de uma classificação (tipo) que possui um conjunto adicional de propriedades e operações.Define um subtipo do tipo original

Propriedades originais + propriedades adicionaisOperações originais + operações adicionais

Page 19: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

19

Pós-Sistemas de Informação - FAL 37

Visão abstrata

EspecializaçãoTipo: árvore

Subtipo: árvore frutífera • Propriedades:• cor, espécie e fruta

• Operações:• germinar, fazer sombra edar frutos

• Propriedades:• cor, espécie

• Operações:• germinar, fazer sombra

Adicional

Adicional

Pós-Sistemas de Informação - FAL 38

Visão abstrata

Especialização

Tipo: árvore

Subtipo: árvore frutífera

Pé de mato

Pé de pau

Cajueiro

Macieira

Espe

cial

izaç

ão Generalização

Page 20: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

20

Pós-Sistemas de Informação - FAL 39

Visão abstrata

Especialização/Generalização

Pessoa Formada Oftalmologista

Carro de corridaCarroVeiculo

Espe

cial

izaç

ão Generalização

Pós-Sistemas de Informação - FAL 40

Visão abstrata

PolimorfismoÉ a habilidade de diferentes tipos de objetos realizarem as mesmas propriedades e operações de formas diferentes

• acelerar• frear

• acelerar• frear

Tipo: veículo

Subtipo: bicicletaSubtipo: carro

Page 21: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

21

Pós-Sistemas de Informação - FAL 41

Visão abstrata

PolimorfismoVeículo pode acelerar e frear.Acelerar e frear possuem formas diferentes pra cada subtipo

Subtipo: bicicleta Subtipo: carro

acelerar = pisar no acelerador!!!

frear = pisar no freio!!!

frear = apertar o freio!!!

acelerar = pedalar!!!

Pós-Sistemas de Informação - FAL 42

Visão abstrata

Entenderam os conceitos abstratos???Observem que os conceitos são independentes de tecnologiaSe aplicam a qualquer tipo de sistemaNenhuma linguagem de programação foi utilizada!!!Pensar orientado a objetos é independente de programar usando uma linguagem com suporte à orientação a objetos!!!

Sendo assim...É possível entender a orientação a objetos, sem saber programar em nenhuma linguagem!!!

Page 22: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

22

Pós-Sistemas de Informação - FAL 43

Visão abstrataMão na massa!!!

“Enxergue” um dos objetos presentes na imagem abaixo de acordo com o triângulo de orientação a objetos!

Menos os veículos, é claro!!!

OO

Polimorfismo

Classificação

Especialização

Pós-Sistemas de Informação - FAL 44

Visão concretaComo construir objetos do mundo real usando objetos de software????

Page 23: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

23

Pós-Sistemas de Informação - FAL 45

• carro• rua• vaga

Visão concretaEm primeiro lugar... teremos que criá-los! Certo???

Nem tudo é “observação”!!!

Sistema de controle de tráfego

Sistema de acadêmico• aluno• professor• matrícula• nota

• produto• item• estoque

Sistema de controle de estoque

Pós-Sistemas de Informação - FAL 46

Visão concreta

Precisamos ter noção de como os objetos são criados...... mais ainda, precisamos de um modelo pra criação de objetos diferentes de acordo com um mesmo tipo!Na visão concreta... precisamos de uma CLASSE!!!

Page 24: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

24

Pós-Sistemas de Informação - FAL 47

Visão concreta

Uma classe é um modelo, um protótipo para a criação de exemplares ou instâncias de um mesmo tipo. Um objeto é um exemplar de uma classe

Modelo de péde pau

Pé-de-pau A

Pé-de-pau B

Pé-de-pau C

Meu pé-de-pau

ObjetosClassenew

new

Pós-Sistemas de Informação - FAL 48

Visão concreta

Apesar da semelhança, classe é diferente de tipoUma classe define, automaticamente, um tipo e uma implementação

Tipo:Carro

Classe:Carro

Define “o que”

acelerar = pisar no acelerador!!!

frear = pisar no freio!!!

Define “como”

Tipo:Carro Define “o que”Tipo:Carro Define “o que”

Classe:CarroDefine “como”

Page 25: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

25

Pós-Sistemas de Informação - FAL 49

Visão concreta

Todo objeto, instância de uma classe, terá:as mesmas propriedades/atributos da classeas mesmas operações/métodos da classe

A classe então é uma ferramenta para padronizar a criação de objetos de um determinado tipoE aí? Entenderam pra que serve uma classe?

Dúvidas sobre a construção de objetos?Relação objeto x classe?Podemos seguir na visão concreta de OO?

Pós-Sistemas de Informação - FAL 50

Visão concreta

Além da classe, para tornar os conceitos abstratos definidos anteriormente em tecnologia...

Linguagem de programaçãoModelagemModelos de banco de dadosModelos formaisEtc...

... as seguintes ferramentas devem ser providas:Encapsulamento, information hiding, passagem de mensagem, herança, variáveis polimórficas e ligação dinâmica

OO

PolimorfismoEspecialização

Classificação

Page 26: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

26

Pós-Sistemas de Informação - FAL 51

Visão concreta

As ferramentas da visão concreta dão suporte às diferentes fundações da visão abstrata

OO

PolimorfismoEspecialização

Classificação

Encapsulamento

Information Hiding

Passagem de mensagem

HerançaVariáveis polimórficas

Ligação dinâmica

Pós-Sistemas de Informação - FAL 52

Visão concreta

Concretizando classificação: EncapsulamentoAgrupamento de atributos e métodos dentro de um objeto

Objeto

Atributos

Métodos

Acesso aos atributosapenas via métodos!

O que você comeu no almoço?

Page 27: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

27

Pós-Sistemas de Informação - FAL 53

Visão concreta

Concretizando classificação: Information HidingMostre ao cliente apenas o que ele pode ver!!!

Objeto

Atributos

Métodos

Acesso apenas aosMétodos públicos!

Privados/Protegidos

Pós-Sistemas de Informação - FAL 54

“Objeto, imprima seu nome na tela!!!”

Cliente (outro objeto) Objeto

Visão concreta

“Objeto, me dá o teu nome pra eu mostrar na tela!!!”

Cliente (outro objeto) Objeto

Concretizando classificação: Passagem de mensagemDiga ao objeto o que ele tem de fazer!!!

getNome

imprimirNome

Page 28: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

28

Pós-Sistemas de Informação - FAL 55

Visão concreta

Concretizando especialização: HerançaInclua os atributos e métodos de uma (super)classe em suas (sub)classes Classe A

Classe B

A herda de Bou

A estende BHerança

Com

partilhamento

Pós-Sistemas de Informação - FAL 56

p = new Pessoa

p = new Aluno

p = new Professor

Polim

orfis

mo

Visão concreta

Concretizando polimorfismo: Variáveis polimórficasVariáveis/Atributos podem manipular objetos de mais de um tipo específico

Pessoa p

Tipo Nome

Mesmo tipo

Subtipo

Page 29: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

29

Pós-Sistemas de Informação - FAL 57

• acelerar

• acelerar

Visão concreta

Concretizando polimorfismo: Ligação dinâmicaQue método executar em tempo de execução???

p = new Veiculo

p = new Carro

p = new Bicicleta

Polim

orfis

mo

Veiculo p• acelerar

• acelerar

• acelerar

• acelerar

Pós-Sistemas de Informação - FAL 58

Visão concretaMão na massa!!!

Utilize objetos da figura para exemplificar cada um dos conceitos concretos definidos anteriormente

Page 30: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

30

Pós-Sistemas de Informação - FAL 59

AvaliaçãoMão na massa!!!

Entendendo o estudo de caso com OO!Identifique cada um dos conceitos aprendidos e “enxergue” o estudo de caso utilizando orientação a objetos

ClassificaçãoEspecializaçãoPolimorfismo

Análise Orientada a ObjetosAnálise de requisitos

Descrição dos requisitosMétodos de análise

UML – O que é? Pra que serve? Diagrama de casos de uso

Modelo conceitualAnalisando o estudo de caso!

Page 31: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

31

Pós-Sistemas de Informação - FAL 61

Análise de requisitos

Independente do paradigma utilizando, no contexto de desenvolvimento de software, tem-se uma análise de requisitos

O que desenvolver?Como funciona o software?Quais são seus requisitos funcionais e não-funcionais?Quem são os usuários do sistema?Quais as funcionalidades referentes a cada usuário do sistema?

Quem manda???O cliente!!!!

Pós-Sistemas de Informação - FAL 62

Análise de requisitos

Durante a análise de requisitos, como descrever as informações obtidas (do cliente)

Linguagem conhecida por todos os desenvolvedoresCompartilhamento dos requisitos deve ser simplesNovos desenvolvedores podem entrar na equipeA equipe pode ser completamente alterada

Page 32: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

32

Pós-Sistemas de Informação - FAL 63

Descrição dos requisitos

Análise estruturadaModelo Entidade-RelacionamentoDiagrama de Fluxo de Dados

Cliente

Analisadados

Devolveposição

Dados em memória

Se não recebeu dados

Se recebeu dados Consulta

Memoriza

Envia sinal Requisitacliente

Esperarecepção de dados

Processos

Armazenamento

Pós-Sistemas de Informação - FAL 64

Descrição dos requisitos

Análise estruturadaModelo de fluxo de controle

Sistemas dirigidos a eventosCSPEC – Especificação de controle

PSPEC: especificação de processoTexto narrativo, equações, tabelas...Ex.: processar senha...

Dicionário de dadosListagem organizada das definições de todos os elementos pertinentes ao sistema

Page 33: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

33

Pós-Sistemas de Informação - FAL 65

Métodos de análise

Análise orientada a objetosÉ necessário haver uma forma de mapear os requisitos em entidades do mundo realSe estamos no mundo de objetos, o fluxo de controle/dados utilizado anteriormente não é suficientePrecisamos mapear os mundos dos requisitos para os modelos conceituais de objetosEnfim...como descobrir classes a partir de um conjunto de requisitos???

Pós-Sistemas de Informação - FAL 66

Métodos de análise

Principais métodosOMT - RumbaughBoochFusion (HP)Objectory - JacobsonCoad / YourdonMartin / OdellShlaer / Mellor

Page 34: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

34

Pós-Sistemas de Informação - FAL 67

Métodos de análise

O objetivo do curso não é apresentar processos de desenvolvimento...

... portanto, o ciclo padrão de desenvolvimento de software, comAnálise, Projeto e Implementação será seguido.Simplificação do CDI

Documentação????UML!!!!

Redefinição de fases para processos atuaisRUP – Fases diferentes: Análise, Elaboração, Implementação e Implantação XP – Foco inicial em testes, fase de refatoramento

Pós-Sistemas de Informação - FAL 68

Unified Modeling Language

Linguagem de Modelagem UnificadaOMG – 1994Booch, Rambaugh, Jacobson (“Três amigos”)Unificação de várias outras linguagens (Objectory, Booch, OMT,...)

Não define um processo... é apenas uma linguagem!!!Processos:

Rational Unified Process (RUP) – “Três amigos”eXtreme Programming (XP)Agile Modeling (AM) Ciclo de Desenvolvimento Iterativo (CDI)Object Modeling Technique (OMT)

Page 35: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

35

Pós-Sistemas de Informação - FAL 69

Unified Modeling Language

UML serve para…Comunicação

Desenvolvedores compartilham idéias e informações

DocumentaçãoFacilidade de manutenção e atualização do software

ConstruçãoFacilita o processo de definição do projeto de software

EspecificaçãoFacilita a especificação dos requisitos do software

ConcepçãoFacilita a atividade de abstração e mapeamento do problema para o mundo de objetos

Pós-Sistemas de Informação - FAL 70

Unified Modeling Language

Elementos da UMLEstruturais

Qual o “desenho” do software?

ComportamentaisComo o software funciona?

AgupamentoComo as entidades lógicas (objetos) e físicas (entidades computacionais) são agrupadas

Page 36: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

36

Pós-Sistemas de Informação - FAL 71

Unified Modeling Language

Diagramas da UML (Modelo estático)Casos de Uso

Descrição das funcionalidades do sistema Classe

Qual o modelo de classes do sistema?Objetos.

Qual o modelo de objetos do sistema, ou seja, como as instâncias das classes se relacionam em tempo de execução?

ComponentesComo as classes estão organizadas em componentes binários???

ImplantaçãoComo é a arquitetura física do sistema???

Pós-Sistemas de Informação - FAL 72

Unified Modeling Language

Diagramas da UML (Modelo dinâmico)Seqüência

Como ocorre a interação entre as entidades em relação ao tempo?

ColaboraçãoComo ocorre a interação entre as entidades em relação à agrupamentos funcional, organização ou conjunto de classes?

EstadosQuais os “retratos” do estado do sistema e de cada instância de classe em tempo de execução?

AtividadesQuais as atividades relacionadas à execução do sistema, em termos dos seus estados?

Page 37: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

37

Pós-Sistemas de Informação - FAL 73

Unified Modeling Language

Os diagramas UML serão apresentados durante o curso de acordo com a necessidade de uso

Voltemos ao foco de análise...... lembram??? Precisamos de uma maneira de descobrir possíveis classes a partir de requisitos

De acordo com o CDI...Diagrama de Casos de UsoModelo conceitual

Pós-Sistemas de Informação - FAL 74

Diagramas de casos de uso

Técnica simples e intuitiva Identificação dos requisitos de um sistemaMais especificamente, serve para:

captar os requisitos dos usuários;identificar objetos e suas propriedades;particionar um sistema em partes conhecidas e compreendidas pelos usuários;facilitar a definição da melhor alternativa de projeto.

Page 38: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

38

Pós-Sistemas de Informação - FAL 75

Diagramas de casos de uso

Mais especificamente, serve para:elaborar o plano de testes e aceitação do sistema;descrever a funcionalidade do sistema e criar a documentação para os usuários;estimar porte e esforço de desenvolvimento do sistema.

Pós-Sistemas de Informação - FAL 76

Diagramas de casos de uso

O que é um caso de uso???Casos de uso são cenários que descrevem as diversas situações em que os usuários utilizam o sistema.O conjunto desses cenários descreve a funcionalidade do sistema.

Page 39: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

39

Pós-Sistemas de Informação - FAL 77

Diagramas de casos de uso

Notação de casos de uso

Caso de uso 1

Caso de uso 2

Caso de uso 3

Sistema

Ator 1

Ator 2

Ator 3

Atores

Fronteira dosistema

Casos de uso

Pós-Sistemas de Informação - FAL 78

Diagramas de casos de uso

O que é descrito num diagrama de casos de uso?Seqüência de ações / interações que ocorrem durante uma determinada execução do sistema.Conjunto de cenários mostrando as diversas seqüências de interação entre os atores e o sistema.Diálogo realizado entre um usuário e o sistema para se atingir algum objetivo.

Page 40: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

40

Pós-Sistemas de Informação - FAL 79

Diagramas de casos de uso

Exemplo: Sistema de vendas (Loja)

Comprar produto

Notificar promoções

Adicionar/Removerproduto

Cliente

Gerente

...

...

Sistema

Pós-Sistemas de Informação - FAL 80

Diagramas de casos de uso

Exemplo: Sistema de agência de viagens

Comprar passagem

AdquirirTicket

Listar passageiros

Passageiro

Atendente

...

...

Sistema

Page 41: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

41

Pós-Sistemas de Informação - FAL 81

Diagramas de casos de uso

Exemplo: Sistema acadêmico

Ver notas

GerenciarNotas

Gerenciar disciplina

Aluno

Administrador

...

...

Sistema

Professor

...

Pós-Sistemas de Informação - FAL 82

Diagramas de casos de uso

Detalhando casos de usoGerenciar Disciplina

GerenciarDisciplinas

AdicionarDisciplina

RemoverDisciplina

EditarDisciplina

Page 42: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

42

Pós-Sistemas de Informação - FAL 83

Diagramas de casos de uso

Casos de uso: versão estendidaCaso de uso: Adicionar disciplinaAtores: AdministradorDescrição: O administrador solicita a adição de disciplina ao sistema, repassando o nome e o código da disciplina a ser adicionada. O sistemaretorna um ok caso a operação tenha sucesso.

Seqüência de eventos

Ação do ator Resposta do Sistema1. Administrador solicita adição dedisciplina repassando nome e código.

2. Sistema verifica se não há outra disciplina com mesmo código e adiciona disciplina.3. Sistema retorna ok para Administrador.

Pós-Sistemas de Informação - FAL 84

Diagramas de casos de uso Mão na Massa!!!

Crie um diagrama de casos de uso para o sistema de informação de sua empresa

Identifique os atoresIdentifique as funcionalidades do sistemaRelacione as funcionalidades aos atoresEscolha 3 casos de uso para descrevê-los de forma estendida!

Page 43: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

43

Pós-Sistemas de Informação - FAL 85

Modelo conceitual

Já sabemos analisar os requisitos do software......vamos agora enxergar o problema de acordo com os conceitos da orientação a objetosObjetivo: identificar as classes que fazem parte do sistema

Através da identificação de objetos Aplicação do “triângulo da OO”

Para descrever os objetos que fazem parte do modelo utilizaremos a notação UML

Pós-Sistemas de Informação - FAL 86

Modelo conceitual

Notação UML para classe

Atributos

Bicicletamarchascor

Nome

Bicicleta

Métodos

Bicicleta

marchascor

pedalarfrear

Page 44: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

44

Pós-Sistemas de Informação - FAL 87

Modelo conceitual

Em análise, os métodos das classes podem ser omitidosA idéia do modelo conceitual é ter uma primeira visão de como os objetos do sistema se relacionamRelacionam????

Tipos de relacionamento:HerançaAssociaçãoAgregação/Composição

Pós-Sistemas de Informação - FAL 88

Modelo conceitual

Descrevendo herança (relacionamento “é um”)Veiculo

Bicicleta

Veiculo

Bicicleta Carro

CarroEsportivo CarroCorrida

Page 45: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

45

Pós-Sistemas de Informação - FAL 89

Modelo conceitual

Associação (relacionamento comum)

Aluno

Disciplina

Professor

ensina

estuda

matricula-se

AssuntoBidirecional

Direção do relacionamentoRótulos

Pós-Sistemas de Informação - FAL 90

Modelo conceitual

Agregação/Composição (“é composto de”)

Carro

Roda Motor Painel

Velocimetro Relógio Porta luvas

Page 46: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

46

Pós-Sistemas de Informação - FAL 91

Modelo conceitual

Cardinalidade

Carro

Roda Motor Painel

Velocimetro Relógio Porta luvas

Motorista

14 1

1 1 1

* 0..*

Pós-Sistemas de Informação - FAL 92

Modelo conceitualMão na Massa!!!

Crie um modelo conceitual para o sistema de informação de sua empresa

Identifique as entidades do modeloIdentifique as classes envolvidasDefina as associações entre as classes

Page 47: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

47

Pós-Sistemas de Informação - FAL 93

AvaliaçãoMão na Massa!!!

Realize uma análise orientada a objetos do estudo de caso

Casos de usoModelo conceitual

Projeto Orientado a Objetos

Explodindo casos de uso: diagramas de interaçãoDefinindo classes, atributos e métodos: diagrama de classes

Agrupando funcionalidades: pacotes Diagrama de pacotes

Diagramas de ImplementaçãoProjetando o estudo de caso!

Page 48: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

48

Pós-Sistemas de Informação - FAL 95

Explodindo casos de uso: diagramas de interação

Como mapear os requisitos descritos nos casos de uso em métodos das classes???

Caso de uso3

Caso de uso2

Caso de uso 1

Ator 1

Ator 3

...

...

Ator 2

...

Classe A

Classe C

Classe B

Classe D

Pós-Sistemas de Informação - FAL 96

Explodindo casos de uso: diagramas de interação

Diagramas de interaçãomodelagem dos aspectos dinâmicos do sistemamostra uma interação formada por um conjunto de objetos e seus relacionamentos, incluindo as mensagens que poderão ser trocadosentre elesInteração = Objetos + Vínculos + MensagensDois tipos

Diagramas de seqüênciaDiagramas de colaboração

Page 49: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

49

Pós-Sistemas de Informação - FAL 97

Explodindo casos de uso: diagramas de interação

Diagramas de SeqüênciaDescrevem um comportamento internoMostram os eventos entre objetosDescrevem uma interação no tempoIdeal para especificações de tempo realNão mostram os tipos de associação entre objetos

Pós-Sistemas de Informação - FAL 98

Explodindo casos de uso: diagramas de interação

Diagramas de SeqüênciaPossui duas características que os diferencia de diagramas de colaboração:

Linha de vida do objetoRepresenta a existência de um objeto de acordo com o tempo

Foco de controleRepresenta o período em que o objeto está executando algum processamento

Page 50: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

50

Pós-Sistemas de Informação - FAL 99

Explodindo casos de uso: diagramas de interação

Diagramas de SeqüênciaQue interação/cenário iremos modelar? Conexão telefônica!

O chamador inicia a chamada

1

Sinal de linha

2

tuuuuuuuuuuuuuu....

uuuuuuuuuu....

Discar

3

Toca no receptor

4

trimmm... tr

immm

Toca no chamador

5trimmm... trimmm

6

Conexão estabelecida!

Pós-Sistemas de Informação - FAL 100

Explodindo casos de uso: diagramas de interação

Diagramas de Seqüência

Chamador :Telefone :Recebedor

levanta telefone

ouve o sinal

discatoca campainha

toca campainhaatende

pare de tocar

pare de tocar

Linh

a de

tem

po

t = 0s

t = 15s

t = 5s

t = 20s

t = 30s

Objetos

Ator

Linha de vida

Fim da linha!

Período deatividade

Page 51: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

51

Pós-Sistemas de Informação - FAL 101

Explodindo casos de uso: diagramas de interação

Diagramas de ColaboraçãoRepresentam interações entre classesO eixo dos tempos não está explicitoAs classes/objetos trocam mensagens, através de vínculos, ligações estabelecidas entre elasSão semelhantes aos diagramas de seqüência, contendo as mesmas informações

Pós-Sistemas de Informação - FAL 102

Explodindo casos de uso: diagramas de interação

Diagramas de ColaboraçãoPossui duas características que os diferencia de diagramas de seqüência:

Caminho Existe o caminho para indicar como um objeto esta vinculado a outro

Número de seqüênciaOrdem temporal de uma mensagem

Page 52: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

52

Pós-Sistemas de Informação - FAL 103

Explodindo casos de uso: diagramas de interação

Diagramas de Colaboração

Usuário

:GerenteMaterial

:Livro

1:procura assunto

2:fornece opções

3:pede detalhes

3.1:pede detalhes

3.2:detalhes

Objetos

Ator

Seqüência

Pós-Sistemas de Informação - FAL 104

Explodindo casos de uso: diagramas de interação

Voltemos à pergunta: “Como mapear os requisitos descritos nos casos de uso em métodos das classes???”

Exemplo: Sistema acadêmico

Ver boletim

GerenciarNotas

Gerenciar disciplina

Aluno

Administrador

...

...

Professor

...

Page 53: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

53

Pós-Sistemas de Informação - FAL 105

Explodindo casos de uso: diagramas de interação

Explodindo “Ver boletim”

Quais as entidades envolvidas?Atores

Entidades do modelo conceitual

Ver boletim

Aluno

Aluno

Boletim

Nota

Disciplina

Pós-Sistemas de Informação - FAL 106

Explodindo casos de uso: diagramas de interação

Descrição estendida do caso de uso

Caso de uso: Ver notasDescrição: o aluno solicita ao sistema a visualização do boletim, o sistemaretorna o boletim do aluno de acordo com as disciplinas que ele faz parte.Seqüência de eventos:

Ação do ator Resposta do sistema1. Aluno solicita a visualização do seuboletim repassando sua matrícula.

2. Sistema recupera boletim do aluno.

3. Sistema exibe o boletim ao aluno.

Page 54: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

54

Pós-Sistemas de Informação - FAL 107

Explodindo casos de uso: diagramas de interação

Mão na massa!!!Crie um diagrama de seqüência e um diagrama de colaboração para o caso de uso “ver boletim”.

Aluno

Boletim

Nota

DisciplinaAluno

Atores Entidades do modelo conceitual

Pós-Sistemas de Informação - FAL 108

Explodindo casos de uso: diagramas de interação

Diagrama de seqüência

aluno1:Aluno :Nota:Boletim :DisciplinaAluno novo(“Hyggo”)

exibir()getValor()

retorna valor

retorna nome

getNome()

mostrarNaTela

Page 55: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

55

Pós-Sistemas de Informação - FAL 109

Explodindo casos de uso: diagramas de interação

Diagrama de colaboração

aluno1:Aluno

:Nota

:Boletim

:Disciplina

Aluno

1:novo(“Hyggo”) 2:exibir()

2.2:retorna va

lor

2.5:mostrarNaTela

2.1:getValor() 2.4:retorna valor

2.3:getValor()

Pós-Sistemas de Informação - FAL 110

Definindo classes, atributos e métodos: diagrama de classes

Reduzindo o abismo

Ver boletim

aluno1:Aluno :Nota:Boletim :Disciplina

novo(“Hyggo”)exibir()

getValor()

retorna valor

retorna nome

getNome()

mostrarNaTela

Setas chegando!!! Métodos implementados pela classe alvo!!!

Algumas são retornos demétodos!!!

Page 56: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

56

Pós-Sistemas de Informação - FAL 111

Definindo classes, atributos e métodos: diagrama de classes

Reduzindo o abismoTransformando um modelo conceitual em um diagrama de classes!!!

Aluno

novo(nome):nulo

Boletim

+ exibir():nulo- mostrarNaTela()

Disciplina

+ getNome():nome

Nota

+ getValor():valor

cursa

Métodos

???

Retornos

Parâmetro

Pós-Sistemas de Informação - FAL 112

Definindo classes, atributos e métodos: diagrama de classes

Mas o que é “valor” e “nome”??? Melhor trabalhar com os tipos!!!

Aluno

novo(nome):nulo

Disciplina

+ getNome():nome

Nota

+ getValor():valor

???

???

???

Tipo: StringRep: cadeia de caracteresExemplo: “joão”, “carro”,...

Tipo: intRep: número inteiroExemplo: 10, 9, 8923,...

Tipo primitivo (POO)

Page 57: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

57

Pós-Sistemas de Informação - FAL 113

Definindo classes, atributos e métodos: diagrama de classes

Diagrama de classesDefinindo tipos de parâmetros e retornos

Aluno

novo(String nome):void

Boletim

+ exibir():void- mostrarNaTela():void

Disciplina

+ getNome():String

Nota

+ getValor():int

cursa

Tipo do retorno

Tipo do parâmetro

Pós-Sistemas de Informação - FAL 114

Agrupando funcionalidades: pacotes

Na medida em que cresce o número de classes vai ficando mais difícil entender o projeto

Classes acopladasMuitos relacionamentosClasses não separadas por contexto

Interface

Relatório

Armazenamento

Negócio

Contextos das classes

CAOS!!!

Page 58: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

58

Pós-Sistemas de Informação - FAL 115

Agrupando funcionalidades: pacotes

Facilidade de entendimento e manutenção do programa

Alta coesão das funcionalidadesAgrupar funcionalidades relacionadas em “pacotes”BD

Interface

Relatório

Negócio

Pós-Sistemas de Informação - FAL 116

Diagrama de pacotes

Relacionamentos entre os diversos pacotes podem ser descritos em um diagrama de pacotes

Banco de dados

Interface

Relatório

Negócio

Dependências

Page 59: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

59

Pós-Sistemas de Informação - FAL 117

Diagramas de implementação

Descrição do projeto físico necessário à execução do software

Diagrama de componentesDescrição de relacionamentos entre módulos binários

Diagrama de implantaçãoDescrição de componentes físicos com algum tipo de processamento

Pós-Sistemas de Informação - FAL 118

Diagramas de implementação

Diagrama de componentesClasses e pacotes, quando compilados, tornam-se módulos binários... de execução de softwareNo caso de Java, os módulos binários são encapsulados em arquivos .JAR (Java ARchive)No diagrama de componentes tem-se uma visão do relacionamento entre módulos binários do software sendo desenvolvido

Page 60: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

60

Pós-Sistemas de Informação - FAL 119

Diagramas de implementação

Diagrama de componentes

agenda.jar

usuario.ini

relatorio.jar

dados.xml

Unidadesbinárias

(componentes)

Dependências

Pós-Sistemas de Informação - FAL 120

Diagramas de implementação

Diagrama de implantaçãoArquitetura física do sistemaUtilizado para descrever o sistema do ponto de vista de hardware

NomeNó = qualquer dispositivo com

capacidade de processamento

Page 61: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

61

Pós-Sistemas de Informação - FAL 121

Diagramas de implementação

Diagrama de implantação

ServidorBD

ServidorImpressão

Impressora

ClienteAgenda

1

1

**

Cardinalidade

Pós-Sistemas de Informação - FAL 122

Diagramas de implementação

A junção dos diagramas descreve a estrutura completa do software de forma hierárquica

Impl

anta

ção

Cliente (Agenda)

Paco

tes

agenda.jar

Cla

sses

Negócio

Page 62: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

62

Pós-Sistemas de Informação - FAL 123

Projetando o estudo de caso!Realize o projeto orientado a objetos do estudo de caso

A partir dos diagramas de caso de uso crie diagramas de interaçãoSeqüência e colaboração

A partir dos diagramas de interação crie o diagrama de classe completo

ClassesAtributosMétodosVisibilidadeCardinalidadeRelacionamentosPacote “agenda”

Programação Orientada a ObjetosDa modelagem ao software

Introdução à linguagem Java“Oi, eu sou um programa Java!”

Mapeando conceitos para elementos da linguagemProgramando o estudo de caso!

Page 63: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

63

Pós-Sistemas de Informação - FAL 125

Da modelagem ao softwareComo mapear os modelos orientados a objetos em programas???

Mas antes disso...... o que é um programa???

???

Pós-Sistemas de Informação - FAL 126

Da modelagem ao software

O que são programas?Descrições de como os computadores devem operar para realizar os serviços que desejamos que façamÉ apenas a descrição de uma atividade em potencialPara obter o serviço é necessário instruir o computador a executar o programaUm programa em execução é um processo

Page 64: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

64

Pós-Sistemas de Informação - FAL 127

Da modelagem ao software

Em que consiste um programa?Uma seqüência de instruções que um programa deve seguirEntão... construir um programa é determinar estas seqüência de instruçõesExemplo: programa pra calcular média aritmética

1: calcule a média aritmética de dois números

Está correto! Mas o computador não vai entender!

Pós-Sistemas de Informação - FAL 128

Da modelagem ao software

Programar é detalhar!!!

1: leia os números cuja média será calculada2: some os números3: divida a soma dos números pela quantidade de números4: imprima o resultado

Está mais detalhado! Mas o computador entende esta linguagem???

Page 65: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

65

Pós-Sistemas de Informação - FAL 129

Da modelagem ao software

Linguagens de programaçãoOs programas escritos anteriormente estão em portuguêsMas o computador não entende portuguêsLinguagens de programação são projetadas para serem entendidas pelo computadorSendo assim, ao escrever um programa utilizando uma LP, este poderá ser “interpretado” e executado pelo computador

Pós-Sistemas de Informação - FAL 130

Da modelagem ao software

Linguagens de programaçãoEm geral provê:

Um conjunto básico de instruçõesMecanismos para compor instruções

Repetição, seqüência, alternativa

Mecanismos de abstraçãoProcedimentos e dados

Page 66: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

66

Pós-Sistemas de Informação - FAL 131

Introdução à Java

O que é Java?Uma das mais modernas linguagens de programação OO que existem atualmenteImplementa de forma clara os conceitos de OOÉ uma “extensão” da linguagem C/C++

Mais fácil de utilizarMais robusta!!!

Pós-Sistemas de Informação - FAL 132

Introdução à Java

Programação não é o foco do cursoApenas conceitos básicos serão apresentados

Necessários à execução do programa

Apenas a parte OO será abordada, respondendo à pergunta:

“Como ocorre o mapeamento dos modelos UML para Java”

Para realmente criar programasEstudar algoritmosEstudar a sintaxe da linguagemPraticar muito!!!

Page 67: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

67

Pós-Sistemas de Informação - FAL 133

Introdução à Java

Criando uma classe-exemploBicicleta

public class Bicicleta{private int marchas = 2;private String cor = “amarelo”;

public int getMarchas(){return marchas;

}public String getCor(){

return cor;}

}

Bicicleta- marchas:int- cor: string+ getMarchas():int+ getCor(): string

Pós-Sistemas de Informação - FAL 134

Introdução à Java

Tipos de dados em Java (primitivos)Inteiros: byte / short / int / longReais: float / doubleOutros: char / boolean / void

Não são classes, apenas tipos

byte numeroPequeno = 245;

int numeroMaior = 245000;

char primeiraLetra = ‘H’;

double minhaNota = 9.5;

boolean souBonito = true;

Page 68: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

68

Pós-Sistemas de Informação - FAL 135

Introdução à Java

Mas como o computador entende Java???Compilador/Interpretador

0000111101001010010011010110

10100110public class Bicicleta{...

}

Compilador/Interpretador

Java Binário

Pós-Sistemas de Informação - FAL 136

“Oi, eu sou um programa Java”

Onde é que a brincadeira começa???Nas classes são definidas apenas as entidades, seus atributos e operaçõesMas quem invoca/solicita as operações???Precisamos de um método principal onde a execução do programa começa!!!Em Java, o método principal = main

Page 69: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

69

Pós-Sistemas de Informação - FAL 137

“Oi, eu sou um programa Java”

public class TestePrincipal{

public static void main(String args[]){

System.out.println(“Oi, eu sou um programa Java”);

}

}

TestePrincipal (Exibindo a mensagem acima)Qualquer classe pode ter um método principal Esta é a sintaxe exata do

método!!!

Comando para exibirmensagens na tela!!!

Pós-Sistemas de Informação - FAL 138

“Oi, eu sou um programa Java”

public class TestePrincipal{

public static void main(String args[]){double nota1 = 5;double nota2 = 6;double media = (nota1+nota2)/2;System.out.println(“Média:” + media);

}

}

Definindo variáveisExemplo: Cálculo da média de duas notas: 5 e 6

Variáveis

Page 70: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

70

Pós-Sistemas de Informação - FAL 139

“Oi, eu sou um programa Java”

Atribuição: =int a = 2; char letra = ‘c’; boolean acesa = true;

Aritméticos: + - * / %2 + 2, a - a, 3*a, letra + letra

Unários: ++ --a++; a = a+1; a--; a=a-1;

Lógicos: = = != < > <= >2 == 2; a == a; 5 > 3; a != 3; true != false;

Pós-Sistemas de Informação - FAL 140

“Oi, eu sou um programa Java”

public class TestePrincipal{

public static void main(String args[]){int a = 1;System.out.println(a);a++;System.out.println(a);System.out.println(a > 2);System.out.println(a != 1);

}

}

Utilizando operadores

Page 71: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

71

Pós-Sistemas de Informação - FAL 141

“Oi, eu sou um programa Java”

Até agora, só classes... e como criar objetos a partir de uma classe???

Operador newpublic class TestePrincipal{

public static void main(String args[]){

Bicicleta minhaBike = new Bicicleta();

System.out.println(“Cor:” + minhaBike.getCor());System.out.println(“Marchas:” + minhaBike.getMarchas());

}

}

Pós-Sistemas de Informação - FAL 142

“Oi, eu sou um programa Java”

Parametrizando o método construtor de Bicicleta

public class Bicicleta{private int marchas;private String cor;

public Bicicleta(int marchas, String cor){this.marchas = marchas;this.cor = cor;

}

Método construtor com mesmo nome da classe e sem retorno

Não inicializados!

Parâmetros necessáriosà construçãoAtribuição: this resolve

problema de nomes duplicado

Page 72: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

72

Pós-Sistemas de Informação - FAL 143

“Oi, eu sou um programa Java”

Construindo o objeto via construtor parametrizadopublic class TestePrincipal{

public static void main(String args[]){

Bicicleta minhaBike1 = new Bicicleta(2, “verde”);System.out.println(“Cor 1:” + minhaBike1.getCor());System.out.println(“Marchas 1:” + minhaBike1.getMarchas());

Bicicleta minhaBike2 = new Bicicleta(7, “azul”);System.out.println(“Cor 2:” + minhaBike2.getCor());System.out.println(“Marchas 2:” + minhaBike2.getMarchas());

}}

Pós-Sistemas de Informação - FAL 144

“Oi, eu sou um programa Java”Mão na massa!!!

Crie as classes Pessoa e CarroCrie dois atributos e seus métodos de acesso (get)Utilize a classe TestePrincipal para criar dois objetos do tipo Pessoa e dois objetos do tipo Carro com atributos diferentes

Page 73: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

73

Pós-Sistemas de Informação - FAL 145

Mapeando conceitos para elementos da linguagem

Como fazer herança???

Carro de F1

Carro

Carro

CarroF1

- cor:String;- chassi:int;

- tipoBico:String;

+ getCor():String;+ getChassi():int;

+ getTipoBico():String;

Pós-Sistemas de Informação - FAL 146

Mapeando conceitos para elementos da linguagem

Carro

CarroF1

- cor:String;- chassi:int;

- tipoBico:String;

+ getCor():String;+ getChassi():int;

+ getTipoBico():String;

public class Carro{private String cor;private int chassi;public Carro(String cor, int chassi){

this.cor = cor;this.chassi = chassi;

}...gets...

}public class CarroF1 extends Carro{

private String tipoBico;public CarroF1(String cor, int chassi, String tipoBico){

super(cor, chassi);this.tipoBico = tipoBico;

}...getTipoBico...

}

Page 74: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

74

Pós-Sistemas de Informação - FAL 147

Mapeando conceitos para elementos da linguagem

Associação e Agregação/Composição

Carro

Marcha Roda Volante1 4 1

Atributo - coleção

Aluno

ProfessorAtributos simples

Pós-Sistemas de Informação - FAL 148

Mapeando conceitos para elementos da linguagem

Agregação/Composição e AssociaçãoAtributos simples (relacionamentos 1 para 1)Um atributo para cada instância??? Ou seja, n atributos???

Carro

Marcha Volante1 1

public class Carro{private Marcha marcha;private Volante volante;public Carro(Marcha marcha, Volante volante){

this.marcha = marcha; this.volante = volante;

}}

Page 75: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

75

Pós-Sistemas de Informação - FAL 149

Mapeando conceitos para elementos da linguagem

Agregação/ComposiçãoAtributos de coleção (relacionamentos 1 para n)Um atributo para cada instância??? Ou seja, n atributos???

Carro

Roda

public class Carro{private Marcha marcha;private Volante volante;private Roda roda1;private Roda roda2;private Roda roda3;private Roda roda4;...

}

4

Pós-Sistemas de Informação - FAL 150

Mapeando conceitos para elementos da linguagem

Agregação/ComposiçãoProblema??? E se for um time de futebol???Relacionamento entre Time e Jogador é 1 para 12.

Time

Jogador12 public class Time{

private Jogador jogador1;private Jogador jogador2;...private Jogador jogador12;...

}

Page 76: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

76

Pós-Sistemas de Informação - FAL 151

Mapeando conceitos para elementos da linguagem

Agregação/ComposiçãoPrecisamos de um “saco” para guardar vários objetos de um mesmo tipoPrecisamos de um array

Array de rodas!!!

Roda[ ] rodas = new Roda[4];

Atributo = coleção de “Roda”

Pós-Sistemas de Informação - FAL 152

Mapeando conceitos para elementos da linguagem

Agregação/ComposiçãoUsando array!!!

Carro

Roda4 public class Carro{

private Roda[ ] rodas;}

Page 77: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

77

Pós-Sistemas de Informação - FAL 153

Mapeando conceitos para elementos da linguagem

Agregação/ComposiçãoUsando array!!!public class TestePrincipal{

public static void main(String args[]){Marcha minhaMarcha = new Marcha();Volante meuVolante = new Volante();Roda[ ] rodas = new Roda[4];rodas[0] = new Roda(“Dianteira direita”);rodas[1] = new Roda(“Dianteira esquerda”);rodas[2] = new Roda(“Traseira direita”);rodas[3] = new Roda(“Traseira esquerda”);Carro meuCarro = new Carro(minhaMarcha, meuVolante, rodas);

}}

Pós-Sistemas de Informação - FAL 154

Mapeando conceitos para elementos da linguagem

Mão na massa!!!Implementem o exemplo completo!!!

Carro

Marcha Roda Volante1 4 1

- posicao:String

+ getPosicao():String

+ getRodas()

Page 78: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

78

Pós-Sistemas de Informação - FAL 155

Programando o estudo de caso

Implemente o estudo de caso modelado anteriormente (Agenda)

1. Crie o pacote agenda!!!Comando package!!! Use o Eclipse!!!

2. Crie as classes e os seus relacionamentos3. Crie uma ClassePrincipal que realiza uma operação de

busca de contatos por nomes

Pós-Sistemas de Informação - FAL 156

Programando o estudo de caso

Pra facilitar o entendimento... todos iniciarão programando de acordo com o mesmo projeto simples

public class ClassePrincipal{public static void main(String args[]){

Agenda minhaAgenda = new Agenda();Contato contato = minhaAgenda.buscarContato(“Hyggo”);System.out.println(“Nome:” + contato.getNome());System.out.println(“Endereço:” + contato.getEnd());System.out.println(“Telefone:” + contato.getTelefone());System.out.println(“E-mail:” + contato.getEmail());

}}

AgendaContato

+ buscarContato():Contato- nome:String- end:String- telefone:String- email:String

5

+ gets...

Page 79: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

79

Pós-Sistemas de Informação - FAL 157

Programando o estudo de caso

Vocês vão precisar de três novos comandos: if, for e equals

Estrutura condicional – IFIf (condição){

...}else{...}Exemplo:

if (a == b){ System.out.println(“A e B são iguais!!!”)

}else{System.out.println(“A e B são diferentes!!!”)

}

Pós-Sistemas de Informação - FAL 158

Programando o estudo de caso

Vocês vão precisar de três novos comandos: if, for e equals

Estrutura de repetição – FORfor (declaração de variáveis locais ; condição de parada; incrementos){

\\código executado repetidas vezes}

for (int i=0; i<10; i++){System.out.println(“Contador:” + i);

}

Page 80: Orientação a Objetos - Início - SEFAZwebx.sefaz.al.gov.br/posengsoft/documentos/as1/oo.pdf · Apresentação do curso Motivação para o curso Objetivos do curso Estudo de caso

80

Pós-Sistemas de Informação - FAL 159

Programando o estudo de caso

Vocês vão precisar de três novos comandos: if, for e equals

Método de comparação entre objetos – equals“objeto.equals(outroObjeto)” = true/falseEx.: “hyggo”.equals(“hyggo”) = true; Ex.: “hyggo”.equals(“HYGGO”) = false;

String nome1 = “João”;String nome2 = “José”;if (nome1 == nome2){

System.out.println(“Nomes são iguais!!!”)}else{

System.out.println(“Nomes são diferentes!!!”)}

Pós-Sistemas de Informação - FAL 160

Programando o estudo de caso

Utilizando for, if e equals no método buscarContato

public class Agenda{private Contato[] contatos = new Contato[20];

public Contato buscarContato(String nome){for (int i=0; i<this.contatos.length;i++){

if (contato[i].getNome().equals(nome)){return contato[i];

}}System.out.println("Contato não encontrado!");return new Contato(“”,””,””,””);

}}