Pegando um gancho na receita da Família de Obi-Allan Kenobi, tentei recriar esta em Java, como o mesmo havia dito, ficou um pouquinho grande, mas em relação ao entendimento acho que consegui manter o nível necessário para o propósito desse blog, tentei seguir as explicações originais da receita e construir a implementação desse delicioso prato típico, o Vatapá.
public class Pao {
    private Double quantidade;
    private Double dureza;
    public Pao(Double quantidade, Double dureza) {
        this.quantidade = quantidade;
        this.dureza = dureza;
        System.out.println(this.quantidade + " pães");
    }
    public Double getDureza() {
        return dureza;
    }
    public void setDureza(Double dureza) {
        this.dureza = dureza;
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    public Pao getPapaDePaoMole(){
        System.out.println("amolecendo o pão com leite de côco");
        LeiteCoco leiteCoco = new LeiteCoco(this.quantidade);
        leiteCoco.amolecerPao(this);
        return this;
    }
}
public class LeiteCoco {
    private Double quantidade;
    public LeiteCoco(Double quantidadePao) {
        this.quantidade = quantidadePao/5;
        System.out.println(this.quantidade + " litro(s) de leite de côco");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    public void amolecerPao(Pao pao){
        Double dureza = pao.getDureza();
        System.out.println("o pão já está quase amolecido...");
        while(dureza > 0.2){
            dureza -= 0.25;
            pao.setDureza(dureza);
        }
        System.out.println("o pão já está pronto, mais mole que isso vai virar sopa hehehe");
    }
}
public class Cebola {
    private Double quantidade;
    private Double partes;
    public Cebola(Double quantidadePao) {
        this.quantidade = (quantidadePao*2)/5;
        this.partes = quantidade;
        System.out.println(this.quantidade + " Cebolas");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }   
    private void cortarCebola(){
        System.out.println("Cortando as Cebolas");
        while((this.partes/this.quantidade) < 25){
            this.partes *= 2;
        }
        System.out.println("Cebolas prontas e bem cortadas");
    }
    public Cebola getCebolaCortada(){
        cortarCebola();
        return this;
    }
}
public class Alho {
    private Double quantidade;
    private Double partes;
    public Alho(Double quantidadePao) {
        this.quantidade = (quantidadePao*6)/5;
        this.partes = quantidade;
        System.out.println(this.quantidade + " Alhos");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    private void cortarAlho(){
        System.out.println("Cortando os Alhos");
        while((this.partes/this.quantidade) < 4){
            this.partes *= 2;
        }
        System.out.println("Alhos prontos e bem cortados");
    }
    public Alho getAlhoCortado(){
        cortarAlho();
        return this;
    }
}
public class CamaraoSeco {
    private Double quantidade;
    private Boolean descascado = false;
    public CamaraoSeco(Double quantidadePao) {
        this.quantidade = (quantidadePao*250)/5;
        System.out.println(this.quantidade + " Gramas de Camarão seco");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void ajustarQuantidadeProporcional() {
        this.quantidade = (this.quantidade*100)/250;
        System.out.println("dessa segunda porção precisaremos apernas de " +this.quantidade + " Gramas para ser adicionados depois");
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    public Boolean getDescascado() {
        return descascado;
    }
    public void setDescascado(Boolean descascado) {
        this.descascado = descascado;
    }
    public void descascarCamaraoSeco(){
        System.out.println("Descascando o Camarão seco");
        this.descascado = true;
        System.out.println("Camarão seco descascado e pronto para usar");
    }
}
public class Amendoim {
    private Double quantidade;
    private Boolean torrado = false;
    public Amendoim(Double quantidadePao) {
        this.quantidade = (quantidadePao*250)/5;
        System.out.println(this.quantidade + " Gramas de Amendoim");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    public Boolean getTorrado() {
        return torrado;
    }
    public void setTorrado(Boolean torrado) {
        this.torrado = torrado;
    }
    public void torrarAmendoim(){
        System.out.println("Torrando o Amendoim");
        this.torrado = true;
        System.out.println("Amendoim torrado e pronto para usar");
    }
}
public class CastanhaCaju {
    private Double quantidade;
    private Boolean torrado = false;
    public CastanhaCaju(Double quantidadePao) {
        this.quantidade = (quantidadePao*250)/5;
        System.out.println(this.quantidade + " Gramas de Castanha de Caju");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    public Boolean getTorrado() {
        return torrado;
    }
    public void setTorrado(Boolean torrado) {
        this.torrado = torrado;
    }
    public void torrarCastanhaCaju(){
        System.out.println("Torrando a Castanha do Caju");
        this.torrado = true;
        System.out.println("Castanha do Caju torrada e pronta para usar");
    }
}
public class AzeiteDende {
    private Double quantidade;
    public Double temperatura = 16.0;
    public Boolean muitoQuente = false;
    public AzeiteDende(Double quantidadePao) {
        this.quantidade = (quantidadePao*1.5)/5;
        System.out.println(this.quantidade + " litro(s) de Azeite de Dendê");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
}
public class Gengibre {
    private Double quantidade;
    private Boolean ralado = false;
    public Gengibre(Double quantidade) {
        this.quantidade = quantidade;
        System.out.println(this.quantidade + " Gramas de Gengibre (esta medida é a gosto)");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
    public void ralarGengibre(){
        System.out.println("Ralando o Gengibre");
        this.ralado = true;
        System.out.println("Gengibre ralado e pronto para usar");
    }
}
public class Sal {
    private Double quantidade;
    public Sal(Double quantidade) {
        this.quantidade = quantidade;
        System.out.println(this.quantidade + " Gramas de Sal (esta medida é a gosto)");
    }
    public Double getQuantidade() {
        return quantidade;
    }
    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }
}
public class Liquidificador {
    public Liquidificador() {
        System.out.println("Ligando o Liquidificador...");
    }   
    public Massa baterMassa(Pao pao, Cebola cebola, Alho alho, CamaraoSeco camaraoSeco, Amendoim amendoim, CastanhaCaju caju, Gengibre gengibre, Sal sal){
        System.out.println("batendo a massa...");
        return new Massa(pao, cebola, alho, camaraoSeco, amendoim, caju, gengibre, sal);
    }
}
public class Massa {
    String situacaoDaMassa = "";
    Double ponto = 2.0;
    public Massa(Pao pao, Cebola cebola, Alho alho, CamaraoSeco camaraoSeco, Amendoim amendoim, CastanhaCaju caju, Gengibre gengibre, Sal sal) {
        this.situacaoDaMassa = "Massa em fase de preparação!!!";
    }
    public String getSituacaoDaMassa() {
        return situacaoDaMassa;
    }
    public void setSituacaoDaMassa(String situacaoDaMassa) {
        this.situacaoDaMassa = situacaoDaMassa;
    }
    public Double getPonto() {
        return ponto;
    }
    public void setPonto(Double ponto) {
        this.ponto = ponto;
    }
}
public class PanelaGrande {
    public PanelaGrande() {
        System.out.println("Colaca a panela no fogo");
    }
    public void esquentarAzeiteDende(AzeiteDende azeiteDende){
        System.out.println("Esquentando o Azeite de Dendê");
        while(!azeiteDende.muitoQuente){
            if(azeiteDende.temperatura > 90){// heheh
                azeiteDende.muitoQuente = true;
                System.out.println("Azeite de Dendê ja está no ponto, agora joga a massa p dentro da panela hhehe... aos poucos é claro");
            }
            azeiteDende.temperatura += 2.5;
        }
    }
    public void colocarMassaAosPoucos(Massa massa){
        System.out.println("colocando a massa, aos poucos, e mexendo a gororoba que formou hehehehe");
    }
    public void colocarCamaraoDescascado(CamaraoSeco camaraoSeco){
        System.out.println("agora adicionado mais "+camaraoSeco.getQuantidade()+" de camarao seco descascado... deve tar um cheiro só kkkkkkkkkkkkkkkkkkk");
    }
    public void etapasFinais(Massa massa){
        System.out.println("Continue mexendo até que a mistura solte, sem dificuldades, da panela.");
        Double ponto = massa.getPonto();
        while(ponto < 10){
            ponto += 1;
            massa.setPonto(ponto);
            if(ponto == 8){
                System.out.println("Já está quase no ponto, mexa só mais um pouquinho.");
            }
        }
        massa.setSituacaoDaMassa("vatapa Pronto");
        System.out.println(massa.getSituacaoDaMassa());
    }
}
public class Vatapa {
    public static void main(String[] args) {
        System.out.println("\n\n iniciando o preparo do vatapá\n\n");
        Pao pao = new Pao(5.0,2.3);
        pao = pao.getPapaDePaoMole();
        Cebola cebola = new Cebola(pao.getQuantidade());
        Alho alho = new Alho(pao.getQuantidade());
        CamaraoSeco camaraoSeco = new CamaraoSeco(pao.getQuantidade());
        CamaraoSeco camaraoSecoDescascado = new CamaraoSeco(pao.getQuantidade());
        camaraoSecoDescascado.ajustarQuantidadeProporcional();
        camaraoSecoDescascado.descascarCamaraoSeco();
        Amendoim amendoim = new Amendoim(pao.getQuantidade());
        amendoim.torrarAmendoim();
        CastanhaCaju castanhaCaju = new CastanhaCaju(pao.getQuantidade());
        castanhaCaju.torrarCastanhaCaju();
        AzeiteDende azeiteDende = new AzeiteDende(pao.getQuantidade());
        Gengibre gengibre = new Gengibre(5.0);
        gengibre.ralarGengibre();
        Sal sal = new Sal(5.0);
        Liquidificador liquidificador = new Liquidificador();
        Massa massa = liquidificador.baterMassa(pao, cebola, alho, camaraoSeco, amendoim, castanhaCaju, gengibre, sal);
        PanelaGrande panelaGrande = new PanelaGrande();
        panelaGrande.esquentarAzeiteDende(azeiteDende);
        panelaGrande.colocarMassaAosPoucos(massa);
        panelaGrande.colocarCamaraoDescascado(camaraoSecoDescascado);
        panelaGrande.etapasFinais(massa);
    }
}
Allan, espero ter mantido a mesma qualidade da receita de sua familia e aproveitando o embalo, só falta agora vc convidar a galera pra esperimentar este prato, pois não tenho dúvida que todos ficamos com agua na boca so em ler esta receita hehehe...
"editado"
...quem enxergar alguma melhoria para o código acho interessante a postagem da mesma, o blog agradece.
download do código fonte