42
1 Prof. Dr. Marcelo Augusto Santos Turine Profa. Dra. Rosane Minghim Fundamentos, Conceitos e Aplicações do Paradigma de Orientação a Objetos UNIC/ USP Turine/Minghim 2 Paradigma de Orientação a Objetos Surgiu na tentativa de solucionar problemas existentes no desenvolvimento de Softwares Complexos e Confiáveis com baixo custo de desenvolvimento e manutenção Mundo Real é formado por objetos que se interagem Representar esses objetos em um software é mais natural e permanente do que representar a sua funcionalidade (decomposição funcional), pois essa é mutável

Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

Embed Size (px)

Citation preview

Page 1: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�1

Prof. Dr. Marcelo Augusto Santos Turine

Profa. Dra. Rosane Minghim

Fundamentos, Conceitos e Aplicações do

Paradigma de Orientação a Objetos

UNIC/ USP Turine/Minghim 2

Paradigma de Orientação aObjetos

� Surgiu na tentativa de solucionar problemas existentes no desenvolvimento de Softwares ComplexoseConfiáveiscom baixo custo dedesenvolvimento e manutenção

� Mundo Real é formado por objetos que seinteragem

� Representar esses objetos em um software é maisnatural e permanente do que representar a sua funcionalidade (decomposição funcional), pois essa é mutável

Page 2: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�2

ESPAÇO DEPROBLEMAS

ESPAÇO DESOLUÇÕES

Gap Semântico

Mundo Real

Mundo Computacional

Aspectos mais importantes do mundoreal para fins de representação

no computador

DADOS

RESULTADOS

Objetos e Operaçõesdo mundo real

Objetos domundo realAlgoritmo do

mundo real

Objetos e Operaçõesabstratas

Dados de Saída

Algoritmocomputacional

Mapeamento dodomínio desoluções

Interpretação Humana dosresultados

ESPAÇO DEPROBLEMAS

ESPAÇO DESOLUÇÕES

Page 3: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�3

UNIC/ USP Turine/Minghim 5

Gap Semântico

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

� Todo software representa umModelo de um problema domundo real (Espaço de Soluções)

� A construção de um software envolve um processo demapeamento deobjetospertencentes ao espaço deproblemas para o espaço de soluções, de tal maneira que operaçõessobre essas representações abstratas correspondam a operações do mundo real

� Projetista cria algoritmos que quando executados nocomputador produzirão resultados, que podem ser mapeados fisicamente para alguma ação do mundo realou examinados/interpretados por pessoas

UNIC/ USP Turine/Minghim 6

Gap Semântico

� EVIDENTE :quanto mais próximo(conceitualmente) estiver o espaço de soluçõesdo espaço de problemas, mais fácil será:– o desenvolvimento da aplicação

– assegurar a compreensão, confiabilidade emanutenção da aplicação

� Objetivo do Paradigma de Orientação a Objetos

DIMINUIR O GAP SEMÂNTICO

Page 4: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�4

ESPAÇO DEPROBLEMAS

ESPAÇO DESOLUÇÕES

Mapeamento

Mundo Real

Mundo Computacional

Processo de IdentificaçãodeAbstraçõ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

UNIC/ USP Turine/Minghim 8

Modelagem Conceitual

� Tarefa mais importante de um processo dedesenvolvimento de software– 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

� A tarefa de modelagem conceitual envolve dois mecanismos:– Abstração

– Representação

Page 5: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�5

UNIC/ USP Turine/Minghim 9

Modelagem Conceitual

EntidadeObservada

Entidade Representada

Avião

ABSTRAÇÃO

REPRESENTAÇÃO

Operação mentalpara observar umdomínio e capturarsua estrutura

Refere-se àsconvenções derepresentação

Notação gráfica,linguagem de programação

UNIC/ USP Turine/Minghim 10

Abstração

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

� Através dela, o indivíduo observa a realidade edela abstrai entidades, ações, etc. consideradas essenciais para uma aplicação, excluindo todos os aspectos julgados irrelevantes

