71
SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 Professora: Fátima L. S. Nunes Construtores e Especificadores de Acesso

Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

SISTEMAS DEINFORMAÇÃO

1

1

11 1

SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

1

1SISTEMAS DEINFORMAÇÃO

1

1

1

1SISTEMAS DEINFORMAÇÃO

11

Professora:

Fátima L. S. Nunes

Construtores

e

Especificadores de Acesso

Page 2: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

SISTEMAS DEINFORMAÇÃO

2

2

22 2

SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

2

2SISTEMAS DEINFORMAÇÃO

2

2

2

2SISTEMAS DEINFORMAÇÃO

22

Orientação a Objetos• Conceitos do Paradigma de Orientação a Objetos já

vistos:

– Classes – atributos e métodos

– Objetos – instanciação de classes

– Programas com vários objetos

– Variáveis e Memória

• Novos conceitos:

– Construtores

– Especificadores de acesso

Page 3: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

SISTEMAS DEINFORMAÇÃO

3

3

33 3

SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

3

3SISTEMAS DEINFORMAÇÃO

3

3

3

3SISTEMAS DEINFORMAÇÃO

33

Construtores

Page 4: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

SISTEMAS DEINFORMAÇÃO

4

4

44 4

SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

4

4SISTEMAS DEINFORMAÇÃO

4

4

4

4SISTEMAS DEINFORMAÇÃO

44

Construtores• O que é um objeto?

Page 5: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

SISTEMAS DEINFORMAÇÃO

5

5

55 5

SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

5

5SISTEMAS DEINFORMAÇÃO

5

5

5

5SISTEMAS DEINFORMAÇÃO

55

Construtores• O que é um objeto?

• Instanciação de uma classe

Page 6: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

SISTEMAS DEINFORMAÇÃO

6

6

66 6

SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

6

6SISTEMAS DEINFORMAÇÃO

6

6

6

6SISTEMAS DEINFORMAÇÃO

66

Construtores• O que é um objeto?

• Instanciação de uma classe

• Diferentes tipos de objetos…

• Para criá-los: ???

Page 7: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

SISTEMAS DEINFORMAÇÃO

7

7

77 7

SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

7

7SISTEMAS DEINFORMAÇÃO

7

7

7

7SISTEMAS DEINFORMAÇÃO

77

Construtores• O que é um objeto?

• Instanciação de uma classe

• Diferentes tipos de objetos…

• Para criá-los:

ClasseDefinida cd = new ClasseDefinida()

Variável cd - referência a um novo objeto da ClasseDefinida

Page 8: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

SISTEMAS DEINFORMAÇÃO

8

8

88 8

SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

8

8SISTEMAS DEINFORMAÇÃO

8

8

8

8SISTEMAS DEINFORMAÇÃO

88

• A classe pode não ter atributos (ex: ConversorDeTemperaturas) – Quando é interessante ter atributos?

• Se a classe tem atributos, escrevemos métodos obtém/altera para cada atributo

• Portanto, após criarmos um objeto, precisamos inicializar seus atributos

Page 9: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

SISTEMAS DEINFORMAÇÃO

9

9

99 9

SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

9

9SISTEMAS DEINFORMAÇÃO

9

9

9

9SISTEMAS DEINFORMAÇÃO

99

• A classe pode não ter atributos (ex: ConversorDeTemperaturas) – Quando é interessante ter atributos?– Quando queremos armazenar valores para uso futuro

• Se a classe tem atributos, escrevemos métodos obtém/altera para cada atributo

• Portanto, após criarmos um objeto, precisamos inicializar seus atributos

Page 10: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

SISTEMAS DEINFORMAÇÃO

10

10

1010 10

SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

10

10SISTEMAS DEINFORMAÇÃO

10

10

10

10SISTEMAS DEINFORMAÇÃO

1010

class ClasseDefinida{

tipo1 _atributo1;...tipoN _atributoN;

void alteraAtributo1 (tipo1 valor1) { _atributo1 = valor1; }

tipo1 obtemAtributo1 () { return _atributo1; }

...

void alteraAtributoN (tipoN valorN) { _atributoN = valorN; }

tipoN obtemAtributoN() { return _atributoN; }}

Page 11: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

SISTEMAS DEINFORMAÇÃO

11

11

1111 11

SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DEINFORMAÇÃO

11

11

11

11SISTEMAS DEINFORMAÇÃO

1111

class ClasseDefinida{

tipo1 _atributo1;...tipoN _atributoN;

void alteraAtributo1 (tipo1 valor1) { _atributo1 = valor1; }

tipo1 obtemAtributo1 () { return _atributo1; }

...

void alteraAtributoN (tipoN valorN) { _atributoN = valorN; }

tipoN obtemAtributoN() { return _atributoN; }}

ClasseDefinida cd = new ClasseDefinida();

cd.alteraAtributo1(v1);

...

cd.alteraAtributoN(vn);

Page 12: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

SISTEMAS DEINFORMAÇÃO

12

12

1212 12

SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

12

