Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e...

26
Capítulos 5 e 6 Orientação a Objetos Classes

Transcript of Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e...

Page 1: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

Capítulos 5 e 6

Orientação a Objetos

Classes

Page 2: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

2Capítulos 5 e 6 – Orientação a Objetos e Classes

Orientação a Objetos

• Classe e Objeto

• Atributos

• Valor null

• Métodos (recapitulação)

• Encapsulamento

• Cláusula this

• Diagrama de classe

• Relacionamento “tem-um”

Page 3: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

3Capítulos 5 e 6 – Orientação a Objetos e Classes

Exemplo de classe em Java

public class Conta {

public int numero;

public String nome;

public double saldo;

}

Na aplicação principal:

Conta c1;c1 = new Conta();

Conta c2 = new Conta();

c1.numero = 5003;c1.nome = "Manuel";c1.saldo = 800.0;

c2.numero = 5004;c2.nome = "Joaquim";c2.saldo = 650.0;

Page 4: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

4Capítulos 5 e 6 – Orientação a Objetos e Classes

Classe e Objeto

public class Conta {

public int numero;

public String nome;

public double saldo;

}

Conta c1 = new Conta();c1.numero = 5003;c1.nome = "Manuel";c1.saldo = 800.0;

Conta(Classe)

c1(Objeto)

instanciação

Page 5: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

5Capítulos 5 e 6 – Orientação a Objetos e Classes

Atributos (membros de dados)

public class Conta {

public int numero;

public String nome;

public double saldo;

}

Atributos

Page 6: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

6Capítulos 5 e 6 – Orientação a Objetos e Classes

Objeto (instância)

Conta c1 = new Conta();c1.numero = 5003;c1.nome = "Manuel";c1.saldo = 800.0;

Instanciação(criação do objeto)

Variável(Contém o objeto)

Page 7: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

7Capítulos 5 e 6 – Orientação a Objetos e Classes

Valor nullConta c1 = null;. . . . . .. . . . . .

if (c1 == null) {c1 = new Conta();

}

c1.numero = 5003;c1.nome = "Manuel“;c1.saldo = 800.0;

Page 8: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

8Capítulos 5 e 6 – Orientação a Objetos e Classes

Exercício

• Capítulo 6 – laboratório 1

Page 9: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

9Capítulos 5 e 6 – Orientação a Objetos e Classes

Métodos (membros de ação)

public class Conta {public int numero;public String nome;public double saldo;

public void depositar (double v) {saldo += v;

}

public void retirar (double v) {saldo -= v;

}}

Na aplicação principal:

Conta c1 = new Conta();c1.numero = 5003;c1.nome = "Manuel";c1.saldo = 800.0;c1.depositar(150.0);c1.retirar(300.0);

Page 10: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

10Capítulos 5 e 6 – Orientação a Objetos e Classes

Sobrecarga de métodospublic class Conta {

public int numero;public String nome;public double saldo = 0;

/** Retira o valor especificado */public void retirar (double v) {

if (v <= saldo) saldo -= v;else System.err.println("Saldo insuficiente");

}

/** Retira todo o valor do saldo */public void retirar () {

saldo = 0;}. . . . . . . . . .

}

Page 11: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

11Capítulos 5 e 6 – Orientação a Objetos e Classes

Sobrecarga de métodosNa aplicação principal:

Conta c1 = new Conta();c1.depositar(700.0);c1.retirar(300.0);

System.out.print("Saldo: ");System.out.print(c1.getSaldo());

c1.retirar();

System.out.print("Saldo: ");System.out.print(c1.getSaldo());

Page 12: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

12Capítulos 5 e 6 – Orientação a Objetos e Classes

Exercício

• Capítulo 7 – laboratório 1

Page 13: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

13Capítulos 5 e 6 – Orientação a Objetos e Classes

Encapsulamentopublic class Conta {

public int numero;public String nome;private double saldo;

public void depositar (double v) {saldo += v;

}

public void retirar (double v) {if (v <= saldo) saldo -= v;else System.out.println("Saldo insuficiente");

}

public double getSaldo () {return saldo;

}}

Membro privado(inacessível fora da classe)

Page 14: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

14Capítulos 5 e 6 – Orientação a Objetos e Classes

Encapsulamento

Na aplicação principal:

Conta c1 = new Conta();

c1.numero = 5003;c1.nome = "Manuel";

c1.saldo = 800.0;

c1.depositar(420.0);c1.retirar(300.0);

System.out.print("Saldo atual: ");System.out.print(c1.getSaldo());

Inacessível

Page 15: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

15Capítulos 5 e 6 – Orientação a Objetos e Classes

Modificadores public e private

• public

– Modificador de acesso que torna o membro da classe visível e utilizável por qualquer outra classe da aplicação.

• private

– Modificador de acesso que torna o membro da classe restrito para uso interno da própria classe.