� Exemplo:– Fotografia por satélite(imagem da realidade),

despida de alguns aspectos (por exemplo, cor, movimento)

– Da foto, pode-se abstrair ummapa, que elimina diversas propriedades da foto (detalhes particulares de um edifício ou praça)

– O mapa pode ser a base para abstrair umgrafo

Page 6: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�6

UNIC/ USP Turine/Minghim 11

Abstração“a beleza está nos olhos de quem a vê”

� O resultado de uma operação mental de abstração depende não tanto do fenômeno observado, masdo interesse do observador

Abstração“a beleza está nos olhos de quem a vê”

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

MaçaPesocor da cascaformat

CATEGORIA

Receita

AÇÃO

3

I, II,Cardinalidadedo conjunto

ATRIBUTO

Page 7: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�7

UNIC/ USP Turine/Minghim 13

Operações de Abstração relevantes paraa modelagem conceitual

� Classificação (Instanciação)– categorização dos objetos emgrupose/ouclasses

(categoria), com base em algum conjunto depropriedades 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 quedistingue duas categorias especializadas

UNIC/ USP Turine/Minghim 14

Operações de Abstração relevantes paraa 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)

Page 8: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�8

UNIC/ USP Turine/Minghim 15

Classificação/Instanciação

Estudantede

Graduação

José Maria

CLASSIFICAÇÃO

INSTANCIAÇÃO

CATEGORIA

INDIVÍDUO(Objeto)

UNIC/ USP Turine/Minghim 16

Classificação/Instanciação

Estudantede

Graduação

CATEGORIA

José Maria

CLASSIFICAÇÃO

INSTANCIAÇÃO

Membrodo

Coral

INDIVÍDUO(Objeto)

Page 9: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�9

UNIC/ USP Turine/Minghim 17

Generalização/Especialização

Estudante

GENERALIZAÇÃO

ESPECIALIZAÇÃO(herança)

CATEGORIA

CATEGORIA

Estudantede Pós-

Graduação

Estudantede

Graduação

UNIC/ USP Turine/Minghim 18

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 devida: 200 anos

Page 10: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�10

UNIC/ USP Turine/Minghim 19

Agregação/Decomposição

Estudante

AGREGAÇÃO(composição -

síntese)

DECOMPOSIÇÃO(refinamento -

análise)

CATEGORIA

CATEGORIA

Especializ.Graduação

COMPONENTE

UNIC/ USP Turine/Minghim 20

Paradigma de Orientação aObjetos (OO)

�Idéia básica“Nós percebemos o mundo como uma coleção de objetos

que interagem entre si”

�Permite que objetos do mundo real sejam mapeados emObjetosno computador�Visão do DOMÍNIO da aplicação é composto porOBJETOS que se comunicam através de MENSAGENS�Paradigma de OO = objetos + classificação + herança + comunicação (Coad e Yourdon, 1990)�Modelo de Objetos

– Objetos, Mensagens e Métodos

Page 11: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�11

UNIC/ USP Turine/Minghim 21

� Tradicionalmente– Softwares são formados por dados e procedimentos

independentes

� Paradigma OO– Softwares são formados, principalmente, por:

• Objetos– parte interna (define o comportamento do objeto, ou seja,

especifica os métodos associados ao objeto)

– parte externa (interface - maneira que o objeto se apresenta para outros objetos)

• Mensagens

– Diminuir o gap semântico

Paradigma de Orientação aObjetos (OO)

UNIC/ USP Turine/Minghim 22

Paradigma de Orientação aObjetos� O desenvolvimento orientado a objetos evoluiu no sentido

PROGRAMAÇÃO

ANÁLISE

� Conceitos desse paradigma foram introduzidos com osurgimento da linguagem Smalltalk

� Em seguida, surgiram métods de projeto para dar suporteà implementação de sistemas orientados a objetos

� Recentemente, propostas de métodos para análise eprojeto vêm emergindo

Page 12: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�12

UNIC/ USP Turine/Minghim 23

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

