• Nenhum resultado encontrado

ANÁLISE ORIENTADA À OBJETO Conceitos do Paradigma de Orientação a Objetos

N/A
N/A
Protected

Academic year: 2021

Share "ANÁLISE ORIENTADA À OBJETO Conceitos do Paradigma de Orientação a Objetos"

Copied!
31
0
0

Texto

(1)

ANÁLISE ORIENTADA

À OBJETO

Conceitos do Paradigma de

Orientação a Objetos

FMR – Faculdade Marechal Rondon

Gestão de Sistemas de Informação Prof. Ms. Elvio Gilberto da Silva

http://www.elvio.pro.br [email protected]

AULA Nº 1

z

Objetivos Gerais:

z

Proporcionar capacidades e habilidades para que o aluno

compreenda os fundamentos da Tecnologia de Orientação

à Objetos e seja capaz de modelar sistemas

computacionais utilizando técnicas de análise e projeto

orientados à objetos.

z

Ementa:

z

Propósito e evolução da OO; Benefícios da OO; Classes;

Instâncias; Atributos e Métodos; Herança; Encapsulamento

e Polimorfismo; Modelagem OO; UML – Unified Modeling

Language; Diagrama Use Case; Diagrama de Classes;

Diagrama de Objetos; Diagrama de Interação – Seqüência

e Colaboração; Diagrama de Transição de Estados;

Diagrama de Componentes; Diagrama de Implantação.

(2)

z

Bibliográfica Básica:

RUMBAUGH, J.; BIAHA, M.; PREMERLANI, W.; EDDY, F.;

LORENSEN, W. Modelagem e projetos baseados em objetos.

Rio de Janeiro: Campus, 1994. 652 p.

z

Metodologia:

z

Aulas expositivas teóricas e práticas;

z

Trabalhos práticos de pesquisa;

z

Exercícios de fixação.

z

Avaliação:

z

Provas regimentais;

(3)

Paradigma de Orientação a

Objetos

z A OO Surgiu na tentativa de solucionar problemas Complexos

existentes no desenvolvimento de Software e resolvê-los de maneira com baixo custo de desenvolvimento e manutenção

z Mundo Real é formado por objetos que se interagem

z Representar esses objetos em um software é mais natural e

permanente do que representar a sua funcionalidade (decomposição funcional), pois essa é mutável

ESPAÇO DE

PROBLEMAS

ESPAÇO DE

SOLUÇÕES

Gap Semântico

Mundo Real

Mundo Computacional

Aspectos mais importantes do mundo

real para fins de representação

(4)

Gap Semântico

z Diferença entre Espaço de Problemas e Soluções

z Todo software representa um Modelo de um problema do mundo

real (Espaço de Soluções)

z A construção de um software envolve um processo de

mapeamento de objetos pertencentes ao espaço de problemas para o espaço de soluções, de tal maneira que operações sobre essas representações abstratas correspondam a operações do mundo real

z Projetista cria algoritmos que quando executados no computador

produzirão resultados, que podem ser mapeados fisicamente para alguma ação do mundo real ou examinados/interpretados por pessoas

Gap Semântico

z EVIDENTE:quanto mais próximo (conceitualmente) estiver o

espaço de soluções do espaço de problemas, mais fácil será:

z

o desenvolvimento da aplicação

z

assegurar a compreensão, confiabilidade e

manutenção da aplicação

z Objetivo do Paradigma de Orientação a Objetos

(5)

ESPAÇO DE

PROBLEMAS

ESPAÇO DE

SOLUÇÕES

Mapeamento

Mundo Real

Mundo Computacional

Processo de Identificação

de Abstrações

• Se essas abstrações não tiverem uma expressão direta (ou próxima)

•do mundo computacional, a complexidade da solução será aumentada

Modelagem Conceitual

z Tarefa mais importante de um processo de desenvolvimento de

software

z

realiza-se a análise do domínio da aplicação e a modelagem das

entidades e fenômenos desse domínio que o projetista considera

importante, independentemente da implementação

z A tarefa de modelagem conceitual envolve dois mecanismos:

z

Abstração

z

Representação

(6)

Modelagem Conceitual

Entidade

Observada

Entidade

Representada

Avião

ABSTRAÇÃO

REPRESENTAÇÃO

Operação mental para observar um domínio e capturar sua estrutura Refere-se às convenções de representação

Notação gráfica,

linguagem de programação

Abstração

z Mecanismo utilizado na análise de um domínio

z Através dela, o indivíduo observa a realidade e dela abstrai

