Você está na página 1de 75

Orientao a Objetos na Prtica

Entenda o contexto da modelagem de software e sistemas, descubra a importncia e as principais caractersticas da orientao a objetos.

Andre Luiz Monteiro da Costa andre.monteiro@prof.infnet.edu.br

O paradigma da Orientao 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...

O paradigma da Orientao a Objetos

Alan Kay, um dos pais do paradigma da orientao a objetos, formulou a chamada analogia biolgica. Como seria um sistema de software que funcionasse como um ser vivo?

Analogia Biolgica

Cada clula interagiria com outras clulas atravs do envio de mensagens para realizar um objetivo comum. Adicionalmente, cada clula se comportaria como uma unidade autnoma.

Analogia Biolgica

De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentes autnomos que interagem entre si. Com isso, ele estabeleceu os princpios da orientao a objetos.

Orientao a Objetos - Princpios

Tudo um objeto. Objeto = super varivel: armazena dados, mas se pode fazer requisies a esse objeto, pedindo que ele faa operaes sobre si prprio. Em teoria, qualquer elemento conceitual do problema pode ser representado como um objeto em um programa (Ex.: cachorros, livros, scios, emprstimos, etc) .

Orientao a Objetos - Princpios

Um programa uma coleo de objetos dizendo uns aos outros o que fazer. Para fazer uma requisio a um objeto voc manda uma mensagem para este objeto. Mensagem = chamada de um procedimento ou funo pertencente a um objeto em particular.

Orientao a Objetos - Princpios

Um objeto pode ser composto por vrios 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 trs da simplicidade de uso dos objetos.

Orientao a Objetos - Princpios

Todo objeto tem um tipo. Objeto = instncia de uma classe, onde classe um sinnimo de tipo. A questo mais importante relativa a uma classe que mensagens eu posso enviar para uma instncia dessa classe?

Orientao a Objetos - Princpios

Todos os objetos do mesmo tipo podem receber as mesmas mensagens. Na figura abaixo, o objeto Crculo aceita qualquer mensagem endereada a uma Forma Geomtrica. Essa capacidade de subtituio de um objeto por outro um dos mais poderosos conceitos em orientao a objetos. (Herana)

10

Abstrao

Inclui os aspectos relevantes de alguma coisa, ignorando os menos importantes.

11

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
12

Exemplo
Beija-Flor Identidade:: o beija-flor que vem ao meu jardim Estado:
penas azuis bico fino vo rpido

Comportamento:
voar piar

13

Exemplo

Pessoa Identidade:: Mrio Estado::


olhos pretos nasceu em 16/02/70 pesa 70kg mede 1,70m

Comportamento::
andar falar comer rir
14

Exemplo
Telefone Identidade:: nmero 2576-0989 Estado::
azul 2.4 GHz tone

Comportamento::
tocar discar

15

Objeto
Representao

Estado (caractersticas)

Identidade

Comportamento

Servios, Interface ou protocolo Mrio

16

Objeto

Implementao Interface Visvel Parte encapsulada (escondida)

Estado do Objeto (valor dos atributos)

Interface da Classe

17

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 servios que ele pode realizar (mensagens que ele recebe). Uma interface pode ter vrias formas de implementao.

18

Classe

fbrica de objetos.

19

Classe
Fbrica de Objetos.

Objetos: So instncias de alguma classe. De uma classe so idnticos em sua interface e implementao. Diferem-se de outros por seu estado e sua identidade.

20

Classe Notao Grfica


Segundo a OMG:

21

Implementao em Java

22

Implementao em Java

23

Classes

Classe

Instncias (objetos)

24

Implementao em Java

25

Implementao em Java

26

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

27

Servios/Operaes

Representam o comportamento das instncias de uma classe Correspondem s aes das instncias de uma classe

4000

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

3000 Informar Salrio?

28

Implementao em Java

29

Servios/Mtodos

