interação entre objetos criando objetos cooperadores 1.0

Post on 17-Apr-2015

111 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Interação entre objetos

Criando objetos cooperadores

1.0

2

Mostrador de um relógio digital

Projeto exemplo das aulas da semana

3

Abstração

• Problema da complexidade– Dividir para conquistar

• Abstração é a habilidade de ignorar detalhes sobre as partes para concentrar a atenção no nível mais alto de um problema.

• Exemplo de um problema:– Engenheiros projetando um novo

carro

4

Abstração em software

• Identificação de subcomponentes que podemos programar como entidades independentes.

• Em POO, esses componentes e subcomponentes são objetos.

5

Modularização

• Modularização é o processo de dividir um todo em partes bem definidas, que podem ser construídas e examinadas separadamente e que interagem de uma maneira bem definida.

• A modularização e a abstração complementam-se reciprocamente.

6

Modularização no exemplo do relógio

Um mostrador de número de quatro dígitos?

Ou um mostrador de número de dois dígitos?

7

Modularização no exemplo do relógio

• Dois mostradores de dois dígitos cada um– Um par para horas e um par para os

minutos• Mostrador das horas:

– Inicia em 0 e volta para 0 quando alcança o limite (23)

• Mostrador de minutos– Inicia em 0 e retorna quando

alcança 59

8

Mostrador de dois dígitos

Classe NumberDisplay

9

Implementação — NumberDisplay

public class NumberDisplay{ private int limit; private int value;

Construtor e métodos omitidos.}

10

Implementação — ClockDisplay

public class ClockDisplay{ private NumberDisplay hours; private NumberDisplay minutes;

Construtor e métodos omitidos.}

11

Diagrama de objetos

Visualização dinâmica

12

Diagrama de classes

Visualização estática

13

Tipos primitivos versus tipos de objeto (1)

32

Tipo de objeto

tipo primitivo

SomeObject obj;

int i;

14

Tipos primitivos versus tipos de objetos (2)

32

SomeObject a;

int a;

SomeObject b;

32

int b;

b = a;

15

Código-fonte: NumberDisplay (1)

public NumberDisplay(int rollOverLimit){ limit = rollOverLimit; value = 0;}

public void increment(){ value = (value + 1) % limit;}

16

Operador de módulo

• Operador de módulo (%) calcula o resto de uma divisão de inteiros

• O resultado da expressão (27 % 4) seria 3

17

Código-fonte: NumberDisplay (2)

public String getDisplayValue(){ if(value < 10) return "0" + value; else return "" + value;}

18

Concatenação de string

• + é o operador de concatenação de string em Java

• Exemplos:• “POO” + “com Java” -> “POOcom Java”• “Resposta: “ + 42 -> “Resposta: 42”• return “0” + value;• return “” + value;

19

Objetos criando objetos (1)public class ClockDisplay

{ private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); }}

20

Chamadas de método

public void timeTick(){ minutes.increment(); if(minutes.getValue() == 0) { // acaba de voltar a zero! hours.increment(); } updateDisplay();}

21

Método interno

/** * Atualiza a string interna que * representa o mostrador. */private void updateDisplay(){ displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue();}

22

Diagrama do objeto ClockDisplay

23

Objetos criando objetos (2)

hours = new NumberDisplay(24);

public NumberDisplay(int rollOverLimit);

Na classe ClockDisplay:

Na classe NumberDisplay:

parâmetro formal

parâmetro real

24

Múltiplos construtores

• Uma classe pode conter mais de um construtor ou mais de um método com o mesmo nome.

• Os métodos têm que ter um conjunto distinto de tipos de parâmetros.

• new ClockDisplay();

• new ClockDisplay(hora, minuto);

25

Chamadas de método (1)

Chamada de método externo

objeto.nomeDoMetodo( lista-de-parâmetros );

Chamada de metodo interno

nomeDoMétodo ( lista-de-parâmetros );

26

Chamadas de método (2)

• Chamadas de método internoupdateDisplay();

private void updateDisplay()

Chamadas de método externo minutes.increment();

27

A palavra-chave this

Sobrecarga de nome ocorre quando um mesmo nome é utilizado para duas entidades diferentes

Por exemplo, campos e parâmetros de entrada com o mesmo nome

Um parâmetro e um campo que compartilham um nome não é um problema em Java

A palavra-chave this é utilizada para fazer a distinção

A expressão this referencia o objeto atual

28

A palavra-chave this

public NumberDisplay(int limit){ this.limit = limit; value = 0;}

// outros métodos

29

A palavra-chave this

public class Aquecedor {private int temperatura,max,min,incr;public Aquecedor(int max, int min) {

this.max = max;this.min = min;incr = 5;temperatura = 15;

} // outros métodos

30

Resumo dos conceitos (1)

• abstração 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 A 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.

• classes definem tipos Um nome de classe pode ser utilizado como o tipo para uma variável. Variáveis que têm uma classe como seu tipo podem referenciar objetos dessa classe

31

Resumo dos conceitos (2)

• diagrama de classes O diagrama de classes mostra as classes de uma aplicação e os relacionamentos entre elas.

• diagrama de objetos O diagrama de objetos mostra os objetos e seus relacionamentos em tempo de execução.

• referências de objeto Variáveis do tipo objeto armazenam referências para objetos.

• criação de objetos Os objetos podem criar outros objetos utilizando o operador new.

32

Resumo dos conceitos (3)

• tipo primitivo Os tipos primitivos em Java são os tipos não-objeto. Os mais comuns são int, char, boolean, double e long.

• sobrecarga Uma classe pode conter mais de um construtor ou mais de um método com mesmo nome, contanto que cada um tenha um conjunto distinto de tipos de parâmetro.

33

Resumo dos conceitos (4)

• chamada de método interno Os métodos podem chamar outros métodos da mesma classe como parte de sua implementação.

• chamada de método externo Os métodos podem chamar métodos de outros objetos utilizando notação de ponto.

top related