Relatório sobre este programa alguem ajuda?!

Opa pessoal e que estava precisando de uma ajuda so para identificar esse codigo dizer o que ele faz, para que serve cada coisa um relatório geral sobre ele por favor se poderem ajudar ficaria grato querisa um relatório exato falando sobre o programa, oq cada parte dele faz, etc

public class Funcionario {
protected String nome, rg;
protected double salario;
public Funcionario(String vNome, String vRG, double vSalario){
nome = vNome;
rg = vRG;
salario = vSalario;
}
public String getNome(){
return nome;
}
public String getRG(){
return rg;
}
public double getSalario(){
return salario;
}
public void setNome(String vNome){
if(vNome.length() >= 2){
nome = vNome;
}
}
public void setRG(String vRG){
if(vRG.length() >= 5){
rg = vRG;
}
}
public void setSalario(double vSalario){
if(vSalario > 0){
salario = vSalario;
}
}
}

public class Vendedor extends Funcionario{
protected double vendas;
public Vendedor(String vNome, String vRG, double vSalario){
super(vNome, vRG, vSalario);
vendas = 0;
}
public double getVendas(){
return vendas;
}
public void InformaVendas(double valor){
vendas += valor;
}
public double CalculaSalario(){
return salario + vendas * 0.05;
}
public void Hollerith(){
System.out.println(“Funcionário: “+nome+”\n”+"Salário a receber: "+CalculaSalario());
vendas = 0;
}

}

public class Administrativo extends Funcionario{
protected double horas;
public Administrativo(String vNome, String vRG, double vSalario){
super(vNome, vRG, vSalario);
horas = 0;
}
public double getHoras(){
return horas;
}
public void InformaHoras(double valor){
horas += valor;
}
public double CalculaSalario(){
return salario + horas * (salario/100);
}
public void Hollerith(){
System.out.println(“Funcionário: “+nome+”\n”+"Salário a receber: "+CalculaSalario());
horas = 0;
}
}