UNIC/ USP Turine/Minghim 24

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)

Page 13: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�13

UNIC/ USP Turine/Minghim 25

Conceitos de OO� Modelo de Objetos

– Objeto

– Mensagem

– Método

� Classe

� Atributo

� Protocolo

� Classificação

� Herança

� Encapsulamento/Ocultamento de Informação

� Polimorfismo

UNIC/ USP Turine/Minghim 26

Objeto

� Tudo em Orientação Objeto é OBJETO� Objeto, no mundo físico, é tipicamente um produtor e

consumidor de itens de informação– máquina, comandos, arquivos, pessoas, sinais

� Definição (mundo do sofware)

– “Qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e métodos que os manipulam”Martin, Odell (1995)

– Abstraçãode uma entidade do mundo real de modo que essa entidade possue várias características

– Exemplo: objetos cachorro e casa

Page 14: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�14

CACHORRO

•Raça•cor•pedigree

CASA

UNIC/ USP Turine/Minghim 28

� OBJETO: Entidade independente, composta por umconjunto de elementos que a caracterizam (domínio) e asações que agem sobre esse domínio (operações)

� OBJETO

� Visão implementacional(Takahashi, 1990)

– 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á ademanda de processamento por parte de outros objetos

� Objeto é algoDINÂMICO : é criado por alguém, temuma vida, e morre ou é morto por alguém

� Pode ter vida temporária (como a execução de umprograma) ou persistente(persistirá até que seu desaparecimento seja explicitamente ordenado)

DOMÍNIO+

OPERAÇÕES

Page 15: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�15

UNIC/ USP Turine/Minghim 29

MapeamentoAbstração Implementação

DOMÍNIO+

OPERAÇÕES

ABSTRAÇÃO

ATRIBUTOS(Dados)

+MÉTODOS

(Procedimentos)

IMPLEMENTAÇÃO

<Nome do Objeto >

<Atributos>

<Métodos>

UNIC/ USP Turine/Minghim 30

Objeto

� Resumindo:– 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

– Exemplo:• Objeto: Pessoa

• Atributos : Nome, Data de

Nascimento, Cor

• Métodos: Acordar, Comer, Beber

Dormir

Objeto: Pessoa

NomeData Nasc.Cor

Acordar

ComerBeberDormir

Page 16: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�16

UNIC/ USP Turine/Minghim 31

Objeto

� Exemplo– uma Pessoae umCarro podem ser considerados

como um objeto de dados no sentido de que qualquerum deles pode ser definido em termos de um conjuntode atributos e operações

� Objetos podem relacionar-se um com o outro

� Uma Pessoa pode possuir Carro, onde orelacionamento possuir define uma conexão específica entre Pessoa e Carro

UNIC/ USP Turine/Minghim 32

Objeto=

Atributos (Dados)+

Métodos (Funcionalidade)

+Encapsulamento

Page 17: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�17

UNIC/ USP Turine/Minghim 33

Exemplos de Objeto� Uma fatura

� Uma organização

� Uma tela com a qual o usuário interage

� Um desenho de engenheiro

� Um avião

� Um vôo de avião

� Uma reserva num avião

� Um processo de atendimento de pedidos

� Um computador

� Um ser humano neurrótico pode ser estereotipado comoum objeto: possui memória em que valores podem ser armazenados e que condicionarão seu comportamento

UNIC/ USP Turine/Minghim 34

Atributos� Representam um conjunto de informações, ou seja,

elementos de dados que caracterizam um objeto

� Descrevem as informações que ficam escondidas em umobjeto para serem exclusivamente manipulado pelas operações daquele objeto

� São variáveis que definem o estado de um objeto, ou seja,são entidades que caracterizam os objetos

� Cada objeto possue seu próprio conjunto de atributos

� Exemplos:– Objeto Pessoa

• Atributos: Nome, Cor, Data de Nascimento

– Objeto Empregado• Atributos: No do empregado, nome, nome do departamento,salário,

