75
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 Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman Herança

Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DE

INFORMAÇÃO1

11

1SISTEMAS DEINFORMAÇÃO

11SISTEMAS DE

INFORMAÇÃO1

11

1SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DE

INFORMAÇÃO1

1SISTEMAS DEINFORMAÇÃO

11

1

SISTEMAS DEINFORMAÇÃO

11

11 1SISTEMAS DE

INFORMAÇÃO1

11

1SISTEMAS DEINFORMAÇÃO

11SISTEMAS DE

INFORMAÇÃO1

11

1SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DE

INFORMAÇÃO1

1SISTEMAS DEINFORMAÇÃO

11

11SISTEMAS DE

INFORMAÇÃO11

Fátima L. S. NunesLuciano A. DigiampietriNorton T. Roman

Herança

Page 2: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DE

INFORMAÇÃO2

22

2SISTEMAS DEINFORMAÇÃO

22SISTEMAS DE

INFORMAÇÃO2

22

2SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DE

INFORMAÇÃO2

2SISTEMAS DEINFORMAÇÃO

22

2

SISTEMAS DEINFORMAÇÃO

22

22 2SISTEMAS DE

INFORMAÇÃO2

22

2SISTEMAS DEINFORMAÇÃO

22SISTEMAS DE

INFORMAÇÃO2

22

2SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DE

INFORMAÇÃO2

2SISTEMAS DEINFORMAÇÃO

22

22SISTEMAS DE

INFORMAÇÃO22

Motivação

• Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP

• Precisa fazer:– Cadastro de alunos e professores– Há professores doutores e não doutores

Page 3: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DE

INFORMAÇÃO3

33

3SISTEMAS DEINFORMAÇÃO

33SISTEMAS DE

INFORMAÇÃO3

33

3SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DE

INFORMAÇÃO3

3SISTEMAS DEINFORMAÇÃO

33

3

SISTEMAS DEINFORMAÇÃO

33

33 3SISTEMAS DE

INFORMAÇÃO3

33

3SISTEMAS DEINFORMAÇÃO

33SISTEMAS DE

INFORMAÇÃO3

33

3SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DE

INFORMAÇÃO3

3SISTEMAS DEINFORMAÇÃO

33

33SISTEMAS DE

INFORMAÇÃO33

class Aluno

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ + _anoDeIngresso);System.out.println(“Curso: “ + _curso);

}

}

Page 4: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DE

INFORMAÇÃO4

44

4SISTEMAS DEINFORMAÇÃO

44SISTEMAS DE

INFORMAÇÃO4

44

4SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DE

INFORMAÇÃO4

4SISTEMAS DEINFORMAÇÃO

44

4

SISTEMAS DEINFORMAÇÃO

44

44 4SISTEMAS DE

INFORMAÇÃO4

44

4SISTEMAS DEINFORMAÇÃO

44SISTEMAS DE

INFORMAÇÃO4

44

4SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DE

INFORMAÇÃO4

4SISTEMAS DEINFORMAÇÃO

44

44SISTEMAS DE

INFORMAÇÃO44

class Professor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);

}

}

Page 5: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DE

INFORMAÇÃO5

55

5SISTEMAS DEINFORMAÇÃO

55SISTEMAS DE

INFORMAÇÃO5

55

5SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DE

INFORMAÇÃO5

5SISTEMAS DEINFORMAÇÃO

55

5

SISTEMAS DEINFORMAÇÃO

55

55 5SISTEMAS DE

INFORMAÇÃO5

55

5SISTEMAS DEINFORMAÇÃO

55SISTEMAS DE

INFORMAÇÃO5

55

5SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DE

INFORMAÇÃO5

5SISTEMAS DEINFORMAÇÃO

55

55SISTEMAS DE

INFORMAÇÃO55

class ProfessorDoutor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);

}

}

Page 6: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DE

INFORMAÇÃO6

66

6SISTEMAS DEINFORMAÇÃO

66SISTEMAS DE

INFORMAÇÃO6

66

6SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DE

INFORMAÇÃO6

6SISTEMAS DEINFORMAÇÃO

66

6

SISTEMAS DEINFORMAÇÃO

66

66 6SISTEMAS DE

INFORMAÇÃO6

66

6SISTEMAS DEINFORMAÇÃO

66SISTEMAS DE

INFORMAÇÃO6

66

6SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DE

INFORMAÇÃO6

6SISTEMAS DEINFORMAÇÃO

66

66SISTEMAS DE

INFORMAÇÃO66

• O que você vê de estranho aqui? Algo o incomoda?

Page 7: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

77

77SISTEMAS DE

INFORMAÇÃO7

77

7SISTEMAS DEINFORMAÇÃO

77SISTEMAS DE

INFORMAÇÃO7

77

7SISTEMAS DEINFORMAÇÃO

77

77SISTEMAS DE

INFORMAÇÃO7

7SISTEMAS DEINFORMAÇÃO

77

7

SISTEMAS DEINFORMAÇÃO

77

77 7SISTEMAS DE

INFORMAÇÃO7

77

7SISTEMAS DEINFORMAÇÃO

77SISTEMAS DE

INFORMAÇÃO7

77

7SISTEMAS DEINFORMAÇÃO

77

77SISTEMAS DE

INFORMAÇÃO7

7SISTEMAS DEINFORMAÇÃO

77

77SISTEMAS DE

INFORMAÇÃO77

• O que você vê de estranho aqui? Algo o incomoda?

• São três classe com quase todo o código repetido!!!

Page 8: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

88

88SISTEMAS DE

INFORMAÇÃO8

88

8SISTEMAS DEINFORMAÇÃO

88SISTEMAS DE

INFORMAÇÃO8

88

8SISTEMAS DEINFORMAÇÃO

88

88SISTEMAS DE

INFORMAÇÃO8

8SISTEMAS DEINFORMAÇÃO

88

8

SISTEMAS DEINFORMAÇÃO

88

88 8SISTEMAS DE

INFORMAÇÃO8

88

8SISTEMAS DEINFORMAÇÃO

88SISTEMAS DE

INFORMAÇÃO8

88

8SISTEMAS DEINFORMAÇÃO

88

88SISTEMAS DE

INFORMAÇÃO8

8SISTEMAS DEINFORMAÇÃO

88

88SISTEMAS DE

INFORMAÇÃO88

class Aluno

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ + _anoDeIngresso);System.out.println(“Curso: “ + _curso);

}

}

Page 9: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

99

99SISTEMAS DE

INFORMAÇÃO9

99

9SISTEMAS DEINFORMAÇÃO

99SISTEMAS DE

INFORMAÇÃO9

99

9SISTEMAS DEINFORMAÇÃO

99

99SISTEMAS DE

INFORMAÇÃO9

9SISTEMAS DEINFORMAÇÃO

99

9

SISTEMAS DEINFORMAÇÃO

99

99 9SISTEMAS DE

INFORMAÇÃO9

99

9SISTEMAS DEINFORMAÇÃO

99SISTEMAS DE

INFORMAÇÃO9

99

9SISTEMAS DEINFORMAÇÃO

99

99SISTEMAS DE

INFORMAÇÃO9

9SISTEMAS DEINFORMAÇÃO

99

99SISTEMAS DE

INFORMAÇÃO99

class Professor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);

}

}

Page 10: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1010

1010SISTEMAS DE

INFORMAÇÃO10

1010

10SISTEMAS DEINFORMAÇÃO

1010SISTEMAS DE

INFORMAÇÃO10

1010

10SISTEMAS DEINFORMAÇÃO

1010

1010SISTEMAS DE

INFORMAÇÃO10

10SISTEMAS DEINFORMAÇÃO

1010

10

SISTEMAS DEINFORMAÇÃO

1010

1010 10SISTEMAS DE

INFORMAÇÃO10

1010

10SISTEMAS DEINFORMAÇÃO

1010SISTEMAS DE

INFORMAÇÃO10

1010

10SISTEMAS DEINFORMAÇÃO

1010

1010SISTEMAS DE

INFORMAÇÃO10

10SISTEMAS DEINFORMAÇÃO

1010

1010SISTEMAS DE

INFORMAÇÃO1010

class ProfessorDoutor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);

}

}

Page 11: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1111

1111SISTEMAS DE

INFORMAÇÃO11

1111

11SISTEMAS DEINFORMAÇÃO

1111SISTEMAS DE

INFORMAÇÃO11

1111

11SISTEMAS DEINFORMAÇÃO

1111

1111SISTEMAS DE

INFORMAÇÃO11

11SISTEMAS DEINFORMAÇÃO

1111

11

SISTEMAS DEINFORMAÇÃO

1111

1111 11SISTEMAS DE

INFORMAÇÃO11

1111

11SISTEMAS DEINFORMAÇÃO

1111SISTEMAS DE

INFORMAÇÃO11

1111

11SISTEMAS DEINFORMAÇÃO

1111

1111SISTEMAS DE

INFORMAÇÃO11

11SISTEMAS DEINFORMAÇÃO

1111

1111SISTEMAS DE

INFORMAÇÃO1111

class Professor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// métodos de acesso (public) (...)(public void imprimeDados(){

System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);

}

}

Page 12: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1212

1212SISTEMAS DE

INFORMAÇÃO12

1212

12SISTEMAS DEINFORMAÇÃO

1212SISTEMAS DE

INFORMAÇÃO12

1212

12SISTEMAS DEINFORMAÇÃO

1212

1212SISTEMAS DE

INFORMAÇÃO12

12SISTEMAS DEINFORMAÇÃO

1212

12

SISTEMAS DEINFORMAÇÃO

1212

1212 12SISTEMAS DE

INFORMAÇÃO12

1212

12SISTEMAS DEINFORMAÇÃO

1212SISTEMAS DE

INFORMAÇÃO12

1212

12SISTEMAS DEINFORMAÇÃO

1212

1212SISTEMAS DE

INFORMAÇÃO12

12SISTEMAS DEINFORMAÇÃO

1212

1212SISTEMAS DE

INFORMAÇÃO1212

class ProfessorDoutor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// métodos de acesso (public) (...)(public void imprimeDados(){

System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);

}

}

Page 13: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1313

1313SISTEMAS DE

INFORMAÇÃO13

1313

13SISTEMAS DEINFORMAÇÃO

1313SISTEMAS DE

INFORMAÇÃO13

1313

13SISTEMAS DEINFORMAÇÃO

1313

1313SISTEMAS DE

INFORMAÇÃO13

13SISTEMAS DEINFORMAÇÃO

1313

13

SISTEMAS DEINFORMAÇÃO

1313

1313 13SISTEMAS DE

INFORMAÇÃO13

1313

13SISTEMAS DEINFORMAÇÃO

1313SISTEMAS DE

INFORMAÇÃO13

1313

13SISTEMAS DEINFORMAÇÃO

1313

1313SISTEMAS DE

INFORMAÇÃO13

13SISTEMAS DEINFORMAÇÃO

1313

