Você está na página 1de 26

Programação 

(e Análise) 
Orientada a Objetos

Conceitos gerais de Orientação a Objetos (OO) 

Engenharia de Aplicações em Redes – Introcução 1
O duelo homem x máquina
● “The genesis of the computer revolution was in a machine. 
The genesis of our programming languages thus tends to 
look like that machine.”

– Computadores não são apenas máquinas, mas ferramentas de 
amplificação da mente.

– As ferramentas deveriam se parecer menos com a máquina e 
mais com nossas mentes.
● Redução do “gap semântico” entre as abstrações e a implementação
● Abstrações básicas: algoritmos e tipos abstratos de dados

Engenharia de Aplicações em Redes – Introcução 2
Uma pequena história das abstrações

● Abstrações são os recursos dos programadores para melhor 
gerenciar a complexidade dos programas
● A abstração básica que nos interessa são os 
Tipos Abstratos de Dados (TADs)
● As soluções para se implementar TADs têm evoluído com o tempo:
– tipos compostos, funções e procedimentos;
– módulos;
– classes/objetos.
● Essa evolução tem seu paralelo nos padrões de programação

Engenharia de Aplicações em Redes – Introcução 3
O que é 
Programação Orientada a Objetos?
● Um paradigma avançado de programação que
– engloba um conjunto de teorias, padrões e métodos que juntos 
representam uma forma de organizar conhecimento
– baseado no conjunto de abstrações de classes e objetos
– empacota dados e procedimentos em um mesmo elemento (objeto)
● Objetos se comunicam pela passagem de mensagens
● Comportamentos e informações podem ser definidos em função de 
um tipo (classe) ou diretamente a partir de outros objetos

Engenharia de Aplicações em Redes – Introcução 4
Diretivas gerais de POO

● Organizar o sistema de software em termos dos elementos que o 
mesmo manipula
– em vez de perguntar o que o sistema faz,
– perguntar sobre o quê o sistema age e quais são as interações
● Focar primeiro sobre os dados favorece a reusabilidade

Engenharia de Aplicações em Redes – Introcução 5
Mudança de paradigma

● Estamos mudando de metodologia de desenvolvimento:
● Top­down (refinamentos sucessivos)
– Define o sistema em função de suas ações básicas
– Todas as ações estruturadas em termos umas das outras
– Limita a reusabilidade
● Orientada a dados (objetos)
– Define o sistema em função dos dados que ele manipula
– Não necessariamente todas a ações em um só conjunto
– Reaproveitamento facilitado

Engenharia de Aplicações em Redes – Introcução 6
Mudança de paradigma
● Exemplo: serviço de automação de bolsa de valores
● Top­down: 
– identifica função principal: coletar e exibir cotações de ações
– programa principal inicia a hierarquia de tarefas executadas
● Orientado a objetos:
– identifica elementos do problema: ações, corretores, fundos e seus 
relacionamentos
– programa principal apenas cria objetos e dispara o processamento

Engenharia de Aplicações em Redes – Introcução 7
Classes e objetos
● Combinação de dados e operações sobre eles em um 
elemento único
● Podem ser vistos com uma extensão dos conceitos de 
Tipos Abstratos de Dados
● Classe: definição do tipo
● Objeto: cada instância derivada da classe

Engenharia de Aplicações em Redes – Introcução 8
Princípios da Orientação a Objetos

● Há alguns princípios básicos:
– Encapsulamento
– Proteção/ocultação da informação (information hiding)
– Passagem de mensagens
– Ligação tardia (late binding)
– Delegação
– Classes/objetos/instâncias
– Herança
– Polimorfismo
– Relacionamentos

Engenharia de Aplicações em Redes – Introcução 9
Encapsulamento

● Programação convencional separa dados e 
procedimentos
Dados Procedimentos

● O objeto contém tanto os dados quanto a  Serviços
descrição das operações que manipularão ou 
alterarão aqueles dados
Dados
– Campos de dados: atributos
– Implementação das operações: métodos

Engenharia de Aplicações em Redes – Introcução 10
Proteção da informação (data hiding)
● O objeto que contém os dados (atributos do 
objeto) define que serviços estão disponíveis  Serviços
para outros objetos
● Outros objetos podem não ter acesso a  Dados
dados individuais 
● A informação sobre como os serviços são 
implementados também pode ser protegida

Não é possível 
chegar aos dados 
Engenharia de Aplicações em Redes – Introcução diretamente 11
Proteção da informação (data hiding)

