"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SubgrafoClasse = void 0;
class SubgrafoClasse {
    constructor(nomeClasse, linha, arestaInicial, arestaFinal, superClasse) {
        this.nomeClasse = nomeClasse;
        this.linha = linha;
        this.superClasse = superClasse;
        this.vertices = [];
        this.metodos = [];
        this.arestaInicial = arestaInicial;
        this.arestaFinal = arestaFinal;
    }
    paraTexto() {
        let resultado = `    subgraph ${this.nomeClasse}["Classe: ${this.nomeClasse}`;
        if (this.superClasse) {
            resultado += ` (estende ${this.superClasse})`;
        }
        resultado += `"]\n`;
        // Renderiza o construtor se existir
        if (this.construtor) {
            resultado += `        subgraph construtor_${this.nomeClasse}["Construtor"]\n`;
            resultado += `            direction TB\n`;
            for (const vertice of this.construtor.vertices) {
                const textoVertice = vertice.paraTexto();
                resultado += '    ' + textoVertice;
            }
            resultado += `        end\n`;
        }
        // Renderiza os métodos
        for (const metodo of this.metodos) {
            resultado += `        subgraph ${metodo.nomeMetodo}_${this.nomeClasse}["Método: ${metodo.nomeMetodo}()"]\n`;
            resultado += `            direction TB\n`;
            for (const vertice of metodo.vertices) {
                const textoVertice = vertice.paraTexto();
                resultado += '    ' + textoVertice;
            }
            resultado += `        end\n`;
        }
        resultado += `    end\n`;
        return resultado;
    }
}
exports.SubgrafoClasse = SubgrafoClasse;
//# sourceMappingURL=subgrafo-classe.js.map