46
PRINCÍPIOS DE ANÁLISES E PROJETOS DE SISTEMAS Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens orientadas a objetos Fundamentos do Paradigma de Objetos UML – histórico UML – introdução e definições básicas

Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Embed Size (px)

Citation preview

Page 1: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

PRINCÍPIOS DE ANÁLISES E

PROJETOS DE SISTEMASTópicos a serem abordados:

• Tipos Abstratos de Dados (TAD)• Programação orientada a objetos• Programação orientada a objetos x

Programação Estruturada• Linguagens orientadas a objetos• Fundamentos do Paradigma de Objetos• UML – histórico• UML – introdução e definições básicas

Page 2: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

TIPOS ABSTRATOS DE DADOS

A noção de tipos abstratos de dados (TAD) se

refere ao encapsulamento de uma estrutura

de dados juntamente com as operações que

manipulam essas estruturas dentro de uma

região protegida.

Uma linguagem dá apoio a tipos abstratos de

dados quando ela possui mecanismos que

permitem a sua representação diretamente.

Page 3: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Linguagens de programação como Ada e

Modula-2 dão apoio a tipos abstratos de dados,

mas ainda têm certas limitações. As principais

são:

a) O sistema de tipos é unidimensional, ou seja,

um programa é desenvolvido como um

conjunto de tipos abstratos de dados cuja

estrutura é definida no nível horizontal: as

hierarquias de generalização/ especialização

não podem ser representadas explicitamente.

Page 4: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

b) Tipos abstratos de dados não são

representados explicitamente em tempo de

execução, isto é, embora tipos abstratos de

dados sejam úteis durante as fases de análise,

projeto e implementação, eles desaparecem

durante o tempo de execução e o software se

torna de novo um monte de linhas de código

agrupadas em módulos completamente

desestruturados.

Page 5: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

PROGRAMAÇÃO ORIENTADA A OBJETOS

O próximo passo da evolução das linguagens

de programação foi introduzido com o

conceito de objetos, criado por Dahl e

Nygaard com a linguagem Simula-67 [17], e

consolidado com a linguagem Smalltalk-76.

Simula-67 introduziu os conceitos de classe,

objeto e herança.

Page 6: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

O modelo clássico de objetos emprega classes

para a descrição de objetos. Essas classes

contém a definição da estrutura dos objetos

(dados e funções).

Além disso, através dos mecanismos de

herança e agregação, classes já existentes

podem compartilhar seu comportamento com

novas classes.

Page 7: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Essencialmente, o modelo de objetos trata

dados e funções como aspectos indivisíveis

no domínio do problema.

O forte relacionamento entre o modelo de

objetos e a noção de tipo abstrato de dados

se torna evidente, uma vez que os objetos

podem ser vistos como instâncias de tipos

abstrato de dados.

Page 8: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Na verdade, na maioria das linguagens

orientadas a objetos, a definição de uma

classe descreve um tipo de dados associado

com as operações que podem ser

executadas nas instâncias desse tipo.

Page 9: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

6 ACONTECIMENTOS QUE MARCARAM ACRIAÇÃO DO MODELO DE OBJETOS:

1) Introdução do conceito de objetos no ano de 1967,

lançamento da linguagem Simula-67.

2) Em 1972 Dahl escreveu um artigo sobre ocultamento

de informações (o conceito de objetos nesta época já

estava bem definido).

3) Em 1976 foi lançada a primeira versão do Smalltalk e a

orientação a objetos foi consolidada. A partir daí, o

modelo de objetos evoluiu no sentido de oferecer novas

linguagens de programação.

Page 10: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

6 ACONTECIMENTOS QUE MARCARAM ACRIAÇÃO DO MODELO DE OBJETOS:

4) Em 1983 foi disponibilizada a primeira versão do C+

+, versão orientada a objetos da disseminada

linguagem C.

5) Em 1988, foi lançada a linguagem Eiffel, a primeira

linguagem considerada orientada a objetos “pura”.

6) No final do século XX, mais precisamente no ano de

1995, foi lançada a primeira versão da linguagem

Java, uma linguagem orientada a objetos “pura”,

baseada na sua antecessora C++.

Page 11: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Programação orientada a objetos é um modelo de

programação baseado em conceitos, tais como

objetos, classes, tipos, ocultamento da informação,

herança, polimorfismo e parametrização.

Análise e projeto orientados a objetos oferecem uma

maneira de usar todos esses conceitos para a

estruturação e construção de sistemas. Esses

conceitos são intrinsicamente independentes de

linguagens e cada uma tem sua própria maneira de