Alguns mtodos especiais: Construtores criam objetos de uma classe Destrutores destroem objetos de uma classe

30

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 novo objeto e preenche os seus atributos com valores default (zero para nmeros, null para referncias, false para booleanos, string vazia para Strings.

31

Passos para a criao de um objeto


Se houver um mtodo construtor, este invocado
O mtodo construtor usado para alterar os valores default dos atributos, possibilitando que o objeto se torne disponvel para a aplicao j em um estado pr-definido

Modificao explcita do estado do objeto


funcionario.salario = 4000; //se atributo pblico funcionario.gravaSalario(4000); // caso contrrio A referncia para o objeto pode ser usada para alterar o estado dos atributos do objeto.

32

Herana

Derivar caractersticas de geraes precedentes.

Termo associado com uma das formas de reutilizao de software.

Atravs da herana, novas classes podem ser derivadas das classes existentes.

A nova classe herda propriedades e mtodos da classe base. A nova classe tambm pode adicionar suas prprias propriedades e mtodos.
33

Herana

Para que serve a herana? Considere a criao da ClasseB.

Que mtodos esto disponveis para objetos da ClasseB?

34

Herana
Suponha que a ClasseB herda da ClasseA

Que mtodos esto agora disponveis para objetos da ClasseB ?

35

Herana

O objeto da classeB tem agora disponveis os mtodos da classe ClasseA, sem ter que reescrevlos na ClasseB. Um objeto da ClasseB tambm um objeto da classe ClasseA.

36

Herana

Facilita a manuteno do cdigo: Os mtodos no so replicados. Se for necessrio alterar o cdigo do mtodo m3(), basta alter-lo na ClasseA. A ClasseB pode "recusar" parte da herana, reimplementando os mtodos herdados, sobrescrevendo-os.

37

Herana

O mtodo m3(), agora disponvel para objetos da ClasseB, aquele implementado em ClasseB.

38

Herana

Vrias subclasses podem herdar da mesma superclasse (Herana Simples).

39

Herana

Em Java, no permitido herdar de mais de uma classe (Herana Mltipla).

ERRADO!!!!
40

Herana

A hierarquia de herana pode ter vrios nveis

Que mtodos esto agora disponveis para uma instncia de ClasseC?


41

Herana

Pode surgir a partir da refatorao de classes existentes, de modo a eliminar a duplicao de cdigo

Grande quantidade de atributos e mtodos duplicados...


42

Herana

Refatorao

Superclasse (caractersticas comuns)

Subclasses (caractersticas especficas)

43

Composio

A classe contm referncias para objetos de outras classes: Estas referncias so tambm atributos da classe. Maneira alternativa de estender a funcionalidade de uma classe, agregando funcionalidades de outras classes. Herana UM x Composio x TEM UM

44

Composio

O mecanismo de herana nem sempre apropriado Estender funcionalidade atravs de herana pode no ser "natural": Uma conta de investimento uma conta bancria! Uma conta de investimento no uma Pessoa!

45

Composio

Se um proprietrio tiver mais de um carro, a informao ficar redundante.

46

Composio
Utilizando uma conexo de ocorrncia, o modelo poderia ser melhorado da seguinte forma:

47

Polimorfismo

"Programao Genrica". Trata objetos na mesma hierarquia de classes como se todos fossem objetos da superclasse. Tornam o programa extensvel: Facilidade para adicionar novas classes.

48

Polimorfismo

Conceito Chave Objetos das subclasses podem ser tratados como objetos da superclasse
::Project2
A m1(...) m2(...)

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 m1(...) m3(...)

49

Polimorfismo

Tabelas Virtuais
Classe A
::Project2
A m1(...) m2(...)

operao m1() m2()

mtodo invocado A.m1() A.m2()

Classe B operao m1() m2() m3() mtodo invocado B.m1() A.m2() B.m3()
m1(...) m3(...)

50

Polimorfismo

Chamadas polimrficas permitem simplificar a lgica condicional dos programas

Imagine um sistema construdo para trabalhar tanto em Windows quanto em Linux

::Unit1

JWindows

JLinux close(...) maximize(...) minimize(...) move(...) open(...)

close(...) maximize(...) minimize(...) move(...) open(...)

JWindows jWin; JLinux jLin;

51

Polimorfismo
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 lgica condicional!

52

Polimorfismo

Soluo Polimrfica
::Unit1
Janela close(...) maximize(...) minimize(...) move(...) open(...)

var jan: Janela;

JLinux close(...) maximize(...) minimize(...) move(...) open(...)

JWindows close(...) maximize(...) minimize(...) move(...) open(...)

53

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

Observe a ausncia de lgica condicional

54

Polimorfismo

Observe ainda como seria fcil acrescentar uma janela MOTIF para o Sun Solaris
Janela close(...) maximize(...) minimize(...) move(...) open(...)

::Unit1

JLinux close(...) maximize(...) minimize(...) move(...) open(...)

JSolaris close(...) maximize(...) minimize(...) move(...) open(...)

JWindows close(...) maximize(...) minimize(...) move(...) open(...)

55

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

Adicionou-se mais uma linha aqui...

... e nada mudou aqui!

56

57

Viso Geral da UML

58

Diagrama de Casos de Uso

Comportamento
59

Diagrama de Classes

Estrutura
60

Diagrama de Seqncia

Comportamento
61

Diagrama de Colaborao

Comportamento
62

Diagrama de Estados

Estrutura e Comportamento
63

Diagrama de Atividades

Comportamento
64

Diagrama de Componentes

Estrutura
65

Diagrama de Implantao

Estrutura
66

Diagrama de Mquina de Estado

67

Diagrama de Atividades
Descreve processo de negcio e fluxo de trabalho; Suportam comportamento paralo (diferena para fluxograma); Semelhante Diagrama de Estados;

68

Diagrama de Atividades

M o s t r a q u e m f a z o q u

69

Links teis BlueJ www.bluej.org UML www.uml.org Jude jude.change-vision.com

70

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. Formao Desenvolvedor Java
Cdigo Nome do curso Projeto de Sistemas e Orientao a Objetos com UML I550 Ensinar conceitos de orientao a objetos e sua utilizao no processo de desenvolvimento de software usando UML. 40 h Horas

Java Programming I552 Ensinar a programar em Java para alunos que j sabem programar em qualquer outra linguagem. 48 h

Java Web Applications I554 Ensinar questes avanadas do desenvolvimento de aplicaes Web com a linguagem de programao Java e os frameworks mais usados no mercado. 48 h

71

A Formao Completa do Infnet


Formao Desenvolvedor Java: Sistemas Distribudos
Cdigo I550 Nome do curso Projeto de Sistemas e Orientao a Objetos com UML Ensinar conceitos de orientao a objetos e sua utilizao no processo de desenvolvimento de software usando UML. Java Programming Ensinar a programar em Java para alunos que j sabem programar em qualquer outra linguagem. Java Web Applications Ensinar questes avanadas do desenvolvimento de aplicaes Web com a linguagem de programao Java e os frameworks mais usados no mercado. Java Enterprise Applications Ensinar conceitos avanados de programao em Java para sistemas com alta demanda de acesso e segurana. Java Security Ensinar conceitos avanados de segurana em Java para sistemas desktop e J2EE. Java Mobile Ensinar programao Java para dispositivos mveis, como celulares e hand helds. Java Workshop Colocar em prtica o conhecimento avanado de desenvolvimento de aplicaes Java. Horas 40 h

I552

48 h

I554

48 h

I556

48 h

I558

24 h

I560

32 h

I562

32 h

72

Perguntas

73

OBRIGADO !

74

Contatos
www.infnet.edu.br cursos@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: andre.monteiro@prof.infnet.edu.br

75

Você também pode gostar