1313SISTEMAS DE

INFORMAÇÃO1313

• O que você vê de estranho aqui? Algo o incomoda?

• São três classe com quase todo o código repetido!!!– Repetição do trabalho:

• desperdício de tempo de desenvolvimento• desperdício de tempo de validação do código (teste

das mesmas coisas....)

– Mudanças em uma parte comum a elas devem ser feitas (e testadas novamente) nas três classes!

• Há uma solução?

Page 14: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1414

1414SISTEMAS DE

INFORMAÇÃO14

1414

14SISTEMAS DEINFORMAÇÃO

1414SISTEMAS DE

INFORMAÇÃO14

1414

14SISTEMAS DEINFORMAÇÃO

1414

1414SISTEMAS DE

INFORMAÇÃO14

14SISTEMAS DEINFORMAÇÃO

1414

14

SISTEMAS DEINFORMAÇÃO

1414

1414 14SISTEMAS DE

INFORMAÇÃO14

1414

14SISTEMAS DEINFORMAÇÃO

1414SISTEMAS DE

INFORMAÇÃO14

1414

14SISTEMAS DEINFORMAÇÃO

1414

1414SISTEMAS DE

INFORMAÇÃO14

14SISTEMAS DEINFORMAÇÃO

1414

1414SISTEMAS DE

INFORMAÇÃO1414

• O que você vê de estranho aqui? Algo o incomoda?

• São três classe com quase todo o código repetido!!!– Repetição do trabalho

• desperdício de tempo de desenvolvimento• desperdício de tempo de validação do código (teste

das mesmas coisas....)

– Mudanças em uma parte comum a elas devem ser feitas (e testadas novamente) nas três classes!

• Há uma solução?

REUSO DE SOFTWARE

Page 15: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1515

1515SISTEMAS DE

INFORMAÇÃO15

1515

15SISTEMAS DEINFORMAÇÃO

1515SISTEMAS DE

INFORMAÇÃO15

1515

15SISTEMAS DEINFORMAÇÃO

1515

1515SISTEMAS DE

INFORMAÇÃO15

15SISTEMAS DEINFORMAÇÃO

1515

15

SISTEMAS DEINFORMAÇÃO

1515

1515 15SISTEMAS DE

INFORMAÇÃO15

1515

15SISTEMAS DEINFORMAÇÃO

1515SISTEMAS DE

INFORMAÇÃO15

1515

15SISTEMAS DEINFORMAÇÃO

1515

1515SISTEMAS DE

INFORMAÇÃO15

15SISTEMAS DEINFORMAÇÃO

1515

1515SISTEMAS DE

INFORMAÇÃO1515

Reuso e Herança

• Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento de software em geral

• Uma das formas de fazer REUSO em POO é através do mecanismo de herança

• Fatorar o que é comum, e implementar o que for diferente

Page 16: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1616

1616SISTEMAS DE

INFORMAÇÃO16

1616

16SISTEMAS DEINFORMAÇÃO

1616SISTEMAS DE

INFORMAÇÃO16

1616

16SISTEMAS DEINFORMAÇÃO

1616

1616SISTEMAS DE

INFORMAÇÃO16

16SISTEMAS DEINFORMAÇÃO

1616

16

SISTEMAS DEINFORMAÇÃO

1616

1616 16SISTEMAS DE

INFORMAÇÃO16

1616

16SISTEMAS DEINFORMAÇÃO

1616SISTEMAS DE

INFORMAÇÃO16

1616

16SISTEMAS DEINFORMAÇÃO

1616

1616SISTEMAS DE

INFORMAÇÃO16

16SISTEMAS DEINFORMAÇÃO

1616

1616SISTEMAS DE

INFORMAÇÃO1616

Herança

Pessoa

Aluno Professor

ProfessorDoutor

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

private int _anoDeAdmissao;

private String _departamento;

private int _anoObtencaoDoutorado;

private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

Classes filhas HERDAM atributos e código da classe mãe!

Page 17: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1717

1717SISTEMAS DE

INFORMAÇÃO17

1717

17SISTEMAS DEINFORMAÇÃO

1717SISTEMAS DE

INFORMAÇÃO17

1717

17SISTEMAS DEINFORMAÇÃO

1717

1717SISTEMAS DE

INFORMAÇÃO17

17SISTEMAS DEINFORMAÇÃO

1717

17

SISTEMAS DEINFORMAÇÃO

1717

1717 17SISTEMAS DE

INFORMAÇÃO17

1717

17SISTEMAS DEINFORMAÇÃO

1717SISTEMAS DE

INFORMAÇÃO17

1717

17SISTEMAS DEINFORMAÇÃO

1717

1717SISTEMAS DE

INFORMAÇÃO17

17SISTEMAS DEINFORMAÇÃO

1717

1717SISTEMAS DE

INFORMAÇÃO1717

Herança

Pessoa

Aluno Professor

ProfessorDoutor

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

private int _anoDeAdmissao;

private String _departamento;

private int _anoObtencaoDoutorado;

private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

Superclasse(de Aluno,Professor eProfessorDoutor)

Page 18: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1818

1818SISTEMAS DE

INFORMAÇÃO18

1818

18SISTEMAS DEINFORMAÇÃO

1818SISTEMAS DE

INFORMAÇÃO18

1818

18SISTEMAS DEINFORMAÇÃO

1818

1818SISTEMAS DE

INFORMAÇÃO18

18SISTEMAS DEINFORMAÇÃO

1818

18

SISTEMAS DEINFORMAÇÃO

1818

1818 18SISTEMAS DE

INFORMAÇÃO18

1818

18SISTEMAS DEINFORMAÇÃO

1818SISTEMAS DE

INFORMAÇÃO18

1818

18SISTEMAS DEINFORMAÇÃO

1818

1818SISTEMAS DE

INFORMAÇÃO18

18SISTEMAS DEINFORMAÇÃO

1818

1818SISTEMAS DE

INFORMAÇÃO1818

Herança

Pessoa

Aluno Professor

ProfessorDoutor

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

private int _anoDeAdmissao;

private String _departamento;

private int _anoObtencaoDoutorado;

private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

Superclasse(de Aluno,Professor eProfessorDoutor)P

Subclasse(de Pessoa)

Page 19: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

1919

1919SISTEMAS DE

INFORMAÇÃO19

1919

19SISTEMAS DEINFORMAÇÃO

1919SISTEMAS DE

INFORMAÇÃO19

1919

19SISTEMAS DEINFORMAÇÃO

1919

1919SISTEMAS DE

INFORMAÇÃO19

19SISTEMAS DEINFORMAÇÃO

1919

19

SISTEMAS DEINFORMAÇÃO

1919

1919 19SISTEMAS DE

INFORMAÇÃO19

1919

19SISTEMAS DEINFORMAÇÃO

1919SISTEMAS DE

INFORMAÇÃO19

1919

19SISTEMAS DEINFORMAÇÃO

1919

1919SISTEMAS DE

INFORMAÇÃO19

19SISTEMAS DEINFORMAÇÃO

1919

1919SISTEMAS DE

INFORMAÇÃO1919

Herança

Pessoa

Aluno Professor

ProfessorDoutor

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

private int _anoDeAdmissao;

private String _departamento;

private int _anoObtencaoDoutorado;

private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

Superclasse(de Aluno,Professor eProfessorDoutor)P

Subclasse(de Pessoa)

Subclasse (de Pessoa) eSuperclasse deProfessorDoutor

Page 20: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2020

2020SISTEMAS DE

INFORMAÇÃO20

2020

20SISTEMAS DEINFORMAÇÃO

2020SISTEMAS DE

INFORMAÇÃO20

2020

20SISTEMAS DEINFORMAÇÃO

2020

2020SISTEMAS DE

INFORMAÇÃO20

20SISTEMAS DEINFORMAÇÃO

2020

20

SISTEMAS DEINFORMAÇÃO

2020

2020 20SISTEMAS DE

INFORMAÇÃO20

2020

20SISTEMAS DEINFORMAÇÃO

2020SISTEMAS DE

INFORMAÇÃO20

2020

20SISTEMAS DEINFORMAÇÃO

2020

2020SISTEMAS DE

INFORMAÇÃO20

20SISTEMAS DEINFORMAÇÃO

2020

2020SISTEMAS DE

INFORMAÇÃO2020

Herança

Pessoa

Aluno Professor

ProfessorDoutor

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

private int _anoDeAdmissao;

private String _departamento;

private int _anoObtencaoDoutorado;

private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

Superclasse(de Aluno,Professor eProfessorDoutor)

Subclasse(de Pessoa)

Subclasse (de Pessoa) eSuperclasse deProfessorDoutor

Subclasse(de Pessoa e deProfessor)

Page 21: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2121

2121SISTEMAS DE

INFORMAÇÃO21

2121

21SISTEMAS DEINFORMAÇÃO

2121SISTEMAS DE

INFORMAÇÃO21

2121

21SISTEMAS DEINFORMAÇÃO

2121

2121SISTEMAS DE

INFORMAÇÃO21

21SISTEMAS DEINFORMAÇÃO

2121

21

SISTEMAS DEINFORMAÇÃO

2121

2121 21SISTEMAS DE

INFORMAÇÃO21

2121

21SISTEMAS DEINFORMAÇÃO

2121SISTEMAS DE

INFORMAÇÃO21

2121

21SISTEMAS DEINFORMAÇÃO

2121

2121SISTEMAS DE

INFORMAÇÃO21

21SISTEMAS DEINFORMAÇÃO

2121

2121SISTEMAS DE

INFORMAÇÃO2121

Implementação de herança em Java

Page 22: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2222

2222SISTEMAS DE

INFORMAÇÃO22

2222

22SISTEMAS DEINFORMAÇÃO

2222SISTEMAS DE

INFORMAÇÃO22

2222

22SISTEMAS DEINFORMAÇÃO

2222

2222SISTEMAS DE

INFORMAÇÃO22

22SISTEMAS DEINFORMAÇÃO

2222

22

SISTEMAS DEINFORMAÇÃO

2222

2222 22SISTEMAS DE

INFORMAÇÃO22

2222

22SISTEMAS DEINFORMAÇÃO

2222SISTEMAS DE

INFORMAÇÃO22

2222

22SISTEMAS DEINFORMAÇÃO

2222

2222SISTEMAS DE

INFORMAÇÃO22

22SISTEMAS DEINFORMAÇÃO

2222

2222SISTEMAS DE

INFORMAÇÃO2222

class Pessoa{

private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;// métodos de acesso (public) a esses 5 atributos(...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);

}}

Page 23: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2323

2323SISTEMAS DE

INFORMAÇÃO23

2323

23SISTEMAS DEINFORMAÇÃO

2323SISTEMAS DE

INFORMAÇÃO23

2323

23SISTEMAS DEINFORMAÇÃO

2323

2323SISTEMAS DE

INFORMAÇÃO23

23SISTEMAS DEINFORMAÇÃO

2323

23

