2.
produção de software mais confiável
proteção aos dados: encapsulamento
aumento da produtividade de software
reutilização de código: classes
extensão da biblioteca de classes:
definição de subclasses (herança)
implementação de novos métodos
redefinição de métodos (polimorfismo)
2
Objetivosda Orientação a Objetos
5.
Características de uma LOO:
Tipos de dados Abstratos;
Herança; e
Um tipo especial de vinculação dinâmica.
Programação Orientada por Procedimentos
Concentra-se em subprogramas e bibliotecas de
subprogramas
Dados enviados a subprogramas p/computação;
Ex: Classificação de um array de valores inteiros.
5
Introdução
6.
Regras de
desenvolvimento
6
Decomposição A partir de um problema geral, definir um
conjunto de subproblemas independentes
que podem ser tratados em separado.
Independência A alteração de um módulo não incorre na
modificação de outros módulos.
Reutilização Quanto mais um módulo for independente,
maior a chance dele poder ser reutilizado
em outra aplicação.
Auto
documentado
Todo módulo deve ser compreensível sem a
necessidade de verificar seu relacionamento
com os outros módulos.
7.
Abstração e
Encapsulamento
7
1 - Um programador define um tipo de dados
2 - Para este tipo de dados, um conjunto de operações
3 - Em seguida, encapsula instâncias criadas a partir do
tipo definido de forma que estas instâncias não possam
ser manipuladas de outra forma que não seja através
das operações definidas
Tipo Abstrato de Dados
8.
Descreve as características essenciais de uma
entidade que as distinguem de todos os outros tipos
de entidades;
Vantagens:
Código e estrutura de dados em um mesmo lugar
(legibilidade e facilidade de alteração);
Ocultamento de informação, proporciona proteção
contra acessos inesperados (integridade da abstração)
8
Abstração de Dados
9.
Orientação a Objetos
9
Representação do mundo real (Descartes)
O próprio paradigma contém regras de
desenvolvimento
Método de implementação no qual os programas são
organizados como um conjunto de objetos cooperantes, sendo
cada objeto um representante de uma determinada classe, e
as classes organizadas através de uma relação de herança
10. Abstrações de objetos do mundo real
Cada classe deve representar um conceito
Exemplos: Pessoa, Veiculo, Tabela, Janela, Data
Um conceito pode ser descrito por atributos
Exemplos:
Pessoa: nome, data nascimento, nacionalidade, sexo...
Veículo: marca, modelo, tipo, ano, chassis ...
Data: dia, mês, ano
Os atributos podem sofrer operações
Leitura, escrita, atribuição, cópia, comparação, adição .....
dados e comportamento especificados num mesmo módulo:
classe
classe = define conjunto de objetos com as mesmas
características
objetos são instâncias de classes
10
Abstração de Classes
11. A computação é vista como conjuntos de objetos
agrupados em classes de objetos similares que
interagem através da troca de mensagens
Cada classe é um modelo estático que permite
especificar um conjunto de características do conceito
que representa
Cada objeto é uma entidade dinâmica criada a partir de
uma classe e possui os dados sobre os quais são
realizadas as operações disponíveis em sua classe
11
Modelo de Objetos:
princípios
12. Componentes básicos: classes, objetos, mensagens
Classes
campos + métodos
descritores não executáveis: tipos de dados
Objetos
variáveis (dinâmicas) criadas a partir de classes
podem ser criados, copiados, destruídos, passados como
argumentos, devolvidos como resultado....
Mensagens
invocação de métodos descritos na classe
atuam sobre objetos
12
Programa OO:
elementos
13. Especifica um conjunto de propriedades e
comportamento de um molde específico;
É utilizada para modelar entidades do mundo real;
Todo objeto é instancia de apenas uma classe;
A comunicação entre objetos é realizada por troca de
mensagens
13
Classes e Objetos
Métodos Dados
14.
14
Objeto e Classe
Todos os objetos são instâncias de uma classe
Um objeto é a materialização de um conceito formalizado
Exemplo:
ContaEmBanco é uma classe.
A conta do Donald e a tio Patinhas são instâncias
Pode-se comparar, à título ilustrativo, classes e objetos a tipos e variáveis em
linguagens procedurais convencionais.
15. Membros são as componentes internas de um objeto, definidas
por uma classe.
Atributos:
Membros do tipo informação, mantidos por cada uma das
instancias de uma classe
Métodos:
Membros do tipo função definidos por cada classe e
executados no escopo de um objeto. Isto é, sobre os atributos
mantidos pelo objeto.
15
Membros
18.
18
Classes e Objetos (cont)
Documento
Autor
Data de chegada
Imprimir()
Editar()
Classe
Atributos
Métodos
D1: Documento
D2: Documento
Objetos
19. LOO: Classes x Objetos
Classes não reservam
memória para variáveis
(campos)
Cada objeto, quando
instanciado, ocupa espaço
de memória para seus
dados
Cada objeto possui uma
identidade (nome)
Cada objeto possui um
tipo
Cada objeto possui suas
variáveis e seus valores
(estado)
Vários objetos podem ser
criados a partir de uma
mesma classe
19
Personagem
nome: String;
idade: Int;
sexo: String
void lista()
p1: Personagem
nome: “Ana Terra”;
idade: 20;
sexo: “feminino”
objeto
UML
nome idade sexo
20. LOO: classes e métodos
Um método é uma abstração
procedimental: operações que
atuam sobre dados/argumentos
Métodos (código) são
compartilhados entre todos os
objetos de uma classe
20
Personagem
nome: String;
idade: Int;
sexo: String
lista()
p1: Personagem
nome: “Ana Terra”;
idade: 20;
sexo: “feminino
p2: Personagem
nome: “Rodrigo”;
idade: 35;
sexo: “masculino
void lista ()
{ imprime(nome);
imprime(idade);
imprime(sexo); }
21.
21
Objetos e mensagens
A interação entre objetos, ou seja, a evolução do
programa, se dá através de mensagens trocadas através
da interface (ou protocolo) especificado para o objeto
pela sua classe.
Interface: conjunto de serviços oferecidos por um objeto
Análogo a uma chamada de função
Mensagem: ativação de um método em um objeto
22.
22
Objetos e mensagens
Todos os objetos de uma mesma classe possuem a
mesma interface e aplicam o mesmo método em resposta
a uma mensagem idêntica. O valor retornado pode, no
entanto, variar em função dos valores dos atributos
mantidos por cada objeto.
Interface: conjunto de serviços oferecidos por um objeto
Análogo a uma chamada de função
Mensagem: ativação de um método em um objeto
23. Objetos e mensagens
Cada mensagem é dirigida a um objeto e provoca a execução de
um método sobre os dados particulares do objeto (invocação
parametrizada)
O mesmo método pode ser executado sobre os dados de
diferentes objetos instanciados a partir da mesma classe
23
p1: Personagem
nome: “Ana Terra”;
idade: 20;
sexo: “feminino
p2: Personagem
nome: “Rodrigo”;
idade: 35;
sexo: “masculino
Ana Terra
20
Feminino
Rodrigo
35
masculino
p1.lista()
p2.lista()
24.
Um módulo está encapsulado se os clientes são
restritos pela linguagem a fazer acesso ao módulo
somente através de sua interface externa;
Public e Private;
Heranças Protect(acesso a classes derivadas);
24
Encapsulamento
25. Classes:
especialização/generalização
Classes podem ser usadas
para gerar outras classes
mais especializadas
Especialização: adição e
redefinição de
propriedades
25
Pós-graduaçãoPós-graduaçãoGraduaçãoGraduação
ESTUDANTEESTUDANTE
HIERAQUIA DE CLASSES
GENERALIZAÇÃO
ESPECIALIZAÇÃO
26.
(80’s) Reutilização de SW = + produtividade;
Unidades a serem reutilizadas: tipos de dados
abstratos, encapsulamentos e controles de acesso;
Reutilização de TAD: exige modificação;
Qual seria a solução?
Se um TAD puder herdar os dados e as
funcionalidades de algum tipo existente, e tb for
possível incluir novas funcionalidades?
Herança: derivar novas classes a partir de outras já
existentes através de um processo de refinamento.
26
Herança
27. Herança: identificar classes que possuem propriedades e
comportamentos similares
Exemplos: Ator é-uma Pessoa, Aluno é-uma Pessoa, Cliente é
uma Pessoa
Base da herança: propriedades comuns (gerais)
propriedades comuns são transmitidas a descendentes
descendentes podem adicionar/alterar propriedades
Estabelecem hierarquias de classes
Exemplo: Personagem é-um Ator que é-uma Pessoa
Reduzem a quantidade de código
aproveitar código (dados e operações)
programação por diferença
27
Herança(Cont)
28.
Exemplos de relacionamento de
Herança
28
Pessoa
nome
dataNasc
Ator
contrato
Aluno
numMatric
curso
Classe Base
Superclasse
Tipo
Classe Derivada
Subclasse
Subtipo
29. Implementação de Herança:Java
29
class Pessoa {
String nome;
int dia, mês, ano;
// demais membros}
class Ator extends Pessoa {
String contrato ;
// demais membros}
class Aluno extends Pessoa{
String num_matric, curso;
// demais membros}
Pessoa
nome
dataNasc
Ator
contrato
Aluno
numMatric
curso
30.
30
Herança de propriedades: Java
Subclasse herda
Membros públicos e
protegidos
Membros sem atributo de
acesso, do mesmo pacote
Subclasse NÃO herda
Membros privativos
Construtores
Métodos de mesma
assinatura (redefine)
Variáveis de mesmo nome
(esconde)
Importante: Herança simples=única classe
31.
Diferentes tipos de objetos podem responder a uma
mesma mensagem de maneiras diferentes
Ex: Método Imprime() [ Documento cheque,
fotografia;]
Dizemos que imprime() é um método polimórfico pois
ele é implementado diferentemente por diferentes
tipos de objetos;
31
Polimorfismo
32.
Redefinição (overriding): mesma função mas
comportamentos diferentes.
Sobrecarga(overloading): nome de uma função
usado mais de uma vez com diferentes tipos de
parâmetros.Ex: operação soma com dois parâmetros
reais e outra com parâmetros inteiros.
32
Formas de
Polimorfismos
33.
Redefinição de função
33
Capacidade de um objeto responder com
diferentes comportamentos uma mesma solicitação
Exemplo:
Suponha um método que receba um objeto ContaEmBanco e
que neste método seja solicitado a ativação do método Sacar.
O comportamento do objeto vai ser diferente em função do
objeto real:
1 - ContaEspecial permite que o saldo fique negativo
2 - ContaComum não
O comportamento do objeto será relativo ao
objeto real a qual é feita a referência
34.
Sobrecarga de função
34
Atribui a um único operador a capacidade de agir de
diferentes formas em função dos parâmetros recebidos
Exemplo:
Na classe ContaEmBanco, o método Depositar possui
duas implementações diferentes:
1 - uma para depósitos em dinheiro
2 - outra para depósitos em cheque
O serviço escolhido depende do parâmetro
enviado junto à ativação do serviço
(cheque ou dinheiro)
35.
Ligação dinâmica
35
A determinação do serviço chamado somente pode ser
realizada em tempo de execução.
Especialização + Polimorfismo
Exemplo:
Tio Patinhas possui uma ContaEspecial.
Donald possui uma ContaComum.
Ambos possuem ContaEmBanco.
Ambos podem Sacar ou ConsultarSaldo, mas a execução
do serviço não é a mesma nos dois tipos de conta.
36.
Construtor
36
Todo objeto criado é inicializado
Valores são atribuídos aos dados mantidos
pelo objeto durante sua fase de construção
Classe ContaEmBanco
O método Abrir faz as vezes de um
inicializador dos objetos ContaEmBanco.
Esta inicialização é parte integrante da
fase de construção do objeto: uma mesma
conta não será aberta diversas vezes !!!
Exemplo:
37.
Construtor
37
Todo objeto criado é inicializado
Valores são atribuídos aos dados mantidos
pelo objeto durante sua fase de construção
Classe
ContaEmBanco
Exemplo:
Encerrar( )
Sacar( valor )
Depositar( valor_cheque )
Depositar( valor_dinheiro )
ContaEmBanco( _Nome, _prof, … )
38.
Finalizador
38
De forma análoga, objeto criado em um
momento é finalizado
Por exemplo, a área de dados alocada para
um dado pode ser liberada
Classe ContaEmBanco
O método Encerrar faz as vezes de um finalizador
dos objetos ContaEmBanco.
Nesta finalização, as informações correspondentes
ao objeto conta são destruídas
Exemplo:
39.
39
Correpondência de Termos
objeto ~ variável dinâmica
(pointer)
classe ~ tipo
mensagem ~ chamada de subrotina
mé todo ~ subrotina/funç ão
heranç a
polimorfismo
40.
concepção do modelo
objetos encapsulados
objetos se comunicando por mensagens
definição de classes
objetos com caraterísticas idênticas
contrução da hierarquia de classes
generalização ou especialização
descrição das classes na LOO
desenvolvimento de aplicações
programa = classes (declarações de vars + rotinas)
instanciação (alocação de memória para ponteiros)
mensagens (chamadas asubrotinas)
40
Desenvolvimento de Programas OO
41. aprovada em elevado número de aplicações
em todos países industrializados
em todas áreas de aplicação
utilizada em
aplicações tradicionais de sistemas de informação:
bancário, processamento comercial
aplicações de tempo real:
controle de processos, telecomunicações
projeto assistido por computador:
CAD, CASE, CAM
adotada como base em áreas de pesquisa
arquitetura de computadores e sistemas operacionais
sistemas especialistas e bases de conhecimento
banco de dados, especificação e linguagens
41
Sinais de maturidade da tecnologia OO
42. requer
treinamento
escolha de novo método de desenvolvimento
ferramentas, ambiente de programação
banco de dados, sistema operacional
influência
gerência, produção, teste, instalação, venda
convencer corpo gerencial e técnico
42
Adoção da Tecnologia
OO
43.
Exercício
43
Definir uma estrutura de classes na qual seja possível
construir diferentes estruturas de lista:
- Pilha -
- Fila -
- Deque -
Definir uma estrutura de classes na qual seja possível
construir diferentes estruturas de lista:
- Pilha -
- Fila -
- Deque -