64
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação

Linguagem de Programação II

  • Upload
    corina

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

Linguagem de Programação II. Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação. Um pouco sobre UML. Diferenças de Notação. As diferenças de notação são muitas, e a ordem na qual o analista desenvolve o modelo em uma e outra técnica é completamente diferente; - PowerPoint PPT Presentation

Citation preview

Page 1: Linguagem de Programação II

Linguagem de Programação II

Carlos Oberdan Rolim

Ciência da Computação

Sistemas de Informação

Page 2: Linguagem de Programação II

Um pouco sobre UML

Page 3: Linguagem de Programação II

Diferenças de Notação

As diferenças de notação são muitas, e a ordem na qual o analista

desenvolve o modelo em uma e outra técnica é completamente

diferente;

Em técnicas Estruturadas, você coloca suas fundações sobre as

Funções do sistema - Coisas que mudam a toda hora;

Em OO você coloca suas fundações sobre os Dados do sistema -

algo que muda e evolui, mas não de forma tão dramática, a toda hora;

A UML, em especial, é uma técnica muito flexível, com uma notação

estendível, o que possibilita utilizá-la em diversos aspectos de um

sistema sem ter de trocar de técnica - Dados, real-time, Interface,

etc… .

Page 4: Linguagem de Programação II

Diferentes padrões

Em fins dos anos 80 e inicio dos anos 90 vários métodos orientados a objetos surgiram entre eles de Grady Booch, Jim Rumbaugh (OMT) e Ivar Jacobson

A UML foi uma tentativa de unificar as notações destes três métodos. Foi concebida por esses profissionais

A idéia era produzir um padrão com as melhores práticas adotadas pela indústria, levando mais desenvolvedores a modelar seus sistemas de software antes de construí-los

Page 5: Linguagem de Programação II

Grady Booch

Um dos pioneiros da OO

1980: ênfase em técnicas de projetos para ADA

1992-1994: livros

Object-Oriented Design With Applications

Projeto de programas em C++ e Ada

Page 6: Linguagem de Programação II

Grady Booch

1994: Object-Oriented Analysis and

Design with Applications

Texto sobre conceitos de OO e modelagem de

objetos

Projeto de várias aplicações-exemplo com

diferentes linguagens da época

Base da UML

1998

Fundação da Rational

Page 7: Linguagem de Programação II

Booch

Page 8: Linguagem de Programação II

Ivar Jacobson

Modelagem OO baseada em

casos de uso

Page 9: Linguagem de Programação II

James Rumbaugh

Object Modeling Technique (OMT)

Desenvolvida na GE

Metodologia baseada em notações pré-

existentes (ER, DTE, DFD)

Clara distinção entre as três visões do

problema

Page 10: Linguagem de Programação II

OMT

Page 11: Linguagem de Programação II
Page 12: Linguagem de Programação II
Page 13: Linguagem de Programação II

Visão Geral da UML

A UML é uma linguagem para:

visualizar

especificar

construir

documentar

Artefatos de um sistema intensivamente baseado em software

Elementos de modelagem

Relacionamentos

Mecanismos de extensibilidade

Diagramas

Page 14: Linguagem de Programação II

História da UML

Desenvolvimento do UML

começou no final de 1994, quando Booch e Rumbaugh passaram a trabalhar em conjunto

Versão Preliminar do UML (versão 0.8)

outubro de 1995, quando Jacobson se une ao grupo

A partir dos esforços de Booch, Rumbaugh e Jacobson

versão 0.91 (outubro de 1996), liberada para a comunidade

Page 15: Linguagem de Programação II

História da UML

Uma RFP (Request for Proposal) foi realizada pela OMG (Object Management Group)

buscando contribuições da comunidade para o estabelecimento de uma linguagem unificada

diversas contribuições lançaram o UML 1.0

Digital Equipment Corp., HP, i-Logix, IntelliCorp, IBM, ICON Computing, MCI Systemhouse, Microsoft, Oracle, Rational Software, TI e Unisys.

Em janeiro 1997, novas contribuições lançaram o UML 1.1

IBM & ObjecTime, Platinum Technology, Ptech, Taskon & Reich Technologies e Softeam

Page 16: Linguagem de Programação II

História da UML