entidades, ações, etc. consideradas essenciais para uma aplicação, excluindo todos os aspectos julgados irrelevantes

z Exemplo:

z

Fotografia por satélite (imagem da realidade), despida de

alguns aspectos (por exemplo, cor, movimento)

z

Da foto, pode-se abstrair um mapa, que elimina

diversas propriedades da foto (detalhes particulares de

um edifício ou praça)

(7)

Abstração

“a beleza está nos olhos de quem a vê”

z O resultado de uma operação mental de abstração depende não

tanto do fenômeno observado, mas do interesse do observador

Abstração

“a beleza está nos olhos de quem a vê”

z Diferentes abstrações a partir de um mesmo objeto do mundo

real

Maça

Peso cor da casca format

CATEGORIA

Receita

AÇÃO

3

I, II,

Cardinalidadedo conjunto

(8)

Operações de Abstração

relevantes

para a modelagem conceitual

z Classificação (Instanciação)

z

categorização dos objetos em grupos e/ou

classes (categoria), com base em algum

conjunto de propriedades comuns

Generalização (Especialização)

a partir de duas categorias abstrai-se uma categoria

mais genérica sub-categorias satisfazem todas as

propriedades das categorias de que elas constituem

especializações

deve existir pelo menos uma propriedade que

distingue duas categorias especializadas

Operações de Abstração

relevantes

para a modelagem conceitual

Agregação (Decomposição)

composição de uma nova categoria como um

agregado de categorias pré-existentes

instâncias de uma categoria (Estudante) são

compostas por instâncias de outras categorias (Nome,

Endereço)

(9)

Classificação/Instanciação

Estudante

de

Graduação

José

Maria

CLASSIFICAÇÃO

INSTANCIAÇÃO

CATEGORIA

INDIVÍDUO

(Objeto)

Generalização/Especialização

Mamífero

GENERALIZAÇÃO

ESPECIALIZAÇÃO

(herança)

CATEGORIA

CATEGORIA

Baleia

Atributos •sangue quente •vertebrado •vivíparo Atributos •Habitat: mar •Tempo médio de vida: 200 anos

(10)

Paradigma de Orientação a Objetos

O desenvolvimento orientado a objetos evoluiu no sentido

PROGRAMAÇÃO

ANÁLISE

Conceitos desse paradigma foram introduzidos com o surgimento da

linguagem Smalltalk

Em seguida, surgiram métodos de projeto para dar suporte à

implementação de sistemas orientados a objetos

Recentemente, propostas de métodos para análise e projeto vêm

emergindo

Histórico

A OO surgiu no final da década de 60, quando dois cientistas

dinamarqueses criaram a linguagem Simula (Simulation Language)

1967 - Linguagem de Programação Simula-67- conceitos de classe e

herança

O termo Programação Orientada a Objeto (POO) é introduzido

com a linguagem Smalltalk (1983)

FINS DOS ANOS 80 Ö Paradigma de Orientação a Objetos

abordagem poderosa e prática para o desenvolvimento de

software

(11)

Histórico

Linguagens híbridas:

C++ (1986), Object-Pascal (1986)

Métodos de Análise e Projeto OO

CRC (Class Responsability Collaborator, Beecke e Cunningham,

1989)

OOA (Object Oriented Analysis, Coad e Yourdon, 1990)

Booch (1991)

OMT (Object Modeling Technique, Rumbaugh, 1991)

Objectory (Jacobson, 1992)

Fusion (1994)

Unified Modeling Language (UML, 1997)

Conceitos de OO

z Modelo de Objetos z

Objeto

z

Mensagem

z

Método

z Classe z Atributo z Protocolo z Classificação z Herança

z Encapsulamento / Ocultamento de Informação z Polimorfismo

(12)

Objeto

z Tudo em Orientação a Objeto é OBJETO

z Objeto, no mundo físico, é tipicamente um produtor e

consumidor de itens de informação

z

máquina, comandos, arquivos, pessoas, sinais

z Definição (mundo do sofware)

z

“Qualquer coisa, real ou abstrata, a respeito da qual

armazenamos dados e métodos que os manipulam”

Martin, Odell (1995)

z

Abstração de uma entidade do mundo real de modo que

essa entidade possue várias características

z

Exemplo: objetos cachorro e casa.

•Raça •cor •pedigree

(13)

z OBJETO: Entidade independente, composta por um conjunto de

elementos que a caracterizam (domínio) e as ações que agem sobre esse domínio (operações)

