1
Objetivos da Orientao a
Objetos
produo de software mais confivel
proteo aos dados: encapsulamento
2
Programao
Procedimental
dados 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
8
Orientao a Objetos
Representao do mundo real (Descartes)
O prprio paradigma contm regras de
desenvolvimento
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
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
Encerrar Encerrar
100.000,00 1,00
Depositar Depositar
Sacar Sacar
Empresrio Jornalista
ConsultarSaldo ConsultarSaldo
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
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
p2: Personagem
p1: Personagem
nome: Rodrigo;
nome: Ana Terra; idade: 35; p2.lista()
idade: 20; p1.lista() sexo: masculino
sexo: feminino
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}
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
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
Deque
Inserir
Retirar 54
Exerccio 06
Classe Lista
Nelemento incio, fim
Inserir Listar
Retirar NbElementos
Deque
Inserir
Retirar 55