A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Paradigmas da Programação – Semestre 1 – Aula 6 Professor: Eduardo Mantovani )

Apresentações semelhantes


Apresentação em tema: "Paradigmas da Programação – Semestre 1 – Aula 6 Professor: Eduardo Mantovani )"— Transcrição da apresentação:

1 Paradigmas da Programação – Semestre 1 – Aula 6 Professor: Eduardo Mantovani )

2 Sobrecargas de identificadores Ocorre sempre que um identificador de atributo ou de método tem seu nome repetido em uma mesma classe, podendo, a princípio, causar ambiguidade Ocorrência de sobrecarga de identificadores de atributos Pode haver a ocorrência de parâmetros de métodos ou variáveis locais de métodos com o mesmo nome de um atributo da classe Não pode haver dois atributos com mesmo nome na mesma classe Ocorrência de sobrecarga de métodos Pode haver dois ou mais métodos em uma mesma classe que tenham o mesmo nome, desde que tenham conjuntos de parâmetros diferentes

3 Sobrecarga de identificadores de atributos public class Pessoa { private String nome; private String rg; public void ajustarRg(String rg) { // rg é o parâmetro ou o atributo? } public String obterInicioNome() { String nome; // nome é a variável local ou o atributo? } }

4 Operador this O operador this faz referência ao próprio objeto instanciado da classe, do qual o método está sendo executado Funciona como uma variável que faz referência a uma instância de classe, só que a instância referida é o próprio objeto do qual método está sendo executado Resolve o problema da ambigüidade de sobrecarga de identificadores de atributos Pode ser usado para referência aos atributos e aos métodos do próprio objeto, com o uso de. (ponto) seguido do nome do atributo ou do método Se usado sem nenhum complemento (atributo ou método) pode servir como referência ao objeto em uma passagem de parâmetro (por exemplo) Também sem a agregação de complemento, pode ser usado para invocar o construtor, desde que dentro de outro construtor (ver sobrecarga de métodos).

5 Operador this: exemplo public class Pessoa { private String nome; private String rg; public void ajustarRg(String rg) { // rg é o parâmetro this.rg = rg; // this.rg refere-se ao atributo! } public String obterInicioNome() { String nome; // nome é a variável local nome = this.nome.substring(0, 10); return nome; } }

6 Sobrecarga de métodos public class Pessoa { private String nome; private String rg; // Retorna os 10 primeiros caracteres do nome public String obterInicioNome() { return obterInicioNome(10); } // Retorna os numCarac primeiros caracteres do nome public String obterInicioNome(int numCarac) { String nome; nome = this.nome.substring(0, numCarac); return nome; } }

7 Sobrecarga de métodos: conceitos Pode haver qualquer número de métodos com o mesmo nome em uma única classe, desde que o conjunto de parâmetros seja diferente: Em número Em tipo Em número e em tipo O nome do método junto com seu conjunto de parâmetros constituem a assinatura do método Não pode haver 2 métodos com a mesma assinatura em uma classe O reconhecimento da sobrecarga que será executada é feito pela assinatura completa Faz-se uso de sobrecarga de métodos quando há necessidade de oferecer maneiras diferentes de executar a mesma ação

8 Sobrecarga de métodos: seleção de sobrecarga public class ManipuladorPessoas { public void metodoQualquer() { Pessoa p = new Pessoa(); String n10 = p.obterInicioNome(); String n20 = p.obterInicioNome(20); } }

9 Sobrecarga de métodos construtores Construtores também podem ser sobrecarregados A seleção da sobrecarga a ser executada é dada no momento do instanciamento, de acordo com o número/tipos dos parâmetros informados junto do operador new A intenção é oferecer diferentes maneiras de inicializar os objetos instanciados da classe public class Pessoa { private String nome; private String rg; public Pessoa() { this.nome = Sem nome; this.rg = 0000; } public Pessoa(String nome, String rg) { this.nome = nome; this.rg = rg; } }

10 Sobrecarga de métodos construtores public class ManipuladorPessoas { public void metodoQualquer() { Pessoa indigente = new Pessoa(); Pessoa conhecido = new Pessoa(José da Silva, ); }

11 Uso do operador this para invocar construtores Se utilizado sem complemento e acompanhado de parênteses (execução de método), o operador this serve para invocar uma sobrecarga de construtor Esse recurso SÓ pode ser utilizado a partir de outro construtor

12 Uso do operador this para invocar construtores public class Pessoa { String nome; String rg; public Pessoa() { this(Sem nome, 0000); } public Pessoa(String nome, String rg) { this.nome = nome; this.rg = rg; } }

13 Exercícios Modele as classes Veiculo e Combustivel com os parâmetros dos modificadores causando sobrecarga de identificadores de atributos Modele a classe Veiculo com uma sobrecarga do método calcularCustoKM de modo que outro valor de consumo possa ser informado Modele a classe Veiculo de modo que os atributos possam ser informados em uma sobrecarga do construtor Modele a classe Combustivel para que os atributos possam ser informados em uma sobrecarga do construtor Faça a implementação das classes modeladas

14 Implementação a partir do diagrama de classe UML Combustivel -nome: String -preco: double +Combustivel() +obterNome():String +ajustarNome(novoNome:String):void +obterPreco():double +ajustarPreco(novoPreco:double):void Veiculo -placa: String -modelo: String -combustivel: Combustivel -consumo:double +Veiculo() +obterPlaca():String +ajustarPlaca(novaPlaca:String):void +obterModelo():String +ajustarModelo(novoModelo:String):void +obterCombustivel():Combustivel +ajustarCombustivel(novoCombustivel: Combustivel):void +obterConsumo():double +ajustarConsumo(novoConsumo:double): void +calcularCustoKM():double O cálculo do custo do KM rodado é feito com base no consumo e no preço do combustível


Carregar ppt "Paradigmas da Programação – Semestre 1 – Aula 6 Professor: Eduardo Mantovani )"

Apresentações semelhantes


Anúncios Google