A Partir da Versão 1.1

comunidade de desenvolvimento de software faz uma aderência maciça ao UML

Em novembro 1997

O UML 1.1 foi adotado como norma pela OMG

OMG estabeleceu um RTF (Revision Task Force) para aperfeiçoar pequenos detalhes na linguagem

Em Junho 1999

O RTF libera a versão UML 1.3

UML 1.4

Liberada em Setembro de 2001

UML 2.0

Liberada em Julho de 2005

Page 17: Linguagem de Programação II

Criação da UML

Método Booch OMT

Unified Method 0.8

OOSEOutros Métodos

UML 0.9

feedback

UML 1.0

UML 1.5

UML 2.0

UML 1.1

UML 1.3

Aceitação Final dOMG – Nov 1997

Submissão Final OMG – Set 1997

Primeira submissão OMG – Jan 1997

Parcerias UML

Web – Junho 1996

OOPSLA ´95

Page 18: Linguagem de Programação II

Meyer

Pré e Pós Condições

Harel

Máquinas de EstadosGamma, et al

“Frameworks” e “patterns”,

HP Fusion

Descrições de Operações eNumeração de Menssagens

Embley

Classes Singleton eVisão de Alto Nível

Wirfs-Brock

Responsabilidades

Odell

Classificação

Shlaer - MellorCiclos de Vida de Objetos

Rumbaugh

OMT

Booch

Booch method

Jacobson

OOSE

Contribuições à UML

Page 19: Linguagem de Programação II

Sócios da UML

Rational Software Corporation

Hewlett-Packard

I-Logix

IBM

ICON Computing

Intellicorp

MCI Systemhouse

Microsoft

ObjecTime

Oracle

Platinum Technology

Taskon

Sterling Software

Unisys

Page 20: Linguagem de Programação II

Unified Modeling Language

UML significa Linguagem de Modelagem Unificada

A UML combina o melhor do melhor de:

Conceitos de Modelagem de Dados (Diagramas Entidade-Relacionamento)

Modelagem de Negócios (Fluxo de trabalhos)

Modelagem de Objetos

Modelagem de Componentes

A UML é a linguagem padrão para visualizar, especificar, construir e

documentar os artefatos de um sistema intensamente baseado em

software

Pode ser usada com todos os processos, durante todo o ciclo de

desenvolvimento, e com diferentes tecnologias de implementação

Page 21: Linguagem de Programação II

Modelos, Visões, Diagramas

Use CaseDiagramasUse Case

DiagramasCaso de Uso

ScenarioDiagramasScenario

DiagramasColaboração

StateDiagramasState

DiagramasComponentes

ComponentDiagramasComponent

DiagramasDistribuição

StateDiagramasState

DiagramasObjetos

ScenarioDiagramasScenario

DiagramasEstado

Use CaseDiagramasUse Case

DiagramasSequência

StateDiagramasState

DiagramasClasses

Atividade

Modelos

Iteração

Visões dinâmicas

Visões estáticas

Page 22: Linguagem de Programação II

Modelos, Visões, Diagramas

Caso de Uso

Componentes

Distribuição

Objetos

Estado

Classes

Atividade

Colaboração

Sequência

Iteração

Visão do usuárioVisão do usuário

Visão comportamentalVisão comportamental Visão de Visão de ambienteambiente

Visão estruturalVisão estrutural Visão de Visão de implementaçãoimplementação

Page 23: Linguagem de Programação II

Atenção

Como o foco da disciplina é orientação a objetos não iremos nos aprofundar demais em diagramas e sim trabalharmos de forma mais intensa os conceitos envolvidos na orientação a objetos ao longo semestre.

A cadeira de Engenharia de Software proporciona o conhecimento necessário e aprofundado...

Page 24: Linguagem de Programação II

O Modelo de Objetos

Um modelo de objetos busca capturar a estrutura estática de um sistema mostrando os objetos existentes, seus relacionamentos, e atributos e operações que caracterizam cada classe de objetos.

É através do uso deste modelo que se enfatiza o desenvolvimento em termos de objetos ao invés de mecanismos tradicionais de desenvolvimento baseado em funcionalidades, permitindo uma representação mais próxima do mundo real.

Page 25: Linguagem de Programação II