endereço, dependentes

Page 18: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�18

UNIC/ USP Turine/Minghim 35

Dicionário

Objeto do mundo Real

Objeto: Dicionário

Estrutura de Dados

Adicionar Palavra

Eliminar PalavraEncontrar PalavraImprimir definição

UNIC/ USP Turine/Minghim 36

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 intrínseco)– Não confunda identificadores internos com atributos do mundo

real

– O número do seguro social, número da chapa do carro, número do telefone, RG não são identificadores internos. ELES são atributos, pois têm significado no mundo real. ATRIBUTOS LEGÍTIMOS

Page 19: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�19

UNIC/ USP Turine/Minghim 37

Classificação

� Categorização em Classes� 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

� Operação de abstração das Similaridades� O POO incorporou esta operação através da abstração dos

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

� Exemplo:– Classificação de espécies em Zoologia

Page 20: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�20

UNIC/ USP Turine/Minghim 39

Classe� Objeto: abstração de uma entidade do mundo real,

através dos atributos e operações

� Classe: abstração de um conjunto de objetos similares domundo real

� Agrupamento de objetos similares. Descreve a– estrutura de dados, e o

– comportamento de objetos similares

� Todo objeto é uma instância de uma Classe

� Todas as instâncias de uma classe têm valores próprios para os atributos especificados na classe

� Os objetos representados por determinada classe diferenciam-se entre si pelos valores de seus atributos

� Sistema puramente OO,Classeé também umObjeto

UNIC/ USP Turine/Minghim 40

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, MULHERES, MEIO DE TRANSPORTE

Page 21: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�21

UNIC/ USP Turine/Minghim 41

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 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

UNIC/ USP Turine/Minghim 42

DicionárioRelatórioBíblia

Livro

Page 22: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�22

UNIC/ USP Turine/Minghim 43

CASA

Portas Quartos

Salas Localização

Cozinha Telhado

Reformar

Limpar

Pintar

Mobiliar

CASA

Portas Quartos

Salas Localização

Cozinha Telhado

Reformar

Limpar

Pintar

Mobiliar

Comercial Familiar Clube

Limpar Piscina

Piscina

Quadras

(Superclasse)

(Subclasse)

Especialização

Generalização

Page 23: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�23

Animal

Selvagem Doméstico

Gato Cão

De Raça Vira-Lata

Rex

superclasse

subclasse

Objeto Rex

instância da classe Vira-Lata

Hierarquia de Classes

UNIC/ USP Turine/Minghim 46

Seres Humanos

NomeData_NascimentoRG

MulherHomem

Certif_Reservista

Page 24: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�24

Veículo

Véiculo de Rodas

Veículo à Motor

Veículo Aéreo

Bicicleta Caminhão Vapor PlanadorAvião

Caminhão VW

CaminhãoFord

Caminhão GM

UNIC/ USP Turine/Minghim 48

Herança

� Mecanismque permite definir uma nova classe(subclasse) a partir de uma classe já existente(superclasse)

� Ao se estabelecer uma Especialização (subclasse) de uma classe, a subclasse herda as características comuns da superclasse, isto é, a especificação dos atributos e dosmétodos da superclasse passam a fazer parte da especificação dos atributos e dos métodos da subclasse– A subclasse pode adicionar novos métodos, como também

reescrever métodos herdados

� Habilidade de um objeto derivar seus atributos (dados) emétodos (funcionalidade) automaticamente de outro objeto

Page 25: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�25

UNIC/ USP Turine/Minghim 49

Herança

� Classes podem ser construídas a partir de outras já existentes; facilita extensibilidade

� Quando uma mensagemé enviada para um objeto– A procura do método correspondente começa pela classedo

objeto

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

� A Herança pode ser de dois tipos:– Herança Simples: quando uma classe é subclasse de somente

uma superclasse

– Herança Múltipla : quando uma classe é subclasse de várias superclasses e conseqüentemente herda as características de cada uma delas

Exemplo: Sistema de Administração Universitária

Pessoa

