0% acharam este documento útil (0 voto)
2 visualizações42 páginas

Fundamentos da Orientação a Objetos

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações42 páginas

Fundamentos da Orientação a Objetos

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Fundamentos, Conceitos e

Aplicações do
Paradigma de Orientação a
Objetos

Prof. Dr. Marcelo Augusto Santos Turine


Profa. Dra. Rosane Minghim

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
UNIC/ USP Turine/Minghim 2

1
Mundo Computacional

Mundo Real

ESPAÇO DE
ESPAÇO DE SOLUÇÕES
PROBLEMAS
Gap Semântico

Aspectos mais importantes do mundo


real para fins de representação
no computador

RESULTADOS
DADOS ESPAÇO DE
PROBLEMAS

Objetos do
Objetos e Operações Algoritmo do mundo real
do mundo real mundo real

Mapeamento do
domínio de Interpretação Humana dos
soluções resultados

ESPAÇO DE
SOLUÇÕES
Objetos e Operações Dados de Saída
abstratas
Algoritmo
computacional

2
Gap Semântico
 Diferença entre Espaço de Problemas e Soluções
 Todo software representa um Modelo de um problema do
mundo real (Espaço de Soluções)
 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
 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

UNIC/ USP Turine/Minghim 5

Gap Semântico
 EVIDENTE:quanto mais próximo
(conceitualmente) estiver o espaço de soluções
do espaço de problemas, mais fácil será:
– o desenvolvimento da aplicação
– assegurar a compreensão, confiabilidade e
manutenção da aplicação

 Objetivo do Paradigma de Orientação a Objetos


DIMINUIR O GAP SEMÂNTICO

UNIC/ USP Turine/Minghim 6

3
Mundo Computacional

Mundo Real

ESPAÇO DE
ESPAÇO DE SOLUÇÕES
PROBLEMAS
Mapeamento

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
 Tarefa mais importante de um processo de
desenvolvimento 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

UNIC/ USP Turine/Minghim 8

4
Modelagem Conceitual

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

Entidade Entidade
Observada Representada
Notação gráfica,
Avião
linguagem de programação

UNIC/ USP Turine/Minghim 9

Abstração
 Mecanismo utilizado na análise de um domínio
 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
 Exemplo:
– Fotografia por satélite (imagem da realidade),
despida de alguns aspectos (por exemplo, cor, movimento)
– Da foto, pode-se abstrair um mapa, que elimina
diversas propriedades da foto (detalhes particulares de
um edifício ou praça)
– O mapa pode ser a base para abstrair um grafo
UNIC/ USP Turine/Minghim 10

5
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, mas
do interesse do observador

UNIC/ USP Turine/Minghim 11

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

 Diferentes abstrações a partir de um mesmo


objeto do mundo real

Cardinalidade
I, II, do conjunto

Maça
Peso
cor da casca
format Receita
3
ATRIBUTO
CATEGORIA
AÇÃO

6
Operações de Abstração relevantes para
a modelagem conceitual

 Classificação (Instanciação)
– 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
UNIC/ USP Turine/Minghim 13

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)

UNIC/ USP Turine/Minghim 14

7
Classificação/Instanciação
CATEGORIA

Estudante
de
Graduação

CLASSIFICAÇÃO

INSTANCIAÇÃO

José Maria

INDIVÍDUO
(Objeto)
UNIC/ USP Turine/Minghim 15

Classificação/Instanciação
CATEGORIA

Estudante
de
Graduação

CLASSIFICAÇÃO
Membro
do
Coral INSTANCIAÇÃO

José Maria

INDIVÍDUO
(Objeto)
UNIC/ USP Turine/Minghim 16

8
Generalização/Especialização
CATEGORIA

Estudante

GENERALIZAÇÃO

ESPECIALIZAÇÃO
Estudante Estudante (herança)
de de Pós-
Graduação Graduação

CATEGORIA
UNIC/ USP Turine/Minghim 17

Generalização/Especialização
CATEGORIA
Atributos Mamífero
•sangue quente
•vertebrado
•vivíparo

GENERALIZAÇÃO

ESPECIALIZAÇÃO
Baleia (herança)
Atributos
•Habitat: mar
•Tempo médio de
vida: 200 anos

CATEGORIA
UNIC/ USP Turine/Minghim 18

9
Agregação/Decomposição
CATEGORIA

Estudante

