Buscar

Orientação a Objetos na Prática

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 75 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 75 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 75 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Orientação a Objetos na Prática
Entenda o contexto da modelagem de software e sistemas, descubra a 
importância e as principais características da orientação a objetos. 
Andre Luiz Monteiro da Costa
andre.monteiro@prof.infnet.edu.br
22
O paradigma da Orientação a Objetos
 Paradigma ==> forma de abordar um problema.
 Surgiu no fim dos anos 60.
 Hoje em dia, praticamente suplantou o paradigma 
anterior, o paradigma estruturado...
33
 Alan Kay, um dos pais do paradigma da orientação a 
objetos, formulou a chamada analogia biológica. 
 “Como seria um sistema de software que funcionasse 
como um ser vivo?
O paradigma da Orientação a Objetos
44
Analogia Biológica
 Cada “célula” interagiria com outras células através 
do envio de mensagens para realizar um objetivo 
comum.
 Adicionalmente, cada célula se comportaria como 
uma unidade autônoma. 
55
 De uma forma mais geral, Kay pensou em como 
construir um sistema de software a partir de agentes 
autônomos que interagem entre si. 
 Com isso, ele estabeleceu os princípios da orientação 
a objetos. 
Analogia Biológica
66
Orientação a Objetos - Princípios
 Tudo é um objeto. 
 Objeto = super variável: armazena dados, mas se 
pode fazer requisições a esse objeto, pedindo que ele 
faça operações sobre si próprio. 
Em teoria, qualquer elemento conceitual do problema 
pode ser representado como um objeto em um 
programa (Ex.: cachorros, livros, sócios, 
empréstimos, etc) . 
77
 Um programa é uma coleção de objetos dizendo uns 
aos outros o que fazer.
 
Para fazer uma requisição a um objeto você “manda 
uma mensagem” para este objeto. 
Mensagem = chamada de um procedimento ou função 
pertencente a um objeto em particular.
Orientação a Objetos - Princípios
88
 Um objeto pode ser composto por vários outros 
objetos
Um novo tipo de objeto pode ser criado a partir de 
objetos existentes. 
Dessa forma, complexidade pode ser adicionada a um 
programa e escondida por trás da simplicidade de 
uso dos objetos.
Orientação a Objetos - Princípios
99
 Todo objeto tem um tipo. 
Objeto = instância de uma classe, onde classe é um 
sinônimo de tipo. 
 A questão mais importante relativa a uma classe é 
“que mensagens eu posso enviar para uma instância 
dessa classe?”
Orientação a Objetos - Princípios
1010
 Todos os objetos do mesmo tipo podem receber as 
mesmas mensagens.
Orientação a Objetos - Princípios
 Na figura abaixo, o objeto “Círculo” 
aceita qualquer mensagem 
endereçada a uma “Forma 
Geométrica”. 
Essa capacidade de “subtituição” de 
um objeto por outro é um dos mais 
poderosos conceitos em orientação a 
objetos. (Herança)
1111
Abstração
 Inclui os aspectos relevantes de alguma 
coisa, ignorando os menos importantes.
1212
Objeto
• Definição:
• Um conceito, com significado específico em um 
contexto
• Propósito:
• Representar uma entidade do mundo real
• Objetos possuem:
• Identidade
• Características que determinam seu estado
• Comportamento específico definido por um 
conjunto de ações
1313
Exemplo
 Beija-Flor
Identidade:: ‘o beija-flor que vem ao meu jardim’
Estado:
penas azuis
bico fino
vôo rápido
Comportamento:
voar
piar
1414
 Pessoa
Identidade:: ‘Mário’
Estado::
olhos pretos
nasceu em 16/02/70
pesa 70kg
 mede 1,70m
Comportamento::
andar
falar
comer
rir
Exemplo
1515
Telefone
Identidade:: número 2576-0989
Estado::
azul
2.4 GHz
tone
Comportamento::
tocar
discar
Exemplo
1616
Representação
Mário
Estado
(características)
Comportamento
Identidade
Serviços, 
Interface ou 
protocolo
Objeto
1717
 Implementação
