Sunteți pe pagina 1din 55

Paradigmas de Linguagens de

Programao

Linguagens Orientadas a Objetos

1
Regras de desenvolvimento

Decomposio A partir de um problema geral, definir um


conjunto de subproblemas independentes
que podem ser tratados em separado.
Independncia A alterao de um mdulo no incorre na
modificao de outros mdulos.
Reutilizao Quanto mais um mdulo for independente,
maior a chance dele poder ser reutilizado em
outra aplicao.
Auto Todo mdulo deve ser compreensvel sem a
documentado necessidade de verificar seu relacionamento
com os outros mdulos.
2
Problema x Abstrao
 Para resolver um problema necessrio escolher
uma abstrao da realidade (Almeida, 2010)
Fonte: POO, Andr Santanch UNICAMP - 2011

3
Abstrao
 Processo mental que consiste em escolher ou isolar
um aspecto determinado de um estado de coisas
relativamente complexo, a fim de simplificar a sua
avaliao, classificao ou para permitir a
comunicao do mesmo.(Houaiss 2006)
 Abstraes ajudam a gerenciar a complexidade do
software. (Shaw, 1984)
Fonte: POO, Andr Santanch UNICAMP - 2011

4
Abstraes do dia a dia

5
Tipo Abstrato de Dados (TAD)
 Um tipo abstrato de dados define uma classe de
objetos abstratos que completamente
caracterizada pelas operaes disponveis nestes
objetos. Isto significa que um tipo abstrato de dados
pode ser definido pela definio e caracterizao das
operaes daquele tipo. (Liskov, 1974)
Fonte: POO, Andr Santanch UNICAMP - 2011

6
Abstrao e Encapsulamento

1 - Um programador define um tipo de dados


2 - Para este tipo de dados, um conjunto de operaes
3 - Em seguida, encapsula instncias criadas a partir do
tipo definido de forma que estas instncias no possam
ser manipuladas de outra forma que no seja atravs
das operaes definidas

Tipo Abstrato de Dados

7
Abstrao de Dados
 Descreve as caractersticas essenciais de uma
entidade que as distinguem de todos os outros tipos
de entidades;
 Vantagens:
 Cdigo e estrutura de dados em um mesmo lugar
(legibilidade e facilidade de alterao);
 Ocultamento de informao, proporciona proteo
contra acessos inesperados (integridade da abstrao)

8
Orientao a Objetos

 Representao do mundo real (Descartes)


 O prprio paradigma contm regras de
desenvolvimento

Mtodo de implementao no qual os programas so


organizados como um conjunto de objetos cooperantes, sendo
cada objeto um representante de uma determinada classe, e
as classes organizadas atravs de uma relao de herana

9
Abstrao de Classes
 Abstraes 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...

 Veculo: marca, modelo, tipo, ano, chassis ...

 Data: dia, ms, ano

 Os atributos podem sofrer operaes


 Leitura, escrita, atribuio, cpia, comparao, adio .....
 dados e comportamento especificados num mesmo mdulo:
classe
 classe = define conjunto de objetos com as mesmas
caractersticas
 objetos so instncias de classes

10
Modelo de Objetos: princpios
 A computao vista como conjuntos de objetos
agrupados em classes de objetos similares que
interagem atravs da troca de mensagens
 Cada classe um modelo esttico que permite
especificar um conjunto de caractersticas do conceito
que representa
 Cada objeto uma entidade dinmica criada a partir
de uma classe e possui os dados sobre os quais so
realizadas as operaes disponveis em sua classe

11
Programa OO: elementos
 Componentes bsicos: classes, objetos, mensagens
 Classes
 campos + mtodos
 descritores no executveis: tipos de dados
 Objetos
 variveis (dinmicas) criadas a partir de classes
 podem ser criados, copiados, destrudos, passados
como argumentos, devolvidos como resultado....
 Mensagens
 invocao de mtodos descritos na classe
 atuam sobre objetos

12
Classes e Objetos
 Especifica um conjunto de propriedades e
