SlideShare uma empresa Scribd logo
1 de 46

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

Mais procurados

Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamentoCarlos Melo
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Ensinando computacao sem_computador
Ensinando computacao sem_computadorEnsinando computacao sem_computador
Ensinando computacao sem_computadorHudson Augusto
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoRademaker Siena
 
Lógica e algoritmos
Lógica e algoritmosLógica e algoritmos
Lógica e algoritmosJocelma Rios
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de SistemasGuilherme
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugolGabriel Faustino
 
Apresentação Scratch
Apresentação ScratchApresentação Scratch
Apresentação ScratchMichele Felkl
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Algoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentosAlgoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentosMauro Pereira
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de ProgramaçãoRicardo Terra
 

Mais procurados (20)

Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamento
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Aula diagrama de classes
Aula diagrama de classesAula diagrama de classes
Aula diagrama de classes
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Ensinando computacao sem_computador
Ensinando computacao sem_computadorEnsinando computacao sem_computador
Ensinando computacao sem_computador
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
 
Lógica e algoritmos
Lógica e algoritmosLógica e algoritmos
Lógica e algoritmos
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugol
 
Apresentação Scratch
Apresentação ScratchApresentação Scratch
Apresentação Scratch
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
 
Algoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentosAlgoritmos e lp parte 2-fundamentos
Algoritmos e lp parte 2-fundamentos
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de Programação
 

Destaque

Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 
Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Elvis Araújo
 
Aula 02 - Programação Estruturada em JAVA
Aula 02 - Programação Estruturada em JAVAAula 02 - Programação Estruturada em JAVA
Aula 02 - Programação Estruturada em JAVAIvna Valença
 
Programação estruturada com Java-Aula01
Programação estruturada com Java-Aula01Programação estruturada com Java-Aula01
Programação estruturada com Java-Aula01Elvis Araújo
 
Programação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoProgramação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoEvandro Júnior
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 

Destaque (7)

Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com Java
 
Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2
 
Aula 02 - Programação Estruturada em JAVA
Aula 02 - Programação Estruturada em JAVAAula 02 - Programação Estruturada em JAVA
Aula 02 - Programação Estruturada em JAVA
 
Programação estruturada com Java-Aula01
Programação estruturada com Java-Aula01Programação estruturada com Java-Aula01
Programação estruturada com Java-Aula01
 
Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
Programação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoProgramação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e Implementação
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 

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

Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfpedrina4
 
Classes objetos
Classes objetosClasses objetos
Classes objetosnikson123
 
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxAula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxCarlos Albuquerque
 
Diagrama de classes1.1
Diagrama de classes1.1Diagrama de classes1.1
Diagrama de classes1.1Maikynata
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaWanderlei Silva do Carmo
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.pptssuser7025cf
 
Script c
Script cScript c
Script cRaphael
 

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

03 poo
03 poo03 poo
03 poo
 
Sld 4
Sld 4Sld 4
Sld 4
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
 
Classes objetos
Classes objetosClasses objetos
Classes objetos
 
Orientacao a Objetos
Orientacao a ObjetosOrientacao a Objetos
Orientacao a Objetos
 
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxAula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
Java7
Java7Java7
Java7
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Diagrama de classes1.1
Diagrama de classes1.1Diagrama de classes1.1
Diagrama de classes1.1
 
Resumo c#
Resumo c#Resumo c#
Resumo c#
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.ppt
 
Script c
Script cScript c
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