› Interface Visível
› Parte encapsulada (escondida)
Estado do Objeto 
(valor dos atributos)
Interface da Classe
Objeto
1818
Encapsulamento
 A interface de um objeto é o que ele conhece e o que 
ele sabe fazer, sem descrever como o objeto conhece 
ou faz.
 A interface de um objeto define os serviços que ele 
pode realizar (mensagens que ele recebe).
 Uma interface pode ter várias 
formas de implementação.
1919
Classe
 “fábrica de objetos”.
2020
Classe
› “Fábrica de Objetos”.
 Objetos:
 
› São instâncias de alguma classe.
› De uma classe são idênticos em sua interface e 
implementação.
› Diferem-se de outros por seu estado e sua 
identidade.
2121
• Segundo a OMG:
Classe – Notação Gráfica
2222
Implementação em Java
2323
Implementação em Java
2424
Classes
 
Classe
Instâncias
(objetos)
2525
Implementação em Java
2626
Implementação em Java
2727
Atributos
 Descrevem as características das instâncias de uma classe
 Seus valores definem o estado do objeto
 O estado de um objeto pode mudar ao longo de sua existência
 A identidade de um objeto, contudo, nunca muda
Funcionário_Helena
Nome=Helena Reis
Nasc=28/01/1965
Salário = 4.000
InformarSalário
CalcularIdade
Funcionário_Mário
Nome=Mário Sá
Nasc=16/02/1970
Salário = 3.000
InformarSalário
CalcularIdade
2828
Serviços/Operações
 Representam o comportamento das instâncias de uma classe
 Correspondem às ações das instâncias de uma classe
Funcionário_Helena
Nome=Helena Reis
Nasc=28/01/1965
Salário = 4.000
InformarSalário
CalcularIdade
Funcionário_Mário
Nome=Mário Sá
Nasc=16/02/1970
Salário = 3.000
InformarSalário
CalcularIdade
4000
3000
Informar 
Salário?
2929
Implementação em Java
3030
Serviços/Métodos
 Alguns métodos especiais:
› Construtores – criam objetos de uma classe
› Destrutores – destroem objetos de uma classe
3131
Passos para a criação de um objeto
 Declarar uma referência para o objeto (variável)
Funcionario funcionario;
 Criar uma instância do objeto