SISTEMAS DEINFORMAÇÃO

2323

2323 23SISTEMAS DE

INFORMAÇÃO23

2323

23SISTEMAS DEINFORMAÇÃO

2323SISTEMAS DE

INFORMAÇÃO23

2323

23SISTEMAS DEINFORMAÇÃO

2323

2323SISTEMAS DE

INFORMAÇÃO23

23SISTEMAS DEINFORMAÇÃO

2323

2323SISTEMAS DE

INFORMAÇÃO2323

class Aluno

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ +

_anoDeIngresso);System.out.println(“Curso: “ + _curso);

}

}

class Aluno extends Pessoa

{private int _anoDeIngresso;

private String _curso;// 2 pares de métodos de acesso

(public) (...)

public void imprimeDados(){

?System.out.println(“Ano de

ingresso: “ +

_anoDeIngresso);

System.out.println(“Curso: “ + _curso);

}

}

VERSÃO ANTIGA VERSÃO COM HERANÇA

Page 24: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2424

2424SISTEMAS DE

INFORMAÇÃO24

2424

24SISTEMAS DEINFORMAÇÃO

2424SISTEMAS DE

INFORMAÇÃO24

2424

24SISTEMAS DEINFORMAÇÃO

2424

2424SISTEMAS DE

INFORMAÇÃO24

24SISTEMAS DEINFORMAÇÃO

2424

24

SISTEMAS DEINFORMAÇÃO

2424

2424 24SISTEMAS DE

INFORMAÇÃO24

2424

24SISTEMAS DEINFORMAÇÃO

2424SISTEMAS DE

INFORMAÇÃO24

2424

24SISTEMAS DEINFORMAÇÃO

2424

2424SISTEMAS DE

INFORMAÇÃO24

24SISTEMAS DEINFORMAÇÃO

2424

2424SISTEMAS DE

INFORMAÇÃO2424

class Aluno

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// 7 pares de métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ +

_anoDeIngresso);System.out.println(“Curso: “ + _curso);

}

}

class Aluno extends Pessoa

{private int _anoDeIngresso;private String _curso;

// 2 pares de métodos de acesso (public) (...)

public void imprimeDados(){

super.imprimeDados();

System.out.println(“Ano de ingresso: “ +

_anoDeIngresso);

System.out.println(“Curso: “ + _curso);

}

}

VERSÃO ANTIGA VERSÃO COM HERANÇA

REDEFINIÇÃO DE MÉTODOS

Modifica ou estende um método da superclasse

Page 25: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2525

2525SISTEMAS DE

INFORMAÇÃO25

2525

25SISTEMAS DEINFORMAÇÃO

2525SISTEMAS DE

INFORMAÇÃO25

2525

25SISTEMAS DEINFORMAÇÃO

2525

2525SISTEMAS DE

INFORMAÇÃO25

25SISTEMAS DEINFORMAÇÃO

2525

25

SISTEMAS DEINFORMAÇÃO

2525

2525 25SISTEMAS DE

INFORMAÇÃO25

2525

25SISTEMAS DEINFORMAÇÃO

2525SISTEMAS DE

INFORMAÇÃO25

2525

25SISTEMAS DEINFORMAÇÃO

2525

2525SISTEMAS DE

INFORMAÇÃO25

25SISTEMAS DEINFORMAÇÃO

2525

2525SISTEMAS DE

INFORMAÇÃO2525

class Professor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// 7 pares de métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ +

_anoDeAdmissao);System.out.println(“Departamento: “ +

_departamento);}

}

VERSÃO ANTIGA VERSÃO COM HERANÇA

Page 26: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2626

2626SISTEMAS DE

INFORMAÇÃO26

2626

26SISTEMAS DEINFORMAÇÃO

2626SISTEMAS DE

INFORMAÇÃO26

2626

26SISTEMAS DEINFORMAÇÃO

2626

2626SISTEMAS DE

INFORMAÇÃO26

26SISTEMAS DEINFORMAÇÃO

2626

26

SISTEMAS DEINFORMAÇÃO

2626

2626 26SISTEMAS DE

INFORMAÇÃO26

2626

26SISTEMAS DEINFORMAÇÃO

2626SISTEMAS DE

INFORMAÇÃO26

2626

26SISTEMAS DEINFORMAÇÃO

2626

2626SISTEMAS DE

INFORMAÇÃO26

26SISTEMAS DEINFORMAÇÃO

2626

2626SISTEMAS DE

INFORMAÇÃO2626

class Professor

{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// 7 pares de métodos de acesso (public) (...)

public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ +

_anoDeAdmissao);System.out.println(“Departamento: “ +

_departamento);}

}

class Professor extends Pessoa

{private int _anoDeAdmissao;private String _departamento;

// 2 pares de métodos de acesso (public) (...)

public void imprimeDados(){

super.imprimeDados();

System.out.println(“Ano de admissão: “ + _anoDeAdmissao);

System.out.println(“Departamento: “ + _departamento);

}

}

VERSÃO ANTIGA VERSÃO COM HERANÇA

Page 27: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2727

2727SISTEMAS DE

INFORMAÇÃO27

2727

27SISTEMAS DEINFORMAÇÃO

2727SISTEMAS DE

INFORMAÇÃO27

2727

27SISTEMAS DEINFORMAÇÃO

2727

2727SISTEMAS DE

INFORMAÇÃO27

27SISTEMAS DEINFORMAÇÃO

2727

27

SISTEMAS DEINFORMAÇÃO

2727

2727 27SISTEMAS DE

INFORMAÇÃO27

2727

27SISTEMAS DEINFORMAÇÃO

2727SISTEMAS DE

INFORMAÇÃO27

2727

27SISTEMAS DEINFORMAÇÃO

2727

2727SISTEMAS DE

INFORMAÇÃO27

27SISTEMAS DEINFORMAÇÃO

2727

2727SISTEMAS DE

INFORMAÇÃO2727

class ProfessorDoutor {private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// 9 pares de métodos de acesso (public) (...)(public void imprimeDados(){

System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ +

_anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ +

_instituicaoDoutorado);}

}

VERSÃO ANTIGA VERSÃO COM HERANÇA

Page 28: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2828

2828SISTEMAS DE

INFORMAÇÃO28

2828

28SISTEMAS DEINFORMAÇÃO

2828SISTEMAS DE

INFORMAÇÃO28

2828

28SISTEMAS DEINFORMAÇÃO

2828

2828SISTEMAS DE

INFORMAÇÃO28

28SISTEMAS DEINFORMAÇÃO

2828

28

SISTEMAS DEINFORMAÇÃO

2828

2828 28SISTEMAS DE

INFORMAÇÃO28

2828

28SISTEMAS DEINFORMAÇÃO

2828SISTEMAS DE

INFORMAÇÃO28

2828

28SISTEMAS DEINFORMAÇÃO

2828

2828SISTEMAS DE

INFORMAÇÃO28

28SISTEMAS DEINFORMAÇÃO

2828

2828SISTEMAS DE

INFORMAÇÃO2828

class ProfessorDoutor {private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// 9 pares de métodos de acesso (public) (...)(public void imprimeDados(){

System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ +

_anoDeAdmissao);System.out.println(“Departamento: “ +

_departamento);System.out.println(“Ano de obtenção do

título de Doutor: “ + _anoObtencaoDoutorado);

System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);

}

}

class ProfessorDoutor extends Professor

{private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// 2 pares de métodos de acesso (public) (...)(public void imprimeDados(){

super.imprimeDados();System.out.println(“Ano de obtenção do

título de Doutor: “ + _anoObtencaoDoutorado);

System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);

}

}

VERSÃO ANTIGA VERSÃO COM HERANÇA

Page 29: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

2929

2929SISTEMAS DE

INFORMAÇÃO29

2929

29SISTEMAS DEINFORMAÇÃO

2929SISTEMAS DE

INFORMAÇÃO29

2929

29SISTEMAS DEINFORMAÇÃO

2929

2929SISTEMAS DE

INFORMAÇÃO29

29SISTEMAS DEINFORMAÇÃO

2929

29

SISTEMAS DEINFORMAÇÃO

2929

2929 29SISTEMAS DE

INFORMAÇÃO29

2929

29SISTEMAS DEINFORMAÇÃO

2929SISTEMAS DE

INFORMAÇÃO29

2929

29SISTEMAS DEINFORMAÇÃO

2929

2929SISTEMAS DE

INFORMAÇÃO29

29SISTEMAS DEINFORMAÇÃO

2929

2929SISTEMAS DE

INFORMAÇÃO2929

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

Page 30: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3030

3030SISTEMAS DE

INFORMAÇÃO30

3030

30SISTEMAS DEINFORMAÇÃO

3030SISTEMAS DE

INFORMAÇÃO30

3030

30SISTEMAS DEINFORMAÇÃO

3030

3030SISTEMAS DE

INFORMAÇÃO30

30SISTEMAS DEINFORMAÇÃO

3030

30

SISTEMAS DEINFORMAÇÃO

3030

3030 30SISTEMAS DE

INFORMAÇÃO30

3030

30SISTEMAS DEINFORMAÇÃO

3030SISTEMAS DE

INFORMAÇÃO30

3030

30SISTEMAS DEINFORMAÇÃO

3030

3030SISTEMAS DE

INFORMAÇÃO30

30SISTEMAS DEINFORMAÇÃO

3030

3030SISTEMAS DE

INFORMAÇÃO3030

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

public void imprimeDados(){

System.out.println(“Nome: “ + _nome);

System.out.println(“Nr USP: “ + _nrUsp);

System.out.println(“CPF: “ + _cpf);

System.out.println(“RG: “ + _rg);

System.out.println(“Sexo: “ + _sexo);

}

public void imprimeDados(){

super.imprimeDados();

System.out.println(“Ano de admissão: “ + _anoDeAdmissao);

System.out.println(“Departamento: “ + _departamento);

}

public void imprimeDados(){

super.imprimeDados();

System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);

System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);

}

Page 31: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3131

3131SISTEMAS DE

INFORMAÇÃO31

3131

31SISTEMAS DEINFORMAÇÃO

3131SISTEMAS DE

INFORMAÇÃO31

3131

31SISTEMAS DEINFORMAÇÃO

3131

3131SISTEMAS DE

INFORMAÇÃO31

31SISTEMAS DEINFORMAÇÃO

3131

31

SISTEMAS DEINFORMAÇÃO

3131

3131 31SISTEMAS DE

INFORMAÇÃO31

3131

31SISTEMAS DEINFORMAÇÃO

3131SISTEMAS DE

INFORMAÇÃO31

3131

31SISTEMAS DEINFORMAÇÃO

3131

3131SISTEMAS DE

INFORMAÇÃO31

31SISTEMAS DEINFORMAÇÃO

3131

3131SISTEMAS DE

INFORMAÇÃO3131

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;private long _cpf;

private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor p1 = new ProfessorDoutor();(...)

p1.imprimeDados();