Estudante Docente Funcionário

Graduação Pós-Graduação

Assistente

Herança

Múltipla

�Nome, Data de Nasc. RG

�Nascer, Comer, Dormir, Morrer

�RGM (registro)

�Cursar

Page 26: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�26

UNIC/ USP Turine/Minghim 51

Mensagem

� É o mecanismo através do qual os objetos se comunicam,invocando as operações desejadas

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

� É composta por

– Seletor:• nome simbólico que descreve o tipo da operação

• descreve O QUE o objeto que envia quer que seja invocado,não como deveria ser invocado

• o objeto recebedor da mensagem contém a descrição de COMO a operação deveria ser executada

– Parâmetros:• 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: ISTO LOGO

AnimalPessoa

Objeto que recebe

RECEPTORObjeto que envia

EMISSOR

Determina o que deve ser manipulado e

aguarda o retorno do objeto que foi ativado

Determina como

manipular

Page 27: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�27

UNIC/ USP Turine/Minghim 53

Mensagem

� Um objeto (Emissor) envia uma mensagem a outro (Receptor) que executará o serviço

� Métodos são invocados por Mensagens

� Exemplo– A chamada de um procedimento/função em LP é uma

aproximação inicial de uma mensagem, como em

P(10,20), onde

P é oseletore os valores 10 e 20 são os parâmetros– Diferença:

• a ação da mensagem a ser ativada depende essencialmente doobjeto que receber a mensagem

UNIC/ USP Turine/Minghim 54

Método� Origem: LP Smalltalk

� Quando um objeto é mapeado dentro do domínio do software, os processos que podem mudar a sua estruturade dados são denominados Operaçõesou Métodos

� Métodossão invocados por Mensagens� Cada objeto possue 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 umobjeto

– Através dos métodos que especifica-se a um objeto COMO FAZER alguma coisa

– São intrínsecos aos objetos e não podem ser separados

Page 28: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�28

UNIC/ USP Turine/Minghim 55

Interface (Protocolo)

� Objetos se comunicam através deMensagens, que invocam os Métodosdesejados

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

– Atributos

� Parte Compartilhada do Objeto ou Interface– corresponde à parte externa do objeto, isto é, àquela queé vista

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

– agrupa um conjunto de mensagens que o objeto pode responder

– as mensagens especificam quais operações sobre o objeto podem ser realizadas, mas não como a operação será executada

UNIC/ USP Turine/Minghim 56

Estrutura de um Objeto (classe)

<Nome do Objeto >

<Atributos>

<Métodos>

Interface<Métodos>

Parte Privada

Page 29: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�29

UNIC/ USP Turine/Minghim 57

Classes em C++

// classe chamada counter

class counter

{

private:

unsigned int value;

public:

counter( ) {value = 0}; // um construtor

void increment ( ) {if (value < 65535) value++; };

void decrement ( ) {if (value > 0) value--; };

unsigned int access_value( ){return value; }

};

UNIC/ USP Turine/Minghim 58

Ocultamento de Informação(Information Hiding)

� Característica que visa esconder detalhes deimplementação

� É alcançado em OO, visto que o objeto, quando implementado, possui uma parte privada (atributos emétodos) e uma parte compartilhada (interface)

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

� Programadores podem introduzir mudanças na implementação de um método sem afetar ocomportamento externo desse método

Page 30: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�30

UNIC/ USP Turine/Minghim 59

Encapsulamento de Dados

� Objetos encapsulam suas estruturas de dados (atributos)

� Os atributos de um objeto só podem ser manipulados pelos próprios métodos do objeto

� Restringe a visibilidade do objeto mas facilita o reuso

� Os DADOS e os MÉTODOS são empacotados sob um nome e podem ser reusados como uma especificação ou componente de programa

UNIC/ USP Turine/Minghim 60

Polimorfismo� 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

� Como a responsabilidade é do Receptore não doEmissor, pode acontecer que uma mesma mensagem ative métodos diferentes, dependendo da classe de objeto para onde é enviada a mensagem

