Objetos ((eco)). Arqueología de los afectos Objetos ((eco ...
Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce610/mat/Inicio.pdf · Permite...
Transcript of Fundamentos, Conceitos e Aplicações do Paradigma de ...jbatista/sce610/mat/Inicio.pdf · Permite...
�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
�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
�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
�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
�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
�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
�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)
�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)
�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
�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
�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
�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)
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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
�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)
�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)
�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);
�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);
}
�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;
}
�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;
}
�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();
...
�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