Representar um número de CPF

3 respostas
A

Olá :slight_smile:

[color=red]Métodos:

public boolean isValid()
Retorna true caso o dv armazenado na instância esteja correto, dado o valor da base e o algoritmo de cálculo do dv para um CPF.

Devem ser fornecidos ainda os métodos equals, hashCode e toString, segundo a semântica definida por java.lang.Object. O Método toString deve retornar o número de CPF com um único traço “-” separando a base e o dv.

Use os casos de teste fornecidos em CPFTest para validar a funcionalidade da classe. Não modifique estes casos de teste, caso contrário seu programa não será aceito.[/color]

[color=#444444]O esqueleto incial é este:

public class CPF {

private String base;
private String dv;

public boolean isValid() {
	return false;
}

}[/color]

[color=red] E o cenário de teste é este:[/color]

import junit.framework.TestCase;

public class CPFTest extends TestCase {

String cpfsValidos[][]   = {{ 486697056, 13 }, { 573649556, 23 }, { 482431485, 23}, {039257713, 52}};

String cpfsInvalidos[][] = {{ 566797056, 13 }, { 123955526, 34 }, { 124543145, 03}, {384416712, 93}};
public void testCPFsValidos() {
	for (String[] cpfString : cpfsValidos) {
		CPF cpf = new CPF(cpfString[0], cpfString[1]);
		assertEquals(cpf.getBase(), cpfString[0]);
		assertEquals(cpf.getDv(), cpfString[1]);
		assertTrue(cpf.isValid());
	}
}

public void testCPFsInvalidos() {
for (String[] cpfString : cpfsInvalidos) {
		new CPF(cpfString[0], cpfString[1]);
		CPF cpf = new CPF(cpfString[0], cpfString[1]);
		assertEquals(cpf.getBase(), cpfString[0]);
		assertEquals(cpf.getDv(), cpfString[1]);
		assertFalse(cpf.isValid());
	}
}

public void testValidCPFComPrimeiroDigitoVerificadorIgualADez() {
	CPF cpf = new CPF("328160232", "06");
	assertTrue(cpf.isValid());		
}

public void testValidCPFComSegundoDigitoVerificadorIgualADez() {
	CPF cpf = new CPF("551783744", "10");
	assertTrue(cpf.isValid());		
}

public void testToStringCPF() {
	for (String[] cpfString : cpfsValidos) {
		CPF cpfObject = new CPF(cpfString[0], cpfString[1]);
		assertEquals(cpfString[0] + "-" + cpfString[1], cpfObject.toString());
	}
}

public void testCPFIguais(){
	for (String[] cpfString : cpfsValidos) {
		CPF cpf = new CPF(cpfString[0], cpfString[1]);
		CPF cpf2 = new CPF(cpfString[0], cpfString[1]);
		assertTrue(cpf.equals(cpf2));
		assertEquals(cpf.hashCode(), cpf2.hashCode());
	}
}

public void testCPFDiferentes(){
	for (int i = 0; i < cpfsValidos.length - 1; i++) {
		CPF cpf = new CPF(cpfsValidos[i][0], cpfsValidos[i][1]);
		CPF cpf2 = new CPF(cpfsValidos[i+1][0], cpfsValidos[i+1][1]);
		assertFalse(cpf.equals(cpf2));
		assertTrue(cpf.hashCode() != cpf2.hashCode());
	}
}

}

[color=red]Alguem ae pode me ajuda, nao estou conseguindo sair do chao para fazer isto.
[/color]

Obs. Não posso modificar o cenario de teste, somente é autorizado mecher no “esqueleto inicial”.

Um Abraço e Obrigado.

3 Respostas

A

Desculpe, acho que nao fui bem específico, o que nao estou conseguindo entender é:

Devem ser fornecidos ainda os métodos equals, hashCode e toString, segundo a semântica definida por java.lang.Object.

Nao sei muito bem como utilizar, para que servira o equal,hashcode e toString.

Nao quero que fassa o exercício, caso contrario, estarei enganando a mim mesmo, só quero que me explica o caso que listei sobre os métodos.

Um Abraço e Obrigado.

A

RESOLVIDO

WellingtonRamos

Não sei bem o que vc quer fazer, mas a impressão que passa é que seria fazer o exercício para você (desculpe se não é essa a intenção :roll: )…

O certo é que o esqueleto inicial está incompleto.

Veja como a classe CPF é instanciada e utilizada e responda as perguntas abaixo.
O construtor utilizado existe?
Os métodos de CPF que são utilizados estão implementados como se deve?
Algum deles precisaria ser sobreescrito?

O cenário de teste não pode ser alterado pois é justamente ele que te ajudará a responder as questões acima.

Criado 28 de janeiro de 2011
Ultima resposta 28 de jan. de 2011
Respostas 3
Participantes 2