� Permite a criação de várias classes com interfacesidênticas, porém objetos e implementações diferentes

� 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

Page 31: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�31

UNIC/ USP Turine/Minghim 61

Polimorfismo� Por exemplo, a operação “=“ pode ser definida em várias

classes de números: inteiro (método de comparação interia), string (método da ordem lexicográfica)

� É comum em LPOOs

UNIC/ USP Turine/Minghim 62

Analogia dos conceitos principaisno POO e no paradigma tradicional de proramação

� Linguagens Orientadas aObjetos

Objeto

Classe

Mensagem

Método

Interface

�Linguagens Tradicionais

Valor

Tipo (TAD)

Chamada de Procedimento

Procedimento ou Função

Conjunto de nomes e funções paraum fim específico

Page 32: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�32

UNIC/ USP Turine/Minghim 63

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

ClasseMobiliário

Custo

Peso

Dimensões

Localização

CadeiraAtributos

(Propriedades)

herda

Cor

Page 33: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�33

ClasseMobiliário

Custo

Peso

Dimensões

Localização

Cadeira

Atributos(Propriedades)

herda

Cor

Comprado

Vendido

Modificado

Operações(Serviços eMétodos)

UNIC/ USP Turine/Minghim 66

� 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

Page 34: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�34

UNIC/ USP Turine/Minghim 67

� 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

O objeto herda todos os atributos e as operaçõesda classe

Classe:Mobiliário

CustoDimensõesPesoCorLocalização

ComprarVenderPesarModificar

Classe:Cadeira

CustoDimensõesPesoCorLocalização

ComprarVenderPesarModificar

Classe:Camesa

CustoDimensõesPesoCorLocalização

ComprarVenderPesarModificar

Page 35: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�35

UNIC/ USP Turine/Minghim 69

<Nome da classe>

<Atributos>

<Operações>

UNIC/ USP Turine/Minghim 70

� O objeto CADEIRA e outros da mesma classe ENCAPSULA– dados (os valores dos atributos que definem a

cadeira)

– operações (as ações aplicadas para mudar os atributos da cadeira)

Page 36: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�36

UNIC/ USP Turine/Minghim 71

Identificação de Objetos

� O processo de análise para identificação dos objetos e classes � DIFÍCIL �

� Basicamente a mesma tarefa realizada na análise e no projeto de sistemas (Análise Estruturada)

� Os domínios de aplicação que naturalmente refletem entidades concretas do mundo real se beneficiam da abordagem OO

UNIC/ USP Turine/Minghim 72

Identificação de Objetos� Objetos podem ser:

– Entidades Externas que produzem ou consomem informações (outros sistemas, pessoas)

– Coisas que fazem parte do domínio (relatórios, displays, cartas)

– Eventos que ocorrem no contexto do sistema (transferência de propriedade)

– Papéis desempenhados por pessoas (gerente, engenheiro, vendedor)

– Unidades organizacionais (grupo, equipe)

– Lugares que estabelecem o contexto do problema (piso de fábrica, área de descarga)

Page 37: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�37

UNIC/ USP Turine/Minghim 73

Efetuar uma "análise gramatical" sobre a narrativa de processamento que descreva a bolha

� Isolar nomes (e locuções nominais), verbos (e locuções verbais)

� Os nomes e os verbos que são sinônimos ou que não tem nenhuma relação com o processo de modelagem são omitidos

� Todos os nomes são classes ou atributos (itens de dados)

� Todos os verbos são operações (métodos) -relacionamento entre classes

UNIC/ USP Turine/Minghim 74

Exemplo - C versus C++

//Programação Procedural (C) - programa simples

#include <stdio.h>

struct Circulo

{

//{COORDENADAS X E Y, e o raio}

float x;

float y;

float r;

};

Circulo Inicializa(float, float, float);

Circulo Altera_Raio(Circulo,float);

float Retorna_Raio(Circulo);

Circulo Move(Circulo, float, float);

void Mostra(Circulo);