Page 32: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3232

3232SISTEMAS DE

INFORMAÇÃO32

3232

32SISTEMAS DEINFORMAÇÃO

3232SISTEMAS DE

INFORMAÇÃO32

3232

32SISTEMAS DEINFORMAÇÃO

3232

3232SISTEMAS DE

INFORMAÇÃO32

32SISTEMAS DEINFORMAÇÃO

3232

32

SISTEMAS DEINFORMAÇÃO

3232

3232 32SISTEMAS DE

INFORMAÇÃO32

3232

32SISTEMAS DEINFORMAÇÃO

3232SISTEMAS DE

INFORMAÇÃO32

3232

32SISTEMAS DEINFORMAÇÃO

3232

3232SISTEMAS DE

INFORMAÇÃO32

32SISTEMAS DEINFORMAÇÃO

3232

3232SISTEMAS DE

INFORMAÇÃO3232

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

Professor p2 = new Professor();(...)

p2.imprimeDados();

Page 33: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3333

3333SISTEMAS DE

INFORMAÇÃO33

3333

33SISTEMAS DEINFORMAÇÃO

3333SISTEMAS DE

INFORMAÇÃO33

3333

33SISTEMAS DEINFORMAÇÃO

3333

3333SISTEMAS DE

INFORMAÇÃO33

33SISTEMAS DEINFORMAÇÃO

3333

33

SISTEMAS DEINFORMAÇÃO

3333

3333 33SISTEMAS DE

INFORMAÇÃO33

3333

33SISTEMAS DEINFORMAÇÃO

3333SISTEMAS DE

INFORMAÇÃO33

3333

33SISTEMAS DEINFORMAÇÃO

3333

3333SISTEMAS DE

INFORMAÇÃO33

33SISTEMAS DEINFORMAÇÃO

3333

3333SISTEMAS DE

INFORMAÇÃO3333

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

Pessoa p3 = new Pessoa();(...)

p3.imprimeDados();

Page 34: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3434

3434SISTEMAS DE

INFORMAÇÃO34

3434

34SISTEMAS DEINFORMAÇÃO

3434SISTEMAS DE

INFORMAÇÃO34

3434

34SISTEMAS DEINFORMAÇÃO

3434

3434SISTEMAS DE

INFORMAÇÃO34

34SISTEMAS DEINFORMAÇÃO

3434

34

SISTEMAS DEINFORMAÇÃO

3434

3434 34SISTEMAS DE

INFORMAÇÃO34

3434

34SISTEMAS DEINFORMAÇÃO

3434SISTEMAS DE

INFORMAÇÃO34

3434

34SISTEMAS DEINFORMAÇÃO

3434

3434SISTEMAS DE

INFORMAÇÃO34

34SISTEMAS DEINFORMAÇÃO

3434

3434SISTEMAS DE

INFORMAÇÃO3434

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

Aluno p4 = new Aluno();(...)

p4.imprimeDados();

Page 35: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3535

3535SISTEMAS DE

INFORMAÇÃO35

3535

35SISTEMAS DEINFORMAÇÃO

3535SISTEMAS DE

INFORMAÇÃO35

3535

35SISTEMAS DEINFORMAÇÃO

3535

3535SISTEMAS DE

INFORMAÇÃO35

35SISTEMAS DEINFORMAÇÃO

3535

35

SISTEMAS DEINFORMAÇÃO

3535

3535 35SISTEMAS DE

INFORMAÇÃO35

3535

35SISTEMAS DEINFORMAÇÃO

3535SISTEMAS DE

INFORMAÇÃO35

3535

35SISTEMAS DEINFORMAÇÃO

3535

3535SISTEMAS DE

INFORMAÇÃO35

35SISTEMAS DEINFORMAÇÃO

3535

3535SISTEMAS DE

INFORMAÇÃO3535

Pessoa

Professorprivate int _anoDeAdmissao;private String _departamento;

private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;

private int _anoDeIngresso;

private String _curso;

private long _nrUsp;private String _rg;

private long _cpf;private String _nome;private char _sexo;

// 5 pares de mét. de acessovoid imprimeDados();

// 2 pares de mét. de acessovoid imprimeDados();

ProfessorDoutor

// 2 pares de mét. de acessovoid imprimeDados();

Aluno

// 2 pares de mét. de acessovoid imprimeDados();

Aluno p4 = new Aluno();(...)

p4.imprimeDados();

UMLUnified

Modeling Language

Page 36: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3636

3636SISTEMAS DE

INFORMAÇÃO36

3636

36SISTEMAS DEINFORMAÇÃO

3636SISTEMAS DE

INFORMAÇÃO36

3636

36SISTEMAS DEINFORMAÇÃO

3636

3636SISTEMAS DE

INFORMAÇÃO36

36SISTEMAS DEINFORMAÇÃO

3636

36

SISTEMAS DEINFORMAÇÃO

3636

3636 36SISTEMAS DE

INFORMAÇÃO36

3636

36SISTEMAS DEINFORMAÇÃO

3636SISTEMAS DE

INFORMAÇÃO36

3636

36SISTEMAS DEINFORMAÇÃO

3636

3636SISTEMAS DE

INFORMAÇÃO36

36SISTEMAS DEINFORMAÇÃO

3636

3636SISTEMAS DE

INFORMAÇÃO3636

Observações• As subclasses podem acrescentar novos

métodos:– Ex: métodos de acesso aos atributos específicos da

subclasse– Ex: novas funcionalidades típicas daquela subclasse– Ex: sobrecarregar métodos da superclasse (mesmo nome,

nova assinatura)

• As subclasses podem redefinir métodos da superclasse com a mesma assinatura

– Ex: imprimeDados– Não precisa necessariamente chamar o método da

superclasse

Page 37: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3737

3737SISTEMAS DE

INFORMAÇÃO37

3737

37SISTEMAS DEINFORMAÇÃO

3737SISTEMAS DE

INFORMAÇÃO37

3737

37SISTEMAS DEINFORMAÇÃO

3737

3737SISTEMAS DE

INFORMAÇÃO37

37SISTEMAS DEINFORMAÇÃO

3737

37

SISTEMAS DEINFORMAÇÃO

3737

3737 37SISTEMAS DE

INFORMAÇÃO37

3737

37SISTEMAS DEINFORMAÇÃO

3737SISTEMAS DE

INFORMAÇÃO37

3737

37SISTEMAS DEINFORMAÇÃO

3737

3737SISTEMAS DE

INFORMAÇÃO37

37SISTEMAS DEINFORMAÇÃO

3737

3737SISTEMAS DE

INFORMAÇÃO3737

Exemploclass Pessoa{

(...)

void quemEVoce() { System.out.println(“Sou uma pessoa”); }

}

class Aluno extends Pessoa{(...)

void quemEVoce() { System.out.println(“Sou um aluno”); }

}

class Professor extends Pessoa{(...)

void quemEVoce() { System.out.println(“Sou um professor”); }

}

class ProfessorDoutor extends Professor{(...)

void quemEVoce() { System.out.println(“Sou um professor doutor”); }

}

Page 38: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3838

3838SISTEMAS DE

INFORMAÇÃO38

3838

38SISTEMAS DEINFORMAÇÃO

3838SISTEMAS DE

INFORMAÇÃO38

3838

38SISTEMAS DEINFORMAÇÃO

3838

3838SISTEMAS DE

INFORMAÇÃO38

38SISTEMAS DEINFORMAÇÃO

3838

38

SISTEMAS DEINFORMAÇÃO

3838

3838 38SISTEMAS DE

INFORMAÇÃO38

3838

38SISTEMAS DEINFORMAÇÃO

3838SISTEMAS DE

INFORMAÇÃO38

3838

38SISTEMAS DEINFORMAÇÃO

3838

3838SISTEMAS DE

INFORMAÇÃO38

38SISTEMAS DEINFORMAÇÃO

3838

3838SISTEMAS DE

INFORMAÇÃO3838

Exemploclass Pessoa{

(...)

void quemEVoce() { System.out.println(“Sou uma pessoa”); }

}

class Aluno extends Pessoa{(...)

void quemEVoce() { System.out.println(“Sou um aluno”); }

}

class Professor extends Pessoa{(...)

void quemEVoce() { System.out.println(“Sou um professor”); }

}

class ProfessorDoutor extends Professor{(...)

void quemEVoce() { System.out.println(“Sou um professor doutor”); }

}

Pessoa p1 = new Pessoa(); p1.quemEVoce();

Aluno p2 = new Aluno(); p2.quemEVoce();

Professor p3 = new Professor(); p3.quemEVoce();

ProfessorDoutor p4 = new ProfessorDoutor(); p4.quemEVoce();

Page 39: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

3939

3939SISTEMAS DE

INFORMAÇÃO39

3939

39SISTEMAS DEINFORMAÇÃO

3939SISTEMAS DE

INFORMAÇÃO39

3939

39SISTEMAS DEINFORMAÇÃO

3939

3939SISTEMAS DE

INFORMAÇÃO39

39SISTEMAS DEINFORMAÇÃO

3939

39

SISTEMAS DEINFORMAÇÃO

3939

3939 39SISTEMAS DE

INFORMAÇÃO39

3939

39SISTEMAS DEINFORMAÇÃO

3939SISTEMAS DE

INFORMAÇÃO39

3939

39SISTEMAS DEINFORMAÇÃO

3939

3939SISTEMAS DE

INFORMAÇÃO39

39SISTEMAS DEINFORMAÇÃO

3939

3939SISTEMAS DE

INFORMAÇÃO3939

Exemploclass Pessoa{

(...)

void quemEVoce() { System.out.println(“Sou uma pessoa”); }

}

class Aluno extends Pessoa{(...)

void quemEVoce() { System.out.println(“Sou um aluno”); }

}

class Professor extends Pessoa{(...)

void quemEVoce() { System.out.println(“Sou um professor”); }

}

class ProfessorDoutor extends Professor{(...)

void quemEVoce() { System.out.println(“Sou um professor doutor”); }

}

Pessoa p1 = new Pessoa(); p1.quemEVoce(); // Sou uma pessoa

Aluno p2 = new Aluno(); p2.quemEVoce(); // Sou um aluno

Professor p3 = new Professor(); p3.quemEVoce(); // Sou um professor

ProfessorDoutor p4 = new ProfessorDoutor(); p4.quemEVoce(); // Sou um professor doutor

Page 40: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4040

4040SISTEMAS DE

INFORMAÇÃO40

4040

40SISTEMAS DEINFORMAÇÃO

4040SISTEMAS DE

INFORMAÇÃO40

4040

40SISTEMAS DEINFORMAÇÃO

4040

4040SISTEMAS DE

INFORMAÇÃO40

40SISTEMAS DEINFORMAÇÃO

4040

40

SISTEMAS DEINFORMAÇÃO

4040

4040 40SISTEMAS DE

INFORMAÇÃO40

4040

40SISTEMAS DEINFORMAÇÃO

