A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

Apresentações semelhantes


Apresentação em tema: "INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)"— Transcrição da apresentação:

1 INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

2 Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 2 Lembrando: Estrutura de classe básica public class TicketMachine { A parte interna da classe omitida. } classe pública NomeDaClasse { Campos Construtores Métodos } O invólucro externo de TicketMachine O conteúdo de uma classe

3 Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 3 Lembrando: Métodos de acesso lista de parâmetro (vazia) public int getPrice() { return price; } tipo de retorno nome do método início e fim do corpo do método (bloco) instrução de retorno modificador de visibilidade

4 Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 4 Lembrando: Métodos modificadores public void insertMoney(int amount) { balance = balance + amount; } tipo de retorno nome do método parâmetro modificador de visibilidade instrução de atribuição campo sendo modificado

5 Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 5 Lembrando: Variáveis locais public int refundBalance() { int amountToRefund; amountToRefund = balance; balance = 0; return amountToRefund; } Uma variável local Nenhum Modificador de visibilidade

6 Leitura  Capítulo 3 (Prog. Orient. a Obj. usando Java - 4th Edition)

7 Importância da interação entre objetos  As aplicações precisam da combinação de objetos de forma a cooperar para realizar uma tarefa comum.

8 Abstração e modularização  Problemas complexos devem ser divididos e abordados como subproblemas  Abstração: é a capacidade de ignorar detalhes de partes para focalizar a atenção em um nível mais elevado de um problema  Modularização: é o processo de dividir um todo em partes bem-definidas, que podem ser construídas e examinadas separadamente e que interagem de maneiras bem- definidas.

9 Modularização: Relógio digital  Exibir horas e minutos separados por dois-pontos.  O mostrador exibe a hora de 00:00 a 23:59

10 Modularização: Relógio digital Um mostrador de quatro dígitos? Ou mostradores de dois dígitos?

11 Modularização: Relógio digital Mostrador de quatro dígitos Mostrador de dois dígitos para hora e outro para minutos Mostrador de dois dígitos com limite. No caso das horas, o limite é entre “0” até “23”. No caso dos minutos, o limite é entre “0” até “59” Nível de Abstração maior

12 Modularização: Relógio digital 1.Podemos criar a classe “NumberDisplay” que seria o mostrador de dois dígitos. 2.Essa classe pode ser utilizada tanto para hora quanto para minutos Mostrador de dois dígitos com limite. No caso das horas, o limite é entre “0” até “23”. No caso dos minutos, o limite é entre “0” até “59” Mostrador com maior nível de abstração.

13 Modularização: Relógio digital  Implementação - NumberDisplay public class NumberDisplay { private int limit; private int value; Construtores e métodos omitidos. }

14 Modularização: Relógio digital  Implementação – ClockDisplay  A classe “ClockDisplay” é nosso relógio.  Está composto por dois objetos da classe “NumberDisplay”. Um deles para mostrar a hora e outro para mostrar os minutos. public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; Construtores e métodos omitidos. }

15 Tipo de objeto versus tipo primitivo  A classe “ClockDisplay” armazena dois objetos de tipo “NumberDisplay”.  Assim, existe um relacionamento entre a classe “ClockDisplay” e “NumberDisplay”  A classe “NumberDisplay” define um tipo. public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; Construtores e métodos omitidos. }

16 Diagrama de Objetos  Mostra os objetos e seus relacionamentos em um momento no tempo durante a execução de uma aplicação.  Fornece as informações sobre objetos em tempo de execução.  Apresenta a visualização dinâmica de um programa.

17 Diagrama de Objetos

18 Diagrama de Classes  Mostra as classes de uma aplicação e os relacionamentos entre elas.  Fornece as informações sobre o código-fonte e apresenta a visualização estática de um programa.

19 Diagrama de Classes

20 Tipo de objeto versus tipo primitivo  Tipos de objeto versus tipos primitivos 32 tipo de objeto tipo primitivo NumberDisplay obj; int i;

21 Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 21 Questionário: qual é o resultado?  int a; int b; a = 32; b = a; a = a + 1; System.out.println(b);  Person a; Person b; a = new Person("Everett"); b = a; a.changeName("Delmar"); System.out.println( b.getName());