12SISTEMAS DEINFORMAÇÃO

12

12

12

12SISTEMAS DEINFORMAÇÃO

1212

class ClasseDefinida{

tipo1 _atributo1;...tipoN _atributoN;

void alteraAtributo1 (tipo1 valor1) { _atributo1 = valor1; }

tipo1 obtemAtributo1 () { return _atributo1; }

...

void alteraAtributoN (tipoN valorN) { _atributoN = valorN; }

tipoN obtemAtributoN() { return _atributoN; }}

ClasseDefinida cd = new ClasseDefinida();

cd.alteraAtributo1(v1);

...

cd.alteraAtributoN(vn);

Não precisa ser sempre assim!

Podemos usar

CONSTRUTORES!

Page 13: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

SISTEMAS DEINFORMAÇÃO

13

13

1313 13

SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

13

13SISTEMAS DEINFORMAÇÃO

13

13

13

13SISTEMAS DEINFORMAÇÃO

1313

Construtores• Em Java:

• quando não especificamos como um objeto

será criado, a linguagem fornece um construtor

padrão.

Page 14: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

SISTEMAS DEINFORMAÇÃO

14

14

1414 14

SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

14

14SISTEMAS DEINFORMAÇÃO

14

14

14

14SISTEMAS DEINFORMAÇÃO

1414

Construtores• Em Java:

• quando não especificamos como um objeto

será criado, a linguagem fornece um construtor

padrão.

• Inicializa atributos com...

Page 15: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

SISTEMAS DEINFORMAÇÃO

15

15

1515 15

SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

15

15SISTEMAS DEINFORMAÇÃO

15

15

15

15SISTEMAS DEINFORMAÇÃO

1515

Construtores• Em Java:

• quando não especificamos como um objeto

será criado, a linguagem fornece um construtor

padrão.

• Inicializa atributos com... valores default de

cada tipo

Page 16: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

SISTEMAS DEINFORMAÇÃO

16

16

1616 16

SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

16

16SISTEMAS DEINFORMAÇÃO

16

16

16

16SISTEMAS DEINFORMAÇÃO

1616

