ANALISE DE PROGRAMAÇÃO

79
 1 Programação Orientada a Objetos Definição Conceitos e Terminologias  Jav a Standard Edition

Transcript of ANALISE DE PROGRAMAÇÃO

Page 1: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 1/79

 

1

ProgramaçãoOrientada a

ObjetosDefinição

Conceitos e Terminologias

 Java Standard Edition

Page 2: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 2/79

 

2

Motivação

Conforme visto, Java é uma linguagem OO Para desenvolver aplicações de qualidade em

 Java é preciso aprender a aplicar princípiosde OO ao programar 

É (quase) possível escrever programas em Java sem saber OO, mas Dificilmente você será capaz de ir além de

 programinhas simples com mais de uma classe Será muito difícil entender outros códigos Seu código será difícil de entender, manter e

reutilizar  Você estará perdendo ao utilizar uma linguagem

como Java (poderá usar outra mais simples para

Page 3: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 3/79

 

3

Definição de POO

Segundo Robert Sebesta: “A essência da programação orientada a

objetos é resolver problemas identificandoos objetos do mundo real do problema e o

seu processamento necessário, criando,então, simulação dos mesmos, seus processos e as comunicações necessáriasentre eles...” 

Segundo Grady Booch: “Programação orientada a objetos é ummétodo de implementação no qual

 programas são organizados como

coleções cooperativas de objetos, cadaum representando uma instância de

Page 4: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 4/79

 

4

 Aspectos importantes da POO

Usa objetos, e não procedimentoscomo bloco lógico fundamental para aconstrução de programas

Cada objeto é uma instância de umaclasse

Objetos comunicam-se através demensagens

Classes são relacionadas com as outrasvia mecanismos de herança, formandouma hierarquia de classes

Exemplos de linguagens OO:

Page 5: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 5/79

 

5

Conceitos e terminologia

 Abstração Objetos Encapsulamento/Ocultação de

informação Estado e comportamento Classes Herança Polimorfismo

Page 6: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 6/79

 

6

 Abstração

Page 7: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 7/797

 Abstração

Conceito de abstração: “Processo mental que consiste em

escolher ou isolar um aspectodeterminado de um estado de coisas

relativamente complexo, a fim desimplificar a sua avaliação, classificaçãoou para permitir a comunicação do mesmo[Dicionário Houassis]” 

“Uma abstração denota as característicasessenciais de um objeto que o distinguemde outros tipos de objetos e assim provê

uma fronteira conceitual firmementedefinida, de acordo com a perspectiva do 

Page 8: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 8/798

Objetos

No mundo real.... Para um ser humano, um objeto é...

 Algo tangível e/ou visível Algo que possa ser compreendido

intelectualmente Algo para o qual um pensamento ou ação possa ser direcionado

Um objeto modela alguma parte darealidade e é algo que existe no tempoe no espaço

 

Page 9: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 9/799

Objetos

Para um programador... Um objeto representa uma entidade,

unidade ou item identificável, individual,real ou abstrato, com um papel bem

definido no domínio do problema no qualse quer resolver/solucionar [Booch]

Os objetos podem ser físicos...

Bicicleta, máquina de escrever, pessoa,sensor, ...

Ou não... Reação química, número complexo,

venda... 

Page 10: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 10/7910

Objetos

Nem tudo é um objeto Tempo, métricas, sensações e sentimentos

humanos não são, em geral, modeladoscomo objetos

Estes, normalmente, são tratados como propriedades dos objetos

Descobrir quais entidades fazem parte

do domínio do problema e identificar suas propriedades e comportamentos étarefa do programador e, sobretudo, devocês! (analistas de sistemas)

Isso vem com a ex eriência... 

Page 11: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 11/7911

Exemplos de objetos - propriedades

Objeto: ônibus Propriedades

Valores Velocidade: 112

Km/h Lugares....: 44 Marca......:

MERCEDES Km..........: 80.732

Km Eixos.......: 2

Objeto: poltrona

PropriedadesValores

 

Page 12: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 12/7912

Exemplos de objetos - propriedades

Velocidade: 112Lugares....: 44Marca......: MERCEDESKm..........: 80.732 KmEixos.......: 2

Cor......: azullugares: 1Marca.: Artefacto

 

Page 13: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 13/7913

Exemplos de objetos

Exemplo de um objeto em Java:class Onibus {

float velocidade;

int lugares;

String marca;

int quilometragem;

int eixos;

} // fim da classe

...

Onibus carro43, setusao, frescao;

 

Page 14: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 14/7914

Objetos

Definição formal: Um objeto tem um estado,

comportamento e uma identidade; aestrutura e o comportamento de objetos

similares são definidos nas suas classes [Booch]

 

Page 15: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 15/7915

Características de um objeto

Estado: Propriedades (geralmente estáticas)

Característica inerente ou distintiva quecontribui para a unicidade de um objeto

Valores (geralmente dinâmicos) Todas as propriedades possuem valores

que podem variar ao longo do tempo

“O estado de um objeto consiste de todasas propriedades do objeto mais os valoresatuais destas propriedades [Booch]” 

 

Page 16: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 16/7916

Características de um objeto

Comportamento: O comportamento de um objeto é

caracterizado pelo conjunto deoperações que o objeto é capaz de

executar (ou sua interface) Podemos imaginar os objetos como prestadores de serviços

Sempre que o objeto solicitar um serviçode outro objeto, deve enviar-lhe umamensagem 

Se o objeto receptor for capaz de prestar 

este serviço, ele então será executado 

Page 17: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 17/79

17

Exemplos de objetos

Exemplo: Suponha uma abstração para uma

lâmpada que deva exibir o seguintecomportamento: Informar se está acesa; Acender-se e Apagar-se.

Vamos construir isso em Java.

 

Page 18: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 18/79

18

Exemplos de objetos

Exemplo de um objeto em Java:class Lampada extends Object {

boolean estaAcesa = false;

boolean getAcesa(){

...

}

void acende(){

...

}

void apaga(){

...

}

}

Estado

Comportamento

Método

 

Page 19: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 19/79

19

Lampada l1, l2; l1

l2

l1 = new Lampada(); l1

l2 = new Lampada(); l2

l1.acende();

l2.apaga();

l1 = l2; l1

l2

if ( l1.getAcesa() ) {

Exemplos de objetos

Exemplo de um objeto em Java:

 

Page 20: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 20/79

20

Identidade de um Objeto

Identidade Cada objeto é único e distinguível dos

demais independentemente dos valoresdos seus atributos

Para manipular os objetos, nos utilizamosde referências para os mesmos

Uma referência nada mais é do que uma

variável que “aponta” para um objeto dotipo para o qual foi declarada ou paraobjetos do subtipo deste tipo

 

Page 21: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 21/79

21

Identidade de um Objeto

Identidade Objetos são criados através de um processo chamado de instanciação, que, por sua vez, devolve um “ponteiro” para o

objeto criado. Erros comuns:

Confundir referência com identidade,variável com objeto

Confundir valores de atributos comidentidade

 

Page 22: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 22/79

22

Ciclo de vida de um Objeto

 A linha da vida de um objeto:1) Instanciação: o objeto é criado e passaa ser referenciado por um nome (suareferência);

2) Uso: o objeto recebe mensagens deoutros objetos e, com isso, executa parteda funcionalidade do sistema;