22 Referência de Objeto  O diagrama de objeto mostra a referência de objeto.  Assim, uma variável de tipo primitivo é mostrada como uma caixa branca e a referência de objeto é mostrada com uma seta. 32 int a; 32 ObjectType a; ObjectType b; int b; b = a;

23 Referência de Objeto  As variáveis de tipos de objeto armazenam referências de objetos.  Em outras palavras, quando uma variável armazena um objeto, o objeto não é armazenado na variável diretamente.  Em vez disso, uma referência de objeto é armazenada na variável.

24 Código-fonte: NumberDisplay public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; } public void increment() { value = (value + 1) % limit; }

25 O operador de módulo  O operador de 'divisão' (/), quando aplicado ao operando int, retorna o resultado de uma divisão de inteiro.  O operador de 'módulo' (%) retorna o resto de uma divisão de inteiro.  Por exemplo, em geral: 17 / 5 = resulta em 3, restando 2  Em Java: 17 / 5 = 3 17 % 5 = 2

26 Código-fonte: NumberDisplay public String getDisplayValue() { if(value < 10) { return "0" + value; } else { return "" + value; }

27 Objetos que criam objetos public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); }

28 Diagrama de objeto ClockDisplay

29 null  null é um valor especial em Java.  Todas as variáveis de objeto são inicializadas como null.  Você pode atribuir e testar a existência de null : private NumberDisplay hours; if(hours == null) {... } hours = null;

30 Objetos que criam objetos hours = new NumberDisplay(24); public NumberDisplay(int rollOverLimit); na classe ClockDisplay: na classe NumberDisplay: parâmetro formal parâmetro real

31 Chamadas de método externo  A instrução “minutes.increment()” chama o método increment do objeto minutes. public void timeTick() { minutes.increment(); if(minutes.getValue() == 0) { // ele acabou de retornar! hours.increment(); } updateDisplay(); }

32 Chamadas de método externo  Uma chamada de método para um método de outro objeto é referida como uma chamada de método externo.  A sintaxe de uma chamada de método externo é:  objeto. nomeDoMétodo ( lista de parâmetros )  Essa sintaxe é conhecida como notação de ponto.

33 Método interno  Métodos da mesma classe: /** * Atualiza a string interna que representa o mostrador. */ private void updateDisplay() { displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue(); } public ClockDisplay() {... updateDisplay(); }

34 Método interno  Os métodos podem chamar outros métodos da mesma classe como parte de sua implementação.  Esse processo é denominado chamada de método interno.

35 Chamadas de método (1)  chamadas de método interno: updateDisplay();... private void updateDisplay()  chamadas de método externo: minutes.increment();

36 Chamadas de método (2) object. nomeDoMétodo( lista-de-parâmetros )

37 A palavra-chave this  O construtor da classe “NumberDisplay” pode ser escrito utilizando a palavra-chave this. public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; }

38 A palavra-chave this public NumberDisplay(int limit) { this.limit = limit; this.value = 0; }

39 A palavra-chave this  Por exemplo, a linha “this.limit = limit;” é uma instrução de atribuição.  Ela atribui o valor do lado direito (limit) à variável à esquerda (this.limit).

40 A palavra-chave this  A razão para utilizar essa construção é que temos uma situação que é conhecida como sobrecarga de nome (name overloading).  O mesmo nome é utilizado para duas entidades diferentes.  A expressão this referencia o objeto atual. Escrever this.limit referencia o campo limit no objeto atual.

41 Depurador (debugger)  ‘O primeiro bug de computador’ foi um inseto de verdade, uma mariposa, que foi encontrada no interior do computador Mark II por Grace Murray Hopper, uma pioneira na computação em 1945.

42 Depurador (debugger)  No National Museum of American History do Smithsonian Institute mostra um registro com essa maripossa colada no livro e a observação “primeiro caso real de descoberta de um bug”.

43 Depurador (debugger)  Depurador: é uma ferramenta de software que ajuda a examinar como uma aplicação é executada.  Bugs: Erros em programas de computador.  O depurador pode ser utilizado para localizar bugs.  Ele permite que os programadores executem uma aplicação em um passo por vez.

44 Perguntas?


Carregar ppt "INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)"

Apresentações semelhantes


Anúncios Google