funcionario = new Funcionario();
O sistema operacional aloca espaço em memória para o novo 
objeto e preenche os seus atributos com valores default (zero 
para números, null para referências, false para booleanos, 
string vazia para Strings.
3232
 Se houver um método construtor, este é invocado
O método construtor é usado para alterar os valores default dos 
atributos, possibilitando que o objeto se torne disponível para a 
aplicação já em um estado pré-definido
 Modificação explícita do estado do objeto
funcionario.salario = 4000; //se atributo é público
funcionario.gravaSalario(4000); // caso contrário
A referência para o objeto pode ser usada para alterar o estado 
dos atributos do objeto.
Passos para a criação de um objeto
3333
Herança
 Derivar características de gerações precedentes. 
 Termo é associado com uma das formas de 
reutilização de software. 
 Através da herança, novas classes podem ser 
derivadas das classes existentes. 
 A nova classe herda propriedades e métodos da 
classe base. 
 A nova classe também pode adicionar suas 
próprias propriedades e métodos.
3434
 Para que serve a herança?
Considere a criação da ClasseB.
Que métodos estão disponíveis para objetos da 
ClasseB?
Herança
3535
Suponha que a ClasseB herda da ClasseA
Que métodos estão agora disponíveis para objetos da 
ClasseB ?
Herança
3636
 O objeto da classeB tem agora disponíveis os 
métodos da classe ClasseA, sem ter que reescrevê-
los na ClasseB.
 Um objeto da ClasseB também é um objeto da classe 
ClasseA. 
Herança
3737
Herança
 Facilita a manutenção do código: Os métodos não 
são replicados. Se for necessário alterar o código do 
método m3(), basta alterá-lo na ClasseA.
 A ClasseB pode "recusar" parte da herança, 
reimplementando os métodos herdados, 
sobrescrevendo-os.
3838
 
O método m3(), agora disponível para objetos da 
ClasseB, é aquele implementado em ClasseB.
Herança
3939
 Várias subclasses podem herdar da mesma 
superclasse (Herança Simples).
Herança
4040
 Em Java, não é permitido herdar de mais de uma 
classe (Herança Múltipla).
ERRADO!!!!
Herança
4141
Herança
 A hierarquia de herança pode ter vários níveis
 Que métodos estão agora disponíveis para uma 
instância de ClasseC?
4242
 Pode surgir a partir da refatoração de classes 
existentes, de modoa eliminar a duplicação de 
código
Grande quantidade de atributos e métodos duplicados...
Herança
4343
 Refatoração
Superclasse
(características comuns)
Subclasses
(características específicas)
Herança
4444
Composição
 A classe contém referências para objetos de outras 
classes:
› Estas referências são também atributos da classe.
 Maneira alternativa de estender a funcionalidade de 
uma classe, agregando funcionalidades de outras 
classes.
 Herança x Composição
 É UM x TEM UM
4545
 O mecanismo de herança nem sempre é apropriado
 Estender funcionalidade através de herança pode não 
ser "natural":
 
› Uma conta de investimento é uma conta bancária!
› Uma conta de investimento não é uma Pessoa!
Composição
4646
• Se um proprietário tiver mais de um carro, a 
informação ficará redundante.
Composição
4747
• Utilizando uma conexão de ocorrência, o modelo 
poderia ser melhorado da seguinte forma:
Composição
4848
Polimorfismo
 "Programação Genérica".
 Trata objetos na mesma hierarquia de classes como 
se todos fossem objetos da superclasse.
 Tornam o programa extensível:
› Facilidade para adicionar novas classes.
4949
Polimorfismo
 Conceito Chave
Objetos das subclasses podem ser tratados como 
objetos da superclasse
 ::Project2
A
m1(...)
m2(...)
B
m1(...)
m3(...)
A classe B É UMA classe A 
→ Um objeto da classe B 
pode ser usado em qualquer 
lugar onde um objeto da 
classe A é esperado.
B A
5050
 Tabelas Virtuais
A.m2()m2()
A.m1()m1()
método invocadooperação
Classe A
 ::Project2
A
m1(...)
m2(...)
B
m1(...)
m3(...)
B.m3()m3()
A.m2()m2()
B.m1()m1()
método invocadooperação
Classe B
Polimorfismo
5151
 Chamadas polimórficas permitem simplificar a lógica 
condicional dos programas
Imagine um sistema 
construído para 
trabalhar tanto em 
Windows quanto em 
Linux
 ::Unit1 JWindows
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
JLinux
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
JWindows jWin;
JLinux jLin;
Polimorfismo
5252
procedure TForm1.FormCreate(Sender: TObject);
begin
 if SO='Windows' then
 jWin := JWindows.Create
 else
 jLin := JLinux.Create;
end;
procedure TForm1.WMSysCommand(var Message: TMessage);
begin
 if (Message.wParam = SC_MINIMIZE) then
 if SO='Windows' then
 jWin.minimize
 else
 jLin.minimize
 else if (Message.wParam = SC_MAXIMIZE) then
 if SO='Windows' then
 jWin.maximize
 else
 jLin.maximize
 else if (Message.wParam = SC_CLOSE) then
Observe a quantidade 
de lógica 
condicional!
Polimorfismo
5353
 Solução Polimórfica
 ::Unit1
JWindows
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
Janela
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
JLinux
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
var
 jan: Janela;
Polimorfismo
5454
Observe a 
ausência de 
lógica 
condicional
procedure TForm1.FormCreate(Sender: TObject);
begin
 if SO='Windows' then
 jan := JWindows.Create
 else
 jan := JLinux.Create;
end;
procedure TForm1.WMSysCommand(var Message: TMessage);
begin
 if (Message.wParam = SC_MINIMIZE) then
 jan.minimize
 else if (Message.wParam = SC_MAXIMIZE) then
 jan.maximize
 else if (Message.wParam = SC_CLOSE) then
 jan.close
 else if (Message.wParam = SC_MOVE) then
 jan.move
 else
 inherited;
end;
Polimorfismo
5555
 Observe ainda como seria fácil acrescentar uma 
janela MOTIF para o Sun Solaris
 ::Unit1
Janela
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
JWindows
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
JLinux
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
JSolaris
close(...)
maximize(...)
minimize(...)
move(...)
open(...)
Polimorfismo
5656
procedure TForm1.FormCreate(Sender: TObject);
begin
 if SO='Windows' then
 jan := JWindows.Create
 else if SO = 'Linux' then
 jan := JLinux.Create
 else
 jan := JSolaris.Create;
end;
procedure TForm1.WMSysCommand(var Message: 
TMessage);
begin
 if (Message.wParam = SC_MINIMIZE) then
 jan.minimize
 else if (Message.wParam = SC_MAXIMIZE) then
 jan.maximize
 else if (Message.wParam = SC_CLOSE) then
 jan.close
 else if (Message.wParam = SC_MOVE) then
 jan.move
 else
 inherited;
end;
... e nada mudou 
aqui!
Adicionou-se mais 
uma linha aqui...
Polimorfismo
5757
5858
Visão Geral da UML
5959
Diagrama de Casos de Uso
ComportamentoComportamento
6060
Diagrama de Classes
EstruturaEstrutura
6161
Diagrama de Seqüência
ComportamentoComportamento
6262
Diagrama de Colaboração
ComportamentoComportamento
6363
Diagrama de Estados
Estrutura e ComportamentoEstrutura e Comportamento
6464
Diagrama de Atividades
ComportamentoComportamento
6565
Diagrama de Componentes
EstruturaEstrutura
6666
Diagrama de Implantação
EstruturaEstrutura
6767
Diagrama de Máquina de Estado
6868
• Descreve processo de negócio e fluxo de trabalho;
• Suportam comportamento paralo (diferença para 
fluxograma);
• Semelhante Diagrama de Estados;
Diagrama de Atividades
6969
M o s t r a “q u e m ” 
f a z “o q u ê ”
Diagrama de Atividades
7070
• BlueJ – www.bluej.org
• UML – www.uml.org
• Jude – jude.change-vision.com
Links Úteis
7171
O Pioneirismo do Infnet
• O Infnet foi o pioneiro do ensino de Java no Rio de Janeiro, 
ministrando curso desta tecnologia antes mesmo da Sun.
48 h
Java Web Applications
Ensinar questões avançadas do desenvolvimento de aplicações Web com a 
linguagem de programação Java e os frameworks mais usados no mercado.
I554
48 h
Java Programming
Ensinar a programar em Java para alunos que já sabem programar em qualquer outra 
linguagem.
I552
40 h
Projeto de Sistemas e Orientação a Objetos com UML
Ensinar conceitos de orientação a objetos e sua utilização no processo de 
desenvolvimento de software usando UML.
I550
HorasNome do cursoCódigo
Formação Desenvolvedor Java
7272
A Formação Completa do Infnet
32 h
Java Workshop
Colocar em prática o conhecimento avançado de desenvolvimento 
de aplicações Java.
I562
32 h
Java Mobile
Ensinar programação Java para dispositivos móveis, como 
celulares e hand helds.
I560
24 h
Java Security
Ensinar conceitos avançados de segurança em Java para sistemas 
desktop e J2EE.
I558
48 h
Java Enterprise Applications
Ensinar conceitos avançados de programação em Java para 
sistemas com alta demanda de acesso e segurança.
I556
48 h
Java Web Applications
Ensinar questões avançadas do desenvolvimento de aplicações 
Web com a linguagem de programação Java e os frameworks mais 
usados no mercado.
I554
48 h
Java Programming
Ensinar a programar em Java para alunos que já sabem programar 
em qualquer outra linguagem.
I552
40 h
Projeto de Sistemas e Orientação a Objetos com UML
Ensinar conceitos de orientação a objetos e sua utilização no 
processo de desenvolvimento de software usando UML.
I550
HorasNome do cursoCódigo
Formação Desenvolvedor Java: Sistemas Distribuídos
7373
Perguntas
7474
OBRIGADO !
7575
www.infnet.edu.br
cursos@infnet.edu.br
2122-8800
Esta palestra está disponível em:
http://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspx 
Ministrada por
André Luiz Monteiro da Costa
E-mail: 
andre.monteiro@prof.infnet.edu.br
Contatos
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75

Outros materiais