comportamento de um molde especfico;
 utilizada para modelar entidades do mundo real;
 Todo objeto instancia de apenas uma classe;
 A comunicao entre objetos realizada por troca
de mensagens

Mtodos Dados

13
Objeto e Classe

Todos os objetos so instncias de uma classe


Um objeto a materializao de um conceito formalizado

Exemplo:
ContaEmBanco uma classe.
A conta do Donald e a tio Patinhas so instncias

Pode-se comparar, ttulo ilustrativo, classes e objetos a tipos e variveis em


linguagens procedurais convencionais.

14
Membros

Membros so as componentes internas de um objeto,


definidas por uma classe.
 Atributos:
 Membros do tipo informao, mantidos por cada uma

das instancias de uma classe


 Mtodos:
 Membros do tipo funo definidos por cada classe e
executados no escopo de um objeto. Isto , sobre os
atributos mantidos pelo objeto.

15
Membros

Abrir Nome

Encerrar
Saldo
Depositar
Sacar
Profisso
ConsultarSaldo Atributos
(Parte escondida)

Mtodos (Protocolo de acesso) 16


Exemplo
Duas instncias (objetos) da classe ContaEmBanco

Abrir Tio Patinhas Donald


Abrir
Encerrar Encerrar
100.000,00 1,00
Depositar Depositar
Sacar Sacar
Empresrio Jornalista
ConsultarSaldo ConsultarSaldo

Conta do Tio Patinhas Conta do Donald


17
Classes e Objetos (cont)

Classe Documento Objetos


D1: Documento
Autor
Atributos Data de chegada

Imprimir() D2: Documento


Mtodos
Editar()

18
LOO: Classes x Objetos
 Classes no reservam
memria para variveis
(campos)
Personagem
 Cada objeto, quando
instanciado, ocupa espao nome: String;
de memria para seus nome idade sexo idade: Int;
dados sexo: String
 Cada objeto possui uma void lista()
identidade (nome)
 Cada objeto possui um
tipo
 Cada objeto possui suas p1: Personagem
variveis e seus valores
(estado) nome: Ana Terra;
 Vrios objetos podem ser idade: 20; objeto
criados a partir de uma sexo: feminino UML
mesma classe 19
LOO: classes e mtodos
 Um mtodo uma abstrao
procedimental: operaes que Personagem
atuam sobre dados/argumentos
nome: String;
 Mtodos (cdigo) so idade: Int;
sexo: String
compartilhados entre todos os
objetos de uma classe void
lista()lista ()
{ imprime(nome);
imprime(idade);
imprime(sexo); }
p1: Personagem
nome: Ana Terra;
idade: 20; p2: Personagem
sexo: feminino
nome: Rodrigo;
idade: 35;
sexo: masculino 20
Objetos e mensagens

Interface: conjunto de servios oferecidos por um objeto


Mensagem: ativao de um mtodo em um objeto

A interao entre objetos, ou seja, a evoluo do


programa, se d atravs de mensagens trocadas atravs
da interface (ou protocolo) especificado para o objeto
pela sua classe.

21
Anlogo a uma chamada de funo
Objetos e mensagens

Interface: conjunto de servios oferecidos por um objeto


Mensagem: ativao de um mtodo em um objeto

Todos os objetos de uma mesma classe possuem a


mesma interface e aplicam o mesmo mtodo em resposta
a uma mensagem idntica. O valor retornado pode, no
entanto, variar em funo dos valores dos atributos
mantidos por cada objeto.

Anlogo a uma chamada de funo


22
Objetos e mensagens
 Cada mensagem dirigida a um objeto e provoca a execuo de
um mtodo sobre os dados particulares do objeto (invocao
parametrizada)
 O mesmo mtodo pode ser executado sobre os dados de
diferentes objetos instanciados a partir da mesma classe

p2: Personagem
p1: Personagem
nome: Rodrigo;
nome: Ana Terra; idade: 35; p2.lista()
idade: 20; p1.lista() sexo: masculino
sexo: feminino

