Ajuda com Interface!

Eu estou com problemas no entendimento desse método getTratamento() da classe Autoridade. Por favor, me expliquem a lógica, também, que foi utilizada na classe TesteAutoridade.

public interface FormatadorNome {

	String formatarNome(String nome, String sobrenome);

}

public class Autoridade{

	private String nome;
	private String sobrenome;
	public FormatadorNome fn;
	
	public Autoridade(String nome, String sobrenome, FormatadorNome fn) {
		this.nome = nome;
		this.sobrenome = sobrenome;
		this.fn = fn;
	}

	public String getTratamento() {
		return fn.formatarNome(nome, sobrenome);
	}
}

public class Informal implements FormatadorNome{

	@Override
	public String formatarNome(String nome, String sobrenome) {
		return nome;
	}
}

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class TesteAutoridade {

	@Test
	void testeInformal() {
		FormatadorNome f = new Informal();
		Autoridade a = new Autoridade("Pedro", "Cabral", f);
		assertEquals("Pedro", a.getTratamento());
		
	}

vou tentar te explicar,
De acordo com o cod exite uma interface que representa FormadorNome que tem um contrato de formatarNome(nome,sobrenome) isso é uma exposição de uma regra que diz existe formas de formatar o nome.
Tem outra classe autoridade que quando é criada recebe o nome,sobrenome e formatadorNome
e esse formatador de nome é chamado quando se obtem o retorno de getTratamento … então o comportamento de getTratamento depende do comportamento de formatadoNome.
Agora formatadorNome é uma inteface apenas é um contrato apenas diz que quem obedece sua definição necessáriamente tem um metodo formatarNome, ai aparece a classe Informal que tem o comportamento da função formatarNome.
Ai no metodo de teste segue
FormatadorNome f = new Informal()
contrato e classe concreta que tem a regra do comportamento
Autoridade a = new Autoridade(“Pedro”, “Cabral”, f);
Criação da classe autoridade
assertEquals(“Pedro”, a.getTratamento());
validação do comportamento
Caso tenha duvida manda mensagem

1 curtida

Valeu, cara! Consegui entender, sim. Eu sou iniciante na POO espero que com a prática, eu consiga avançar no “por quê” de cada coisa.