Construtoresclass Produto{double _preco;int _codigo;

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Instanciação:

Produto p = new Produto();p.imprimeDados();

Page 17: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

SISTEMAS DEINFORMAÇÃO

17

17

1717 17

SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

17

17SISTEMAS DEINFORMAÇÃO

17

17

17

17SISTEMAS DEINFORMAÇÃO

1717

ConstrutoresInstanciação:

Produto p = new Produto();p.imprimeDados();

Preço = 0Código = 0

class Produto{double _preco;int _codigo;

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Page 18: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

SISTEMAS DEINFORMAÇÃO

18

18

1818 18

SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

18

18SISTEMAS DEINFORMAÇÃO

18

18

18

18SISTEMAS DEINFORMAÇÃO

1818

ConstrutoresInstanciação:

Produto p = new Produto();p.imprimeDados();

Preço = 0Código = 0

Como definir valores prévios para variáveis? Ou como definir valores durante a instanciação objeto ?

class Produto{double _preco;int _codigo;

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Page 19: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

SISTEMAS DEINFORMAÇÃO

19

19

1919 19

SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

19

19SISTEMAS DEINFORMAÇÃO

19

19

19

19SISTEMAS DEINFORMAÇÃO

1919

ConstrutoresComo definir valores prévios

para variáveis? Ou como definir valores durante a instanciação

objeto ?

Conceito de construtor

class Produto{double _preco;int _codigo;

Produto (double preco, int cod) {_preco = preco;_codigo = cod;

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Page 20: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

SISTEMAS DEINFORMAÇÃO

20

20

2020 20

SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

20

20SISTEMAS DEINFORMAÇÃO

20

20

20

20SISTEMAS DEINFORMAÇÃO

2020

Construtores

class Produto{double _preco;int _codigo;

Produto (double preco, int cod) {_preco = preco;_codigo = cod;

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Instanciação:

Produto prod = new Produto(78.3,50);prod.imprimeDados();

Page 21: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

SISTEMAS DEINFORMAÇÃO

21

21

2121 21

SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

21

21SISTEMAS DEINFORMAÇÃO

21

21

21

21SISTEMAS DEINFORMAÇÃO

2121

Construtores

class Produto{double _preco;int _codigo;

Produto (double preco, int cod) {_preco = preco;_codigo = cod;

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Instanciação:

Produto prod = new Produto(78.3,50);prod.imprimeDados();

Preço = 78.3Código = 50

Page 22: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

SISTEMAS DEINFORMAÇÃO

22

22

2222 22

SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DEINFORMAÇÃO

22

22

22

22SISTEMAS DEINFORMAÇÃO

2222

Construtoresclass Produto{double _preco;int _codigo;

Produto (double preco, int cod) {_preco = preco;_codigo = cod;

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Instanciação:

Produto prod = new Produto(78.3,50);prod.imprimeDados();

Preço = 78.3Código = 50

O que acontece se fizermos:

Produto prod = new Produto();

???????

Page 23: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

SISTEMAS DEINFORMAÇÃO

23

23

2323 23

SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

23

23SISTEMAS DEINFORMAÇÃO

23

23

23

23SISTEMAS DEINFORMAÇÃO

2323

Construtoresclass Produto{double _preco;int _codigo;

Produto (double preco, int cod) {_preco = preco;_codigo = cod;

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);

}

}

Instanciação:

Produto prod = new Produto(78.3,50);prod.imprimeDados();

Preço = 78.3Código = 50

O que acontece se fizermos:

Produto prod = new Produto();

Static Error: No constructor in Produto accepts arguments ()

Page 24: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

SISTEMAS DEINFORMAÇÃO

24

24

2424 24

SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

24

24SISTEMAS DEINFORMAÇÃO

24

24

24

24SISTEMAS DEINFORMAÇÃO

2424

Construtores

• Algumas observações:

• Quando é definido um construtor, não é mais

possível usar o construtor padrão (não é

possível criar objeto sem obedecer as regras do

construtor que a classe disponibiliza) ...

• ... a não ser que você implemente um

equivalente

• Podemos ter vários construtores em uma classe

Page 25: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

SISTEMAS DEINFORMAÇÃO

25

25

2525 25

SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

25

25SISTEMAS DEINFORMAÇÃO

25

25

25

25SISTEMAS DEINFORMAÇÃO

2525

Mais de um Construtor na mesma classe

class Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

Instanciações possíveis:

> Produto prod1 = new Produto(43.20, 54, 200);> prod1.imprimeDados();

Page 26: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

SISTEMAS DEINFORMAÇÃO

26

26

2626 26

SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

26

26SISTEMAS DEINFORMAÇÃO

26

26

26

26SISTEMAS DEINFORMAÇÃO

2626

Mais de um Construtor na mesma classe

class Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

Instanciações possíveis:

> Produto prod1 = new Produto(43.20, 54, 200);> prod1.imprimeDados();Preço = 43.2Código = 54Quantidade = 200

Page 27: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

SISTEMAS DEINFORMAÇÃO

27

27

2727 27

SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

27

27SISTEMAS DEINFORMAÇÃO

27

27

27

27SISTEMAS DEINFORMAÇÃO

2727

Mais de um Construtor na mesma classe

class Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

Instanciações possíveis:

> Produto prod1 = new Produto(43.20, 54, 200);> prod1.imprimeDados();Preço = 43.2Código = 54Quantidade = 200> Produto prod2 = new Produto(300,195);> prod2.imprimeDados();Preço = 0.0Código = 300Quantidade = 195

Page 28: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

SISTEMAS DEINFORMAÇÃO

28

28

2828 28

SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

28

28SISTEMAS DEINFORMAÇÃO

28

28

28

28SISTEMAS DEINFORMAÇÃO

2828

Palavra reservada thisclass Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

Page 29: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

SISTEMAS DEINFORMAÇÃO

29

29

2929 29

SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

29

29SISTEMAS DEINFORMAÇÃO

29

29

29

29SISTEMAS DEINFORMAÇÃO

2929

Palavra reservada thisclass Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

• É somente uma referência ao próprio objeto.

• Ou seja, se tivermos a chamada

Produto p = new Produto(50);

• O construtor ...

• … repassa o trabalho para o outro construtor

da mesma classe.

Produto (int c) {

this (10,c,100);}

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Page 30: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

SISTEMAS DEINFORMAÇÃO

30

30

3030 30

SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

30

30SISTEMAS DEINFORMAÇÃO

30

30

30

30SISTEMAS DEINFORMAÇÃO

3030

Construtor com thisclass Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

> Produto prod3 = new Produto(400);> prod3.imprimeDados();

Page 31: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

SISTEMAS DEINFORMAÇÃO

31

31

3131 31

SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

31

31SISTEMAS DEINFORMAÇÃO

31

31

31

31SISTEMAS DEINFORMAÇÃO

3131

Construtor com thisclass Produto{double _preco;int _codigo;int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;_codigo = cod;_quantidade = qtd;

}

Produto (int cod, int qtd) {_codigo =cod;_quantidade = qtd;

}

Produto (int cod) {this (10,cod,100);

}

void imprimeDados() {System.out.println("Preço = " + _preco);System.out.println("Código = " + _codigo);System.out.println("Quantidade = " + _quantidade);

}

}

> Produto prod3 = new Produto(400);> prod3.imprimeDados();Preço = 10.0Código = 400Quantidade = 100

Page 32: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

SISTEMAS DEINFORMAÇÃO

32

32

3232 32

SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

32

32SISTEMAS DEINFORMAÇÃO

32

32

32

32SISTEMAS DEINFORMAÇÃO

3232

• Parâmetro com mesmo nome que atributo do objeto

Palavra reservada this – outro uso

class Produto{double preco;int codigo;int quantidade;

Produto (int cod, double pr, int quantidade ) {

preco = pr;codigo = cod;this.quantidade = quantidade;

}}

Page 33: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

SISTEMAS DEINFORMAÇÃO

33

33

3333 33

SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DEINFORMAÇÃO

33

33

33

33SISTEMAS DEINFORMAÇÃO

3333

• Parâmetro com mesmo nome que atributo do objeto

Palavra reservada this – outro uso

Deixa claro que se trata de um atributo do

objeto, pois o parâmetro recebido tem o

mesmo nome. Precisa diferenciar.

class Produto{double preco;int codigo;int quantidade;

Produto (int cod, double pr, int quantidade ) {

preco = pr;codigo = cod;this.quantidade = quantidade;

}}

Page 34: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

SISTEMAS DEINFORMAÇÃO

34

34

3434 34

SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

34

34SISTEMAS DEINFORMAÇÃO

34

34

34

34SISTEMAS DEINFORMAÇÃO

3434

Construtores

• Quando há mais de um construtor na classe:

• Têm o mesmo nome – diferem apenas nos

parâmetros.

• Quando invocado, o compilador Java escolhe o

construtor correto conforme a assinatura (tipos dos

parâmetros e sua ordem) .

• Esta técnica também pode ser usada para métodos

com mesmo nome e que recebem parâmetros

diferentes: polimorfismo de nome.

Page 35: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

SISTEMAS DEINFORMAÇÃO

35

35

3535 35

SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

35

35SISTEMAS DEINFORMAÇÃO

35

35

35

35SISTEMAS DEINFORMAÇÃO

3535

Exercício• Crie uma classe Aluno com os atributos: numeroUSP, ano

de matrícula (inteiros) e média ponderada (double). Implemente os seguintes métodos para esta classe:

• imprimeAluno: imprime atributos

• construtores:

a) recebe número e ano de matrícula e atualizaatributos correspondentes;

b) recebe e atualiza somente média ponderada;

c) recebe somente número (neste caso, deveassumir que o ano de matrícula é o ano correntee chamar o construtor correspondente).

Page 36: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

SISTEMAS DEINFORMAÇÃO

36

36

3636 36

SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

36

36SISTEMAS DEINFORMAÇÃO

36

36

36

36SISTEMAS DEINFORMAÇÃO

3636

• E o método adicionaEstoque ???

Especificadores de acesso

void adicionaEstoque(int qtde) {qteEstoque = qteEstoque + qtde;imprimeDados();

}

Page 37: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

SISTEMAS DEINFORMAÇÃO

37

37

3737 37

SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

37

37SISTEMAS DEINFORMAÇÃO

37

37

37

37SISTEMAS DEINFORMAÇÃO

3737

• Com os métodos construídos, usamos a proteção explícita, definindo o atributo com palavra chave private

Especificadores de acesso - private

class Produto2

{private double preco;private int codigo;

private String nome; private boolean temEstoque;private int qteEstoque;

....

Page 38: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

SISTEMAS DEINFORMAÇÃO

38

38

3838 38

SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

38

38SISTEMAS DEINFORMAÇÃO

38

38

38

38SISTEMAS DEINFORMAÇÃO

3838

• Contrário de private = public• A palavra chave public permite acesso irrestrito aos atributos.

Especificadores de acesso - public

class Produto2

{public double preco;public int codigo;

public String nome; public boolean temEstoque;public int qteEstoque;

....

Page 39: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

SISTEMAS DEINFORMAÇÃO

39

39

3939 39

SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

39

39SISTEMAS DEINFORMAÇÃO

39

39

39

39SISTEMAS DEINFORMAÇÃO

3939

• Para exemplificar os especificadores de

acesso, vamos abordar um problema de

segurança…

• Suponhamos que um usuário crie um

objeto de Produto.

• O que acontece após a execução deste

código?

Especificadores de acesso

Produto prod = new Produto(23.4, 45, 900)

prod.imprimeDados();

prod._quantidade = prod._quantidade - 100;

prod.imprimeDados();

class Produto{

double _preco;int _codigo;

int _quantidade;

Produto (double preco, int cod, int qtd) {_preco = preco;

_codigo = cod;_quantidade = qtd;

}

void imprimeDados() {

System.out.println("Preço = " + _preco);System.out.println("Código = " +

_codigo);

System.out.println("Quantidade = " + _quantidade);

}}

Page 40: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

SISTEMAS DEINFORMAÇÃO

40

40

4040 40

SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

40

40SISTEMAS DEINFORMAÇÃO

40

40

40

40SISTEMAS DEINFORMAÇÃO

4040

• Temos um problema de segurança!

• Não podemos permitir que qualquer usuário altere a quantidade de

mercadorias em estoque !!! (E se não tiver produto suficiente???? →

sistema em estado inconsistente)

• Como resolver ???

Especificadores de acesso

Produto prod = new Produto(23.4, 45, 900) prod.imprimeDados();prod._quantidade = prod._quantidade - 100;prod.imprimeDados();

Page 41: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

SISTEMAS DEINFORMAÇÃO

41

41

4141 41

SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

41

41SISTEMAS DEINFORMAÇÃO

41

41

41

41SISTEMAS DEINFORMAÇÃO

4141

• Para evitar problemas como este, podemos usar proteções explícitas, indicando que somente métodos do próprio objeto alterem os seus atributos.

Especificadores de acesso

Page 42: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

SISTEMAS DEINFORMAÇÃO

42

42

4242 42

SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

42

42SISTEMAS DEINFORMAÇÃO

42

42

42

42SISTEMAS DEINFORMAÇÃO

4242

• Então, vamos incluir os métodos subtraiEstoque e adicionaEstoque

na classe Produto, responsáveis por alterar a quantidade existente

do produto nos estoques da empresa.

• Como seria o método subtraiEstoque ???

Especificadores de acesso

Page 43: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

SISTEMAS DEINFORMAÇÃO

43

43

4343 43

SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

43

43SISTEMAS DEINFORMAÇÃO

43

43

43

43SISTEMAS DEINFORMAÇÃO

4343

void subtraiEstoque(int qtde) {if (qtde < 0) {System.out.println("Não é permitido quantidade negativa.");return;

}if (qtde > _quantidade) {System.out.println("Quantidade em estoque insuficiente.");imprimeDados();

}else{_quantidade = _quantidade - qtde;System.out.println("Atualização realizada");

}}

Especificadores de acesso

Page 44: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

SISTEMAS DEINFORMAÇÃO

44

44

4444 44

SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DEINFORMAÇÃO

44

44

44

44SISTEMAS DEINFORMAÇÃO

4444

• E o método adicionaEstoque ???

Especificadores de acesso

Page 45: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

SISTEMAS DEINFORMAÇÃO

45

45

4545 45

SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

45

45SISTEMAS DEINFORMAÇÃO

45

45

45

45SISTEMAS DEINFORMAÇÃO

4545

• E o método adicionaEstoque ???

Especificadores de acesso

void adicionaEstoque(int qtde) {

if (qtde < 0) System.out.println("Não é permitido quantidade negativa.");

else{

_quantidade = _quantidade + qtde;System.out.println("Atualização realizada.");

}}

Page 46: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

SISTEMAS DEINFORMAÇÃO

46

46

4646 46

SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

46

46SISTEMAS DEINFORMAÇÃO

46

46

46

46SISTEMAS DEINFORMAÇÃO

4646

• Com os métodos construídos, usamos a proteção explícita, definindo o atributo com palavra chave private

Especificadores de acesso - private

class Produto

{private double _preco;private int _codigo;

private int _quantidade;

....

Page 47: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

SISTEMAS DEINFORMAÇÃO

47

47

4747 47

SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

47

47SISTEMAS DEINFORMAÇÃO

47

47

47

47SISTEMAS DEINFORMAÇÃO

4747

• Com os métodos construídos, usamos a proteção explícita, definindo o atributo com palavra chave private

Especificadores de acesso - private

class Produto

{private double _preco;private int _codigo;

private int _quantidade;

....

Somente métodos pertencentes à

mesma classe poderão alterar os

atributos.

Page 48: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

SISTEMAS DEINFORMAÇÃO

48

48

4848 48

SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

48

48SISTEMAS DEINFORMAÇÃO

48

48

48

48SISTEMAS DEINFORMAÇÃO

4848

Especificadores de acesso - private

Método subtraiEstoque pertence à

mesma classe. Pode alterar o atributo

private.

class Produto

{private double _preco;

private int _codigo;

private int _quantidade;

....

void subtraiEstoque(int qtde) {

if (qtde > _quantidade) {

System.out.println("Quantidade em estoque insuficiente.");

imprimeDados();}

else {

_quantidade = _quantidade - qtde;

System.out.println("Atualização realizada");

}}

void adicionaEstoque(int qtde)

{

if (qtde < 0)

System.out.println("Não é permitido quantidade negativa.");

else {_quantidade = _quantidade + qtde;

System.out.println("Atualização realizada.");}

}

}

Método adicionaEstoque pertence à

mesma classe. Pode alterar o atributo

private.

Page 49: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

SISTEMAS DEINFORMAÇÃO

49

49

4949 49

SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

49

49SISTEMAS DEINFORMAÇÃO

49

49

49

49SISTEMAS DEINFORMAÇÃO

4949

Especificadores de acesso - private

O que acontece?

class AlteracaoProduto

{void alteraProduto() {

Produto prod = new Produto(67.9,34, 900);prod._quantidade = prod._quantidade - 800;

}

}

Page 50: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

SISTEMAS DEINFORMAÇÃO

50

50

5050 50

SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

50

50SISTEMAS DEINFORMAÇÃO

50

50

50

50SISTEMAS DEINFORMAÇÃO

5050

Especificadores de acesso - private

File: AlteraProduto.java [line: 6]Error: AlteraProduto.java:6: _quantidade has private access in Produto

class AlteracaoProduto

{

void alteraProduto() {

Produto prod = new Produto(67.9,34, 900);

prod._quantidade = prod._quantidade - 800;}

}

ERRO DE COMPILAÇÃO !!!!

Page 51: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

SISTEMAS DEINFORMAÇÃO

51

51

5151 51

SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

51

51SISTEMAS DEINFORMAÇÃO

51

51

51

51SISTEMAS DEINFORMAÇÃO

5151

Especificadores de acesso - privateclass AlteracaoProdutoCorreta

{

void alteraProduto() {

Produto prod = new Produto(67.9,34, 900);

prod.subtraiEstoque(800);prod.imprimeDados();

prod.adicionaEstoque(153);

prod.imprimeDados();

}}

Instanciação:

> AlteracaoProdutoCorreta apc = new

AlteracaoProdutoCorreta() ;> apc.alteraProduto() Atualização realizadaPreço = 67.9Código = 34Quantidade = 100Atualização realizadaPreço = 67.9Código = 34Quantidade = 253

Page 52: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

SISTEMAS DEINFORMAÇÃO

52

52

5252 52

SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

52

52SISTEMAS DEINFORMAÇÃO

52

52

52

52SISTEMAS DEINFORMAÇÃO

5252

• Contrário de private = public• A palavra chave public permite acesso irrestrito aos atributos.

Especificadores de acesso - public

class Produto

{public double _preco;public int _codigo;

public int _quantidade;

....

Page 53: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

SISTEMAS DEINFORMAÇÃO

53

53

5353 53

SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

53

53SISTEMAS DEINFORMAÇÃO

53

53

53

53SISTEMAS DEINFORMAÇÃO

5353

• Os especificadores de acesso também podem ser usados com os métodos:

• Exemplo:private imprimeDados() – somente métodos daquele objeto podem invocar este método

• Quando nenhum especificador é usado:• Java usa o acesso friendly = permite a visibilidade somente dentro do mesmo pacote (pacote M diretório)

Especificadores de acesso

Page 54: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

SISTEMAS DEINFORMAÇÃO

54

54

5454 54

SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

54

54SISTEMAS DEINFORMAÇÃO

54

54

54

54SISTEMAS DEINFORMAÇÃO

5454

• Exemplos no DrJava

• Classes: Produto, Especificadores

Especificadores de acesso

Page 55: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

SISTEMAS DEINFORMAÇÃO

55

55

5555 55

SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DEINFORMAÇÃO

55

55

55

55SISTEMAS DEINFORMAÇÃO

5555

Boa prática de programação

• Normalmente usamos– private em cada atributo– métodos public de acesso a esses atributos

• Ex:class X{

private tipo _atributoY;public tipo obtemAtributoY() { return _atributoY; }public void alteraAtributoY(tipo atr) { _atributoY = atr; }

}

Page 56: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

SISTEMAS DEINFORMAÇÃO

56

56

5656 56

SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

56

56SISTEMAS DEINFORMAÇÃO

56

56

56

56SISTEMAS DEINFORMAÇÃO

5656

Exemplo de aplicabilidade• Você escreveu uma classe Estoque

– vetor de Produtos (public) – número de produtos cadastrados– Suponha que você confia plenamente que os seus usuários (da classe Estoque) vão manter consistentes o vetor e o número de produtos cadastrados (Hahá – bad idea...)

– Eles sabem que podem inserir novos produtos sequencialmente, pois a busca será sequencial

– Vo percebe que, com o crescimento do estoque a busca está ficando lenta, e resolve usar busca binária → manter o vetor ordenadoodos os programas que usam a classe Estoque devem ser analisados para alterar a estratégia de inserção dos produtos

Você deve confiar que os produtos sempre são inseridos de forma ordenada

Page 57: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

SISTEMAS DEINFORMAÇÃO

57

57

5757 57

SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

57

57SISTEMAS DEINFORMAÇÃO

57

57

57

57SISTEMAS DEINFORMAÇÃO

5757

Exemplo de aplicabilidade• Você escreveu uma classe Estoque

– vetor de Produtos (public) – nr de produtos cadastrados– Suponha que você confia plenamente que os seus usuários (da classe Estoque) vão manter o vetor e o nr de produtos cadastrados consistente (Hahá – bad idea...)

– Eles sabem que podem inserir novos produtos sequencialmente, pois a busca será sequencial

– Você percebe que, com o crescimento do estoque a busca está ficando lenta, e resolve usar busca binária → manter o vetor ordenadoTodos os programas que usam a classe Estoque devem ser analisados para alterar a estratégia de inserção dos produtos

Você deve confiar que os produtos sempre são inseridos de forma ordenada

Page 58: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

SISTEMAS DEINFORMAÇÃO

58

58

5858 58

SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

58

58SISTEMAS DEINFORMAÇÃO

58

58

58

58SISTEMAS DEINFORMAÇÃO

5858

Exemplo de aplicabilidade• Você escreveu uma classe Estoque

– vetor de Produtos (public) – nr de produtos cadastrados– Suponha que você confia plenamente que os seus usuários (da classe Estoque) vão manter o vetor e o nr de produtos cadastrados consistente (Hahá – bad idea...)

– Eles sabem que podem inserir novos produtos sequencialmente, pois a busca será sequencial

– Você percebe que, com o crescimento do estoque a busca está ficando lenta, e resolve usar busca binária → manter o vetor ordenadoodos os programas que usam a classe Estoque devem ser analisados para alterar a estratégia de inserção dos produtos

Você deve confiar que os produtos sempre são inseridos de forma ordenada

Page 59: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

SISTEMAS DEINFORMAÇÃO

59

59

5959 59

SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

59

59SISTEMAS DEINFORMAÇÃO

59

59

59

59SISTEMAS DEINFORMAÇÃO

5959

Exemplo de aplicabilidade• Você escreveu uma classe Estoque

– vetor de Produtos (public) – nr de produtos cadastrados– Suponha que você confia plenamente que os seus usuários (da classe Estoque) vão manter o vetor e o nr de produtos cadastrados consistente (Hahá – bad idea...)

– Eles sabem que podem inserir novos produtos sequencialmente, pois a busca será sequencial

– Você percebe que, com o crescimento do estoque a busca está ficando lenta, e resolve usar busca binária → manter o vetor ordenado

• Todos os programas que usam a classe Estoque devem ser analisados para alterar a estratégia de inserção dos produtos

• Você deve confiar que os produtos sempre são inseridos de forma ordenada

Page 60: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

SISTEMAS DEINFORMAÇÃO

60

60

6060 60

SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

60

60SISTEMAS DEINFORMAÇÃO

60

60

60

60SISTEMAS DEINFORMAÇÃO

6060

Boa prática de programação• ENCAPSULAMENTO!!!• Exemplo:

– Classe Estoque– Tem um conjunto de produtos

• Vetor? Não preciso saber– Métodos fornecem uma interface para a aplicação (API)

• Método para consultar um produto– Busca binária? Busca sequencial? Não importa!

• Métodos para inserir e remover um produto– Mantém os produtos ordenados? Não sei!

• Se o desenvolvedor quiser mudar a implementação não afeta os usuários da API (nem mesmo você!!!), pois estes não dependem da implementação interna

Page 61: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

SISTEMAS DEINFORMAÇÃO

61

61

6161 61

SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

61

61SISTEMAS DEINFORMAÇÃO

61

61

61

61SISTEMAS DEINFORMAÇÃO

6161

• Especificador static indica quais atributos

devem ser considerados pertencentes à classe

e não específicos a cada objeto

Especificadores de acesso - static

class TesteStatic

{static int _quantidade = 0; //atributo de classeTesteStatic()

{System.out.println("Criando um objeto do tipo TesteStatic");_quantidade++;

System.out.println("Quantidade de objetos do tipo TesteStatic criados até agora:" + _quantidade);

}

}

Page 62: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

SISTEMAS DEINFORMAÇÃO

62

62

6262 62

SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

62

62SISTEMAS DEINFORMAÇÃO

62

62

62

62SISTEMAS DEINFORMAÇÃO

6262

• Exemplos no DrJava

• Classe: TesteStatic

Especificadores de acesso

> TesteStatic ts = new TesteStatic()

Criando um objeto do tipo TesteStatic

Quantidade de objetos do tipo TesteStatic criados até agora:1

> TesteStatic ts = new TesteStatic()

Criando um objeto do tipo TesteStatic

Quantidade de objetos do tipo TesteStatic criados até agora:2

> TesteStatic ts = new TesteStatic()

Criando um objeto do tipo TesteStatic

Quantidade de objetos do tipo TesteStatic criados até agora:3

class TesteStatic{

static int _quantidade = 0;TesteStatic() {System.out.println("Criando um

objeto do tipo TesteStatic");_quantidade++;System.out.println("Quantidade de

objetos do tipo TesteStatic criados até agora:" + _quantidade);

}}

Page 63: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

SISTEMAS DEINFORMAÇÃO

63

63

6363 63

SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

63

63SISTEMAS DEINFORMAÇÃO

63

63

63

63SISTEMAS DEINFORMAÇÃO

6363

• Exemplos no DrJava

• Classe: TesteSemStatic

Especificadores de acesso

> TesteSemStatic tss= new TesteSemStatic()

Criando um objeto do tipo TesteStatic

Quantidade de objetos do tipo TesteSemStatic criados até

agora:1

> TesteSemStatic tss= new TesteSemStatic()

Criando um objeto do tipo TesteStatic

Quantidade de objetos do tipo TesteSemStatic criados até

agora:1

> TesteSemStatic tss= new TesteSemStatic()

Criando um objeto do tipo TesteStatic

Quantidade de objetos do tipo TesteSemStatic criados até

agora:1

class TesteSemStatic{

int _quantidade = 0;TesteSemStatic() {System.out.println("Criando um

objeto do tipo TesteStatic");_quantidade++;System.out.println("Quantidade

de objetos do tipo TesteSemStatic criados até agora:" + _quantidade);

}}

Page 64: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

SISTEMAS DEINFORMAÇÃO

64

64

6464 64

SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

64

64SISTEMAS DEINFORMAÇÃO

64

64

64

64SISTEMAS DEINFORMAÇÃO

6464

• Métodos static também são métodos da classe

• podem ser chamados mesmo se não houver

objetos da classe criadosão podem manipular

atributos de instância nem chamar métodos de

instância (por quê?)

• Exemplo: métodos da classe Math

• podemos executar Math.sin(double x), mesmo

sem ter instanciado a classe Math.ue outro

método vocês conhecem que é static?

Especificadores de acesso - static

Page 65: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

SISTEMAS DEINFORMAÇÃO

65

65

6565 65

SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

65

65SISTEMAS DEINFORMAÇÃO

65

65

65

65SISTEMAS DEINFORMAÇÃO

6565

• Exemplos no DrJava

• Classe: ExemploMetodoStatic

Especificadores de acesso

> ExemploMetodoStatic.imprimeValor()

Valor do atributo _quantidade:768

class ExemploMetodoStatic

{

static int _quantidade = 768;

static void imprimeValor()

{

System.out.println("Valor do atributo

_quantidade:" + _quantidade);

}

}

Page 66: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

SISTEMAS DEINFORMAÇÃO

66

66

6666 66

SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DEINFORMAÇÃO

66

66

66

66SISTEMAS DEINFORMAÇÃO

6666

• Métodos static também são métodos da classe

• podem ser chamados mesmo se não houver

objetos da classe criados

• Não podem manipular atributos de instância

nem chamar métodos de instância (por quê?)

• Exemplo: métodos da classe Math

• podemos executar Math.sin(double x), mesmo

sem ter instanciado a classe Math.

Especificadores de acesso - static

Page 67: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

SISTEMAS DEINFORMAÇÃO

67

67

6767 67

SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

67

67SISTEMAS DEINFORMAÇÃO

67

67

67

67SISTEMAS DEINFORMAÇÃO

6767

• Especificador final

• permite definir variáveis que não podem mais

ter o seu valor modificado (constantes)

• Exemplo:

final double PI = 3.1416;

• Pode misturar especificadores:

static final double PI = 3.1416;

Especificadores de acesso - final

Page 68: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

SISTEMAS DEINFORMAÇÃO

68

68

6868 68

SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

68

68SISTEMAS DEINFORMAÇÃO

68

68

68

68SISTEMAS DEINFORMAÇÃO

6868

• Exemplos no DrJava

• Classe: ExemploFinal

Especificadores de acesso

> ExemploFinal.imprimeValor()

Valor de PI:3.1416

class ExemploFinal

{

static final double PI = 3.1416;

static void imprimeValor()

{

System.out.println("Valor de PI:" + PI);

}

}

Page 69: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

SISTEMAS DEINFORMAÇÃO

69

69

6969 69

SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

69

69SISTEMAS DEINFORMAÇÃO

69

69

69

69SISTEMAS DEINFORMAÇÃO

6969

Especificadores de acesso - final

• Estilo: constantes são escritas com letras maiúsculas, usando hifens para separar as palavras se necessário:– final int NR_LINHAS = 30;

Page 70: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

SISTEMAS DEINFORMAÇÃO

70

70

7070 70

SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

70

70SISTEMAS DEINFORMAÇÃO

70

70

70

70SISTEMAS DEINFORMAÇÃO

7070

Escreva uma classe Funcionario que tenha os atributos número funcional, nome, salário, porcentagemComissao, aliquotaImpostoRenda e qtdeFuncionariosCriados, com as seguintes especificações:• os dados pessoais (número, nome e salário) devem ser fornecidos no momento dacriação do objeto da classe;

• a alíquota do Imposto de renda é uma variável que não pode ser mudada apósinicializada;

• o salário não pode ser alterado pelo usuário por meio de acesso direto;• qtdeFuncionariosCriados é um atributo da classe e não específico de cada objeto;• Crie os seguintesmétodos (faça as considerações necessárias sobre tipos de atributos, métodos e especificadores de acesso):

• alteraComissao (porcentagem) – altera porcentagem da comissão para o funcionário• calculaComissao() – calcula a Comissão – salário multiplicado pela porcentagem• calculaImpostoRenda() – calcula o IR: (salario + comissao) * alíquota• imprimeDados - imprime dados do funcionário.• main - cria três funcionários diferentes, inclui a porcentagem de comissão e

calcula a comissão e IR de cada um deles, imprime todos os dados do funcionário e imprime a quantidade total de funcionário incluídos.

Exercício

Page 71: Construtores e Especificadores de Acesso · SISTEMAS DE INFORMAÇÃO 2 2 22 Orientação a Objetos • Conceitos do Paradigma de Orientação a Objetos já vistos: – Classes –atributos

SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

SISTEMAS DEINFORMAÇÃO

71

71

7171 71

SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

71

71SISTEMAS DEINFORMAÇÃO

71

71

71

71SISTEMAS DEINFORMAÇÃO

7171

Professoras:

Fátima L. S. Nunes

Construtores

e

Especificadores de Acesso