Ana Terra Rodrigo


20 35
Feminino masculino
23
Encapsulamento
 Classes normalmente escondem os detalhes de sua
implementao de seus clientes. Isto chamado de ocultar
informao.
 O cliente se preocupa com qual(is) funcionalidade(s) uma
classe oferece, e no com a forma como essa funcionalidade
implementada. Este conceito referido como a abstrao de
dados.
 Embora os programadores possam conhecer os detalhes de
implementao de uma classe, no devem escrever cdigo que
depende desses detalhes que podem mudar mais tarde .
 C # e o estilo orientado a objeto (OO) de programao eleva a
importncia dos dados.
 As principais atividades da programao OO em C # so a criao
de tipos (por exemplo, classes) e a expresso das interaes entre
objetos desses tipos. 24
Encapsulamento
 Tipos de dados abstratos (TDAs) melhoram o
processo de desenvolvimento de aplicativo.
 Tipos como int,
int, double,
double, e char so exemplos
de tipos de dados abstratos.
 TDAs so representaes de conceitos do mundo
real para algum nvel satisfatrio de preciso dentro
de um sistema de computador.
 Um TDA captura duas noes: uma representao
de dados e as operaes que podem ser executadas
sobre esses dados.
 Programadores C # usam classes para implementar
tipos de dados abstratos. 25
Encapsulamento
 Um mdulo est encapsulado se os clientes so
restritos pela linguagem a fazer acesso ao mdulo
somente atravs de sua interface externa;
 Public e Private;

26
Classes: especializao/generalizao

 Classes podem ser usadas


para gerar outras classes ESTUDANTE

mais especializadas
GENERALIZAO
 Especializao: adio e
redefinio de propriedades

Graduao Ps graduao
Ps-graduao
ESPECIALIZAO

HIERAQUIA DE CLASSES
27
Herana
 (80s) Reutilizao de SW = + produtividade;
 Unidades a serem reutilizadas: tipos de dados
abstratos, encapsulamentos e controles de acesso;
 Reutilizao de TAD: exige modificao;
 Qual seria a soluo?
 Se um TAD puder herdar os dados e as
funcionalidades de algum tipo existente, e tb for
possvel incluir novas funcionalidades?
 Herana: derivar novas classes a partir de outras j
existentes atravs de um processo de refinamento.

28
Herana
 A herana permite uma nova classe estender uma
classe existente
 A nova classe herda os membros da classe que se
estende
 Ela ajuda a especializar uma classe de uma classe
existente
 classe abelhas e classe gafanhotos so duas classes
especializadas da classe insetos
 Ela tambm ajuda a generalizar os membros comuns
de muitas classes em uma nova classe
 Sedan, picape, SUV tm caractersticas comuns de um
carro
29
Herana(Cont)

 Herana: identificar classes que possuem propriedades e


comportamentos similares
 Exemplos: Ator -uma Pessoa, Aluno -uma Pessoa, Cliente
uma Pessoa
 Base da herana: propriedades comuns (gerais)
 propriedades comuns so transmitidas a descendentes
 descendentes podem adicionar/alterar propriedades
 Estabelecem hierarquias de classes
 Exemplo: Personagem -um Ator que -uma Pessoa
 Reduzem a quantidade de cdigo
 aproveitar cdigo (dados e operaes)
 programao por diferena

30
Herana uma relao

 Quando um objeto uma verso especializada de um outro objeto,


existe uma " uma" relao entre eles
 Um gafanhoto um inseto
Inseto
 A abelha um inseto

 A lgica :
 Todo inseto tm certas caractersticas em comum e pode ser
descrito por uma classe de Inseto
 O gafanhoto tem suas prprias caractersticas nicas para ser
descrito por uma classe Gafanhoto
 A abelha tem suas prprias caractersticas nicas para ser descrito
por uma classe Abelha

31
Herana uma relao
 Um " uma" relacionamento implica que o objeto especializado tem