3) Destruição: a área de memóriaocupada pelo objeto é reclamada...todasas referências para o objetos ficamnulas.

 A destruição de um objeto é realizada 

E l Ci l d id d

Page 23: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 23/79

23

Exemplo – Ciclo de vida de umObjeto

Exemplo de código Java:Quadrado q;

q = new Quadrado();

q.moverDireita(20);

q.mudarTamanho(5);

q.ficarVisivel(false);

q.mudarCor(“red”);

q = null;

 

E l Ci l d id d

Page 24: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 24/79

24

Exemplo – Ciclo de vida de umObjeto

Esquematicamente:q

visivel:true

tamanho:28cor:“white” 

new

 

Page 25: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 25/79

25

Instanciação de Objetos

Definição Operação através da qual um objeto écriado e passa a existir na memória docomputador. A classe é o modelo ou a

fôrma utilizada para criar o objeto. Objeto versus referências Os objetos são manipulados através de

referências ou ponteiros que indicam onde

o objeto está localizado na memória docomputador  Não há outra forma de chegar ao objeto

sem que seja via uma referência.

Lembre de Bruce Eckel e sua analogia do 

Page 26: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 26/79

26

Referências para objetos

 A maioria dos objetos em um programa Java são acessados por variáveischamadas de referências

Como Java é uma linguagemfortemente tipada, estas variáveisdevem ser declaradas e tipificadas emtempo de compilação

