Escolar Documentos
Profissional Documentos
Cultura Documentos
O Paradigma Procedural
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ê”
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
2
Vantagens
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
3
POO x Técnicas Tradicionais
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
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
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
Características da OOP
Objeto
Classe
Abstração
Herança
Encapsulamento
Polimorfismo
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
Atributos (Propriedades)
Carro tem:
• nº de portas = 2
• cor = vermelho
• fabricante = Volks
• ano = 2008
• placa = ABC-0123
7
Comportamento
Carro tem:
• Ligar
• Desligar
• Acender Farol
• Travar Portas
• Etc
Classe
8
Classe e Instância
Mensagens e Métodos
9
Abstração
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
10
Herança
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
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
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.
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.
Questões?
13
Referência
14