todas as caractersticas do objeto generalizado
 O objeto especializado tem caractersticas adicionais que o tornam
especial, que o objeto generalizado no tem

 Na programao orientada a objetos, a herana cria " uma" relao


entre as classes, quando voc declara que uma classe seja uma classe
especializada de outro
 especializada " uma" generalizada

 Isto permite-lhe ampliar a capacidade de uma classe atravs da


criao de uma outra classe que uma verso especializada da
primeira

32
Classe Base e Derivada
 A Herana envolve classes base e derivadas
 A classe base a classe generalizada e s vezes chamada de
superclasse
 A classe derivada a classe especializada e s vezes chamada
subclasse
 Voc pode pensar a classe derivada como uma verso estendida
da classe base
 A classe derivada herda os campos, propriedades e mtodos da
classe base, sem que nenhum deles tenha que ser reescrito
 Novas campos, propriedades e mtodos podem ser adicionados
classe de derivadas para torn-la especial

33
Herana - Notao
 Assuma que existe uma classe Automvel:
class Automovel
{
Membros.
}

 Em C# o formato genrico para declarar a herana no header


da classe
class Carro : Automovel
{}

 Onde Carro classe derivada e Automovel classe base


 Dois pontos(:) indica que esta classe derivada de uma outra classe

34
Exemplos
 Um inventrio da concessionria inclui trs tipos de automveis:
carros, pickup trucks, and SUVs
 A concessionria mantm os seguintes dados:
 Fabricante Automvel
 Ano modelo
 Km
Carros Pickup SUV
 Preo
 Cada tipo de veculo, que mantido em inventrio tem os dados
gerais acima
 Cada tipo de veculo tambm tem seus prprios dados
especializados, como mostrado abaixo:
Itens Carros Pickups SUVs

Dados especializados Qtd de portas Tipo trao Qtd de passageiros


Exemplos
Exemplos de relacionamento de Herana

Pessoa Classe Base


Classe Derivada Superclasse
Subclasse nome Tipo
Subtipo dataNasc

Ator Aluno

contrato numMatric
curso

37
Implementao de Herana:C#