Exemplos:String s;// s é do tipo String

Quadrado q1; // q1 é do tipo Quadrado

Cliente c; // c é um cliente

 

Page 27: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 27/79

27

Referências para objetos

Referências são ponteiros para o objetoQuadrado q; // declaração

q = new Quadrado(); // instanciação

q.mudeTamanho(50); // usoq = null; // desprezo

q

 

Page 28: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 28/79

28

Referências para objetos

Referências são ponteiros para o objetoQuadrado q; // declaração

q = new Quadrado(); // instanciação

q.mudeTamanho(50); // usoq = null; // desprezo

qtamanho: 30

 

Page 29: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 29/79

29

Referências para objetos

Referências são ponteiros para o objetoQuadrado q; // declaração

q = new Quadrado(); // instanciação

q.mudeTamanho(50); // usoq = null; // desprezo

qtamanho: 50

 

Page 30: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 30/79

30

Referências para objetos

Referências são ponteiros para o objetoQuadrado q; // declaração

q = new Quadrado(); // instanciação

q.mudeTamanho(50); // usoq = null; // desprezo

qtamanho: 50

Objeto sem

referência!

  

Page 31: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 31/79

31

O que é uma Classe?

 

Page 32: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 32/79

32

Classes

Definição: Local onde encontram-se definidas as propriedades (variáveis) e ocomportamento (métodos) que uma

categoria de objetos deve possuir  Estrutura fundamental de programação

em Java!

Todo e qualquer programa Java devedefinir pelo menos uma classe Não há como escrever código Java sem

que haja a definição de classes

 

Page 33: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 33/79

33

Classes

Toda classe define um novo tipo dedados Valores de um tipo definido por uma

classe recebem o nome de objetos

 

Page 34: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 34/79

34

Exemplo de uma classe Java

Exemplo:class Cliente extends Object {

private String nome;

private String endereco;private char sexo;

}

Nome daclasse

Propriedades dosobjetos da classeCliente

 

Page 35: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 35/79

35

Exemplo de uma classe Java

Instanciação da classe cliente:Cliente c1 = new Cliente();

Cliente c2 = new Cliente();

nome:

end.:

sexo:

c1

nome:

end.:

sexo:

c2

 

Page 36: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 36/79

36

Importante!

 A classe Cliente, como está, apenasdefine a estrutura dos objetos; isto é, as propriedades que os objetos do tipo

Cliente terão Esta classe é uma abstração de um cliente para um sistema computacional

O domínio do problema a ser resolvido é

que determina quais serão estas propriedades

 Assim, uma forma de definir abstrações em Java é criar uma

classe! 

Page 37: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 37/79

37

Exemplo de uma classe Java

 Ampliando a classe Cliente (inserindométodos):class Cliente extends Object {

private String nome;

private String endereco;private char sexo;

public void setNome( String novoNome ){

nome = novoNome;

}

}

 Método

 