z OBJETO

z Visão implementacional (Takahashi, 1990) z entidade composta por:

ƒ ESTADO INTERNO: é onde os valores podem ser armazenados e

modificados ao longo da vida do objeto, caracterizando seu domínio

ƒ COMPORTAMENTO: é o conjunto de ações pré-definidas

(denominadas métodos) através das quais o objeto responderá a demanda de processamento por parte de outros objetos

z Objeto é algo DINÂMICO: é criado por alguém, tem uma vida, e morre ou

é morto por alguém

z Pode ter vida temporária (como a execução de um programa) ou

persistente (persistirá até que seu desaparecimento seja explicitamente ordenado).

Mapeamento

Abstração Implementação

DOMÍNIO

+

OPERAÇÕES

ABSTRAÇÃO

ATRIBUTOS

(Dados)

+

MÉTODOS

(Procedimentos)

IMPLEMENTAÇÃO

<

<

Nome do Objeto

Nome do Objeto

>>

<Atributos>

<Atributos>

<Métodos>

<Métodos>

(14)

Objeto

z Resumindo:

z Pacote de informações (atributos) e a descrição de suas operações (métodos), de

modo que elas são intrínsecas ao seu domínio e este é formado pelos elementos que o caracterizam

z Exemplo:

z Objeto: Pessoa

z Atributos: Nome, Data de Nascimento, Cor

z Métodos: Acordar, Comer, Beber Dormir Objeto: Pessoa Objeto: Pessoa Nome Nome Data

Data NascNasc.. Cor Cor Acordar Acordar Comer Comer Beber Beber Dormir Dormir

Objeto

=

Atributos (Dados)

+

Métodos (Funcionalidade)

+

Encapsulamento

(15)

Exemplos de Objeto

z

Uma fatura

z

Uma organização

z

Uma tela com a qual o usuário interage

z

Um desenho de engenheiro

z

Um avião

z

Um vôo de avião

z

Uma reserva num avião

z

Um processo de atendimento de pedidos

z

Um computador

z

Um ser humano neurótico pode ser estereotipado como

um objeto: possui memória em que valores podem ser

armazenados e que condicionarão seu comportamento

Atributos

z Representam um conjunto de informações, ou seja, elementos de

dados que caracterizam um objeto

z Descrevem as informações que ficam escondidas em um objeto

para serem exclusivamente manipulado pelas operações daquele objeto

z São variáveis que definem o estado de um objeto, ou seja, são

entidades que caracterizam os objetos

z Cada objeto possue seu próprio conjunto de atributos

z Exemplos:

z

Objeto Pessoa

z

Atributos: Nome, Cor, Data de Nascimento

z

Objeto Empregado

z

Atributos: No do empregado, nome, nome do

(16)

Dicionário

Objeto do mundo Real

Objeto: Dicionário Objeto: Dicionário Estrutura de Dados Estrutura de Dados Adicionar Palavra Adicionar Palavra Eliminar Palavra Eliminar Palavra Encontrar Palavra Encontrar Palavra Imprimir definição Imprimir definição

Atributo

Um valor armazenado pelos objetos da classe

PESSOA: nome, idade, peso, cor

CARRO: cor, peso, ano, modelo

Cada atributo possui um valor para cada instância

João tem 24 anos e Maria tem 40

Não se deve explicitar identificadores (características de programação

-não têm significado real)

(17)

Classificação

z Categorização em Classes

z Quando estamos modelando um domínio, observamos que há

várias entidades similares que podem ser abstraídas em um conceito único que engloba esta similaridade

z Operação de abstração das Similaridades

z O POO incorporou esta operação através da abstração dos

atributos e dos métodos que caracterizam objetos semelhantes, especificando-os na CLASSE

z Exemplo:

(18)

Classe

z Objeto: abstração de uma entidade do mundo real, através dos

atributos e operações

z Classe: abstração de um conjunto de objetos similares do mundo

real

z Agrupamento de objetos similares. Descreve a

z

estrutura de dados, e o

z

comportamento de objetos similares

z Todo objeto é uma instância de uma Classe

z Todas as instâncias de uma classe têm valores próprios para os

atributos especificados na classe

z Os objetos representados por determinada classe diferenciam-se

entre si pelos valores de seus atributos

z Sistema puramente OO, Classe é também um Objeto

Classe

Conjunto de objetos que possuem propriedades semelhantes

(ATRIBUTOS), o mesmo comportamento (MÉTODOS), os