Pessoa class Pessoa {


String nome;
nome int dia, ms, ano;
dataNasc // demais membros}

class Ator : Pessoa {


String contrato ;
Ator Aluno // demais membros}

contrato numMatric class Aluno : Pessoa{


curso String num_matric, curso;
// demais membros}
38
Herana de propriedades: Java
Subclasse herda
 Membros pblicos e Subclasse NO herda
protegidos  Membros privativos

 Membros sem atributo de  Construtores

acesso, do mesmo pacote  Mtodos de mesma


assinatura (redefine)
 Variveis de mesmo nome
(esconde)

Importante: Herana simples=nica classe


39
Polimorfismo
 Diferentes tipos de objetos podem responder a uma
mesma mensagem de maneiras diferentes
 Ex: Mtodo Imprime() [ Documento cheque,
fotografia;]
 Dizemos que imprime() um mtodo polimrfico pois
ele implementado diferentemente por diferentes
tipos de objetos;

40
Formas de Polimorfismos
 Redefinio (overriding): mesma funo mas
comportamentos diferentes.
 Sobrecarga(overloading): nome de uma funo
usado mais de uma vez com diferentes tipos de
parmetros.Ex: operao soma com dois parmetros
reais e outra com parmetros inteiros.

41
Redefinio de funo

Capacidade de um objeto responder com


diferentes comportamentos uma mesma solicitao
Exemplo:
Suponha um mtodo que receba um objeto ContaEmBanco e
que neste mtodo seja solicitado a ativao do mtodo Sacar.
O comportamento do objeto vai ser diferente em funo do
objeto real:
1 - ContaEspecial permite que o saldo fique negativo
2 - ContaComum no

O comportamento do objeto ser relativo ao


objeto real a qual feita a referncia 42
Sobrecarga de funo

Atribui a um nico operador a capacidade de agir de


diferentes formas em funo dos parmetros recebidos
Exemplo:

Na classe ContaEmBanco, o mtodo Depositar possui


duas implementaes diferentes:
1 - uma para depsitos em dinheiro
2 - outra para depsitos em cheque

O servio escolhido depende do parmetro


enviado junto ativao do servio
(cheque ou dinheiro) 43
Ligao dinmica
Especializao + Polimorfismo

A determinao do servio chamado somente pode ser


realizada em tempo de execuo.

Exemplo:
Tio Patinhas possui uma ContaEspecial.
Donald possui uma ContaComum.
Ambos possuem ContaEmBanco.

Ambos podem Sacar ou ConsultarSaldo, mas a execuo


do servio no a mesma nos dois tipos de conta. 44
Construtor

Todo objeto criado inicializado


Valores so atribudos aos dados mantidos
pelo objeto durante sua fase de construo

Exemplo:
Classe ContaEmBanco
O mtodo Abrir faz as vezes de um
inicializador dos objetos ContaEmBanco.
Esta inicializao parte integrante da
fase de construo do objeto: uma mesma
conta no ser aberta diversas vezes !!!
45
Construtor

Todo objeto criado inicializado


Valores so atribudos aos dados mantidos
pelo objeto durante sua fase de construo

Exemplo:
Classe ContaEmBanco

ContaEmBanco( _Nome, _prof, )


Encerrar( )
Sacar( valor )
Depositar( valor_cheque )
Depositar( valor_dinheiro )
46
Finalizador

De forma anloga, objeto criado em um


momento finalizado
Por exemplo, a rea de dados alocada para
um dado pode ser liberada

Exemplo:

Classe ContaEmBanco
O mtodo Encerrar faz as vezes de um finalizador
dos objetos ContaEmBanco.
Nesta finalizao, as informaes correspondentes
ao objeto conta so destrudas
47
Correpondncia de Termos

objeto ~ varivel dinmica (pointer)


classe ~ tipo
mensagem ~ chamada de subrotina
mtodo ~ subrotina/funo
herana
polimorfismo

48
Desenvolvimento de Programas OO

 concepo do modelo
 objetos encapsulados
 objetos se comunicando por mensagens
 definio de classes
 objetos com caratersticas idnticas
 contruo da hierarquia de classes
 generalizao ou especializao
 descrio das classes na LOO
 desenvolvimento de aplicaes
programa = classes (declaraes de vars + rotinas)
instanciao (alocao de memria para
ponteiros)
mensagens (chamadas a subrotinas)
49
Sinais de maturidade da tecnologia OO

 aprovada em elevado nmero de aplicaes


 em todos pases industrializados
 em todas reas de aplicao
 utilizada em
 aplicaes tradicionais de sistemas de informao:
bancrio, processamento comercial
 aplicaes de tempo real:
controle de processos, telecomunicaes
 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, especificao e linguagens
50
Adoo da Tecnologia OO

 requer
 treinamento
 escolha de novo mtodo de desenvolvimento
 ferramentas, ambiente de programao
 banco de dados, sistema operacional

 influncia
 gerncia, produo, teste, instalao, venda
 convencer corpo gerencial e tcnico

51
Exerccio

Definir uma estrutura de classes na qual seja possvel


construir diferentes estruturas de lista:
- Pilha -
- Fila -
- Deque -

52
Exerccio

Lista de Pilha de Lista de Relao


notas tarefas processos de TCs

Classe Lista
Inserir
Retirar
Listar
NmeroElementos

53
Exerccio
Classe Lista
Nelemento
Inserir Listar
Retirar NbElementos

Classe Pilha Classe Fila ...


topo, base
prim, ult
Inserir Listar
Retirar Inserir Listar
Retirar

Deque
Inserir
Retirar
54
Exerccio
Classe Lista
Nelemento incio, fim
Inserir Listar
Retirar NbElementos

Classe Pilha Classe Fila ...

Inserir Listar
Retirar Inserir Listar
Retirar

Deque
Inserir
Retirar
55

S-ar putea să vă placă și