implementá-los.

Page 12: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

A essência da programação orientada a

objetos é a resolução de problemas baseada

na identificação de objetos do mundo real

pertencentes ao domínio da aplicação e no

processamento requerido por esses objetos,

através de interações entre eles.

Page 13: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Esta ideia de “programas simulando o mundo

real” cresceu com o lançamento do Simula-67,

que inicialmente foi projetada para o

desenvolvimento de aplicações de simulação.

Devido ao fato do mundo estar povoado de

objetos, uma simulação de tal mundo deveria

conter objetos simulados capazes de enviar e

receber mensagens e reagir às mensagens

recebidas.

Page 14: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Consequentemente, na programação

orientada a objetos, a execução de um

programa consiste de um conjunto de objetos

relacionados que trocam mensagens entre si,

isto é, que se comunicam através da execução

das operações uns dos outros.

Page 15: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Cada objeto tem um estado interno composto

por atributos que são modificados mediante a

recepção e o envio de mensagens.

Programas são construídos através da

definição de classes, que se relacionam e

formam hierarquias de abstração.

Page 16: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Melhor estruturação do sistema e do

encapsulamento entre dados e funções;

Facilita a construção de programas

complexos;

Aumento da reutilização;

A estruturação do raciocínio e o menor

acoplamento proporcionado pelo conceito de

objetos melhoram a qualidade do produto

final e reduzem os custos de manutenção do

sistema.

BENEFÍCIOS DA PROGRAMAÇÃO OO:

Page 17: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Para a resolução de problemas, a

abordagem estruturada utiliza uma técnica

conhecida como decomposição funcional.

Dessa forma, uma operação complexa é

dividida em operações menores e assim

sucessivamente, até atingir um nível de

detalhes que possa ser implementado

facilmente.

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 18: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Dessa forma, as funções assumem um

papel central no desenvolvimento, que

recebem dados de entrada e produzem

dados de saída.

Apesar da estreita relação entre dados e

funções, nas linguagens estruturadas esses

dois conceitos são completamente disjuntos,

tratando cada um deles de uma maneira

particular.

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 19: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Por essa razão, os processos estruturados

de desenvolvimento de software exigem

mudanças de contexto constantes, o que

dificulta o mapeamento dos artefatos de

diferentes fases do desenvolvimento.

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 20: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

O encapsulamento de dados e funções,

decorrente do conceito de objetos e classes

foi um grande passo para a homogenização

do raciocínio e a redução da complexidade

dos sistemas.

Com essa visão unificada, a ideia central

passa a ser a decomposição de dados, ao

invés da decomposição funcional.

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 21: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

As funções se tornam ligadas a um modelo

de dados, que juntos formam o conceito de

classe.

Em OO, as classes desempenham um papel

semelhante aos módulos da programação

estruturada, com a vantagem de garantir a

coesão entre elementos agrupados (dados e

funções).

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 22: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 23: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

PROGRAMAÇÃO ORIENTADA A OBJETOS VS. PROGRAMAÇÃO ESTRUTURADA

Page 24: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

LINGUAGENS ORIENTADAS A OBJETOS

Existe uma distinção clara entre:a) Linguagens baseadas em objetos –

quando ela dá apoio explícito somente ao conceito de objetos;

b) Linguagens baseadas em classes - quando ela dá apoio tanto para a criação de objetos, quanto para o agrupamento de objetos através da criação de novas classes;

c) Linguagens orientadas a objetos - proporciona suporte linguístico para objetos, requer que esses objetos sejam instâncias de classes e além disso, oferece suporte para um mecanismo de herança.

Page 25: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

LINGUAGENS ORIENTADAS A OBJETOS

Linguagens como Ada85 e CLU são baseadas

em objetos, enquanto C++, Java, C#,

Modula-3 e Smalltalk-80 são orientadas a

objetos.

Page 26: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

LINGUAGENS ORIENTADAS A OBJETOS

Um ponto muito importante na programação

orientada a objetos é a obtenção de

componentes reutilizáveis e flexíveis através

de conceitos como, por exemplo, objetos,

classes, tipos, herança, polimorfismo, e

acoplamento dinâmico. O conceito de

herança é exclusivo do modelo de objetos.

Page 27: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

FUNDAMENTOS DO PARADIGMA DE OBJETOS

Atenção grupo:

Esta parte fica para vocês fazerem. Usem os

arquivos: apostila_orientacao_objetos_2009.pdf,

(da página 12 até a página 19) e apostila APSII

Rodrigo completa.pdf (da página 16 até a página

19). Lembrem-se: sigam o primeiro arquivo,