Page 38: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 38/79

38

Métodos

Um método é um procedimento oufunção que permite aos objetos de umaclasse executarem serviços

É como o objeto implementa suasfuncionalidades

O envio de uma mensagem para umobjeto faz o método correspondente (de

mesmo nome) ser executado  A mensagem é a ativação de um

método sobre o objeto

 

Page 39: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 39/79

39

Métodos

Métodos podem ter parâmetros Métodos poder ler ( getXXX() ) ou

alterar ( setXXX() ) os valoresdas propriedades dos objetos Modificam, portanto, o estado de um

objeto Estes métodos, juntos, representam o

comportamento de um objeto ou o protocolo de uma classe

 A implementação de um método utilizatodas as estruturas lógicas daro rama ão estruturada: decisão

 

Page 40: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 40/79

40

Encapsulamento

 

Page 41: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 41/79

41

Encapsulamento

 A abstração de um objeto deve preceder (ter prioridade) à sua implementação  A implementação, uma vez selecionada,

deve ser tratada como um segredo daabstração e, portanto, escondida dosclientes deste objeto

O encapsulamento serve para proteger  

a abstração “Nenhuma parte de um sistema

complexo deve depender dos detalhes

internos de outras partes [Booch]”  

Page 42: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 42/79

42

Encapsulamento

Conceitos complementares: A abstração representa um conceito O encapsulamento, por sua vez, impede

os clientes de verem/conhecerem como

este conceito foi implementadointernamente

Para uma abstração realmente

funcionar, sua implementação deveestar encapsulada Os objetos são formados de duas partes:

 

Page 43: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 43/79

43

Encapsulamento

 

Page 44: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 44/79

44

Encapsulamento

 A implementação não interessa à quem usaos objetos Papel do usuário de classes

Não precisa saber como a classe foi escrita,

apenas quais seus métodos, quais os parâmetros(quantidade, ordem e tipo) e os valores que sãoretornados

Usa apenas a interface pública da classe

Papel do desenvolvedor de classes Define novos tipos de dados Expõe, através dos métodos, todas as funções

necessárias aos usuários das classes e oculta oresto da implementação

Tem a liberdade de mudar a im lementa ão das 

Page 45: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 45/79

45

Encapsulamento

Definição: “Encapsulamento é o processo deesconder todos os detalhes deimplementação de um objeto que nãocontribuem para suas característicasessenciais” [Booch]

“A habilidade de mudar a representaçãode uma abstração sem perturbar quaisquer de seus clientes é o principalbenefício do encapsulamento” [Booch]

Lembre-se disto: “O encapsulamento previne acidentes,

não fraudes” [Stroustrup] “ 

Page 46: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 46/79

46

Encapsulamento

Uma classe Java define um bloco deconstrução para encapsulamento de propriedades e métodos

Os métodos de uma classe deveriamacessar apenas as propriedades da

 própria classe e nunca as de outraclasse

Promove coesão! Modificadores de acesso controlam a

visibilidade do encapsulamento de Java

 public tudo que pode ser acessado de fora 

Page 47: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 47/79

47

Exemplo de uma classe Java

Visibilidade do encapsulamento deCliente:class Cliente extends Object {

private String nome;

private String endereco;

private char sexo;

public void setNome( String novoNome ){

nome = novoNome;

}

}

      p        ú        b        l        i      c

      o

        i      n        t      e      r      n      o

 

Page 48: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 48/79

48

Exemplo de uma classe Java

Visibilidade do encapsulamento deCliente:class Venda {

private Cliente c;

...

public void mudeCliente( String novo ){

cli.nome = novo;

}

}

 A propriedade nome é privativa daClasse cliente

 

Page 49: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 49/79

49

Exemplo de uma classe Java