mesmos relacionamentos com outros objetos e a mesma semântica

PESSOA, CARRO, CASA, VEÍCULO

EMPRESA, PAÍS, SERES HUMANOS, HOMENS,

(19)

Classe

Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como

base para a criação de objetos que sejam entidades executáveis com

atributos e operações (métodos) da classe.

Sua especificação é uma especificação da

interface

interface na qual as partes

visíveis da entidade são expostas.

Os objetos criados podem ter outros atributos e procedimentos

privativos Ö não aparecem na especificação

Dicionário

Relatório

Bíblia

(20)

CASA

Portas

Quartos

Salas

Localização

Cozinha

Telhado

Reformar

Limpar

Pintar

Mobiliar

PRAIA

FAVELA

MANSÃO

Limpar Piscina

Contratar Criadagem

Piscina

Quadras

(Superclasse)

(Subclasse)

Especialização

Generalização

Animal

Selvagem

Doméstico

Gato

Cão

De Raça

Vira-Lata

superclasse

subclasse

Hierarquia de Classes

(21)

Seres Humanos

Nome

Data_Nascimento

RG

Mulher

Data_Último_Parto

Homens

Certif_Reservista

Veículo

Veículo de Rodas Veículo à Motor Veículo Aéreo

Bicicleta

Caminhão

Vapor

Avião

Planador

Caminhão VW Caminhão Ford Caminhão GM

(22)

Herança

z Mecanismo que permite definir uma nova classe (subclasse) a

partir de uma classe já existente (super-classe)

z Ao se estabelecer uma Especialização (subclasse) de uma

classe, a subclasse herda as características comuns da super-classe, isto é, a especificação dos atributos e dos métodos da super-classe passam a fazer parte da especificação dos atributos e dos métodos da subclasse

z A subclasse pode adicionar novos métodos, como também

reescrever métodos herdados

z Habilidade de um objeto derivar seus atributos (dados) e

métodos (funcionalidade) automaticamente de outro objeto

Herança

z Classes podem ser construídas a partir de outras já

existentes; facilita extensibilidade

z Quando uma mensagem é enviada para um objeto

z

A procura do método correspondente começa pela

classe do objeto

z

Se o método não for encontrado, a procura continua na

superclasse

z A Herança pode ser de dois tipos:

z

Herança Simples: quando uma classe é subclasse de

(23)

Mensagem

z É o mecanismo através do qual os objetos se comunicam,

invocando as operações desejadas

z Especificação de uma operação do objeto

z É composta por z Seletor:

z nome simbólico que descreve o tipo da operação

z descreve O QUE o objeto que envia quer que seja

invocado, não como deveria ser invocado

z o objeto recebedor da mensagem contém a descrição de

COMO a operação deveria ser executada

z Parâmetros:

z argumentos que uma mensagem pode conter que faz parte

da operação e requer uma ordem única.

Coma isto logo!

Comer

Objeto: Animal

Mensagem: COMA ISTO LOGO

Seletor: COMA

Parâmetros: LOGO

Animal

Pessoa

Objeto que recebe

RECEPTOR

Objeto que envia

EMISSOR

Determina o que deve ser manipulado e

aguarda o retorno do objeto que foi ativado

Determina como

manipular

(24)

Mensagem

z Um objeto (Emissor) envia uma mensagem a outro (Receptor) que

executará o serviço

z Métodos são invocados por Mensagens z Exemplo

z A chamada de um procedimento/função em LP é uma

aproximação inicial de uma mensagem, como em P(10,20), onde

P é o seletor e os valores 10 e 20 são os parâmetros

z Diferença:

z a ação da mensagem a ser ativada depende essencialmente

do objeto que receber a mensagem

Método

Origem: LP Smalltalk

Quando um objeto é mapeado dentro do domínio do software, os processos que podem mudar a sua estrutura de dados são denominados Operações ou Métodos Métodos são invocados por Mensagens

Cada objeto possui seu próprio conjunto de métodos Definições:

São procedimentos definidos e declarados que atuam sobre um objeto ou sobre uma classe de objetos

Descrição de uma sequência de ações a serem executadas por um objeto Através dos métodos que especifica-se a um objeto COMO FAZER alguma

(25)

Interface (Protocolo)

z Objetos se comunicam através de Mensagens, que invocam os

Métodos desejados

z Parte Privada do Objeto (Visão Interna) z Métodos

z Atributos

z Parte Compartilhada do Objeto ou Interface

z corresponde à parte externa do objeto, isto é, àquela que é vista

