Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação II CCE0234 Prof. Carlos Henrique Odenique Jardim Roteiro • Classes • Objetos • Construtores • Métodos • Objetos e Referências 2 Motivação • Programa de um banco – A conta é um entidade importante O que toda conta deve ter? 3 Motivação • Um conta deve ter valores e operações sobre esse valores Valores • número da conta • nome do cliente • saldo • limite Operações • saca uma quantidade x • deposita uma quantidade x • imprime o nome do dono da conta • devolve o saldo atual • transfere uma quantidade x para uma outra conta y • devolve o tipo de conta 4 Motivação • A especificação é utilizada para criar instâncias de contas – Nas instâncias é que são realizadas as operações Especificação da Conta Número Cliente Saldo Limite Número Cliente Saldo Limite Número Cliente Saldo Limite 5 Definição • Classe – Nome dado ao projeto da classe, ou seja, a sua definição • Objeto – Utilizando a definição construímos as contas propriamente 6 Definição • Classe tem origem na taxonomia da biologia • Seres vivos de uma mesma classe tem atributos e comportamentos em comum – No entanto, são indivíduos diferentes – Podem variar nos valores dos atributos e em seus comportamentos 7 Exemplo • Classe Homo Sapiens – Define um grupo de seres que possuem características comuns – Especificação – Para executar ações precisamos de uma instância de Homo Sapiens • Os objetos que anda, correm, comem, etc... 8 Classes • Classe – Um tipo cujos valores se chamam objetos – Objetos possuem • Membro de dados • Métodos membros – Métodos membro tem acesso especial aos dados de seu objeto – É o recurso mais importante para uma linguagem de programação orientada a objetos 9 Classes • Classe – É um tipo completo • Exatamente como os tipos int e double, por exemplo – Pode-se ter variáveis de um tipo classe – Pode-se ter parâmetros de um tipo classe – Um método pode retornar um valor de um tipo classe – Pode-se usar um tipo classe como qualquer outro tipo 10 Classes • Sintaxe 11 class Nome_Classe { Variáveis_Membro Métodos_Membro } Classes em Java • Atributo – Variável declarada dentro do escopo de classe public class Conta { int numero; String nome; double saldo; double limite; // .. } 12 Objetos • Objeto – O valor de uma variável de um tipo classe • Programa orientado a objetos – Coleção de objetos interagindo – Objetos podem interagir porque são capazes de ações • Invocações de métodos-membro 13 Objetos • A classe especifica o que todo objeto deve ter • Para instanciar (criar, construir) uma Conta é preciso utilizar o operador new 14 public class NossoBanco { public static void main(String[] args) { new Conta(); } } Objetos • Por meio da variável “c” pode-se utilizar o objeto criado – Pode-se modificar seus atributos como nome e saldo 15 public class NossoBanco { public static void main(String[] args) { Conta c; c = new Conta(); } } Objetos public class NossoBanco { public static void main(String[] args) { Conta c; c = new Conta(); c.nome = "Duke"; c.saldo = 1000.0; System.out.println("Saldo atual: " + c.saldo); } } 16 Métodos • O que cada conta faz? Como é feito? • Métodos definem o comportamento que cada classe tem – O que a classe faz • Exemplo: de que forma uma conta saca dinheiro? – As operações que cada classe faz • Comportamento é especificado dentro da própria classe Conta • Por quê? 17 Métodos • Método “sacar” – Retira uma determinada quantidade e não retorna informação alguma void sacar(double quantidade) { double novoSaldo = this.saldo - quantidade; this.saldo = novoSaldo; } 18 Métodos • void – Indica que o método não retorna nenhuma informação void depositar(double quantidade) { this.saldo += quantidade; } 19 Métodos • É preciso dizer quanto sacar, certo? – Como o fazer? • Argumento do método – Variável temporária (local) • Ao final da execução ela deixa de existir • Porquê o uso da palavra reservada this? – Usada para acessar atributos – O uso é opcional void sacar(double quantidade) { double novoSaldo = this.saldo - quantidade; this.saldo = novoSaldo; } 20 21 public class NossoBanco { public static void main(String[] args) { Conta c; c = new Conta(); c.nome = "Duke"; c.saldo = 1000.0; System.out.println("Saldo atual: " + c.saldo); // sacar 200 reais c.sacar(200); // depositar 500 reais c.depositar(500); System.out.println(c.saldo); } } Métodos • Métodos com retorno • Método sacar devolve um boolean para indicar sucesso ou falha na operação • A palavra chave return indica que o método vai “retornar” – Vai terminar e retornar a informação indicada 22 23 boolean sacar(double valor) { if (this.saldo < valor) { return false; } else { this.saldo = this.saldo - valor; return true; } } boolean sucesso = c.sacar(2000); if (sucesso) { System.out.println("Consegui sacar"); } else { System.out.println("Não consegui sacar"); } Objetos e Referências • Declaramos uma variável para associar a um objetos – A variável não guarda o objeto – É apenas uma forma de acessar o objeto • Referência para o objeto • Utilizamos o new após a declaração da variável 24 Objetos e Referências public static void main(String args[]) { Conta c1; c1 = new Conta(); Conta c2; c2 = new Conta(); } 25 Objetos e Referências • Correto – c1 se refere a um objeto • Incorreto – c1 é um objeto • c1 é uma variável referência 0xBC11 c1 (0xBA76) 0xBD21 c2 (0xBB12) Conta c1; c1 = new Conta(); Conta c2; c2 = new Conta(); 26 Objetos e Referências • O operador ”=” copia o valor de uma variável – O valor guardado é a referência para onde o objeto • Endereço na memória principal Conta c1 = new Conta(); c1.depositar(100); Conta c2 = c1; c2.depositar(200); System.out.println(c1.saldo); System.out.println(c2.saldo); 0xBC11 c1 (0xBA76) 0xBC11 c2 (0xBB12) 27 Objetos e Referências • new – Aloca memória para o objeto – Devolve uma referência para o objeto • Ao atribuir a referência a variável, esta passa a se referir a esse objeto 28 Objetos e Referências public static void main(String args[]) { Conta c1 = new Conta(); c1.nome = "Duke"; c1.saldo = 227; Conta c2 = new Conta(); c2.nome = "Duke"; c2.saldo = 227; if (c1 == c2) { System.out.println("Contas iguais"); } } 29 Construtores • new – Utilizado para construir um objeto – O new executa o construtor da classe • O construtor da classe é um bloco declarado com o mesmo nome da classe 30 Construtores public class Conta { int numero; String nomeCliente; double saldo; double limite; // Construtor. public Conta() { System.out.printl("Construindo uma conta."); } } Operação de inicialização. Chamada sempre que um novo objeto é criado. 31 Construtores • Se nenhum construtor é declarado, o compilador cria um construtor default – Ele não recebe argumento e o corpo é vazio • Se um construtor é declarado, o construtor default não é mais fornecido 32 Construtores • Podem receber argumentos – Por exemplo: inicializar algum tipo de informação • Exemplo – Construtor recebe o nome do cliente – Quando uma conta for criada, ela terá o nome do cliente 33 34 public class Conta { int numero; String nomeCliente; double saldo; double limite; // Construtor. public Conta(String nomeCliente) { this.nomeCliente = nomeCliente; } } Conta c = new Conta("Duke"); System.out.println(c.nomeCliente);Construtores • O construtor possibilita passar argumentos para o objeto durante a inicialização do mesmo • Exemplo – Não poderíamos abrir um arquivo sem dizer qual é o nome do arquivo – Logo, é esperado que seja passado uma String que representa o nome do arquivo • O argumento torna-se obrigatório 35 Construtores • Pode-se ter mais de um construtor em uma classe, inclusive com o construtor default – Ao utilizar o new, o construtor pertinente deve ser escolhido • Só podem ser executados durante a construção do objeto 36 37 public class Conta { int numero; String nomeCliente; double saldo; double limite; // Construtor. public Conta(String nomeCliente) { this.nomeCliente = nomeCliente; } // Construtor. public Conta(int numero, String nomeCliente) { this.nomeCliente = nomeCliente; this.numero = numero; } } 38 public class Conta { int numero; String nomeCliente; double saldo; double limite; // Construtor. public Conta(String nomeCliente) { this.nomeCliente = nomeCliente; } // Construtor. public Conta(int numero, String nomeCliente) { // chama o construtor que foi declarado acima this(nomeCliente); this.numero = numero; } } Pode invocar outros métodos Exercício • Abstrair o tipo Ponto – Conjunto de valores que o tipo assume • Um par ordenado representando as coordenadas em um plano – Conjunto de operações sobre o tipo • Obter as coordenadas • Modificar as coordenadas • Calcular a distância entre dois pontos 39 Exercício • Abstrair o tipo Círculo – Conjunto de valores que o tipo assume • Um ponto representando as coordenadas do centro • Um valor escalar representando o raio – Conjunto de operações sobre o tipo • Obter o centro ou o raio • Modificar o centro ou o raio • Calcular a área do círculo • ... 40 JavaBean • Modelo de componentes – Todos os atributos são privados – Atributos são acessados por métodos getters e setters – Possui um construtor vazio (padrão) • Estude o modelo de componentes em – http://www.oracle.com/technetwork/java/javase/t ech/index-jsp-138795.html 41 Material Sugerido • DEITEL, H. M.; DEITEL, P. J.; LISBOA, C. A. L. Java: como programar. 8 ed. São Paulo: Pearson Prentice Hall, 2010. 1144p. 42
Compartilhar