Baixe o app para aproveitar ainda mais
Prévia do material em texto
O Paradigma de Objetos em Java – Parte I Objetos � Um objeto é um conceito, abstração, ou entidade com limites bem definidos e um significado para a aplicação; � Informalmente um objeto representa uma entidade, tanto física quanto conceitual ou de software; Exemplos: � Entidade Física: caminhão, carro, bicicleta, etc. � Entidade Conceitual: processo químico, matrícula, etc � Entidade de Software: lista encadeada, arquivo, etc. Objetos (2) Atributos Operação 1 O peração 2 O pe ra çã o 5 Objeto geométrico cor: posição: selecionar(p: Ponto): boolean girar(Ângulo: real) mover(delta: coord) Exemplo Objetos (3) Características dos Objetos � Os dados de um objeto são totalmente escondidos e protegidos de outros objetos. A única maneira de acessá-los é através da invocação de uma operação declarada na interface pública do objeto. � A interface pública de um objeto consiste no conjunto de operações que um cliente do objeto pode acessar, o conjunto de métodos de um objeto. � Variáveis representando o estado interno do objeto são chamadas variáveis de instância ou atributos. As operações são chamadas de métodos. Atributos Operação 1 Operação 2 O pe ra çã o 5 Atributos Operação 1 Operação 2 O pe ra çã o 5 Comunicação entre Objetos Um objeto comunica-se com outro através de mensagens que identificam operações a serem realizadas no segundo objeto. Obj1 { ... Obj2.operação5(); ...} Objeto 1 Objeto 2 Características dos Objetos (2) Objetos (4) � Todo objeto possui: � um estado, que é normalmente implementado através de seu conjunto de atributos, os valores destes atributos, mais as ligações que o objeto pode ter com outros objetos; � uma identidade única. Identidade é a propriedade de um objeto que distingue-o de outros objetos. Identidade não é o nome do objeto, nem o endereço de memória onde ele está armazenado, é um conceito de linguagens de programação que não é visível para os “usuários”; e � um comportamento. O comportamento define como um objeto reage às requisições de outros objetos, em termos de mudanças de estados e passagem de mensagens. � Todo objeto possui um estado, exibe um comportamento bem-definido e possui uma identidade única. Objetos em Java � O operador new é usado em Java para se criar objetos. Date dataatual; dataatual = new Date(); � Neste momento, a máquina virtual aloca a memória necessária para armazenar os dados existentes no objeto dataatual; � Você pode criar tantos objetos quantos forem necessários ao seu programa; � Obs: Você não pode solicitar serviços (enviar mensagens ou acessar os dados) de um objeto antes que ele seja instanciado com new. Objetos em Java (2) import java.util.Date; public class DateTest { public static void main(String[] args) { Date d; d = new Date(); System.out.println(" Hoje e "+d.toString()); System.out.println("O ano e "+d.getYear() ); System.out.println("O mes e "+d.getMonth()); System.out.println("O dia e "+d.getDay() ); System.out.println("\n Mudanca de Dia "); d = new Date(1973,11,25); System.out.println(" Hoje e"+d.toString()); System.out.println("O ano e "+d.getYear() ); } } Classes � Uma classe é a descrição de um grupo de objetos com propriedades similares (atributos), comportamento comum (métodos) , relacionamentos com outros objetos e semânticas idênticas. � Todo objeto é instância de uma classe. int a; Date dataatual; Pessoa p; � Enquanto um objeto é uma entidade concreta que executa algum papel no sistema, uma classe captura a estrutura e comportamento comuns a todos os objetos relacionados. (Pessoa) Zezinho (Pessoa) Luizinho (Pessoa) Huguinho Pessoa Atributos Métodos nome:string idade:inteiro calcularIdade() Classes (2) � Uma classe define a estrutura e o comportamento de qualquer objeto da classe, atuando como um padrão para a construção de objetos. � Objetos podem ser agrupados em classes. Classes (3) � A definição da classe consiste na definição de atributos e métodos: � Um atributo é uma característica de uma classe. Atributos não apresentam comportamento, eles definem a estrutura da classe. � Um método, ou operação, caracteriza o comportamento de um objeto, e são o único meio de acessar, manipular e modificar os atributos de um objeto. Classes em Java � Em Java, utiliza-se a palavra reservada class para se definir classes. � Exemplo: class Conta { long saldo; // Saldo da Conta Corrente String titular; // Nome do titular long cpf; // CPF do titular public long getSaldo() {return saldo;} public long getCpf() {return cpf;} public String getTitular(){return titular;} } � O código acima define uma classe Conta que modela a conta-corrente de um usuário de um Banco. Classes em Java (2) � A classe DateTest definida anteriormente tinha a única função de conter o método main... import java.util.Date; public class DateTest { public static void main(String[] args) { Date d = new Date(); System.out.println("O ano e "+d.getYear() ); System.out.println("O mes e "+d.getMonth()); } } Classes em Java (3) � ... entretanto, temos interesse em criar nossas próprias classes para a criação de aplicações mais sofisticadas. public class NomedaClasse { // definicao dos metodos // definicao dos atributos } � Simplificadamente, em Java deve existir uma classe por arquivo. Classes em Java (4) import java.util.Date; public class Conta {// Inicio da Classe // definicao de atributos private int saldo; private String titular; private int cpf; private Date criacao; // definicao de metodos public Conta(int cp) { cpf = cp; saldo = 0; titular = " "; criacao = new Date(); } Classes em Java (5) public int getSaldo( ) { return saldo;} public void setSaldo(int s ) { saldo=s;} public String getTitular( ) { return titular;} public void setTitular(String n) { titular=n;} public int getCpf( ) { return cpf;} public void setCpf( int cp ) {cpf = cp; } public void depositar(int dep) { saldo += dep; } public void zerar() { saldo = 0; } Classes em Java (6) public void saque(int saq) { if (autoriza(saq)) saldo -= saq; else System.out.println("Não pode sacar"); } private boolean autoriza(int saq) { if (saldo>=saq) return true; else return false; } } // FIM da definicao da Classe Classes em Java (7) // ********* Programa Principal ********* public class TestaConta { public static void main(String[] args) { Conta n; n = new Conta(424819); n.setSaldo(100); n.setTitular("Cleidson R. B. Souza"); n.saque(200); n.saque(75); System.out.println(n); // OBS !!!! } Atributos em Java private int saldo; private String titular; private int cpf; private Date criacao; � Os atributos podem ser tipos primitivos da linguagem, mas observe que também pode-se criar atributos que são instâncias de outras classes. � A palavra-chave private garante que nenhum objeto externo poderá acessar os atributos diretamente, a não ser através de métodos. Métodos em Java public int getSaldo( ) {return saldo;} public void setSaldo(int s ) { saldo=s;} public int getCpf( ) {return cpf;} public String getTitular( ) {return titular;} public void setTitular(String n) { titular=n;} � Antes do nome do método, utiliza-se a palavra-chave public que permite que qualquer parte do programa acesse estes métodos; Métodos em Java (2) � Chamando métodos (1) � Notação: � nome-do-objeto.nome-do-método (argumentos);n.setSaldo(100); n.saque(200); n.saque(75); � Chamadas “aninhadas”: � Exemplos: � myObject.getClasse().getName(); � myObject.var.methodTwo(arg1, arg2) � System.out.println(arg1); Métodos Construtores � Um método construtor é um método usado para inicializar objetos de uma classe dando aos atributos o estado inicial desejado. � Java inicializa os atributos da classe com valores default que nem sempre são os desejados. public Conta(int cp) { cpf = cp; saldo = 0; titular = " "; criacao = new Date(); } Métodos Construtores (2) � Observações: � Um construtor tem sempre o mesmo nome da classe; � Um construtor pode assumir nenhum, um ou mais parâmetros; � Podem existir vários construtores; e � Um construtor é invocado com a palavra-chave new. Métodos Construtores (3) � Um construtor default é um construtor sem parâmetros. Se você define uma nova classe e não define um construtor, Java automaticamente cria um construtor default para a classe. Ele define todas as variáveis de instância para valores default originais (false para boolean, null para ponteiros, 0 para inteiros, etc.) Este construtor permite que você possa criar instâncias da classe chamando: NomedaClasse a = new NomedaClasse(); � Neste caso, você não pode passar nenhum parâmetro para o objeto que está sendo criado. Voltando aos Métodos ... � Todos os métodos de uma classe podem acessar seus atributos privados diretamente. Eles também podem fazer chamadas a outros métodos. � Um método pode acessar dados privados de todos os objetos dessa classe. public boolean equals(Conta out) { return ((saldo==out.saldo) && (cpf==out.cpf) && (titular.equals(out.titular)) && (criacao.equals(out.criacao)) ); } Métodos ... (2) � O método acessa os dados privados da classe Conta, o que era esperado, mas também acessa os dados privados do objeto out. � Isto é possível porque out também é uma instância da classe Conta, logo o método pode acessar todos os atributos privados de qualquer objeto desta classe. Métodos ... (3) � Os métodos também podem ser private ao invés de public. Métodos private são chamados a partir de outros métodos da mesma classe. Isto ocorre, porque, freqüentemente, você desejará quebrar o código de uma função em muitas funções separadas e estas funções não são úteis aos clientes, ou seja, não devem ser visíveis externamente. private boolean autoriza(int saq) � A “regra” é que cada método possa ser descrito através de um único verbo;
Compartilhar