– Membros privados são inacessíveis fora da classe.

Page 16: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

16Capítulos 5 e 6 – Orientação a Objetos e Classes

Terminologia get/setpublic class Conta {

private int numero;private String nome;private double saldo;

public int getNumero () {return numero;

}

public void setNumero (int n) {numero = n;

}

public String getNome () {return nome;

}

public void setNome (String n) {nome = n;

}

public double getSaldo () {return saldo;

}}

Page 17: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

17Capítulos 5 e 6 – Orientação a Objetos e Classes

Terminologia get/setpublic class Conta {

private int numero;private String nome;private double saldo;

public int getNumero () {return numero;

}

public void setNumero (int n) {numero = n;

}

public String getNome () {return nome;

}

public void setNome (String n) {nome = n;

}

public double getSaldo () {return saldo;

}}

Membros de dadosTodos são privados (private)

Page 18: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

18Capítulos 5 e 6 – Orientação a Objetos e Classes

Terminologia get/setpublic class Conta {

private int numero;private String nome;private double saldo;

public int getNumero () {return numero;

}

public void setNumero (int n) {numero = n;

}

public String getNome () {return nome;

}

public void setNome (String n) {nome = n;

}

public double getSaldo () {return saldo;

}}

Métodos getSão públicos (public)

Retornam um valor

Não possuem parâmetros

Page 19: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

19Capítulos 5 e 6 – Orientação a Objetos e Classes

Terminologia get/setpublic class Conta {

private int numero;private String nome;private double saldo;

public int getNumero () {return numero;

}

public void setNumero (int n) {numero = n;

}

public String getNome () {return nome;

}

public void setNome (String n) {nome = n;

}

public double getSaldo () {return saldo;

}}

Métodos setSão públicos (public)

Não retornam valor (void)

Possuem um único parâmetro

Page 20: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

20Capítulos 5 e 6 – Orientação a Objetos e Classes

Terminologia get/set

Na aplicação principal:

Conta c1 = new Conta();

c1.setNumero(5003);c1.setNome("Manuel");

c1.depositar(420.0);c1.retirar(300.0);

System.out.print("Saldo atual: " + c1.getSaldo());

Page 21: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

21Capítulos 5 e 6 – Orientação a Objetos e Classes

Cláusula thispublic class Conta {

. . . . .private int matricula = 18;. . . . .public void calculaAlgo() {

int matricula = 32;. . . . . System.out.println(matricula);

System.out.println(this.matricula);}. . . . .. . . . .

}

Variável local

AtributoA palavra-chave this força

o java a enxergar a variável como um

membro da classe.

Page 22: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

22Capítulos 5 e 6 – Orientação a Objetos e Classes

Diagrama de classe

Conta

numero : intnome : Stringsaldo : double

getNumero()setNumero(int)getNome()setNome(String)getSaldo()depositar(double)retirar(double)

Nome da classe

Membros de dadosatributos

Membros de açãométodos

Page 23: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

23Capítulos 5 e 6 – Orientação a Objetos e Classes

Relacionamento “tem-um”

Cliente

cpf : Stringnome : Stringendereco : Stringconta : Conta

getCpf()setCpf(String)getNome()setNome(String)getEndereco()setEndereco(String)getConta()setConta(Conta)

Conta

numero : intsaldo : double

getNumero()setNumero(int)getSaldo()depositar(double)retirar(double)

Page 24: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

24Capítulos 5 e 6 – Orientação a Objetos e Classes

Relacionamento “tem-um”

public class Cliente {

private Conta conta;

public Conta getConta () {return conta;

}

public void setConta (Conta c) {conta = c;

}

. . . . .

. . . . .

. . . . .}

Page 25: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

25Capítulos 5 e 6 – Orientação a Objetos e Classes

Relacionamento “tem-um”

Na aplicação principal:

Conta con = new Conta();con.setNumero(5003);con.depositar(300.0);

Cliente cli = new Cliente();cli.setCpf("427.461.425-54");cli.setNome("Manuel da Silva");cli.setConta(con);

String nome = cli.getNome();double saldo = cli.getConta().getSaldo();

System.out.print("Saldo do cliente " + nome + ": " + saldo );

Page 26: Capítulos 5 e 6 Orientação a Objetos Classes. 2 Capítulos 5 e 6 – Orientação a Objetos e Classes Orientação a Objetos Classe e Objeto Atributos Valor.

26Capítulos 5 e 6 – Orientação a Objetos e Classes

Exercício

• Capítulo 6 – laboratório 1 reformulado

– Alterar a classe Cliente utilizando o padrão get/set;

– A classe Cadastro deverá preencher as instâncias de Cliente através dos métodos set;

– Para exibir os dados das instâncias, a classe Cadastro deverá utilizar os métodos get da classe Cliente.