4040SISTEMAS DE

INFORMAÇÃO40

4040

40SISTEMAS DEINFORMAÇÃO

4040

4040SISTEMAS DE

INFORMAÇÃO40

40SISTEMAS DEINFORMAÇÃO

4040

4040SISTEMAS DE

INFORMAÇÃO4040

Observações

• A subclasse pode sobrecarregar/sobrepor métodos de mesmo nome com diferentes parâmetros

• Ex:– Classe Pessoa tem o método

• void alteraDadosUspianos(long nrUsp);– Classe Aluno tem o método

• void alteraDadosUspianos(long nrUsp, String curso);– Os dois métodos podem ser usados no filho!

Page 41: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4141

4141SISTEMAS DE

INFORMAÇÃO41

4141

41SISTEMAS DEINFORMAÇÃO

4141SISTEMAS DE

INFORMAÇÃO41

4141

41SISTEMAS DEINFORMAÇÃO

4141

4141SISTEMAS DE

INFORMAÇÃO41

41SISTEMAS DEINFORMAÇÃO

4141

41

SISTEMAS DEINFORMAÇÃO

4141

4141 41SISTEMAS DE

INFORMAÇÃO41

4141

41SISTEMAS DEINFORMAÇÃO

4141SISTEMAS DE

INFORMAÇÃO41

4141

41SISTEMAS DEINFORMAÇÃO

4141

4141SISTEMAS DE

INFORMAÇÃO41

41SISTEMAS DEINFORMAÇÃO

4141

4141SISTEMAS DE

INFORMAÇÃO4141

import java.lang.String;

public class Pessoa {long nusp;String x;

void altera(long nusp) {this.nusp = nusp;

}}

import java.lang.String;

public class Aluno extends Pessoa{void altera(long nusp, String x) {

this.nusp = nusp;this.x = x;

}

public static void main(String[] args) {Aluno a = new Aluno();System.out.println(a.nusp);System.out.println(a.x);a.altera(12);System.out.println(a.nusp);System.out.println(a.x);a.altera(10,"ei");System.out.println(a.nusp);System.out.println(a.x);

}}

Page 42: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4242

4242SISTEMAS DE

INFORMAÇÃO42

4242

42SISTEMAS DEINFORMAÇÃO

4242SISTEMAS DE

INFORMAÇÃO42

4242

42SISTEMAS DEINFORMAÇÃO

4242

4242SISTEMAS DE

INFORMAÇÃO42

42SISTEMAS DEINFORMAÇÃO

4242

42

SISTEMAS DEINFORMAÇÃO

4242

4242 42SISTEMAS DE

INFORMAÇÃO42

4242

42SISTEMAS DEINFORMAÇÃO

4242SISTEMAS DE

INFORMAÇÃO42

4242

42SISTEMAS DEINFORMAÇÃO

4242

4242SISTEMAS DE

INFORMAÇÃO42

42SISTEMAS DEINFORMAÇÃO

4242

4242SISTEMAS DE

INFORMAÇÃO4242

import java.lang.String;

public class Pessoa {long nusp;String x;

void altera(long nusp) {this.nusp = nusp;

}}

import java.lang.String;

public class Aluno extends Pessoa{void altera(long nusp, String x) {

this.nusp = nusp;this.x = x;

}

public static void main(String[] args) {Aluno a = new Aluno();System.out.println(a.nusp);System.out.println(a.x);a.altera(12);System.out.println(a.nusp);System.out.println(a.x);a.altera(10,"ei");System.out.println(a.nusp);System.out.println(a.x);

}}

0null12null10ei

Saída

Page 43: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4343

4343SISTEMAS DE

INFORMAÇÃO43

4343

43SISTEMAS DEINFORMAÇÃO

4343SISTEMAS DE

INFORMAÇÃO43

4343

43SISTEMAS DEINFORMAÇÃO

4343

4343SISTEMAS DE

INFORMAÇÃO43

43SISTEMAS DEINFORMAÇÃO

4343

43

SISTEMAS DEINFORMAÇÃO

4343

4343 43SISTEMAS DE

INFORMAÇÃO43

4343

43SISTEMAS DEINFORMAÇÃO

4343SISTEMAS DE

INFORMAÇÃO43

4343

43SISTEMAS DEINFORMAÇÃO

4343

4343SISTEMAS DE

INFORMAÇÃO43

43SISTEMAS DEINFORMAÇÃO

4343

4343SISTEMAS DE

INFORMAÇÃO4343

class Pessoa

{Pessoa(long nrUsp, String rg, long cpf, String nome, char sexo)

{_nrUsp = nrUsp;_rg = rg;_cpf = cpf;_nome = nome;_sexo = sexo;

}(...)

}

class Aluno extends Pessoa{Aluno(long nrUsp, String rg, long cpf, String nome, char sexo, int anoIngresso,

String curso)

{?

_anoDeIngresso = anoIngresso;_curso = curso;

}

}

Construtores

Page 44: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4444

4444SISTEMAS DE

INFORMAÇÃO44

4444

44SISTEMAS DEINFORMAÇÃO

4444SISTEMAS DE

INFORMAÇÃO44

4444

44SISTEMAS DEINFORMAÇÃO

4444

4444SISTEMAS DE

INFORMAÇÃO44

44SISTEMAS DEINFORMAÇÃO

4444

44

SISTEMAS DEINFORMAÇÃO

4444

4444 44SISTEMAS DE

INFORMAÇÃO44

4444

44SISTEMAS DEINFORMAÇÃO

4444SISTEMAS DE

INFORMAÇÃO44

4444

44SISTEMAS DEINFORMAÇÃO

4444

4444SISTEMAS DE

INFORMAÇÃO44

44SISTEMAS DEINFORMAÇÃO

4444

4444SISTEMAS DE

INFORMAÇÃO4444

class Pessoa

{Pessoa(long nrUsp, String rg, long cpf, String nome, char sexo)

{_nrUsp = nrUsp;_rg = rg;_cpf = cpf;_nome = nome;_sexo = sexo;

}(...)

}

class Aluno extends Pessoa{Aluno(long nrUsp, String rg, long cpf, String nome, char sexo, int anoIngresso,

String curso)

{ super(nrUsp, rg, cpf, nome, sexo); _anoDeIngresso = anoIngresso; _curso = curso;}

}

Construtores

Deve necessariamente ser o primeiro comando.

Page 45: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4545

4545SISTEMAS DE

INFORMAÇÃO45

4545

45SISTEMAS DEINFORMAÇÃO

4545SISTEMAS DE

INFORMAÇÃO45

4545

45SISTEMAS DEINFORMAÇÃO

4545

4545SISTEMAS DE

INFORMAÇÃO45

45SISTEMAS DEINFORMAÇÃO

4545

45

SISTEMAS DEINFORMAÇÃO

4545

4545 45SISTEMAS DE

INFORMAÇÃO45

4545

45SISTEMAS DEINFORMAÇÃO

4545SISTEMAS DE

INFORMAÇÃO45

4545

45SISTEMAS DEINFORMAÇÃO

4545

4545SISTEMAS DE

INFORMAÇÃO45

45SISTEMAS DEINFORMAÇÃO

4545

4545SISTEMAS DE

INFORMAÇÃO4545

class Professor extends Pessoa{Professor(long nrUsp, String rg, long cpf, String nome, char sexo, int

anoAdmissao, String dpto)

{super(nrUsp, rg, cpf, nome, sexo);

_anoDeAdmissao = anoAdmissao;_departamento = dpto;

}

}

class ProfessorDoutor extends Professor{ProfessorDoutor(long nrUsp, String rg, long cpf, String nome, char sexo, int

anoAdmissao, String dpto, int anoDoutorado, String instituicaoDoutorado)

{?

_anoObtencaoDoutorado = anoDoutorado;_instituicaoDoutorado = instituicaoDoutorado;

}

}

Construtores

Page 46: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4646

4646SISTEMAS DE

INFORMAÇÃO46

4646

46SISTEMAS DEINFORMAÇÃO

4646SISTEMAS DE

INFORMAÇÃO46

4646

46SISTEMAS DEINFORMAÇÃO

4646

4646SISTEMAS DE

INFORMAÇÃO46

46SISTEMAS DEINFORMAÇÃO

4646

46

SISTEMAS DEINFORMAÇÃO

4646

4646 46SISTEMAS DE

INFORMAÇÃO46

4646

46SISTEMAS DEINFORMAÇÃO

4646SISTEMAS DE

INFORMAÇÃO46

4646

46SISTEMAS DEINFORMAÇÃO

4646

4646SISTEMAS DE

INFORMAÇÃO46

46SISTEMAS DEINFORMAÇÃO

4646

4646SISTEMAS DE

INFORMAÇÃO4646

class Professor extends Pessoa{Professor(long nrUsp, String rg, long cpf, String nome, char sexo, int

anoAdmissao, String dpto)

{super(nrUsp, rg, cpf, nome, sexo);

_anoDeAdmissao = anoAdmissao;_departamento = dpto;

}

}

class ProfessorDoutor extends Professor{ProfessorDoutor(long nrUsp, String rg, long cpf, String nome, char sexo, int

anoAdmissao, String dpto, int anoDoutorado, String instituicaoDoutorado)

{super(nrUsp, rg, cpf, nome, sexo, anoAdmissao, dpto);

_anoObtencaoDoutorado = anoDoutorado;_instituicaoDoutorado = instituicaoDoutorado;

}

}

Construtores

Page 47: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4747

4747SISTEMAS DE

INFORMAÇÃO47

4747

47SISTEMAS DEINFORMAÇÃO

4747SISTEMAS DE

INFORMAÇÃO47

4747

47SISTEMAS DEINFORMAÇÃO

4747

4747SISTEMAS DE

INFORMAÇÃO47

47SISTEMAS DEINFORMAÇÃO

4747

47

SISTEMAS DEINFORMAÇÃO

4747

4747 47SISTEMAS DE

INFORMAÇÃO47

4747

47SISTEMAS DEINFORMAÇÃO

4747SISTEMAS DE

INFORMAÇÃO47

4747

47SISTEMAS DEINFORMAÇÃO

4747

4747SISTEMAS DE

INFORMAÇÃO47

47SISTEMAS DEINFORMAÇÃO

4747

4747SISTEMAS DE

INFORMAÇÃO4747

Vantagens de Herança• Modularização (programa separado em

módulos estáveis)

• Reuso – Como no caso de Pessoa– APIs Java (você pode expandir!!!)

• Tipagem (relação transitiva)

– Aluno É uma Pessoa– Professor É uma Pessoa– ProfessorDoutor É um Professor, e também É uma

Pessoa– → permite agrupamentos

Page 48: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4848

4848SISTEMAS DE

INFORMAÇÃO48

4848

48SISTEMAS DEINFORMAÇÃO

4848SISTEMAS DE

INFORMAÇÃO48

4848

48SISTEMAS DEINFORMAÇÃO