Engenharia de Aplicações em Redes – Introcução 12
Classe/Instância/Objeto
● Todo objeto é criado a partir (é uma instância) de uma classe
● Instâncias podem ser criadas em tempo de execução
● Dados (atributos) são associados a cada objeto
● Classes podem conter atributos gerais independentes das 
diversas instâncias (atributos de classe)

Um objeto bem identifidado de uma  Um objeto de uma 
Uma classe com 
classe determinada certa classe sem uma 
atributos e métodos
identificação completa

Engenharia de Aplicações em Redes – Introcução 13
Passagem de mensagens 

● Um objeto se comunica com outros pelo envio de mensagens
● Uma ação é iniciada por uma requisição de serviços (mensagem) 
enviada para um objeto específico
● Essa ação é uma operação que utiliza ou altera os dados do objeto
● A implementação da ação é denominada método
– Relacionado ao conceito de funções da programação imperativa

Serviços Serviços
Mensagem
Dados Dados
Cliente

Engenharia de Aplicações em Redes – Introcução 14
Late binding (ligação tardia)

● Suporte à habilidade de determinar quem será o receptor de uma 
mensagem (e o respectivo método invocado) apenas quando a 
mensagem é realmente enviada em tempo de execução

Services
Services
Services
Serviços Services
Services
Data Serviços
? Data
Data
Dados Data
Data
Dados

Engenharia de Aplicações em Redes – Introcução 15
Delegação

● Trabalho é transferido, pelo envio de mensagens, de um objeto 
(cliente) para outro (servidor)
– Da perspectiva do cliente o servidor é quem deve executar os serviços 
que o cliente necessita.
– Trabalho é transferido continuamente até que atinja o objeto que possui 
os dados e os métodos para executar a tarefa

Serviço
Dados
Serviço Serviço
Dados Dados
Engenharia de Aplicações em Redes – Introcução 16
Herança (Generalização/Especialização)
● Relação entre classes (tipos de objetos)
Ser vivo
● Permite que classes compartilhem código
– Uma classe pode “herdar” código de outra
– A classe herdeira pode criar uma versão      Animal Planta
que seja mais genérica ou mais específica   
que a versão original da atividade

Mamífero Réptil

Cão Gato

Engenharia de Aplicações em Redes – Introcução 17
Herança (Generalização/Especialização)

Engenharia de Aplicações em Redes – Introcução 18
Herança (Generalização/Especialização)

Engenharia de Aplicações em Redes – Introcução 19
Herança (Generalização/Especialização)

Engenharia de Aplicações em Redes – Introcução 20
Polimorfismo

● Uma certa operação muitas vezes pode ser definida de forma 
equivalente para atributos de entrada de formas diferentes
● Polimorfismo permite que diversos métodos (que difiram em 
suas assinaturas) recebam o mesmo nome
● Permite que métodos sejam identificados pelo seu 
efeito/finalidade de forma uniforme, simplificando a tarefa do 
programador
area_triangulo = calcula_area(lado1,lado2,lado3);
area_triangulo = calcula_area(base,altura);
area_triangulo = calcula_area(registro_triangulo);

Engenharia de Aplicações em Redes – Introcução 21
Relacionamentos
● Mecanismo pelo qual um objeto toma conhecimento dos 
demais em um programa
– Basicamente, entre os atributos de um objeto deve haver informação 
que lhe permita identificar um outro objeto
● Dois tipos básicos de relacionamento
– Associação: objetos independentes trocam mensagens
– Agregação: um objeto é composto por/contém outros objetos

Serviços Serviços

Dados Dados

Engenharia de Aplicações em Redes – Introcução 22
Relacionamentos

Agregação Composição

Engenharia de Aplicações em Redes – Introcução 23
Uma palavra de cautela
● Programar um computador é uma das tarefas mais difíceis 
que se pode enfrentar
– Orientação a objetos não muda isso!
– Ela oferece um conjunto de abstrações, métodos e padrões que 
viabilizam o desenvolvimento de programas melhores

Engenharia de Aplicações em Redes – Introcução 24
Etapas do desenvolvimento OO
● Identificar os objetos
● Descrevê­los:
– Elementos estáticos (estado)
– Comportamento dinâmico (ações que executam)
● Identificar e definir relações entre objetos

Engenharia de Aplicações em Redes – Introcução 25
Engenharia de Aplicações em Redes – Introcução 26

Você também pode gostar