Visibilidade do encapsulamento deCliente:class Venda {

private Cliente c;

...

public void mudeCliente( String novo ){

cli.setNome(novo);

}

}

O método setNome() é público emcliente

 

Page 50: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 50/79

50

Construtores e Destrutores

 Algumas linguagens implementammétodos especiais Construtores: utilizados para criar e/ou

inicializar novos objetos Em Java e C++, os construtores recebem

o mesmo nome da classe Pode-se ter várias versões de construtores

em uma mesma classe; mudando a

quantidade e o tipo dos parâmetros Destrutores: usados para destruir 

objetos

Não há métodos destrutores em Java 

l d l

Page 51: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 51/79

51

Exemplo de uma classe Java

Exemplo de um construtor:class Cliente extends Object {

private String nome;

private String endereco;

private char sexo;

public Cliente( String umNome, StringumEnd, char umSexo ) {

nome = umNome;

endereco = umEnd;

sexo = umSexo;

}

}

      p        ú        b        l        i      c

      o

 

E l d l J

Page 52: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 52/79

52

Exemplo de uma classe Java

Uso do construtor da classe Cliente:class Venda {

Cliente c, d;

c = new Cliente( “Bart”, “Tambaú”, ‘M’ );

...

d = new Cliente( “Maria”, “Bessa”, ‘F’ );

}

O construtor só é utilizado no momento dacriação de objetos

 

V iá i d l

Page 53: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 53/79

53

Variáveis de classe

Uma classe pode ter variáveis contendoinformações úteis, como: Número de objetos instanciados pela

classe até certo instante Valor médio, mínimo e máximo de uma propriedade

Essas variáveis não devem ser passadas

 para os objetos Para cada classe, poderá existir apenas

uma única cópia de cada variável:variável de classe

 

V iá i d l

Page 54: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 54/79

54

Variáveis de classe

Exemplos de variáveis de classe:Classe AgênciaBancária agenciaCentro

agenciaEpitacio

agenciaMana

ira

 juros:

Variável deClasse

 

V iá i d l

Page 55: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 55/79

55

Variáveis de classe

Os objetos instanciados pela classe podem acessar as variáveis de classe( para modificar ou ler seu valor)

 A modificação numa variável de classe é percebida por todos os objetos

 A variável de classe fica armazenada naclasse e não nas instâncias geradas

É comum o uso de variáveis de classe para definir constantes PI, MAX_IDADE, MIN_JUROS, ...

 

Mét d d l

Page 56: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 56/79

56

Métodos de classe

Muitas vezes, faz-se necessário acessar  parte do comportamento de uma classeindependentemente de suas instâncias Método showMessageDialog(...) que monta um

diálogo para o usuário da classe JOptionPane

Método sqrt() que calcula a raiz quadradada classe  Math

Comportamento é da classe e não deum objeto em particular  É como se a classe tivesse operações próprias: método de classe

 

Mét d d l

Page 57: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 57/79

57

Métodos de classe

Exemplos de métodos de classe:

O método numAgencias() poderia consultar onúmero de objetos instanciados até omomento

O métodonumProxAgencia()

poderia informar

numAgencias()

numProxAgencia()

Classe AgênciaBancária

 

H

Page 58: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 58/79

58

Herança

 

H

Page 59: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 59/79

59

Herança

Permite reutilizar as características deuma classe na definição de outra classe Reutilização direta de código previamente

definido por alguém em uma superclasse

É a contribuição original do paradigmaOO

Representação gráfica da herança:

Empregado

Gerente Diretor Supervisor  

 

H

Page 60: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 60/79

60

Herança

Terminologias relacionadas à Herança: Classes mais generalizadas: superclasses Mais especializadas: subclasses

 A herança viabiliza a construção desistemas a partir de componentesfacilmente reutilizáveis Suporte a reutilização até entre sistemas Facilita a extensibilidade em um mesmo

sistema

 A classe descendente não tem trabalho

