/*------------- Funciones --------------------*/ public Boolean addFuncion(Funcion nueva) { return(this.funciones.addFuncion(nueva)); }
public clasesDiagrama agregarHerencia() { clasesDiagrama umlRetorno = new clasesDiagrama(); Clase actual; for (int i = 0; i < listaClases.Count; i++) { actual = listaClases.ElementAt(i); if (actual.herencia != null) {//posee herencia Clase clasePadre = getClase(actual.herencia); Clase temporal = new Clase(); if (clasePadre.lenguaje.Equals(actual.lenguaje, StringComparison.OrdinalIgnoreCase)) { // buscamos todos los atributos que sean validos temporal.nombre = actual.nombre; temporal.herencia = actual.herencia; temporal.lenguaje = actual.lenguaje; temporal.tamanho = actual.tamanho; temporal.apuntador = actual.apuntador; //atributos de la clase padre foreach (Atributo atrTemp in clasePadre.atributos.atributos) { Atributo nuevo = esValidoAtriHerencia(atrTemp, temporal.nombre); Atributo nuevoSuper = esPadreValidoAtriHerencia(atrTemp, temporal.nombre); if (nuevo != null && nuevoSuper != null) { temporal.addAtributo(nuevoSuper); temporal.addAtributo(nuevo); } } //agregamos los atributos de la clase ya que han sido guardados los de la clase padre foreach (Atributo item in actual.atributos.atributos) { temporal.addAtributo(item); } //agregamos las funciones de la clase padre foreach (Funcion item in clasePadre.funciones.funciones) { Funcion funcNueva = esValidoFuncHerencia(item, temporal.nombre); Funcion funcNuevaPadre = esPadreValidoFuncHerencia(item, temporal.nombre); if (funcNueva != null && funcNuevaPadre != null) { temporal.addFuncion(funcNuevaPadre); temporal.addFuncion(funcNueva); } } foreach (Funcion item in actual.funciones.funciones) { temporal.funciones.sobreEscribirFunciones(item); } umlRetorno.insertarClase(temporal); } else { ErrorA er = new ErrorA(Constantes.errorSemantico, 0, 0, 0, "La clase " + actual.nombre + " es de otro lenguaje a la clase " + clasePadre.nombre); Form1.errores.addError(er); } } else { umlRetorno.insertarClase(actual); } } return(umlRetorno); }