AGREGAÇÃO
(composição -
síntese)
DECOMPOSIÇÃO
Graduação Especializ. (refinamento -
análise)
CATEGORIA COMPONENTE

UNIC/ USP Turine/Minghim 19

Paradigma de Orientação a
Objetos (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 em


Objetos no computador
Visão do DOMÍNIO da aplicação é composto por
OBJETOS 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

UNIC/ USP Turine/Minghim 20

10
Paradigma de Orientação a
Objetos (OO)
 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

UNIC/ USP Turine/Minghim 21

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étods 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
UNIC/ USP Turine/Minghim 22

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

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)
UNIC/ USP Turine/Minghim 24

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

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ção de uma entidade do mundo real de modo
que essa entidade possue várias características
– Exemplo: objetos cachorro e casa

UNIC/ USP Turine/Minghim 26

13
•Raça
•cor
•pedigree

CACHORRO CASA

 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)
 OBJETO DOMÍNIO
 Visão implementacional (Takahashi, 1990) +
– entidade composta por: OPERAÇÕES
• 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
 Objeto é algo DINÂMICO: é criado por alguém, tem
uma vida, e morre ou é morto por alguém
 Pode ter vida temporária (como a execução de um
programa) ou persistente (persistirá até que seu
desaparecimento seja explicitamente ordenado)
UNIC/ USP Turine/Minghim 28

14
Mapeamento
Abstração Implementação

DOMÍNIO
ABSTRAÇÃO +
OPERAÇÕES

ATRIBUTOS
<Nome do Objeto>
(Dados)
+
IMPLEMENTAÇÃO <Atributos>
MÉTODOS
(Procedimentos)
<Métodos>
UNIC/ USP Turine/Minghim 29

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
• Objeto: Pessoa
Nome
• Atributos: Nome, Data de Data Nasc.
Nascimento, Cor Cor

• Métodos: Acordar, Comer, Beber Acordar


Dormir Comer
Beber
Dormir

UNIC/ USP Turine/Minghim 30

15
Objeto
 Exemplo
– uma Pessoa e um Carro podem ser considerados
como um objeto de dados no sentido de que qualquer
um deles pode ser definido em termos de um conjunto
de atributos e operações
 Objetos podem relacionar-se um com o outro
 Uma Pessoa pode possuir Carro, onde o
relacionamento possuir define uma conexão
específica entre Pessoa e Carro

UNIC/ USP Turine/Minghim 31

Objeto
=
Atributos (Dados)
+
Métodos (Funcionalidade)
+
Encapsulamento

UNIC/ USP Turine/Minghim 32

16
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 como
um objeto: possui memória em que valores podem ser
armazenados e que condicionarão seu comportamento

UNIC/ USP Turine/Minghim 33

Atributos
 Representam um conjunto de informações, ou seja,
elementos de dados que caracterizam um objeto
 Descrevem as informações que ficam escondidas em um
objeto 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
UNIC/ USP Turine/Minghim 34

17
Dicionário

Objeto do mundo Real

Objeto: Dicionário

Estrutura de Dados

Adicionar Palavra
Eliminar Palavra
Encontrar Palavra
Imprimir definição

UNIC/ USP Turine/Minghim 35

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

UNIC/ USP Turine/Minghim 36

18
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 na CLASSE
 Exemplo:
– Classificação de espécies em Zoologia

UNIC/ USP Turine/Minghim 37

19
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 do
mundo 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 um Objeto
UNIC/ USP Turine/Minghim 39

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

UNIC/ USP Turine/Minghim 40

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

Livro

Bíblia Relatório Dicionário

UNIC/ USP Turine/Minghim 42

21
Portas Quartos
Reformar
Salas Localização
Limpar
Cozinha Telhado
Pintar
Mobiliar
CASA

UNIC/ USP Turine/Minghim 43

Generalização Portas Quartos


Reformar
Limpar Salas Localização
Pintar Cozinha Telhado
Mobiliar
(Superclasse)
CASA

Comercial Familiar Clube


Limpar Piscina
(Subclasse)
Piscina
Quadras

Especialização

22
Animal superclasse

Selvagem Doméstico subclasse

Hierarquia de Classes
Gato Cão

De Raça Vira-Lata

Objeto Rex Rex


instância da classe Vira-Lata

Seres Humanos

Nome
Data_Nascimento
RG

Homem Mulher
Certif_Reservista

UNIC/ USP Turine/Minghim 46

23
Veículo

Véiculo de Veículo à Veículo