para receber a herança 

Herança

Page 61: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 61/79

61

Herança

Herança é uma técnica para prover suporte a especialização Classes mais abaixo: especializada Classes mais acima: genéricas

Métodos e variáveis internas sãoherdados por todos os objetos dos níveismais abaixo

Várias subclasses podem herdar ascaracterísticas de uma superclasse

Herança múltipla – não presente em

Java! 

Herança

Page 62: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 62/79

62

Herança

Se B é uma subclasse de A, então: Os objetos de B suportam todas asoperações suportadas pelos objetos de A,exceto aquelas que foram redefinidas

O objetos de B incluem todas as variáveisde instância de B + todas as variáveis deinstância de A

 Alguns autores afirmam que a Herança“fere” o princípio do encapsulamento Mudanças na superclasse podem ser 

difíceis Subclasses recebem/enxergam os dados e

 

Árvore de Herança

Page 63: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 63/79

63

 Árvore de Herança

União das classes que herdam entre sigera uma árvore de herança; ou umahierarquia de classes relacionadas

Exemplo:Polígono

Quadrilátero Hexágono Triângulo

QuadradoRetângulo

 

Árvore de Herança

Page 64: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 64/79

64

 Árvore de Herança

Todos os objetos herdam característicasdefinidas em polígono Retângulo e Quadrado são

especializações de Quadrilátero Em todos os casos, cada subclasse possui uma única superclasse A isso, chamamos de Herança simples

Em algumas linguagens, é possívelherdar características oriundas dediversas superclasses

 

Benefícios da Herança

Page 65: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 65/79

65

Benefícios da Herança

Como código pode ser facilmentereutilizado, a quantidade de código aser adicionado numa classe podediminuir bastante Subclasses provêem comportamentos

especializados tomando como base oselementos comuns criados na superclasse

 A reutilização pode ser realizada mais deuma vez por outras novas subclasses

Potencializa a manutenção de sistemas Maior legibilidade do código existente uantidade menor de códi o a ser 

 

Polimorfismo

Page 66: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 66/79

66

Polimorfismo

Polimorfismo Do Grego poly(muitas)+morpho(formas)

Há dois aspectos do polimorfismo Métodos de mesmo nome são definidos

em várias classes, podendo assumir diferentes implementações em cada umadessas

Propriedade pela qual uma variável podeapontar para objetos de diferentes classesem momentos distintos

Estes aspectos são complementares e

trabalham juntos 

Polimorfismo

Page 67: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 67/79

67

Polimorfismo

Exemplo: Polígono

Quadrilátero Hexágono Triângulo

area()

area() area() area()

 

Polimorfismo

Page 68: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 68/79

68

Polimorfismo

Várias classes podem ter métodos como mesmo nome Uma variável do tipo Polígono pode

assumir a forma de Polígono, Triângulo,

RetânguloPoligono p;

p = new Poligono();

p.area();

...

P = new Triangulo();

p.area();

 

Exemplo de uso de Polimorfismo

Page 69: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 69/79

69

Exemplo de uso de Polimorfismo

 Área total sem polimorfismo:double areaTotal = 0;for (int i = 0; i < MAXPOLIG; i++){

if (poligono[i] == Poligono)

areaTotal += poligono[i].areaPolig();

else if (poligono[i] == Triangulo)

areaTotal += poligono[i].areaTriang();

else if (poligono[i] == Quadrado)

areaTotal += poligono[i].areaQuadr();

else if (poligono[i] == Retangulo)areaTotal += poligono[i].areaRetang();

}

 

Exemplo de uso de Polimorfismo

Page 70: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 70/79

70

Exemplo de uso de Polimorfismo

 Área total com polimorfismo:

Rápido, enxuto e fácil de entender 

O acréscimo de uma nova subclasse dePolígono não altera nenhuma linha decódigo acima!

double areaTotal = 0;

