SlideShare uma empresa Scribd logo

Paradigmas de Linguagens de
Programação
Linguagens Orientadas a Objetos
1

 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

3
Programação
Procedimental
dados dados
Proc1 Proc2 Proc3
dados

4
Programação Orientada
a Objetos
dados
dados
dados

 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

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.

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

 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

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
 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
 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
 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
 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
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.
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

Membros
16
Depositar
Sacar
ConsultarSaldo
Encerrar
Abrir Nome
Saldo
Profissão
Atributos
Métodos
(Parte escondida)
(Protocolo de acesso)

Exemplo
17
Depositar
Sacar
ConsultarSaldo
Encerrar
Abrir Tio Patinhas
100.000,00
Empresário
Depositar
Sacar
ConsultarSaldo
Encerrar
Abrir Donald
1,00
Jornalista
Conta do Tio Patinhas Conta do Donald
Duas instâncias (objetos) da classe ContaEmBanco

18
Classes e Objetos (cont)
Documento
Autor
Data de chegada
Imprimir()
Editar()
Classe
Atributos
Métodos
D1: Documento
D2: Documento
Objetos
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
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
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
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
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()

 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
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

 (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
 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)

Exemplos de relacionamento de
Herança
28
Pessoa
nome
dataNasc
Ator
contrato
Aluno
numMatric
curso
Classe Base
Superclasse
Tipo
Classe Derivada
Subclasse
Subtipo
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
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

 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

 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

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

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)

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.

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:

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, … )

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
Correpondência de Termos
objeto ~ variável dinâmica
(pointer)
classe ~ tipo
mensagem ~ chamada de subrotina
mé todo ~ subrotina/funç ão
heranç a
polimorfismo

 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
 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
 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

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 -

Exercício
44
Pilha de
tarefas
Lista de
processos
Lista de
notas
Relação
de TCs
Classe Lista
•Inserir
•Retirar
•Listar
•NúmeroElementos

Exercício
45
Classe Lista
•Inserir
•Retirar
•Listar
•NbElementos
Classe Pilha
•Inserir
•Retirar
•Listar
Classe Fila
•Inserir
•Retirar
•Listar
Deque
•Inserir
•Retirar
...
Nelemento
topo, base
prim, ult
topo, base
prim, ult

Exercício
46
Classe Lista
•Inserir
•Retirar
•Listar
•NbElementos
Classe Pilha
•Inserir
•Retirar
•Listar
Classe Fila
•Inserir
•Retirar
•Listar
Deque
•Inserir
•Retirar
...
início, fimNelemento

Mais conteúdo relacionado

PDF
Componentes da placa mãe
PDF
JavaScript: Estruturas (aula 2)
PDF
425173045-Manual-0770.pdf
PDF
POO - Aula 1
PPTX
Paradigmas de Programação
PDF
Introdução a Linguagem de Programação C
PDF
Arquitetura de Computadores
DOC
Aula 1 exercicio word 1
Componentes da placa mãe
JavaScript: Estruturas (aula 2)
425173045-Manual-0770.pdf
POO - Aula 1
Paradigmas de Programação
Introdução a Linguagem de Programação C
Arquitetura de Computadores
Aula 1 exercicio word 1

Mais procurados (20)