usem o segundo só para incrementar!

São conceitos que foram tratados na primeira

apresentação de forma muito superficial. Tentem

aprofundar tais conceitos. As figuras são

extremamente importantes.

Page 28: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

UML - UMA BREVE HISTÓRIA

UML começou a ser definida a partir de uma

tentativa de Jim Rumbaugh e Grady Booch de

combinar dois métodos populares de modelagem

orientada a objeto: Booch e OMT

(Object Modeling Language).

Mais tarde, IvarJacobson, o criador do

método Objectory, uniu-se aos dois (formando os

famosos três amigos), para a concepção da

primeira versão da linguagem UML (Unified

Modeling Language).

UML foi adotada em 1997 pela OMG

(Object Management Group).

Page 29: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

UML - UMA BREVE HISTÓRIA

Page 30: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Da mesma forma que é impossível construir

uma casa sem primeiramente definir sua

planta, também é impossível construir um

software sem inicialmente definir sua

arquitetura.

UML - MOTIVAÇÃO E NECESSIDADE DE UMA MODELAGEM VISUAL

Page 31: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Desta forma, é extremamente importante

ter uma representação visual de seu

sistema antes que ele entre na etapa de

implementação.

Descobrir entre as etapas a serem

percorridas, aquelas mais importantes do

ponto de vista do cliente.

Page 32: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Necessidade de estabelecer um rumo, que deve

ser definido a partir dos requisitos de software.

Uma modelagem visual permite representar

(especificar) estes requisitos, ou seja, facilita a

captura destes requisitos.

Necessidade de estabelecer uma padronização

para facilitar a comunicação entre os analistas

(responsáveis pelo levantamento dos

requisitos) e o time de desenvolvimento

(responsáveis pela implementação).

Page 33: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens
Page 34: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Um sistema tem geralmente muitas classes

(centenas e até milhares) e nem sempre

estas classes são vistas por uma só pessoa.

Isto é, dependendo do nível hierárquico desta

pessoa, formas diferentes de apresentar uma

diagrama de classes devem existir.

Page 35: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Um cliente não quer saber o que é uma

classe, mas apenas compreender

determinados conceitos;

Um gerente de um projeto não precisa ver

detalhes de um modelo;

Um time de desenvolvimento precisa ver um

diagrama e compreender uma série de

detalhes.

Page 36: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens
Page 37: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Um modelo dever ser criado

independentemente de sua implementação.

A qualquer momento uma implementação

pode ser trocada por outra sem afetar o

modelo.

Page 38: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

A utilização de uma modelagem visual

facilita a visualização, e, por conseguinte, a

criação de um melhor modelo (mais flexível,

mais robusto e principalmente mais

reutilizável).

Page 39: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

UML é uma linguagem para visualização,

especificação, construção e documentação de

artefatos de um software em

desenvolvimento.

UML – CONCEITOS BÁSICOS

Page 40: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

UML permite modelar:

1. elementos;

2. relacionamentos;

3. mecanismos de extensibilidade;

4. diagramas.

UML – CONCEITOS BÁSICOS

Page 41: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

1) Elementos:

estruturais

classes, interfaces, componentes

comportamentais

interações, máquinas de estado

grupos de elementos

pacotes, subsistemas

outros

anotações

UML – CONCEITOS BÁSICOS

Page 42: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

2) Relacionamentos:

Dependências, Associações, Generalizações,

Implementações (realization)

3) Mecanismos de Extensibilidade

Estereótipos

Tagged value

Regras (constraints)

UML – CONCEITOS BÁSICOS

Page 43: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens
Page 44: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

4) Diagramas

Um modelo é uma descrição completa do sistema

em uma determinada perspectiva.

UML – CONCEITOS BÁSICOS

Page 45: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Um modelo é representado por um ou mais

diagramas. Desta forma, um diagrama pode

ser visto como uma visão dentro de um

modelo.

Um diagrama pode ser representado de

várias formas, dependendo de quem irá

interpretá-lo.

Page 46: Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens

Inside the Unified Modeling Language, Material da Rational

UML Distilled Applying the Standard Object Modeling Language, Martin Fowler

Curso on-line da TogetherSoft, www.togethersoft.com/services/ practical_guides/umlonlinecourse/

Especificação da Linguagem UML Versão 1.4, OMG Software Architecture

and the UML, Grady Booch (Seminário) http://www.dsc.ufcg.edu.br/~jacques/cursos/map/ht

ml/uml/diagramas/usecases/usecases.htm

BIBLIOGRAFIA: