Você está na página 1de 55

Tcnica de Orientao a Objetos

Apresentao: Prof. Carlos Alberto


Data:10/02/2014
E-mail:carlosalbarto.silva@etec.sp.gov.br

1
Objetivos da Orientao a
Objetos

produo de software mais confivel
proteo aos dados: encapsulamento

aumento da produtividade de software


reutilizao de cdigo: classes
extenso da biblioteca de classes:
definio de subclasses (herana)
implementao de novos mtodos
redefinio de mtodos (polimorfismo)

2
Programao
Procedimental

dados dados

Proc1 Proc2 Proc3


dados

3
Programao
Orientada a Objetos
dados
dados

dados

4
Introduo

Caractersticas de uma LOO:
Tipos de dados Abstratos;
Herana; e
Um tipo especial de vinculao dinmica.
Programao Orientada por Procedimentos
Concentra-se em subprogramas e bibliotecas de
subprogramas
Dados enviados a subprogramas p/computao;
Ex: Classificao de um array de valores inteiros.

5
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. 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
de propriedades e
Especifica um conjunto
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)

16
Mtodos (Protocolo de acesso)
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)
Cada objeto, quando Personagem
instanciado, ocupa
espao de memria nome: String;
para seus dados nome idade sexo idade: Int;
sexo: String
Cada objeto possui
uma identidade void lista()
(nome)
Cada objeto possui um
tipo
Cada objeto possui p1: Personagem
suas variveis e seus
valores (estado)
Vrios objetos podem nome: Ana Terra;
idade: 20; objeto
ser criados a partir de sexo: feminino UML
uma mesma classe 19
LOO: classes e
mtodos
Um mtodo uma abstrao
procedimental: operaes que Personagem
atuam sobre dados/argumentos
Mtodos (cdigo) so nome: String;
idade: Int;
compartilhados entre todos os sexo: String
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; 20
sexo: masculino
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

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;
Heranas Protect(acesso a classes
derivadas);

24
Classes:
especializao/generalizao
Classes podem ser
ESTUDANTE
ESTUDANTE
usadas para gerar
outras classes mais
GENERALIZAO
especializadas
Especializao: adio e
redefinio de
propriedades

Graduao
Graduao Psgraduao
Psgraduao
ESPECIALIZAO

HIERAQUIADECLASSES 25
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.

26
Herana(Cont)
que possuem propriedades
Herana: identificar classes
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

27
Exemplos de relacionamento
de Herana

Pessoa Classe Base
Classe Derivada Superclasse
Subclasse nome Tipo
Subtipo dataNasc

Ator Aluno

contrato numMatric
curso
28
Implementao de
Herana:Java
Pessoa class Pessoa {
String nome;
nome int dia, ms, ano;
dataNasc // demais membros}

class Ator extends Pessoa {


String contrato ;
Ator Aluno // demais membros}

contrato numMatric class Aluno extends Pessoa{


curso String num_matric, curso;
// demais membros} 29
Herana de propriedades:
Java
Subclasse herda
Subclasse NO herda
Membros pblicos e Membros privativos
protegidos Construtores
Membros sem atributo Mtodos de mesma
de acesso, do mesmo assinatura (redefine)
pacote Variveis de mesmo
nome (esconde)

Importante: Herana simples=nica classe


30
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;

31
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.

32
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


33
objeto real a qual feita a referncia
Sobrecarga de funo
a capacidade de agir de
Atribui a um nico operador
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
34
(cheque ou dinheiro)
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


35
do servio no a mesma nos dois tipos de conta.
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 !!! 36
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 ) 37
Finalizador
em um
De forma anloga, objeto criado
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 38
Exemplo de
Polimorfismo

Por exemplo se voc tem uma class Animal
sabe que todo animal come, sendo que Ces
por exemplo comem rao, Gatos peixes ou
rao e Tigres carne. Voc pode chamar o
mtodo comer nessas 3 classes mesmo
sabendo que elas se comportam de maneira
diferente.
polimorfismo a capacidade de uma
referencia de um tipo generico referenciar um
objeto de um tipo mais especifico.
39
Exemplo de
Polimorfismo

40
Exemplo de
Polimorfismo

41
Exemplo de
Polimorfismo

42
Exemplo de
Polimorfismo

43
Correpondncia de Termos


objeto ~ varivel dinmica (pointer)
classe ~ tipo
mensagem ~ chamada de subrotina
mtodo ~ subrotina/funo
herana
polimorfismo

44
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 asubrotinas)
45
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 46
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

47
Exerccio 01

Implemente o diagrama de classe abaixo

48
Exerccio 02

Coloque os cdigos abaixo no eclipse ou
netbeans e execute a classe main.
Por que o texto classe transporte: Mtodo
para exibio dos dados., no foi impresso?
Faa a engenharia reversa do cdigo gerado
abaixo e gere o diagrama de classe.

49
Exerccio 02 (cont)

50
Exerccio 02 (cont)

51
Exerccio 03

Definir
Definiruma
umaestrutura
estruturade
declasses
classesna
naqual
qualseja
sejapossvel
possvel
construir
construirdiferentes
diferentesestruturas
estruturasde
delista:
lista:
--Pilha
Pilha--
--Fila
Fila--
--Deque
Deque--

52
Exerccio 04
Lista de

Pilha de Lista de Relao
notas tarefas processos de TCs

Classe Lista
Inserir
Retirar
Listar
NmeroElementos

53
Exerccio 05

Classe Lista
Nelemento
Inserir Listar
Retirar NbElementos

Classe Pilha Classe Fila ...


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

Deque
Inserir
Retirar 54
Exerccio 06

Classe Lista
Nelemento incio, fim
Inserir Listar
Retirar NbElementos

Classe Pilha Classe Fila ...

Inserir Listar Inserir Listar


Retirar
Retirar

Deque
Inserir
Retirar 55