8/7/2019 Orientao objetos Prtica
1/75
Orientao a Objetos na PrticaEntenda o contexto da modelagem de software e sistemas, descubra a
importncia e as principais caractersticas da orientao a objetos.
Andre Luiz Monteiro da Costa
8/7/2019 Orientao objetos Prtica
2/75
22
O paradigma da Orientao a Objetos
Paradigma ==> forma de abordar um problema.
Surgiu no fim dos anos 60.
Hoje em dia, praticamente suplantou o paradigmaanterior, o paradigma estruturado...
8/7/2019 Orientao objetos Prtica
3/75
33
Alan Kay, um dos pais do paradigma da orientao aobjetos, formulou a chamada analogia biolgica.
Como seria um sistema de software que funcionasse
como um ser vivo?
O paradigma da Orientao a Objetos
8/7/2019 Orientao objetos Prtica
4/75
44
Analogia Biolgica
Cada clula interagiria com outras clulas atravsdo envio de mensagens para realizar um objetivocomum.
Adicionalmente, cada clula se comportaria comouma unidade autnoma.
8/7/2019 Orientao objetos Prtica
5/75
55
De uma forma mais geral, Kay pensou em comoconstruir um sistema de software a partir de agentesautnomos que interagem entre si.
Com isso, ele estabeleceu os princpios da orientaoa objetos.
Analogia Biolgica
8/7/2019 Orientao objetos Prtica
6/75
66
Orientao a Objetos - Princpios
Tudo um objeto.
Objeto = super varivel: armazena dados, mas sepode fazer requisies a esse objeto, pedindo que ele
faa operaes sobre si prprio.
Em teoria, qualquer elemento conceitual do problemapode ser representado como um objeto em umprograma (Ex.: cachorros, livros, scios,emprstimos, etc) .
8/7/2019 Orientao objetos Prtica
7/75
77
Um programa uma coleo de objetos dizendo unsaos outros o que fazer.
Para fazer uma requisio a um objeto voc manda
uma mensagem para este objeto.Mensagem = chamada de um procedimento ou funopertencente a um objeto em particular.
Orientao a Objetos - Princpios
8/7/2019 Orientao objetos Prtica
8/75
88
Um objeto pode ser composto por vrios outrosobjetos
Um novo tipo de objeto pode ser criado a partir de
objetos existentes.
Dessa forma, complexidade pode ser adicionada a umprograma e escondida por trs da simplicidade deuso dos objetos.
Orientao a Objetos - Princpios
8/7/2019 Orientao objetos Prtica
9/7599
Todo objeto tem um tipo.
Objeto = instncia de uma classe, onde classe umsinnimo de tipo.
A questo mais importante relativa a uma classe que mensagens eu posso enviar para uma instnciadessa classe?
Orientao a Objetos - Princpios
8/7/2019 Orientao objetos Prtica
10/751010
Todos os objetos do mesmo tipo podem receber asmesmas mensagens.
Orientao a Objetos - Princpios
Na figura abaixo, o objeto Crculoaceita qualquer mensagem
endereada a uma FormaGeomtrica.
Essa capacidade de subtituio de
um objeto por outro um dos maispoderosos conceitos em orientao aobjetos. (Herana)
8/7/2019 Orientao objetos Prtica
11/751111
Abstrao
Inclui os aspectos relevantes de algumacoisa, ignorando os menos importantes.
8/7/2019 Orientao objetos Prtica
12/751212
Objeto
Definio: Um conceito, com significado especfico em um
contexto
Propsito: Representar uma entidade do mundo real
Objetos possuem: Identidade Caractersticas que determinam seu estado Comportamento especfico definido por um
conjunto de aes
8/7/2019 Orientao objetos Prtica
13/751313
Exemplo
Beija-Flor
Identidade::o beija-flor que vem ao meu jardim
Estado:
penas azuis
bico fino
vo rpido
Comportamento:
voar
piar
8/7/2019 Orientao objetos Prtica
14/751414
Pessoa
Identidade:: Mrio
Estado::olhos pretos
nasceu em 16/02/70
pesa 70kg
mede 1,70m
Comportamento::andarfalar
comer
rir
Exemplo
8/7/2019 Orientao objetos Prtica
15/751515
Telefone
Identidade::nmero 2576-0989
Estado::azul
2.4 GHz
tone
Comportamento::tocar
discar
Exemplo
8/7/2019 Orientao objetos Prtica
16/751616
Representao
Mrio
Estado
(caractersticas)
Comportamento
Identidade
Servios,Interface ou
protocolo
Objeto
8/7/2019 Orientao objetos Prtica
17/751717
Implementao
Interface Visvel
Parte encapsulada (escondida)
Estado do Objeto
(valor dos atributos)
Interface da Classe
Objeto
8/7/2019 Orientao objetos Prtica
18/751818
Encapsulamento
A interface de um objeto o que ele conhece e o queele sabe fazer, sem descrevercomo o objeto conheceou faz.
A interface de um objeto define os servios que elepode realizar (mensagens que ele recebe).
Uma interface pode ter vrias
formas de implementao.
8/7/2019 Orientao objetos Prtica
19/751919
Classe
fbrica de objetos.
8/7/2019 Orientao objetos Prtica
20/752020
Classe
Fbrica de Objetos.
Objetos:
So instncias de alguma classe.
De uma classe so idnticos em sua interface eimplementao.
Diferem-se de outros por seu estado e suaidentidade.
8/7/2019 Orientao objetos Prtica
21/752121
Segundo a OMG:
Classe Notao Grfica
8/7/2019 Orientao objetos Prtica
22/752222
Implementao em Java
8/7/2019 Orientao objetos Prtica
23/752323
Implementao em Java
8/7/2019 Orientao objetos Prtica
24/752424
Classes
Classe
Instncias
(objetos)
8/7/2019 Orientao objetos Prtica
25/752525
Implementao em Java
8/7/2019 Orientao objetos Prtica
26/752626
Implementao em Java
8/7/2019 Orientao objetos Prtica
27/752727
Atributos
Descrevem as caractersticas das instncias de uma classe Seus valores definem o estado do objeto O estado de um objeto pode mudar ao longo de sua existncia A identidade de um objeto, contudo, nunca muda
Funcionrio_Helena
Nome=Helena Reis
Nasc=28/01/1965
Salrio = 4.000
InformarSalrio
CalcularIdade
Funcionrio_Mrio
Nome=Mrio S
Nasc=16/02/1970
Salrio = 3.000
InformarSalrio
CalcularIdade
8/7/2019 Orientao objetos Prtica
28/75
2828
Servios/Operaes
Representam o comportamento das instncias de uma classe Correspondem s aes das instncias de uma classe
Funcionrio_Helena
Nome=Helena Reis
Nasc=28/01/1965
Salrio = 4.000
InformarSalrio
CalcularIdade
Funcionrio_Mrio
Nome=Mrio S
Nasc=16/02/1970Salrio = 3.000
InformarSalrio
CalcularIdade
4000
3000
Informar
Salrio?
8/7/2019 Orientao objetos Prtica
29/75
2929
Implementao em Java
8/7/2019 Orientao objetos Prtica
30/75
3030
Servios/Mtodos
Alguns mtodos especiais:
Construtores criam objetos de uma classe
Destrutores destroem objetos de uma classe
8/7/2019 Orientao objetos Prtica
31/75
3131
Passos para a criao de um objeto
Declarar uma referncia para o objeto (varivel)
Funcionario funcionario;
Criar uma instncia do objeto
funcionario = new Funcionario();
O sistema operacional aloca espao em memria para o novoobjeto e preenche os seus atributos com valores default (zeropara nmeros, null para referncias, false para booleanos,string vazia para Strings.
8/7/2019 Orientao objetos Prtica
32/75
3232
Se houver um mtodo construtor, este invocado
O mtodo construtor usado para alterar os valores default dosatributos, possibilitando que o objeto se torne disponvel para aaplicao j em um estado pr-definido
Modificao explcita do estado do objetofuncionario.salario = 4000; //se atributo pblico
funcionario.gravaSalario(4000); // caso contrrio
A referncia para o objeto pode ser usada para alterar o estadodos atributos do objeto.
Passos para a criao de um objeto
8/7/2019 Orientao objetos Prtica
33/75
3333
Herana
Derivar caractersticas de geraes precedentes.
Termo associado com uma das formas dereutilizao de software.
Atravs da herana, novas classes podem serderivadas das classes existentes.
A nova classe herda propriedades e mtodos daclasse base. A nova classe tambm pode adicionar suas
prprias propriedades e mtodos.
8/7/2019 Orientao objetos Prtica
34/75
3434
Para que serve a herana?
Considere a criao da ClasseB.
Que mtodos esto disponveis para objetos da
ClasseB?
Herana
8/7/2019 Orientao objetos Prtica
35/75
3535
Suponha que a ClasseB herda da ClasseA
Que mtodos esto agora disponveis para objetos daClasseB ?
Herana
8/7/2019 Orientao objetos Prtica
36/75
8/7/2019 Orientao objetos Prtica
37/75
3737
Herana
Facilita a manuteno do cdigo: Os mtodos noso replicados. Se for necessrio alterar o cdigo domtodo m3(), basta alter-lo na ClasseA.
A ClasseB pode "recusar" parte da herana,reimplementando os mtodos herdados,sobrescrevendo-os.
8/7/2019 Orientao objetos Prtica
38/75
3838
O mtodo m3(), agora disponvel para objetos daClasseB, aquele implementado em ClasseB.
Herana
8/7/2019 Orientao objetos Prtica
39/75
3939
Vrias subclasses podem herdar da mesmasuperclasse (Herana Simples).
Herana
8/7/2019 Orientao objetos Prtica
40/75
4040
Em Java, no permitido herdar de mais de umaclasse (Herana Mltipla).
ERRADO!!!!
Herana
8/7/2019 Orientao objetos Prtica
41/75
4141
Herana
A hierarquia de herana pode ter vrios nveis
Que mtodos esto agora disponveis para uma
instncia de ClasseC?
8/7/2019 Orientao objetos Prtica
42/75
4242
Pode surgir a partir da refatorao de classesexistentes, de modo a eliminar a duplicao decdigo
Grande quantidade de atributos e mtodos duplicados...
Herana
8/7/2019 Orientao objetos Prtica
43/75
4343
Refatorao
Superclasse
(caractersticas comuns)
Subclasses(caractersticas especficas)
Herana
8/7/2019 Orientao objetos Prtica
44/75
4444
Composio
A classe contm referncias para objetos de outrasclasses: Estas referncias so tambm atributos da classe.
Maneira alternativa de estender a funcionalidade deuma classe, agregando funcionalidades de outrasclasses.
Herana x Composio UM xTEM UM
8/7/2019 Orientao objetos Prtica
45/75
4545
O mecanismo de herana nem sempre apropriado
Estender funcionalidade atravs de herana pode noser "natural":
Uma conta de investimento uma conta bancria!
Uma conta de investimento no uma Pessoa!
Composio
8/7/2019 Orientao objetos Prtica
46/75
4646
Se um proprietrio tiver mais de um carro, ainformao ficar redundante.
Composio
C
8/7/2019 Orientao objetos Prtica
47/75
4747
Utilizando uma conexo de ocorrncia, o modelopoderia ser melhorado da seguinte forma:
Composio
8/7/2019 Orientao objetos Prtica
48/75
P li fi
8/7/2019 Orientao objetos Prtica
49/75
4949
Polimorfismo
Conceito ChaveObjetos das subclasses podem ser tratados comoobjetos da superclasse
::Project2
A
m1(...)
m2(...)
B
m1(...)
m3(...)
A classe B UMA classe A
Um objeto da classe Bpode ser usado em qualquerlugar onde um objeto daclasse A esperado.
B A
P li fi
8/7/2019 Orientao objetos Prtica
50/75
5050
Tabelas Virtuais
A.m2()m2()
A.m1()m1()
mtodo invocadooperao
Classe A::Project2
A
m1(...)
m2(...)
B
m1(...)m3(...)
B.m3()m3()
A.m2()m2()
B.m1()m1()
mtodo invocadooperao
Classe B
Polimorfismo
P li fi
8/7/2019 Orientao objetos Prtica
51/75
5151
Chamadas polimrficas permitem simplificar a lgicacondicional dos programas
Imagine um sistemaconstrudo paratrabalhar tanto emWindows quanto emLinux
::Unit1 JWindows
close(...)
maximize(...)
minimize(...)move(...)
open(...)
JLinux
close(...)
maximize(...)
minimize(...)move(...)
open(...)
JWindows jWin;JLinux jLin;
Polimorfismo
P li fi
8/7/2019 Orientao objetos Prtica
52/75
5252
procedure TForm1.FormCreate(Sender: TObject);begin
if SO='Windows' thenjWin := JWindows.Create
elsejLin := JLinux.Create;
end;procedure TForm1.WMSysCommand(var Message: TMessage);begin
if (Message.wParam = SC_MINIMIZE) thenif SO='Windows' then
jWin.minimizeelse
jLin.minimizeelse if (Message.wParam = SC_MAXIMIZE) thenif SO='Windows' then
jWin.maximizeelse
jLin.maximizeelse if (Message.wParam = SC_CLOSE) then
Observe a quantidadede lgicacondicional!
Polimorfismo
P li fi
8/7/2019 Orientao objetos Prtica
53/75
5353
Soluo Polimrfica::Unit1
JWindows
close(...)maximize(...)
minimize(...)
move(...)open(...)
Janela
close(...)
maximize(...)minimize(...)move(...)
open(...)
JLinux
close(...)maximize(...)
minimize(...)
move(...)open(...)
varjan: Janela;
Polimorfismo
P li fi
8/7/2019 Orientao objetos Prtica
54/75
5454
Observe aausncia delgicacondicional
procedure TForm1.FormCreate(Sender: TObject);begin
if SO='Windows' thenjan := JWindows.Create
elsejan := JLinux.Create;
end;procedure TForm1.WMSysCommand(var Message: TMessage);begin
if (Message.wParam = SC_MINIMIZE) thenjan.minimize
else if (Message.wParam = SC_MAXIMIZE) thenjan.maximize
else if (Message.wParam = SC_CLOSE) thenjan.closeelse if (Message.wParam = SC_MOVE) then
jan.moveelse
inherited;end;
Polimorfismo
P li fi
8/7/2019 Orientao objetos Prtica
55/75
5555
Observe ainda como seria fcil acrescentar umajanela 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
P li fi
8/7/2019 Orientao objetos Prtica
56/75
5656
procedure TForm1.FormCreate(Sender: TObject);begin
if SO='Windows' thenjan := JWindows.Create
else if SO = 'Linux' thenjan := JLinux.Create
elsejan := JSolaris.Create;
end;procedure TForm1.WMSysCommand(var Message:TMessage);begin
if (Message.wParam = SC_MINIMIZE) thenjan.minimize
else if (Message.wParam = SC_MAXIMIZE) thenjan.maximizeelse if (Message.wParam = SC_CLOSE) thenjan.close
else if (Message.wParam = SC_MOVE) thenjan.move
elseinherited;
end;
... e nada mudouaqui!
Adicionou-se maisuma linha aqui...
Polimorfismo
8/7/2019 Orientao objetos Prtica
57/75
5757
8/7/2019 Orientao objetos Prtica
58/75
5858
Viso Geral da UML
8/7/2019 Orientao objetos Prtica
59/75
5959
Diagrama de Casos de Uso
ComportamentoComportamento
8/7/2019 Orientao objetos Prtica
60/75
8/7/2019 Orientao objetos Prtica
61/75
8/7/2019 Orientao objetos Prtica
62/75
6262
Diagrama de Colaborao
ComportamentoComportamento
8/7/2019 Orientao objetos Prtica
63/75
6363
Diagrama de Estados
Estrutura e ComportamentoEstrutura e Comportamento
8/7/2019 Orientao objetos Prtica
64/75
6464
Diagrama de Atividades
ComportamentoComportamento
8/7/2019 Orientao objetos Prtica
65/75
6565
Diagrama de Componentes
EstruturaEstrutura
8/7/2019 Orientao objetos Prtica
66/75
Diagrama de Mquina de Estado
8/7/2019 Orientao objetos Prtica
67/75
6767
Diagrama de Mquina de Estado
Diagrama de Atividades
8/7/2019 Orientao objetos Prtica
68/75
6868
Descreve processo de negcio e fluxo de trabalho;
Suportam comportamentoparalo (diferena parafluxograma);
Semelhante Diagrama de Estados;
Diagrama de Atividades
8/7/2019 Orientao objetos Prtica
69/75
8/7/2019 Orientao objetos Prtica
70/75
O Pioneirismo do Infnet
8/7/2019 Orientao objetos Prtica
71/75
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 questes avanadas do desenvolvimento de aplicaes Web com alinguagem de programao 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 outralinguagem.
I552
40 h
Projeto de Sistemas e Orientao a Objetos com UML
Ensinar conceitos de orientao a objetos e sua utilizao no processo dedesenvolvimento de software usando UML.
I550
HorasNome do cursoCdigo
Formao Desenvolvedor Java
A Formao Completa do Infnet
http://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_programming.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/projeto_de_sistemas_e_orientacao_a_objetos_com_uml.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/projeto_de_sistemas_e_orientacao_a_objetos_com_uml.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_programming.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_programming.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspx8/7/2019 Orientao objetos Prtica
72/75
7272
A Formao Completa do Infnet
32 hJava WorkshopColocar em prtica o conhecimento avanado de desenvolvimentode aplicaes Java.
I562
32 hJava MobileEnsinar programao Java para dispositivos mveis, comocelulares e hand helds.
I560
24 hJava SecurityEnsinar conceitos avanados de segurana em Java para sistemasdesktop e J2EE.
I558
48 hJava Enterprise ApplicationsEnsinar conceitos avanados de programao em Java parasistemas com alta demanda de acesso e segurana.
I556
48 h
Java Web Applications
Ensinar questes avanadas do desenvolvimento de aplicaesWeb com a linguagem de programao Java e os frameworks maisusados no mercado.
I554
48 hJava ProgrammingEnsinar a programar em Java para alunos que j sabem programarem qualquer outra linguagem.
I552
40 hProjeto de Sistemas e Orientao a Objetos com UMLEnsinar conceitos de orientao a objetos e sua utilizao noprocesso de desenvolvimento de software usando UML.
I550
HorasNome do cursoCdigo
Formao Desenvolvedor Java: Sistemas Distribudos
Perguntas
http://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_workshop.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_mobile.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_security.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_enterprise_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_programming.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/projeto_de_sistemas_e_orientacao_a_objetos_com_uml.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/projeto_de_sistemas_e_orientacao_a_objetos_com_uml.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_programming.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_programming.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_web_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_enterprise_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_enterprise_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_enterprise_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_enterprise_applications.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_security.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_security.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_mobile.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_mobile.aspxhttp://www.infnet.edu.br/escolasuperiordatecnologiadainformacao/cursos/java_workshop.aspx8/7/2019 Orientao objetos Prtica
73/75
7373
Perguntas
8/7/2019 Orientao objetos Prtica
74/75
7474
OBRIGADO !
Contatos
8/7/2019 Orientao objetos Prtica
75/75
www.infnet.edu.br
2122-8800
Esta palestra est disponvel em:
http://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspx
Ministrada por
Andr Luiz Monteiro da Costa
E-mail:
Contatos
http://www.infnet.edu.br/http://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspxhttp://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspxhttp://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspxhttp://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspxhttp://www.infnet.edu.br/