Upload
internet
View
121
Download
0
Embed Size (px)
Citation preview
Capítulos 5 e 6
Orientação a Objetos
Classes
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”
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;
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
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
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)
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;
8Capítulos 5 e 6 – Orientação a Objetos e Classes
Exercício
• Capítulo 6 – laboratório 1
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);
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;}. . . . . . . . . .
}
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());
12Capítulos 5 e 6 – Orientação a Objetos e Classes
Exercício
• Capítulo 7 – laboratório 1
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)
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
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.
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;
}}
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)
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
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
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());
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.
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
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)
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;
}
. . . . .
. . . . .
. . . . .}
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 );
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.