Rodas Motor Aéreo

Bicicleta Caminhão Vapor Avião Planador

Caminhão Caminhão Caminhão


VW Ford GM

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 dos
mé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) e
métodos (funcionalidade) automaticamente de outro
objeto
UNIC/ USP Turine/Minghim 48

24
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 classe do
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

UNIC/ USP Turine/Minghim 49

Exemplo: Sistema de Administração Universitária

Nome, Data de Nasc. RG


Nascer, Comer, Dormir, Morrer
Pessoa

RGM (registro)
Cursar Estudante Docente Funcionário

Graduação Pós-Graduação
Herança
Múltipla
Assistente

25
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
UNIC/ USP Turine/Minghim 51

Pessoa Coma isto logo!


Animal
Comer

Objeto: Animal Objeto que recebe


Mensagem: COMA ISTO LOGO RECEPTOR
Objeto que envia
Seletor: COMA
EMISSOR
Parâmetros: ISTO LOGO
Determina como
Determina o que deve ser manipulado e manipular
aguarda o retorno do objeto que foi ativado

26
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 é o seletor e os valores 10 e 20 são os parâmetros
– Diferença:
• a ação da mensagem a ser ativada depende essencialmente do
objeto que receber a mensagem

UNIC/ USP Turine/Minghim 53

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 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 um
objeto
– 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
UNIC/ USP Turine/Minghim 54

27
Interface (Protocolo)
 Objetos se comunicam através de Mensagens, que
invocam os Métodos desejados
 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 o
objeto 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 55

Estrutura de um Objeto (classe)

<Nome do Objeto>

Interface
<Métodos>

<Atributos> Parte Privada

<Métodos>

UNIC/ USP Turine/Minghim 56

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

Ocultamento de Informação
(Information Hiding)

 Característica que visa esconder detalhes de


implementação
 É alcançado em OO, visto que o objeto, quando
implementado, possui uma parte privada (atributos e
mé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 o
comportamento externo desse método

UNIC/ USP Turine/Minghim 58

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

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 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
 Permite a criação de várias classes com interfaces
idê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

UNIC/ USP Turine/Minghim 60

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

Analogia dos conceitos principais no POO e


no paradigma tradicional de proramação
 Linguagens Orientadas a Linguagens Tradicionais
Objetos

Objeto Valor
Classe Tipo (TAD)
Mensagem Chamada de Procedimento

Método Procedimento ou Função

Interface Conjunto de nomes e funções para


um fim específico

UNIC/ USP Turine/Minghim 62

31
Características

 Exemplo de objeto do mundo real


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

É membro - (instância)
de uma classe maior de
objetos
Cadeira Mobiliário
UNIC/ USP Turine/Minghim 63

Cor Classe
Mobiliário
Peso

Dimensões

Localização

Custo
herda

Atributos
(Propriedades) Cadeira

32
Cor Classe
Mobiliário
Comprado
Peso

Vendido
Dimensões

Modificado
Localização

Custo
herda

Operações
Atributos
(Serviços e
(Propriedades)
Cadeira 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

UNIC/ USP Turine/Minghim 66

33
 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
UNIC/ USP Turine/Minghim 67

Classe:
Mobiliário
Classe:
Custo Cadeira
Dimensões
Custo
Peso
Dimensões
Cor Classe:
Peso
Localização Camesa
Cor
Comprar Custo Localização
Vender Dimensões
Peso Comprar
Pesar
Cor Vender
Modificar
Localização Pesar
Modificar
Comprar
O objeto herda todos os Vender
atributos e as operações Pesar
da classe Modificar

34
<Nome da classe>

<Atributos>

<Operações>

UNIC/ USP Turine/Minghim 69

 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)

UNIC/ USP Turine/Minghim 70

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

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)
UNIC/ USP Turine/Minghim 72

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

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);
UNIC/ USP Turine/Minghim 74

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

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);
}

UNIC/ USP Turine/Minghim 76

38
//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 77

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

UNIC/ USP Turine/Minghim 78

39
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);
}; Turine/Minghim 79
UNIC/ USP

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

UNIC/ USP Turine/Minghim 80

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

// 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;
[Link](x,y,raio);
[Link]();

...
UNIC/ USP Turine/Minghim 82

41
// Programa Principal –parte 2

[Link](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";
[Link]();
cin >> wait;

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

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

UNIC/ USP Turine/Minghim 83

42

Você também pode gostar