4848

4848SISTEMAS DE

INFORMAÇÃO48

48SISTEMAS DEINFORMAÇÃO

4848

48

SISTEMAS DEINFORMAÇÃO

4848

4848 48SISTEMAS DE

INFORMAÇÃO48

4848

48SISTEMAS DEINFORMAÇÃO

4848SISTEMAS DE

INFORMAÇÃO48

4848

48SISTEMAS DEINFORMAÇÃO

4848

4848SISTEMAS DE

INFORMAÇÃO48

48SISTEMAS DEINFORMAÇÃO

4848

4848SISTEMAS DE

INFORMAÇÃO4848

class ComunidadeAcademica

{Pessoa [] comunidade = new Pessoa [5000];int nrPessoas = 0;void inserePessoa(Pessoa p)

{comunidade[nrPessoas] = p;nrPessoas++;

}Pessoa buscaPessoa (int nrUsp)

{int i = 0;while (i < nrPessoas){

if (comunidade[i].obtemNrUsp() == nrUsp)

return comunidade[i];i++;

}System.out.println("Pessoa não encontrada");return null;

}void imprimeDados(){

for (int i=0; i<nrPessoas; i++)

comunidade[i].imprimeDados();}

}

ComunidadeAcademica usp = new ComunidadeAcademica();

Aluno p1 = new Aluno(55, ... , “SI”);

usp.inserePessoa(p1);

Professor p2 = new Professor(51, ..., “EACH”);

usp.inserePessoa(p2);

ProfessorDoutor p3 = new ProfessorDoutor(67, ....., “USP”);

usp.inserePessoa(p3);

usp.buscaPessoa(51).quemEVoce();

usp.imprimeDados();

Page 49: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

4949

4949SISTEMAS DE

INFORMAÇÃO49

4949

49SISTEMAS DEINFORMAÇÃO

4949SISTEMAS DE

INFORMAÇÃO49

4949

49SISTEMAS DEINFORMAÇÃO

4949

4949SISTEMAS DE

INFORMAÇÃO49

49SISTEMAS DEINFORMAÇÃO

4949

49

SISTEMAS DEINFORMAÇÃO

4949

4949 49SISTEMAS DE

INFORMAÇÃO49

4949

49SISTEMAS DEINFORMAÇÃO

4949SISTEMAS DE

INFORMAÇÃO49

4949

49SISTEMAS DEINFORMAÇÃO

4949

4949SISTEMAS DE

INFORMAÇÃO49

49SISTEMAS DEINFORMAÇÃO

4949

4949SISTEMAS DE

INFORMAÇÃO4949

class ComunidadeAcademica

{Pessoa [] comunidade = new Pessoa [5000];int nrPessoas = 0;void inserePessoa(Pessoa p)v{

comunidade[nrPessoas] = p;nrPessoas++;

}Pessoa buscaPessoa (int nrUsp)P{

int i = 0;while (i < nrPessoas){

if (comunidade[i].obtemNrUsp() == nrUsp)ireturn comunidade[i];

i++;}System.out.println("Pessoa não encontrada");return null;

}void imprimeDados(){

for (int i=0; i<nrPessoas; i++)fcomunidade[i].imprimeDados();

}

}

ComunidadeAcademica usp = new ComunidadeAcademica();

Aluno p1 = new Aluno(55, ... , “SI”);

usp.inserePessoa(p1);

Professor p2 = new Professor(51, ..., “EACH”);

usp.inserePessoa(p2);

ProfessorDoutor p3 = new ProfessorDoutor(67, ....., “USP”);

usp.inserePessoa(p3);

usp.buscaPessoa(51).quemEVoce();

usp.imprimeDados();

Page 50: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5050

5050SISTEMAS DE

INFORMAÇÃO50

5050

50SISTEMAS DEINFORMAÇÃO

5050SISTEMAS DE

INFORMAÇÃO50

5050

50SISTEMAS DEINFORMAÇÃO

5050

5050SISTEMAS DE

INFORMAÇÃO50

50SISTEMAS DEINFORMAÇÃO

5050

50

SISTEMAS DEINFORMAÇÃO

5050

5050 50SISTEMAS DE

INFORMAÇÃO50

5050

50SISTEMAS DEINFORMAÇÃO

5050SISTEMAS DE

INFORMAÇÃO50

5050

50SISTEMAS DEINFORMAÇÃO

5050

5050SISTEMAS DE

INFORMAÇÃO50

50SISTEMAS DEINFORMAÇÃO

5050

5050SISTEMAS DE

INFORMAÇÃO5050

Hierarquia de Classes

Page 51: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5151

5151SISTEMAS DE

INFORMAÇÃO51

5151

51SISTEMAS DEINFORMAÇÃO

5151SISTEMAS DE

INFORMAÇÃO51

5151

51SISTEMAS DEINFORMAÇÃO

5151

5151SISTEMAS DE

INFORMAÇÃO51

51SISTEMAS DEINFORMAÇÃO

5151

51

SISTEMAS DEINFORMAÇÃO

5151

5151 51SISTEMAS DE

INFORMAÇÃO51

5151

51SISTEMAS DEINFORMAÇÃO

5151SISTEMAS DE

INFORMAÇÃO51

5151

51SISTEMAS DEINFORMAÇÃO

5151

5151SISTEMAS DE

INFORMAÇÃO51

51SISTEMAS DEINFORMAÇÃO

5151

5151SISTEMAS DE

INFORMAÇÃO5151

Hierarquia de Classes

É um tipo

de

Page 52: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5252

5252SISTEMAS DE

INFORMAÇÃO52

5252

52SISTEMAS DEINFORMAÇÃO

5252SISTEMAS DE

INFORMAÇÃO52

5252

52SISTEMAS DEINFORMAÇÃO

5252

5252SISTEMAS DE

INFORMAÇÃO52

52SISTEMAS DEINFORMAÇÃO

5252

52

SISTEMAS DEINFORMAÇÃO

5252

5252 52SISTEMAS DE

INFORMAÇÃO52

5252

52SISTEMAS DEINFORMAÇÃO

5252SISTEMAS DE

INFORMAÇÃO52

5252

52SISTEMAS DEINFORMAÇÃO

5252

5252SISTEMAS DE

INFORMAÇÃO52

52SISTEMAS DEINFORMAÇÃO

5252

5252SISTEMAS DE

INFORMAÇÃO5252

Hierarquia

É um tipode

É um tipode

É um tipode

Espécie

Filo

Reino

Page 53: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5353

5353SISTEMAS DE

INFORMAÇÃO53

5353

53SISTEMAS DEINFORMAÇÃO

5353SISTEMAS DE

INFORMAÇÃO53

5353

53SISTEMAS DEINFORMAÇÃO

5353

5353SISTEMAS DE

INFORMAÇÃO53

53SISTEMAS DEINFORMAÇÃO

5353

53

SISTEMAS DEINFORMAÇÃO

5353

5353 53SISTEMAS DE

INFORMAÇÃO53

5353

53SISTEMAS DEINFORMAÇÃO

5353SISTEMAS DE

INFORMAÇÃO53

5353

53SISTEMAS DEINFORMAÇÃO

5353

5353SISTEMAS DE

INFORMAÇÃO53

53SISTEMAS DEINFORMAÇÃO

5353

5353SISTEMAS DE

INFORMAÇÃO5353

Hierarquia ERRADA

É um tipode

É um tipode

É um tipode

Espécie

Filo

Reino

Não há a relação“É um tipo de”

Page 54: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5454

5454SISTEMAS DE

INFORMAÇÃO54

5454

54SISTEMAS DEINFORMAÇÃO

5454SISTEMAS DE

INFORMAÇÃO54

5454

54SISTEMAS DEINFORMAÇÃO

5454

5454SISTEMAS DE

INFORMAÇÃO54

54SISTEMAS DEINFORMAÇÃO

5454

54

SISTEMAS DEINFORMAÇÃO

5454

5454 54SISTEMAS DE

INFORMAÇÃO54

5454

54SISTEMAS DEINFORMAÇÃO

5454SISTEMAS DE

INFORMAÇÃO54

5454

54SISTEMAS DEINFORMAÇÃO

5454

5454SISTEMAS DE

INFORMAÇÃO54

54SISTEMAS DEINFORMAÇÃO

5454

5454SISTEMAS DE

INFORMAÇÃO5454

Especificadores de acesso

• final class X:

Page 55: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5555

5555SISTEMAS DE

INFORMAÇÃO55

5555

55SISTEMAS DEINFORMAÇÃO

5555SISTEMAS DE

INFORMAÇÃO55

5555

55SISTEMAS DEINFORMAÇÃO

5555

5555SISTEMAS DE

INFORMAÇÃO55

55SISTEMAS DEINFORMAÇÃO

5555

55

SISTEMAS DEINFORMAÇÃO

5555

5555 55SISTEMAS DE

INFORMAÇÃO55

5555

55SISTEMAS DEINFORMAÇÃO

5555SISTEMAS DE

INFORMAÇÃO55

5555

55SISTEMAS DEINFORMAÇÃO

5555

5555SISTEMAS DE

INFORMAÇÃO55

55SISTEMAS DEINFORMAÇÃO

5555

5555SISTEMAS DE

INFORMAÇÃO5555

Especificadores de acesso

• final class X: X não pode ser estendida

Page 56: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5656

5656SISTEMAS DE

INFORMAÇÃO56

5656

56SISTEMAS DEINFORMAÇÃO

5656SISTEMAS DE

INFORMAÇÃO56

5656

56SISTEMAS DEINFORMAÇÃO

5656

5656SISTEMAS DE

INFORMAÇÃO56

56SISTEMAS DEINFORMAÇÃO

5656

56

SISTEMAS DEINFORMAÇÃO

5656

5656 56SISTEMAS DE

INFORMAÇÃO56

5656

56SISTEMAS DEINFORMAÇÃO

5656SISTEMAS DE

INFORMAÇÃO56

5656

56SISTEMAS DEINFORMAÇÃO

5656

5656SISTEMAS DE

INFORMAÇÃO56

56SISTEMAS DEINFORMAÇÃO

5656

5656SISTEMAS DE

INFORMAÇÃO5656

Especificadores de acesso

• final class X: X não pode ser estendida• final em um método:

Page 57: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5757

5757SISTEMAS DE

INFORMAÇÃO57

5757

57SISTEMAS DEINFORMAÇÃO

5757SISTEMAS DE

INFORMAÇÃO57

5757

57SISTEMAS DEINFORMAÇÃO

5757

5757SISTEMAS DE

INFORMAÇÃO57

57SISTEMAS DEINFORMAÇÃO

5757

57

SISTEMAS DEINFORMAÇÃO

5757

5757 57SISTEMAS DE

INFORMAÇÃO57

5757

57SISTEMAS DEINFORMAÇÃO

5757SISTEMAS DE

INFORMAÇÃO57

5757

57SISTEMAS DEINFORMAÇÃO