Objeto é definido como um conceito, abstração ou coisa com limites e significados bem definidos para a aplicação em questão.

Objetos têm dois propósitos: promover o entendimento do mundo real e suportar uma base prática para uma implementação computacional.

Não existe uma maneira “correta” de decompor um problema em objetos; esta decomposição depende do julgamento do projetista e da natureza do problema. Todos objetos têm identidade própria e são distinguíveis.

Objeto

Page 26: Linguagem de Programação II

Objeto

Objetos são a chave para se compreender a tecnologia orientada a objetos. Você olha ao seu redor e tudo o que vê são objetos: carro, mesa, janela, livro, pessoa, etc.

Os objetos do mundo real têm duas carecterísticas em comum: ESTADO e COMPORTAMENTO.

Estado

O estado de um objeto revela seus dados importantes. Por exemplo, uma pessoa tem: idade, peso, altura, cor de cabelo, cor da pele.

Comportamento

O comportamento são as ações que aquele objeto pode exercer ou executar. Por exemplo, uma pessoa pode: andar, falar, ouvir, pular.

Page 27: Linguagem de Programação II

Objeto

Esses objetos podem ser tanto objetos concretos (carro, livro, nota fiscal), quanto conceitos abstratos (conta corrente, venda, pessoa jurídica).

Na Orientação a Objetos, os objetos do mundo real são modelados e representados no mundo computacional, ou seja, dentro do sistema, por meio de objetos de sotware.

Cada objeto deve ser conhecido, bem definido e ter seu limite e um significado dentro do sistema.

Os objetos de software, assim como os objetos do mundo real, também possuem estado e comportamento.

Page 28: Linguagem de Programação II

Classe

Uma classe é um “modelo” que define as variáveis (estado) e os métodos (comportamento) comuns a todos os objetos do mesmo tipo.

Um objeto nada mais é que uma instância de uma classe

Ex.: Grupo de pessoas. Cada pessoa pode ser vista como um objeto

mas todas elas pertencem a classe Pessoa

Page 29: Linguagem de Programação II

Representação de classes e objetos

Page 30: Linguagem de Programação II

Classe

Nome da classe podem ser simples ou pode ser precedido pelo nome do pacote em que a classe está contida

(Exceções::ClienteCadastrado)

Representação

Curso

nomecréditos

abrir()incluir()

Identificador - Nome (obrigatório)

Atributos (opcional)

Operações (opcional)

Page 31: Linguagem de Programação II

Classe

Nome da Classe

Visibilidade atributo: Tipo = ValorInicial

Visibilidade operação (lista arg): Tipo retorno

Page 32: Linguagem de Programação II

Atributos

Representa alguma propriedade do que está sendo modelado -

identifica as características próprias da classe

Descrevem os dados contidos nas instâncias de uma classe

Podem ser identificados apenas com nomes

Podem ter seus tipos (Classes) especificados e terem valores

padrão definidos

Page 33: Linguagem de Programação II

Atributos

Parede

altura : reallargura : realespessura : realviga : boolean = false

Page 34: Linguagem de Programação II

Visibilidade

Usar marcações de acesso para especificar o tipo de acesso permitido

aos atributos e operações

Visibilidade:

+ público : visível em qualquer classe

# protegido : qualquer descendente poderá usar

- privado : visível somente dentro da classe

+ saldoEM (date: Date): Money

Page 35: Linguagem de Programação II

Operações/Métodos

Uma operação é uma função ou transformação que pode ser aplicada a/ou por objetos em uma classe. Por exemplo, abrir, salvar e imprimir são operações que podem ser aplicadas a objetos da classe Arquivo. Todos objetos em uma classe compartilham as mesmas operações

Operação é algo que é executado em um objeto (procedimento de chamada)

Page 36: Linguagem de Programação II

Operações/Métodos

Um método é a implementação de uma operação para uma classe.

Descreve o comportamento da classe e por consequencia todos

os objetos daquela classe

Page 37: Linguagem de Programação II

Operações/Métodos

Visibilidade

+público

#protegido

-privado

Page 38: Linguagem de Programação II

Diagrama de Classes

ObjetivoDescrever os vários tipos de objetos no sistema e o relacionamento entre eles.

São os principais diagramas estruturais da UML