for (int i = 0; i < MAXPOLIG; i++){

areaTotal += poligono[i].area();

}

 

Benefícios do Polimorfismo

Page 71: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 71/79

71

Benefícios do Polimorfismo

Legibilidade do código A utilização do mesmo nome de método para vários objetos torna o código de maisfácil leitura e assimilação, promovendo

muito a expansão do sistema e suamanutenção

Código de menor tamanho Código mais claro, fácil, enxuto e elegante

Flexibilidade Pode-se incluir novas classes sem alterar o

código já existente que a manipulará

 

Polimorfismo Paramétrico

Page 72: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 72/79

72

Polimorfismo Paramétrico

Polimorfismo abordado: métodosdiferentes com o mesmo nome emclasses distintas

Polimorfismo paramétrico: vários

métodos com o mesmo nome definidosna mesma classe que se diferenciam

 pelo tipo ou número dos parâmetros

suportados Também é chamado de sobrecarga de

métodos (overloading, em inglês)

Esta técnica também pode ser utilizada 

Polimorfismo Paramétrico

Page 73: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 73/79

73

Polimorfismo Paramétrico

Uma mensagem pode ser enviada a umobjeto com parâmetros: Número de variáveis De tipos diferentes

O método invocado é escolhido pelos parâmetros enviados na mensagem

public class Documento {

...

public void imprime();

public void imprime(String titulo);

}

 

Ligação Dinâmica

Page 74: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 74/79

74

Ligação Dinâmica

 A implementação do polimorfismo exigeligação dinâmica Uma ligação nada mais é do que uma

associação Ligação estática: ocorre em tempo de

compilação ou interligação (linking) enão é mais modificada

Ligação dinâmica: ocorre em tempo deexecução e pode ser alterada nodecorrer do andamento do programa

Ligação do operador a uma particular 

Operações com Objeto, Classe e

Page 75: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 75/79

75

p ç jHerança

Objetos, classes e herança permitem adefinição de hierarquia de abstrações  Abstrações facilitam o entendimento e o

gerenciamento da complexidade de

sistemas Classes agrupam objetos com

características iguais

Herança estrutura classes semelhantes Operações abstratas:

Classificação/Instanciação

Generalização/Especialização 

Classificação/Instanciação

Page 76: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 76/79

76

Classificação/Instanciação

 A capacidade de classificar objetos permite expressar relações declassificação/instanciação

Observação de diversos fenômenos para

categorização em grupos (classes), combase nas propriedades comuns a todos

VendaVista

venda1 venda2instanciação

classificação

 

Generalização/Especialização

Page 77: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 77/79

77

Generalização/Especialização

 A partir da observação de duas ou maisclasses, pode-se abstrair uma classemais genérica

Uma superclasse é considerada uma

generalização das subclasses, que sãochamadas de especializações

especialização

generalização

Polígono

Quadrado Triângulo

 

Composição/Decomposição

Page 78: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 78/79

78

Composição/Decomposição

Permite que objetos sejam compostos pela agregação de outros objetos oucomponentes

Instâncias de uma classe são compostas

 por instâncias de outras classes =decomposição

 A formação de uma classe se dá por 

uma agregação de classes pré-existentes = composição

decomposição

Bicicleta

Pneu Quadro

composição

Guidom

 

Bibliografia

Page 79: ANALISE DE PROGRAMAÇÃO

5/12/2018 ANALISE DE PROGRAMAÇÃO - slidepdf.com

http://slidepdf.com/reader/full/analise-de-programacao 79/79

Bibliografia

PEREIRA, Frederico C. G.; Slides doCurso de Java. Disponível por WWW emhttp://asterix.coinfo.cefetpb.edu.br/~fred

ROCHA, Helder da; Curso de Java.Disponível por WWW emhttp://www.argonavis.com.br.

The Java Tutorial . Disponível por WWW emhttp://java.sun.com/docs/books/tutorial/