5757

5757SISTEMAS DE

INFORMAÇÃO57

57SISTEMAS DEINFORMAÇÃO

5757

5757SISTEMAS DE

INFORMAÇÃO5757

Especificadores de acesso

• final class X: X não pode ser estendida• final em um método: o método não pode ser

redefinido nas subclasses

Page 58: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5858

5858SISTEMAS DE

INFORMAÇÃO58

5858

58SISTEMAS DEINFORMAÇÃO

5858SISTEMAS DE

INFORMAÇÃO58

5858

58SISTEMAS DEINFORMAÇÃO

5858

5858SISTEMAS DE

INFORMAÇÃO58

58SISTEMAS DEINFORMAÇÃO

5858

58

SISTEMAS DEINFORMAÇÃO

5858

5858 58SISTEMAS DE

INFORMAÇÃO58

5858

58SISTEMAS DEINFORMAÇÃO

5858SISTEMAS DE

INFORMAÇÃO58

5858

58SISTEMAS DEINFORMAÇÃO

5858

5858SISTEMAS DE

INFORMAÇÃO58

58SISTEMAS DEINFORMAÇÃO

5858

5858SISTEMAS DE

INFORMAÇÃO5858

Especificadores de acesso

• final class X: X não pode ser estendida• final em um método: o método não pode ser

redefinidos nas subclasses

• class X: X pode ser vista só dentro do pacote

• public class X: X pode ser vista por todos

Page 59: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

5959

5959SISTEMAS DE

INFORMAÇÃO59

5959

59SISTEMAS DEINFORMAÇÃO

5959SISTEMAS DE

INFORMAÇÃO59

5959

59SISTEMAS DEINFORMAÇÃO

5959

5959SISTEMAS DE

INFORMAÇÃO59

59SISTEMAS DEINFORMAÇÃO

5959

59

SISTEMAS DEINFORMAÇÃO

5959

5959 59SISTEMAS DE

INFORMAÇÃO59

5959

59SISTEMAS DEINFORMAÇÃO

5959SISTEMAS DE

INFORMAÇÃO59

5959

59SISTEMAS DEINFORMAÇÃO

5959

5959SISTEMAS DE

INFORMAÇÃO59

59SISTEMAS DEINFORMAÇÃO

5959

5959SISTEMAS DE

INFORMAÇÃO5959

public class ExMatematica2 {public final static double pi = 3.141592;

public final static double quadrado(double x){return x*x;

}

public static double cubo(double x){return x*x*x;

}

public final static double perimetro(double raio){return 2*pi*raio;

}}

Page 60: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6060

6060SISTEMAS DE

INFORMAÇÃO60

6060

60SISTEMAS DEINFORMAÇÃO

6060SISTEMAS DE

INFORMAÇÃO60

6060

60SISTEMAS DEINFORMAÇÃO

6060

6060SISTEMAS DE

INFORMAÇÃO60

60SISTEMAS DEINFORMAÇÃO

6060

60

SISTEMAS DEINFORMAÇÃO

6060

6060 60SISTEMAS DE

INFORMAÇÃO60

6060

60SISTEMAS DEINFORMAÇÃO

6060SISTEMAS DE

INFORMAÇÃO60

6060

60SISTEMAS DEINFORMAÇÃO

6060

6060SISTEMAS DE

INFORMAÇÃO60

60SISTEMAS DEINFORMAÇÃO

6060

6060SISTEMAS DE

INFORMAÇÃO6060

public class ExMatematica2Sub extends ExMatematica2{public final static double pi = 3.1415926;

/* O metodo abaixo nao pode ser redefinido pois na classe original * (ExMatematica2) ele era final. *//*public final static double quadrado(double x){

return x*x;}*/

/* O metodo cubo nao era final na super-classe (ExMatematica2) e, por isso, * pode ser redefinida. */public static double cubo(double x){

double temp = x*x;return temp*x;

}}

?????

Page 61: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6161

6161SISTEMAS DE

INFORMAÇÃO61

6161

61SISTEMAS DEINFORMAÇÃO

6161SISTEMAS DE

INFORMAÇÃO61

6161

61SISTEMAS DEINFORMAÇÃO

6161

6161SISTEMAS DE

INFORMAÇÃO61

61SISTEMAS DEINFORMAÇÃO

6161

61

SISTEMAS DEINFORMAÇÃO

6161

6161 61SISTEMAS DE

INFORMAÇÃO61

6161

61SISTEMAS DEINFORMAÇÃO

6161SISTEMAS DE

INFORMAÇÃO61

6161

61SISTEMAS DEINFORMAÇÃO

6161

6161SISTEMAS DE

INFORMAÇÃO61

61SISTEMAS DEINFORMAÇÃO

6161

6161SISTEMAS DE

INFORMAÇÃO6161

public class ExMatematica2Sub extends ExMatematica2{public final static double pi = 3.1415926;

/* O metodo abaixo nao pode ser redefinido pois na classe * original (ExMatematica2) ele era final. *//*public final static double quadrado(double x){

return x*x;}*/

/* O metodo cubo nao era final na super-classe (ExMatematica2) e, por isso, * pode ser redefinida. */public static double cubo(double x){

double temp = x*x;return temp*x;

}}

É constanteapenas dessaclasse

Page 62: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6262

6262SISTEMAS DE

INFORMAÇÃO62

6262

62SISTEMAS DEINFORMAÇÃO

6262SISTEMAS DE

INFORMAÇÃO62

6262

62SISTEMAS DEINFORMAÇÃO

6262

6262SISTEMAS DE

INFORMAÇÃO62

62SISTEMAS DEINFORMAÇÃO

6262

62

SISTEMAS DEINFORMAÇÃO

6262

6262 62SISTEMAS DE

INFORMAÇÃO62

6262

62SISTEMAS DEINFORMAÇÃO

6262SISTEMAS DE

INFORMAÇÃO62

6262

62SISTEMAS DEINFORMAÇÃO

6262

6262SISTEMAS DE

INFORMAÇÃO62

62SISTEMAS DEINFORMAÇÃO

6262

6262SISTEMAS DE

INFORMAÇÃO6262

Especificadores de acesso

Acesso public protected sem nada private

Classe Sim Sim Sim Sim

Pacote Sim Sim Sim Não

Subclasse Sim Sim Não Não

Mundo Sim Não Não Não

Page 63: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6363

6363SISTEMAS DE

INFORMAÇÃO63

6363

63SISTEMAS DEINFORMAÇÃO

6363SISTEMAS DE

INFORMAÇÃO63

6363

63SISTEMAS DEINFORMAÇÃO

6363

6363SISTEMAS DE

INFORMAÇÃO63

63SISTEMAS DEINFORMAÇÃO

6363

63

SISTEMAS DEINFORMAÇÃO

6363

6363 63SISTEMAS DE

INFORMAÇÃO63

6363

63SISTEMAS DEINFORMAÇÃO

6363SISTEMAS DE

INFORMAÇÃO63

6363

63SISTEMAS DEINFORMAÇÃO

6363

6363SISTEMAS DE

INFORMAÇÃO63

63SISTEMAS DEINFORMAÇÃO

6363

6363SISTEMAS DE

INFORMAÇÃO6363

Especificadores de acesso

Acesso public protected sem nada private

Classe Sim Sim Sim Sim

Pacote Sim Sim Sim Não

Subclasse Sim Sim Não Não

Mundo Sim Não Não Não

protectedindica que o código pode ser acessado somente dentro do pacote ou por uma subclasse de sua classe em outro pacote

Page 64: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6464

6464SISTEMAS DE

INFORMAÇÃO64

6464

64SISTEMAS DEINFORMAÇÃO

6464SISTEMAS DE

INFORMAÇÃO64

6464

64SISTEMAS DEINFORMAÇÃO

6464

6464SISTEMAS DE

INFORMAÇÃO64

64SISTEMAS DEINFORMAÇÃO

6464

64

SISTEMAS DEINFORMAÇÃO

6464

6464 64SISTEMAS DE

INFORMAÇÃO64

6464

64SISTEMAS DEINFORMAÇÃO

6464SISTEMAS DE

INFORMAÇÃO64

6464

64SISTEMAS DEINFORMAÇÃO

6464

6464SISTEMAS DE

INFORMAÇÃO64

64SISTEMAS DEINFORMAÇÃO

6464

6464SISTEMAS DE

INFORMAÇÃO6464

Abstract

• abstract class X:– X não pode ser instanciada– Não podemos fazer new X();

• abstract int metodo():– O método é deixado sem código na classe– Cabe aos filhos implementar

• Todo método abstract torna a classe abstract• Nem toda classe abstract possui métodos

abstract– Basta que não desejemos que seja instanciada

Page 65: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6565

6565SISTEMAS DE

INFORMAÇÃO65

6565

65SISTEMAS DEINFORMAÇÃO

6565SISTEMAS DE

INFORMAÇÃO65

6565

65SISTEMAS DEINFORMAÇÃO

6565

6565SISTEMAS DE

INFORMAÇÃO65

65SISTEMAS DEINFORMAÇÃO

6565

65

SISTEMAS DEINFORMAÇÃO

6565

6565 65SISTEMAS DE

INFORMAÇÃO65

6565

65SISTEMAS DEINFORMAÇÃO

6565SISTEMAS DE

INFORMAÇÃO65

6565

65SISTEMAS DEINFORMAÇÃO

6565

6565SISTEMAS DE

INFORMAÇÃO65

65SISTEMAS DEINFORMAÇÃO

6565

6565SISTEMAS DE

INFORMAÇÃO6565

class Pessoa {String nome;int RG;Pessoa(String nome, int RG){

this.nome = nome;this.RG = RG;

}

void respirar(){System.out.println("Pessoa respirando.");

}

void dormir(){System.out.println("Pessoa dormindo.");

}}

Page 66: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6666

6666SISTEMAS DE

INFORMAÇÃO66

6666

66SISTEMAS DEINFORMAÇÃO

6666SISTEMAS DE

INFORMAÇÃO66

6666

66SISTEMAS DEINFORMAÇÃO

6666

6666SISTEMAS DE

INFORMAÇÃO66

66SISTEMAS DEINFORMAÇÃO

6666

66

SISTEMAS DEINFORMAÇÃO

6666

6666 66SISTEMAS DE

INFORMAÇÃO66

6666

66SISTEMAS DEINFORMAÇÃO

6666SISTEMAS DE

INFORMAÇÃO66

6666

66SISTEMAS DEINFORMAÇÃO

6666

6666SISTEMAS DE

INFORMAÇÃO66

66SISTEMAS DEINFORMAÇÃO

6666

6666SISTEMAS DE

INFORMAÇÃO6666

abstract class Aluno extends Pessoa {String nome;int RG;int numeroUSP;

Aluno(String n, int rg, int nUSP){super(n,rg);numeroUSP = nUSP;

}

void respirar(){System.out.println("Aluno respirando.");

}

final void fazerTrabalhos(){System.out.println("Trabalhando.");

}

abstract void estudar();}

