Esempio n. 1
0
        /*------------- Funciones --------------------*/

        public Boolean addFuncion(Funcion nueva)
        {
            return(this.funciones.addFuncion(nueva));
        }
Esempio n. 2
0
        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);
        }