As classes especificam a estrutura e o comportamento (operações) dos objetos, que são instâncias das classes

Page 39: Linguagem de Programação II

Exemplo de diagrama

Page 40: Linguagem de Programação II

Diagrama de classes

Um diagrama de classes contém

Entidades

Representação de cada uma das pequenas partes daquilo que está se querendo representar

Classes

Interface vamos ver mais adiante o que é isso

Relacionamentos

Representa a forma como ocorrerá o relacionamento entre as partes

Associações

Generalização (herança)

Dependências

Page 41: Linguagem de Programação II

Atenção

Page 42: Linguagem de Programação II

Relacionamentos

**** Poucas classes vivem sozinhas ****

Comunicação entre classes - definem responsabilidades

Construir uma casa

casa, parede, porta, janela, cômodo, luz

Casa tem janelas, que têm vários tipos!

Janelas podem ser abertas no sentido vertical e/ou horizontal

Existem semelhanças entre as janelas e diferenças....

Page 43: Linguagem de Programação II

Relacionamentos

3 Tipos:

Associações

Agregação

Composição

Generalização (herança)

Dependências

Page 44: Linguagem de Programação II

Associação

Agregação

Herança

Composição

Dependência

Page 45: Linguagem de Programação II

Associação

Define um relacionamento entre duas entidades conceituais do

sistema

Especifica que objetos de uma classe estão conectados a objetos

de outras

Ex: as salas são formadas por paredes

É o tipo de ligação de classe mais utilizado nos diagramas de

classe

Page 46: Linguagem de Programação II

Dependência

Dependência - relacionamentos de utilização, no qual uma

mudança na especificação de um elemento pode alterar a

especificação do elemento dependente

Ex: os canos dependem do aquecedor para fornecerem água quente

Indica que mudanças em um elemento (o servidor) podem afetar

outro elemento (o cliente)

Dependência entre classes indica que os objetos de uma classe

usam serviços dos objetos de outra classe

Cliente Servidor

Page 47: Linguagem de Programação II

Generalização

Generalização (herança simples e múltipla) - relacionamento entre um

elemento mais geral e um mais específico

Herda de alguém alguma coisa ou características

é um relacionamento de taxonomia entre um elemento mais geral e um mais específico, que é totalmente consistente com o primeiro, somando-o informação especializada

O comportamento da classe ou característica da classe muda com relação as outras associações existentes

A classe sendo refinada é chamada de superclasse ou classe base, enquanto que a versão refinada da classe é chamada uma subclasse ou classe derivada

As vezes é chamada de relacionamento is-a (é-um), porque cada instância de uma classe derivada é também uma instância da classe base.

Ex: Veículo terrestre pode ser do tipo automóvel ou caminhão (TIPO DE), Tipos de Animal (mamífero, ave, peixe)

Page 48: Linguagem de Programação II

Generalização

Page 49: Linguagem de Programação II

Clube

Associado

Dependente Exemplo de associação

e dependencia

Page 50: Linguagem de Programação II

Import java.awt.Graphics;

class HelloWorld extends java.applet.Applet

{

public void paint (Graphics g)

g.drawString(“Hello, world!”, 10, 10);

}

HelloWorld

paint()

Graphics

Applet

Page 51: Linguagem de Programação II

Tipos des associação (agregação ou composição)

Agregação - tipo especial de associação - relacionamento “é parte de, todo/parte” (diamante aberto)

O objeto que contém a referência a outros objetos (todo) PODE EXISTIR independentemente da existência dos objetos referenciados (parte).

DisciplinaEstudante

Todo ParteAgregação

Page 52: Linguagem de Programação II

Agregação

Objeto TODO mantém um ponteiro ou uma referência parasuas partes

Ex.:

Temos o objeto Carro que por sua vez faz referência ao objeto Rodas, porém o objeto "Carro" pode existir mesmo que vc destrua "Rodas", ou seja "faz sentido a existência do carro mesmo sem seus pneus".

Page 53: Linguagem de Programação II

Composição

Composição - relacionamento entre um elemento (o todo) e outros

elementos (as partes) indica que as partes só podem pertencer

ao “todo” e são criadas e destruídas com ele

A parte não vive sem o todo

