Você está na página 1de 14

Ciência da Computação

Análise e Projeto de Sistema

Introdução à Orientação a Objetos

Wellington João da Silva

O Paradigma Procedural

 Programas centrados no conceito de


– Estado (modelado por variáveis)
– Ações (comandos) que manipulam o estado
– inclui subrotinas ou procedimentos como
mecanismo de estruturação
 Dados são considerados separadamente
dos procedimentos

Wellington João da Silva

1
O Paradigma Procedural

 Vantagens
– Eficiência
– Paradigma dominante e bem estabelecido
 Desvantagens
– Difícil legibilidade
– Facilidade de introdução de erros durante
manutenção
– Descrições demasiadamente operacionais
 Focalizam o “como” e não “o quê”

Wellington João da Silva

Paradigma de Orientação a Objetos

 Idéia básica
“Nós percebemos o mundo como uma coleção de objetos que
interagem entre si”
 Objetos do mundo real são mapeados em
objetos no computador
 Objetos se comunicam através de
mensagens

Wellington João da Silva

2
Vantagens

 É mais fácil conversar com o cliente que pediu o


software se falarmos de objetos que existem no
mundo dele
– O mundo do software fica mais perto do mundo real
 Reutilização de código
 Aumento da produtividade
 Redução no tempo de manutenção
 Redução de complexidade
 Aumento de qualidade
 Menor custo de desenvolvimento
 Aceitação comercial crescente

Wellington João da Silva

Paradigma de Orientação a Objetos

 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)
– parte externa (interface - maneira que o objeto se
apresenta para outros objetos)
 Mensagens

Wellington João da Silva

3
POO x Técnicas Tradicionais

Métodos Procedimentos e funções


Variáveis de Instância Dados
Mensagens Chamadas de procedimento e
funções
Classes Tipos de Dados
Herança Não existe
Interface Conjunto de nomes e funções
para um fim específico

Wellington João da Silva

Paradigma procedural X Paradigma


orientado a objetos

 Paradigma procedural (imperativo):


– Descreve-se os procedimentos a efetuar no algoritmo
– Dá ênfase à especificação dos “perfis” dos procedimentos:
 Qual tipo de parâmetro;
 Qual tipo de retorno.
 Paradigma orientado a objetos
– A ênfase é sobre as estruturas de dados (classes)
– Descrevem-se os dados, e depois o que fazer com eles
– Reaproveitamento de código (herança)
– Genérico (polimorfismo)
– Alta abstração dos dados
 Pode-se mexer na implementação sem alterar a especificação

Wellington João da Silva

4
Definição

 Orientação a objetos
– Significa organizar o mundo real como uma coleção de
objetos que incorporam estado e comportamento.
 Para ser orientado a objetos um sistema deve ter
pelo menos (Coad & Yourdon, 1991):
– Objetos
– Classes
– Herança
– Mensagens

Wellington João da Silva

Estado e Comportamento

 Estado de um objeto
– Toda a informação que ele carrega
– Armazenamos este estado nos atributos do objeto
– Estes atributos são chamados ainda de variáveis de
instância da classe
 Comportamento de um objeto
– Tudo o que ele sabe fazer, e tudo o que pode ser feito
com ele
– O comportamento é definido pelos métodos da classe

Wellington João da Silva

5
Os três princípios de OOP

 Encapsulamento
– Mecanismo que permite a separação dos aspectos
internos e externos de um objeto
 Herança
– Mecanismo que permite que uma subclasse herde
características da superclasse
 Polimorfismo
– Mecanismo que permite que um único nome expresse
muitos comportamentos diferentes

Wellington João da Silva

Características da OOP

 Objeto
 Classe
 Abstração
 Herança
 Encapsulamento
 Polimorfismo

Wellington João da Silva

6
Objeto

 Definição
– “Qualquer coisa, real ou abstrata, a respeito da qual
armazenamos dados e métodos que os manipulam” (Odell &
Martin, 1995)
 Abstração de uma entidade do mundo real através de atributos e
operações

 Objeto é uma entidade que possui


– Estado: Estado interno é representado pelos atributos
– Comportamento: Comportamento é definido pelo métodos
– Identidade Única

Wellington João da Silva

Atributos (Propriedades)

 Objeto tem atributos

Carro tem:
• nº de portas = 2
• cor = vermelho
• fabricante = Volks
• ano = 2008
• placa = ABC-0123

Wellington João da Silva