por outros objetos com a finalidade de invocar os métodos que o objeto realiza

z agrupa um conjunto de mensagens que o objeto pode

responder

z as mensagens especificam quais operações sobre o objeto

podem ser realizadas, mas não como a operação será executada.

Estrutura de um Objeto (classe)

<

<

Nome do Objeto

Nome do Objeto

>>

<Atributos>

<Atributos>

<Métodos>

<Métodos>

Interface

<Métodos>

<Métodos>

Parte Privada

(26)

Ocultamento de Informação

(Information Hiding)

z Característica que visa esconder detalhes de implementação

z É alcançado em OO, visto que o objeto, quando implementado,

possui uma parte privada (atributos e métodos) e uma parte compartilhada (interface)

z Detalhes de implementação ficam escondidos na parte privada

z Programadores podem introduzir mudanças na implementação

de um método sem afetar o comportamento externo desse método.

Encapsulamento de Dados

z Objetos encapsulam suas estruturas de dados (atributos)

z Os atributos de um objeto só podem ser manipulados pelos próprios

métodos do objeto

z Restringe a visibilidade do objeto mas facilita o reuso

z Os DADOS e os MÉTODOS são empacotados sob um nome e podem

(27)

Polimorfismo

z Ao receber uma mensagem para efetuar uma Operação, é o objeto

quem determina como a operação deve ser efetuada, pois ele tem o comportamento próprio

z Como a responsabilidade é do Receptor e não do Emissor, pode

acontecer que uma mesma mensagem ative métodos diferentes, dependendo da classe de objeto para onde é enviada a mensagem

z Permite a criação de várias classes com interfaces idênticas, porém

objetos e implementações diferentes

z Capacidade de uma mensagem ser executada de acordo com as

características do objeto que está recebendo o pedido de execução do serviço.

Analogia dos conceitos principais no POO e

no paradigma tradicional de programação

OO

Convencional

Classes

Objetos

Métodos

Mensagens

Tipo de Dados Abstratos

Variáveis

Procedures, Funções

Chamadas de Funções

(28)

Características

Exemplo de objeto do mundo real

“a coisa em que você está sentado agora”

Cadeira

Mobiliário

É membro - (instância)

de uma classe maior de

objetos

Classe

Mobiliário

Custo

Peso

Dimensões

Localização

herda

Cor

(29)

Classe

Mobiliário

Custo

Peso

Dimensões

Localização

Cadeira

Atributos

(Propriedades)

herda

Cor

Comprado

Vendido

Modificado

Operações

(Serviços e

Métodos)

O Objeto Cadeira é um membro (INSTÂNCIA) de uma CLASSE maior de objetos – MOBILIÁRIO

CLASSE de objetos descreve um conjunto de objetos que possuem propriedades semelhantes (ATRIBUTOS)

mesmo comportamento (MÉTODOS) mesmos relacionamentos com outros objetos mesma semântica\

Atributos GENÉRICOS da classe MOBILIÁRIO custo, dimensões, peso, localização, cor

Atributos se aplicam a todos os objetos da classe MOBILIÁRIO: mesa, cadeira, sofá, armário.

(30)

Uma vez que o objeto CADEIRA é um membro da classe MOBILIÁRIO, HERDA todos os atributos definidos para a classe Todo objeto da classe MOBILIÁRIO pode ser manipulado de diversas maneiras (OPERAÇÕES)

comprado vendido, pesado

modificado (pintar de roxo, serrar uma perna)

Cada uma dessas operações (SERVIÇOS ou MÉTODOS) modificará um ou mais atributos do objeto

Classe:

Mobiliário

Custo

Dimensões

Peso

Cor

Localização

Comprar

Vender

Pesar

Modificar

Classe:

Cadeira

Custo

Dimensões

Peso

Cor

Localização

Comprar

Vender

Pesar

Modificar

Classe:

mesa

Custo

Dimensões

Peso

Cor

Localização

Comprar

(31)

Exercício

z Observe o exemplo: Classe Calçados: { atributos: tamanho(); cor(); métodos: proteger(); Objetos: sapato:calçados; tênis:calçados; chinelo:calçados; Instancia: sapato.tamanho=40; tênis.proteger=sim; chinelo.cor=azul; }

Seguindo o exemplo ao lado, dê

z Os atributos; z Os métodos; z Os Objetos e z A instanciação.

das seguintes Classes:

z Pessoa; z Veículos; z Alimentação; z Informática; z Comunicação e z Animais.

Referências

Documentos relacionados