Método abstratos precisam serimplementado nas sub-classesnão abstratas.

Um método não pode ser abstratoe estático ao mesmo tempo

Page 67: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6767

6767SISTEMAS DE

INFORMAÇÃO67

6767

67SISTEMAS DEINFORMAÇÃO

6767SISTEMAS DE

INFORMAÇÃO67

6767

67SISTEMAS DEINFORMAÇÃO

6767

6767SISTEMAS DE

INFORMAÇÃO67

67SISTEMAS DEINFORMAÇÃO

6767

67

SISTEMAS DEINFORMAÇÃO

6767

6767 67SISTEMAS DE

INFORMAÇÃO67

6767

67SISTEMAS DEINFORMAÇÃO

6767SISTEMAS DE

INFORMAÇÃO67

6767

67SISTEMAS DEINFORMAÇÃO

6767

6767SISTEMAS DE

INFORMAÇÃO67

67SISTEMAS DEINFORMAÇÃO

6767

6767SISTEMAS DE

INFORMAÇÃO6767

public class AlunoRegular extends Aluno{AlunoRegular(String nome, int RG, int NUSP){

super(nome,RG,NUSP);}

void estudarMuito(){System.out.println("Estudando muito!");

}

void estudar(){System.out.println("Aluno Regular Estudando");

}}

PRECISA implementar todosos métodos abstratos dasuper-classe

Page 68: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6868

6868SISTEMAS DE

INFORMAÇÃO68

6868

68SISTEMAS DEINFORMAÇÃO

6868SISTEMAS DE

INFORMAÇÃO68

6868

68SISTEMAS DEINFORMAÇÃO

6868

6868SISTEMAS DE

INFORMAÇÃO68

68SISTEMAS DEINFORMAÇÃO

6868

68

SISTEMAS DEINFORMAÇÃO

6868

6868 68SISTEMAS DE

INFORMAÇÃO68

6868

68SISTEMAS DEINFORMAÇÃO

6868SISTEMAS DE

INFORMAÇÃO68

6868

68SISTEMAS DEINFORMAÇÃO

6868

6868SISTEMAS DE

INFORMAÇÃO68

68SISTEMAS DEINFORMAÇÃO

6868

6868SISTEMAS DE

INFORMAÇÃO6868

public final class AlunoEspecial extends Aluno{AlunoEspecial(String nome, int RG, int NUSP){

super(nome,RG,NUSP);}

void respirar(){super.respirar();System.out.println("Aluno especial respirando.");

}

/* void fazerTrabalhos(){...

}*/

void estudar(){System.out.println("Aluno Especial Estudando");

}}

NAO é possível usarsuper.super.respirar(super.super não é permitido)

Este metodo não pode serimplementado aqui por serfinal na super-clase (Aluno)

PRECISA implementartodos os métodos abstratosda super-classe

Page 69: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

6969

6969SISTEMAS DE

INFORMAÇÃO69

6969

69SISTEMAS DEINFORMAÇÃO

6969SISTEMAS DE

INFORMAÇÃO69

6969

69SISTEMAS DEINFORMAÇÃO

6969

6969SISTEMAS DE

INFORMAÇÃO69

69SISTEMAS DEINFORMAÇÃO

6969

69

SISTEMAS DEINFORMAÇÃO

6969

6969 69SISTEMAS DE

INFORMAÇÃO69

6969

69SISTEMAS DEINFORMAÇÃO

6969SISTEMAS DE

INFORMAÇÃO69

6969

69SISTEMAS DEINFORMAÇÃO

6969

6969SISTEMAS DE

INFORMAÇÃO69

69SISTEMAS DEINFORMAÇÃO

6969

6969SISTEMAS DE

INFORMAÇÃO6969

• Aluno foi escolhida como abstrata pelo fato de, neste sistema, existirem apenas alunos especiais e regulares.– Não DEVERIA ser possível criar um aluno genérico– Por isso usamos abstract

Observações

Page 70: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

7070

7070SISTEMAS DE

INFORMAÇÃO70

7070

70SISTEMAS DEINFORMAÇÃO

7070SISTEMAS DE

INFORMAÇÃO70

7070

70SISTEMAS DEINFORMAÇÃO

7070

7070SISTEMAS DE

INFORMAÇÃO70

70SISTEMAS DEINFORMAÇÃO

7070

70

SISTEMAS DEINFORMAÇÃO

7070

7070 70SISTEMAS DE

INFORMAÇÃO70

7070

70SISTEMAS DEINFORMAÇÃO

7070SISTEMAS DE

INFORMAÇÃO70

7070

70SISTEMAS DEINFORMAÇÃO

7070

7070SISTEMAS DE

INFORMAÇÃO70

70SISTEMAS DEINFORMAÇÃO

7070

7070SISTEMAS DE

INFORMAÇÃO7070

• Classes podem implementar mais de uma interface

• Classes só podem estender uma única classe– Não existe herança múltipla em java

• Construtores não podem ser final

Finalmente

Page 71: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

7171

7171SISTEMAS DE

INFORMAÇÃO71

7171

71SISTEMAS DEINFORMAÇÃO

7171SISTEMAS DE

INFORMAÇÃO71

7171

71SISTEMAS DEINFORMAÇÃO

7171

7171SISTEMAS DE

INFORMAÇÃO71

71SISTEMAS DEINFORMAÇÃO

7171

71

SISTEMAS DEINFORMAÇÃO

7171

7171 71SISTEMAS DE

INFORMAÇÃO71

7171

71SISTEMAS DEINFORMAÇÃO

7171SISTEMAS DE

INFORMAÇÃO71

7171

71SISTEMAS DEINFORMAÇÃO

7171

7171SISTEMAS DE

INFORMAÇÃO71

71SISTEMAS DEINFORMAÇÃO

7171

7171SISTEMAS DE

INFORMAÇÃO7171

Construtores e Herança

public class teste {}

public class teste2 extends teste {public static void main(String[] args) {

teste t = new teste2(); }}

Quando criamos um objeto de uma classe que não tem construtor, o Java usará um construtor padrão (sem parâmetros).

Esse construtor, por sua vez, chamará, automaticamente, o construtor padrão da classe-pai.

E assim por diante

Page 72: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

7272

7272SISTEMAS DE

INFORMAÇÃO72

7272

72SISTEMAS DEINFORMAÇÃO

7272SISTEMAS DE

INFORMAÇÃO72

7272

72SISTEMAS DEINFORMAÇÃO

7272

7272SISTEMAS DE

INFORMAÇÃO72

72SISTEMAS DEINFORMAÇÃO

7272

72

SISTEMAS DEINFORMAÇÃO

7272

7272 72SISTEMAS DE

INFORMAÇÃO72

7272

72SISTEMAS DEINFORMAÇÃO

7272SISTEMAS DE

INFORMAÇÃO72

7272

72SISTEMAS DEINFORMAÇÃO

7272

7272SISTEMAS DE

INFORMAÇÃO72

72SISTEMAS DEINFORMAÇÃO

7272

7272SISTEMAS DE

INFORMAÇÃO7272

Construtores e Herança

public class teste {teste(int x){}

}

public class teste2 extends teste {public static void main(String[] args) {

teste t = new teste2(); }}

Quando criamos um construtor não padrão em uma classe, o construtor padrão deixa de existir.

E qualquer subclasse que precise dele vai gerar erro de compilação

Page 73: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

7373

7373SISTEMAS DE

INFORMAÇÃO73

7373

73SISTEMAS DEINFORMAÇÃO

7373SISTEMAS DE

INFORMAÇÃO73

7373

73SISTEMAS DEINFORMAÇÃO

7373

7373SISTEMAS DE

INFORMAÇÃO73

73SISTEMAS DEINFORMAÇÃO

7373

73

SISTEMAS DEINFORMAÇÃO

7373

7373 73SISTEMAS DE

INFORMAÇÃO73

7373

73SISTEMAS DEINFORMAÇÃO

7373SISTEMAS DE

INFORMAÇÃO73

7373

73SISTEMAS DEINFORMAÇÃO

7373

7373SISTEMAS DE

INFORMAÇÃO73

73SISTEMAS DEINFORMAÇÃO

7373

7373SISTEMAS DE

INFORMAÇÃO7373

Construtores e Herança

public class teste {teste(int x){}

}

public class teste2 extends teste {teste2 (int a) {}

teste2 () {}

public static void main(String[] args) { teste t = new teste2(2);}

}

Infelizmente, toda subclasse que não chama nenhum construtor do pai, implicitamente chama o padrão.

Nada disso irá funcionar...

Page 74: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

7474

7474SISTEMAS DE

INFORMAÇÃO74

7474

74SISTEMAS DEINFORMAÇÃO

7474SISTEMAS DE

INFORMAÇÃO74

7474

74SISTEMAS DEINFORMAÇÃO

7474

7474SISTEMAS DE

INFORMAÇÃO74

74SISTEMAS DEINFORMAÇÃO

7474

74

SISTEMAS DEINFORMAÇÃO

7474

7474 74SISTEMAS DE

INFORMAÇÃO74

7474

74SISTEMAS DEINFORMAÇÃO

7474SISTEMAS DE

INFORMAÇÃO74

7474

74SISTEMAS DEINFORMAÇÃO

7474

7474SISTEMAS DE

INFORMAÇÃO74

74SISTEMAS DEINFORMAÇÃO

7474

7474SISTEMAS DE

INFORMAÇÃO7474

Construtores e Herança

public class teste {teste(int x){}

}

public class teste2 extends teste {teste2 (int a) { super(a); }

teste2 () { super(0); }

public static void main(String[] args) { teste t = new teste2(2);}

}

A menos que, ou implementemos um teste() (nem que seja vazio) no pai, ou definamos o construtor do pai que deve ser chamado na classe filho

Page 75: Herança - Escola de Artes, Ciências e Humanidades · Reuso e Herança • Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento

SISTEMAS DEINFORMAÇÃO

7575

7575SISTEMAS DE

INFORMAÇÃO75

7575

75SISTEMAS DEINFORMAÇÃO

7575SISTEMAS DE

INFORMAÇÃO75

7575

75SISTEMAS DEINFORMAÇÃO

7575

7575SISTEMAS DE

INFORMAÇÃO75

75SISTEMAS DEINFORMAÇÃO

7575

75

SISTEMAS DEINFORMAÇÃO

7575

7575 75SISTEMAS DE

INFORMAÇÃO75

7575

75SISTEMAS DEINFORMAÇÃO

7575SISTEMAS DE

INFORMAÇÃO75

7575

75SISTEMAS DEINFORMAÇÃO

7575

7575SISTEMAS DE

INFORMAÇÃO75

75SISTEMAS DEINFORMAÇÃO

7575

7575SISTEMAS DE

INFORMAÇÃO7575

Fátima L. S. NunesLuciano A. DigiampietriNorton T. Roman

Herança