O objeto que contém a referência a outros objetos NÃO FAZ

SENTIDO EM EXISTIR sem a existência dos objetos referenciados.

É semanticamente esquivalente a um ATRIBUTO, mas pode ser

mais atraente quando a parte tem uma estrutura interna

DisciplinaEstudante

Todo ParteComposição

Page 54: Linguagem de Programação II

Composição

Ex.:Objeto Pedido que por sua vez faz referência ao objeto Itens, portanto o objeto "Itens" não faz sentido sem o objeto "Pedido". Qual o principal "conteúdo" do pedido ? São seus itens certo ?

Page 55: Linguagem de Programação II

Computador

Teclado MouseMonitor

Janela

Botão TítuloMenu

Page 56: Linguagem de Programação II

Associação x Agregação x Composição

Como você modelaria:

Dependente e Funcionário?

Pedido e Item do pedido?

Funcionário e Cartão de ponto?

Carro, Roda, Direção e Carburador?

Na dúvida, use agregação!

Na dúvida, use associação!

Page 57: Linguagem de Programação II

Multiplicidade

Multiplicidade define quantos objetos participam do relacionamento

O número de instâncias de uma classe relacionada a uma instância de outra classe

Especificado em cada uma das pontas da associação

A multiplicidade em uma das extremidades da associação especifica para cada objeto da classe encontrada na extremidade oposta deve haver a determinada quantidade de objetos na extremidade próxima

Page 58: Linguagem de Programação II

Tipos de Multiplicidade

Não especificada

Exatamente um

Zero ou mais

Muitos (mesmo que 0..*)

Um ou mais

Zero ou um

Intervalo determinado

Valores múltiplos

1

0..*

*

1..*

0..1

2..4

2, 4..6

Page 59: Linguagem de Programação II

Exemplo: Multiplicidade

DisciplinaEstudante

Multiplicidade

1..*1

Uma instância de Disciplina pode conter 1 ou mais Estudantes

Uma instância de Estudante pode 1 Disciplina

Page 60: Linguagem de Programação II

Navegação

Especifica a direção da associação

Associações e agregações são bidirecionais por default

DisciplinaEstudante

Navegação

1..*1

Nesse caso Disciplina não sabe o vinculo de multiplicidade com Estudante

Page 61: Linguagem de Programação II

Pessoa Empresafuncionário empregador

1..* *Trabalha para

Departamento

1

*

Page 62: Linguagem de Programação II

Notações

Diagrama de classeNome das classes sõa substantivos

Primeiro caractere maiúsculo (Customer, java::awt::Rectangle)

Atributo:

substantivo, aparece como maiúsculo o primeiro caractere de cada palavra existente no nome do atributo, exceto a primeira letra: nomeProfessor

Operação

verbo ou locução verbal, aparece como maiúsculo o primeiro caractere de cada palavra existente no nome da operação, exceto a primeira letra: isEmpty

Page 63: Linguagem de Programação II

Sugestões de desenvolvimento

Não comece a construir um modelo de objetos simplesmente definindo

classes, associações e heranças. A primeira coisa a se fazer é entender o

problema a ser resolvido.

Tente manter seu modelo simples. Evite complicações desnecessárias.

Escolha nomes cuidadosamente. Nomes são importantes e carregam

conotações poderosas. Nomes devem ser descritivos, claros e não deixar

ambiguidades. A escolha de bons nomes é um dos aspectos mais difíceis da

modelagem.

Não ”enterre” apontadores ou outras referências a objetos dentro de

objetos como atributos. Ao invés disto, modele estas referências como

associações. Isto torna o modelo mais claro e independente da

implementação.

Page 64: Linguagem de Programação II

Sugestões de desenvolvimento

Tente evitar associações que envolvam três ou mais classes de

objetos. Muitas vezes, estes tipos de associações podem ser

decompostos em termos de associações binárias, tornando o modelo mais

claro.

Não transfira os atributos de ligação para dentro de uma das classes.

Tente evitar hierarquias de generalização muito profundas.

Não se surpreenda se o seu modelo necessitar várias revisões; isto é o

normal.

Nem sempre todos os símbolos são necessárias para descrever uma

aplicação. Use apenas aquelas que forem adequadas para o problema

analisado.