PPTX
Aula 7 - Modelos de Ciclo de Vida.pptx
PPTX
Arquitetura de Redes de Computadores
PPTX
Módulo 9 - Introdução à Programação Orientada a Objectos
PDF
Algoritmos em portugol
PPSX
Aula 1 word
PPTX
IMEI Módulo 8 (Curso profissional de Gestão de Equipamentos Informáticos)
PPTX
Estrutura de Dados - Aula 01
PDF
Curso de Java (Parte 2)
PDF
Informatica Aplicada
ODP
Redes I - 1.Introdução às Redes de Comunicação de Dados
PDF
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...
PPTX
Informática Básica - Aula 05 - Sistema Operacional Windows
PPT
Algoritmo - tipos de dados
PDF
Padroes De Projeto
PPTX
Banco de dados
PDF
Aula 1 - Introdução a POO
PPTX
Redes de computadores
PPTX
Aula sobre Linux.
PPTX
Exemplo e caso prático do uso de base de dados
PDF
Introducao redes
Aula 7 - Modelos de Ciclo de Vida.pptx
Arquitetura de Redes de Computadores
Módulo 9 - Introdução à Programação Orientada a Objectos
Algoritmos em portugol
Aula 1 word
IMEI Módulo 8 (Curso profissional de Gestão de Equipamentos Informáticos)
Estrutura de Dados - Aula 01
Curso de Java (Parte 2)
Informatica Aplicada
Redes I - 1.Introdução às Redes de Comunicação de Dados
Software Livre (Conceitos, contextualização histórica, licenças, sistemas ope...
Informática Básica - Aula 05 - Sistema Operacional Windows
Algoritmo - tipos de dados
Padroes De Projeto
Banco de dados
Aula 1 - Introdução a POO
Redes de computadores
Aula sobre Linux.
Exemplo e caso prático do uso de base de dados
Introducao redes
Anúncio

Destaque (7)

PPTX
Programação "Estruturada" com Java
PDF
Linguagem de Programação Estruturada com Java-Aula2
PDF
Aula 02 - Programação Estruturada em JAVA
PDF
Programação estruturada com Java-Aula01
PPTX
Programação Estruturada e Orientada a Objetos
PDF
Programação Orientada á Objeto - Paradigmas e Implementação
PPT
Introdução a programação Orientada a Objeto
Programação "Estruturada" com Java
Linguagem de Programação Estruturada com Java-Aula2
Aula 02 - Programação Estruturada em JAVA
Programação estruturada com Java-Aula01
Programação Estruturada e Orientada a Objetos
Programação Orientada á Objeto - Paradigmas e Implementação
Introdução a programação Orientada a Objeto
Anúncio

Semelhante a Programação Orientada a Objeto(POO) (20)

PDF
Slides 02 - Orientacao a Objetos.pdf
PPT
Apresentação programação orientada à objetos
PDF
Aula3-POO-ConceitosBasicos.pdf
PPT
Curso : Introdução Orientação a Objetos
PDF
Programação OO - Java
PDF
Aula 09 - introducao oo
PPT
2.1 introdução a oo
PPTX
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
PDF
03 poo
ODP
Paradigma Orientado a Objeto
PPTX
3.1 orientação objetos
PPT
Aula 1 - Linguagem III
PPT
01 Orientacao A Objetos Programacao
PDF
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
PDF
02_revisao_OO.pdf
PPTX
JAVA - Orientação a Objetos
PPT
Aula 3 introducao a orientação a objetos
PDF
Conhecendo A Linguagem de Programação Java
PDF
Script c
Slides 02 - Orientacao a Objetos.pdf
Apresentação programação orientada à objetos
Aula3-POO-ConceitosBasicos.pdf
Curso : Introdução Orientação a Objetos
Programação OO - Java
Aula 09 - introducao oo
2.1 introdução a oo
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
03 poo
Paradigma Orientado a Objeto
3.1 orientação objetos
Aula 1 - Linguagem III
01 Orientacao A Objetos Programacao
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
02_revisao_OO.pdf
JAVA - Orientação a Objetos
Aula 3 introducao a orientação a objetos
Conhecendo A Linguagem de Programação Java
Script c

Programação Orientada a Objeto(POO)

  • 1.  Paradigmas de Linguagens de Programação Linguagens Orientadas a Objetos 1
  • 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
  • 17.  Exemplo 17 Depositar Sacar ConsultarSaldo Encerrar Abrir Tio Patinhas 100.000,00 Empresário Depositar Sacar ConsultarSaldo Encerrar Abrir Donald 1,00 Jornalista Conta do Tio Patinhas Conta do Donald Duas instâncias (objetos) da classe ContaEmBanco
  • 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 -
  • 44.  Exercício 44 Pilha de tarefas Lista de processos Lista de notas Relação de TCs Classe Lista •Inserir •Retirar •Listar •NúmeroElementos
  • 45.  Exercício 45 Classe Lista •Inserir •Retirar •Listar •NbElementos Classe Pilha •Inserir •Retirar •Listar Classe Fila •Inserir •Retirar •Listar Deque •Inserir •Retirar ... Nelemento topo, base prim, ult topo, base prim, ult
  • 46.  Exercício 46 Classe Lista •Inserir •Retirar •Listar •NbElementos Classe Pilha •Inserir •Retirar •Listar Classe Fila •Inserir •Retirar •Listar Deque •Inserir •Retirar ... início, fimNelemento