7
Comportamento

 Objeto tem comportamento

Carro tem:
• Ligar
• Desligar
• Acender Farol
• Travar Portas
• Etc

Wellington João da Silva

Classe

 Representa um conjunto de objetos com


características comuns
 Descreve
– A estrutura de dados
– O comportamento de objetos similares
 Todo objeto é uma instância de uma Classe

Wellington João da Silva

8
Classe e Instância

 Classe é um modelo para criação de


objetos, fornecendo o seu comportamento
padrão e a definição dos estados
possíveis.
 Instância é um objeto criado a partir de
uma classe, com seu estado particular,
independente de outras instâncias da
mesma classe.

Wellington João da Silva

Mensagens e Métodos

 Mecanismo através do qual os objetos se


comunicam, invocando as operações
desejadas.
 Um objeto (Emissor) envia uma mensagem
a outro (Receptor), que executará uma
tarefa.
 Métodos são invocados por Mensagens.

Wellington João da Silva

9
Abstração

 É a capacidade de representar através


de classes/objetos informações de um
sistema.
 Focalizar o essencial, ignorar
propriedades acidentais
– A abstração deve ser sempre feita com
algum objetivo, porque este determina o
que é e o que não é importante.

Wellington João da Silva

Herança

 Definição
– Mecanismo que permite definir uma nova classe (subclasse)
a partir de uma classe já existente (superclasse)
– Habilidade de um objeto derivar seus atributos (dados) e
métodos (funcionalidade) automaticamente de outro objeto
 Tipos
– Herança Simples
 um objeto herda as características de uma única classe
– Herança Múltipla
 uma objeto herda características de mais de uma classe

Wellington João da Silva

10
Herança

 Mamífero é super-classe (classe base) de Primata


e Felino, as quais são sub-classes (classes
derivadas) de Mamífero

Wellington João da Silva

Encapsulamento

 Definição
– Consiste na separação de aspectos internos e externos de
um objeto.
 Objetivo
– Ocultar do mundo externo ao objeto os detalhes de
implementação e restringir o acesso aos atributos e
métodos.
 Vantagens
– Segurança no acesso ao objeto
– Melhor consistência no estado interno, pois evita alteração
incorreta de valores dos atributos

Wellington João da Silva

11
Polimorfismo

 Definição
– Capacidade de tratar objetos de diferentes tipos de uma
mesma maneira desde que eles tenham um ancestral em
comum.
– Permite que valores de diferentes tipos possam ser
manipulados através de uma interface uniforme.
– Permite que uma entidade (variável, função ou objeto)
tenha uma variedade de representações.
 Vantagens
– Clareza e manutenção do código
– Divisão da complexidade
– Polimorfismo e padrões de projeto

Wellington João da Silva

Polimorfismo

 Caso 1
– O conceito de ligação dinâmica permite que uma variável
tenha diferentes tipos dependendo do seu conteúdo em um
dado momento.
 Caso 2
– O conceito de sobrecarga permite o reuso do nome de uma
função (ou método), desde que a sua lista de parâmetros
seja diferente.
 Caso 3
– O conceito de herança permite que objetos de diferentes
tipos possam ser tratados de forma uniforme, desde que
tenham um ancestral comum.

Wellington João da Silva

12
Interfaces e Classes Abstratas

 Interfaces
– Uma especificação de comportamento abstrato, que as
classes individuais podem então implementar
– Usadas para determinar o que uma determinada classe
implementa : quais ações essa classe irá possuir.
– Não podem ser instanciadas.
 Classes Abstratas
– Possuem métodos não implementados ( abstratos ) e
métodos genéricos já implementados.
– Não podem ser instanciadas.

Wellington João da Silva

Questões?

 O que é o paradigma de programação


orientada a objetos?
 Quais suas características principais?
 Quais suas vantagens e desvantagens?

Wellington João da Silva

13
Referência

 Roberts, Simon;Heller, Philip; Ernest,Michael (2000)- Complete


Java 2 Certification – Study guide.
 Bloch, Joshua (2001). Effective Java Programming Language
Guide. Addison-Wesley Professional.
 James Martin & James J. Odell (1995) - Object-Oriented
Methods: A Fundation. Prentice Hall
 Java Home - http://java.sun.com
 Peter Coad & Edward Yourdon (1991)- Object-Oriented Design:
Prentice Hall PTR; Facsimile edition

Wellington João da Silva

14

Você também pode gostar