Page 38: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�38

UNIC/ USP Turine/Minghim 75

Circulo Inicializa(float ax, float by, float cr)

//COLOCA O CIRCULO EM DETERMINADA POSICAO

{

Circulo altereme;

altereme.x = ax; altereme.y = by; altereme.r = cr;

return altereme;

}

Circulo Altera_Raio(Circulo altereme, float ar)

{

altereme.r = altereme.r + ar;

return altereme;

}

float Retorna_Raio(Circulo copieme)

{

return copieme.r;

}

UNIC/ USP Turine/Minghim 76

Circulo Move(Circulo altereme, float dx,float dy)

//Translada o circulo

{

altereme.x = altereme.x+dx; altereme.y = altereme.y+dy;

return altereme;

}

void Mostra(Circulo copieme)

//mostra dados do circulo na tela

{

printf("Raio: %f\n", copieme.r);

printf("X: %f\n",copieme.x);

printf("Y: %f\n",copieme.y);

}

Page 39: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�39

UNIC/ USP Turine/Minghim 77

//Programa Principal - PARTE 1

int main(void)

{

struct Circulo ac;

char leitura = ' ';

float x, y, raio;

//TESTES

printf("Entre com a Coordenada X:");

scanf("%f", &x);

printf("\nEntre com a coordenada Y:");

scanf("%f", &y);

printf("\nEntre com o raio:");

scanf("%f", &raio);

UNIC/ USP Turine/Minghim 78

//Programa Principal - PARTE 2

ac = Inicializa(x,y,raio);

Mostra(ac);

ac = Move(ac,100.0,0.0);

ac = Altera_Raio(ac,10.0);

printf("Deslocou o circulo em 100 unidades na coordenada X e aumenta o raio de 10 unidades\n");

Mostra(ac);

scanf("%d",leitura);

return 0;

}

Page 40: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�40

UNIC/ USP Turine/Minghim 79

Exemplo - C versus C++

// Programação Orientada a Objetos (C++)

// Programa Simples para ilustrar algumas diferenças básicas entre programação orientada a objetos e procedural

#include <iostream.h> //para o método cout

class circulo //métodos para circulo

{

protected:

float raio; float x; float y;

public:

void inicializa(float ax,float by,float cr);

void altera_raio(float a);

float retorna_raio(void);

void move(float dx,float dy);

void mostra(void);

};

UNIC/ USP Turine/Minghim 80

void circulo::inicializa(float ax,float by,float cr)

{

x=ax;

y=by;

raio=cr;

}

void circulo::altera_raio(float a)

{

raio = raio + a;

}

float circulo::retorna_raio(void)

{

return raio;

}

Page 41: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�41

UNIC/ USP Turine/Minghim 81

void circulo::move(float dx,float dy)

{

x= x + dx;

y = y + dy;

}

void circulo::mostra(void)

{

cout << "Raio:"<< retorna_raio() <<endl;

cout << "X:"<<x << endl;

cout << "Y:" <<y<< endl;

}

UNIC/ USP Turine/Minghim 82

// Programa Principal –parte 1

void main()

{

char wait;

float x, y, raio;

circulo ac;

cout << "Entre com a coordenada X:"; cin >> x;

cout << "\nEntre com a coordenada Y:";cin >> y;

cout << "\nEntre com o raio:"; cin >> raio;

ac.inicializa(x,y,raio);

ac.mostra();

...

Page 42: Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce537/mat/Inicio.pdf · Similar a um TAD (Tipo-Abstrato-de-Dados): pode ser usado como base para a criação de

�42

UNIC/ USP Turine/Minghim 83

// Programa Principal –parte 2

ac.move(100.0,0.0);

ac.altera_raio(12.0);

cout << "Desloca o circulo em 100 unidades na coordenada X e aumenta o raio de 12 unidades\n";

ac.mostra();

cin >> wait;

}

// ac.x = ac.x + 100; <- comando legal, porém é má prática de POO.

<- pode ser evitada pela proteção dos campos