modelo oo para pórticos planos en ingeniería estructural
DESCRIPTION
modelo,oo,para,pórticos,planos,en,ingeniería,estructuralTRANSCRIPT
UNIVERSIDAD MAYOR DE SAN ANDRESFacultad de Ciencias Puras y Naturales
Postgrado en InformáticaMaestría en Ingeniería del SoftwareProgramación Orientada a Objetos
MODELO OO PARA PÓRTICOS PLANOS EN INGENIERÍA ESTRUCTURAL
Presentado a: Ing. M. Sc. Esteban SaavedraPresentado por: Roger Saravia & J. J.
La Paz, Bolivia – Octubre de 2007
IntroducciónEste proyecto se desarrolla en la programación orientada a objetos rama modelos conceptuales. El campo de aplicación elegido es la rama estructural de la ingeniería civil.
Un problema el cálculo de estructuras es la falta de aplicaciones diseñadas a partir de modelos conceptuales que permitan la mejor abstracción de sistemas tan complejos como las estructuras.
Se abordará este problema mediante el diseño de una aplicación a partir del modelo orientado a objetos OO.
Se considerarán estructuras en 2D denominadas pórticos.
Objetivo General• Diseñar el modelo O-O para una
aplicación de análisis estructural.
Objetivos Específicos• Desarrollar las especificaciones
entidad-relación E-R.
• Desarrollar el modelo entidad-relación E-R.
• Usar herramientas ORM para sincronizar partiendo del diagrama E-R (Incluyendo una reciente alternativa).
• Logar el modelo orientado a objetos OO a partir del modelo E-R.
• Desarrollar la implementación de clases en Java.
Marco Teórico (Síntesis)Modelo Entidad-Relación E-R
El modelo de datos E-R está basado en una percepción del mundo real que consta de un conjunto de objetos básicos llamados entidades y relaciones entre estos objetos.
Modelo Orientado a Objetos OO
La POO es fundamental para lenguajes modernos como C++, Java, C# y Visual Basic .NET. La POO permite a cada objeto heredar las propiedades de otros objetos. La POO promueve la reutilización de código. El DOO con herencia, composición, agregación, asociación, interfaz e implementación, son las bases para una abstracción eficiente y sobresaliente en términos del desarrollo orientado a objetos.
El Análisis Estructural
Tiene que ver con el comportamiento de las estructuras bajo condiciones de diseño. Las estructuras son sistemas que soportan cargas y su comportamiento es la tendencia a deformarse, vibrar, pandearse o fluir según las condiciones a las que estén sometidas. Los resultados del análisis se usan para determinar la
deformación de las estructuras y para verificar si pueden soportar las cargas de diseño.
Nudo
CodN
udTi
poNu
Coordenadas
CodC
oor
X Y
R(1,1)
(1,1)
CargNud
CodC
NPx Py Pz
R
(1,1)
(0,N)
Borde
CodB
orBo
rxBo
ryBo
rz
R(0,1)
DespNud
CodD
NDx Dy Gz
(1,N)
R
(1,1)
(1,1)
Reacciones
CodR
eac
Rx Ry Rz
R (0,1)
(1,1)
ElementoCo
dEle
Tipo
E
PARTE
TERMINA
(1,N)(1,1)
(1,N) (1,1)
Propiedades
CodP
rop
Elas
ticid
adIn
ercia
Área
R
(1,N)
(1,1)
CargElem
CodC
ETi
poIn
icio
Long
itud
Fx Fy Mz
R(0,N) (1,1)
FuerInter
CodF
Ifix fiy fiz
R(1,1)
(1,1)
Considerando el Modelo E-R
+calcResul() : Double
+codNu : Integer+descr : String+enX : Double+enY : Double+enZ : Double
Nud
+enZ : Double = 0Coord
+dinami : BooleanCargNud
+getTipo() : String+resorte : Boolean
Borde
+getEnNorma() : Boolean+asentamien : Boolean
DespNud
-calcFuerResor() : Double
Reacciones
+calcResul() : Double
+codEle : Integer+nuIni : Integer+nuFin : Integer
Elemento
+getIner() : Double+getArea() : Double
+elasti : Double+base : Double+altura : Double
Propiedades
+verif() : Boolean+calcResul() : Double
+tipo : String+ini : Double+apli : Double+fx : Double+fy : Double+mz : Double
CargElem
+calcResul() : Double
+fix : Double+fiy : Double+fiz : Double
FuerInter
+graficar()+calcular()
+nNu : Integer+nEle : Integer
Estructura
+calcResul() : Double
«interfaz»Util1
1*1
*
{codEle>0}
{codNu>0}
«requisito»verif() validala carga
1
*1
*
Diagrama de Clases
In g r e s a r Ele m e n t o
In g r e s a r Nu d o
In g r e s a r C o n d ic ió n d e Bo rd e
In t r o d u c ir P r o p ie d a d e s
In t r o d u c ir Ca rg a s
In t ro d u c ir Co o rd e n a d a s
In g e n ie r o
S o l. Ve r ific a c ió n d e G rá fic a
S o l. Ca lc u lo Es t ru c t u r a l
S o l. R e p . D e s p la z a m ie n t o Nu d o s
S o lic it a G r á fic a D e fo rm a d a
< < inc lud e > >
< < inc lud e > >
< < inc lud e > >
In t r o d u c ir C a r g a
< < inc lud e > >
S o lic it a R e p . Fu e r z a In t e rn a
S o l. R e p . R e a c c ió n A p o y o
Diagrama de Caso de Uso (UML) – Primera Parte
Ingeniero
Solicita analisis estructural
Recuperar datos
Ensamblar matriz rigidez
Ensamblar vector fuerza
Resolver sistema ecuaciones
Calcular fuerzas internas
Diagrama de Caso de Uso (UML) – Segunda Parte
Actor: El ingeniero
Caso de Uso: Calcular la Estructura
Descripción: Permite la determinación de los desplazamientos de los nudos.
Escenario principal
1 El usuario elige la opción de análisis estructural.
2 El sistema recupera la información de la estructura de sus archivos internos e inicializa el modelo de objetos.
3 El sistema ensambla la matriz de rigidez, el vector fuerza y resuelve las ecuaciones obteniendo los desplazamientos en los nudos.
4 El sistema calcula las fuerzas internas en los elementos a partir de los desplazamientos en los nudos.
Y así continúa...
Prop DespNEstructu Elemen CargE FuerIn Coords CargN Bor Reac
armar K
calcularsolución
calcular
calcular
Diagrama de Secuencia (UML) para el Caso de Uso “Analizar la Estructura”
Implementación de las Clases del Modelo OO – Primera Parte
package estructuras; // Estructura.java public class Estructura {
public int nNu;public int nEle; public void graficar() {// código para graficar la estructura }public void calcular() {// rutina para el cálculo estructural } public Estructura() { }
}package estructuras; // Util1.java public interface Util1 {
public float calcResul(); }package proy03; // Main.java import estructuras.*;import nudos.*;import elementos.*;public class Main {
public Main() { } public static void main(String[] args) { }
}
Implementación de las Clases del Modelo OO – Segunda Parte
/* Nudo.java */package nudos;import estructuras.*;public abstract class Nudo extends Estructura {
public int codNu;public String descr;public double enX;public double enY;public double enZ; public double calcResul() {return 1; // se retornará un valor calculado } public Nudo() { }
}package nudos; // Coord.java public class Coord extends Nudo {
public final double enZ = 0; public Coord() { }
}package nudos; // CargNud.java public class CargNud extends Nudo {
public boolean dinami; public CargNud() { }
}
/* DespNud.java */package nudos;public class DespNud extends Nudo {
public boolean asentamien; public boolean getEnNorma() {
return true; // se retornará un valor lógico } public DespNud() {}
}/* Reacciones.java */package nudos;public class Reacciones extends Nudo {
private double calcFuerResor() {return 0; // se retornará un valor calculado
} public Reacciones() {}
}
Implementación de las Clases del Modelo OO – Tercera Parte
/* Elemento.java */package elementos;import estructuras.*;public class Elemento extends Estructura {
public int CodEle;public int nuIni;public int nuFin; public double calcResul() {
return 0; // se retornará un valor calculado } public Elemento() { }
}/* Propiedades.java */package elementos;public class Propiedades extends Elemento {
public double elasti;public double base;public double altura; public double getIner() {
return 0; // se retornará un valor calculado } public double getArea() {
return 0; // se retornará un valor calculado }public Propiedades() { }
}
package elementos; // CargElem.javapublic class CargElem extends Elemento {
public String tipo;public double ini;public double apli;public double fx;public double fy;public double mz; public boolean verif() {
return true; // retornará un valor de verdad } public double calcResul() {
return 1; // se retornará un cálculo } public CargElem() { }
}package elementos; // FuerInter.javapublic class FuerInter extends Elemento {
public double fix;public double fiy;public double fiz; public double calcResul() {
return 1; // retornará un valor calculado } public FuerInter() { }
}
Nuestra Reciente Alternativa:
Generación del Modelo Orientado a Objetos a partir de la Base de Datos
Relacional y usando JDeveloper Versión 10.1.3.3
Conclusiones
La Programación Orientada a Objetos POO ha demostrado ser de gran soporte para la solución de problemas de otras áreas del conocimiento como la ingeniería estructural.
Si bien el modelo E-R estrictamente no forma parte de la POO, su participación en un proceso de diseño puede ser de gran ayuda.
Las herramientas ORM son una alternativa con futuro por su asistencia en el mapeo de modelos conceptuales; no obstante, aún requieren la supervisión del hombre.
La correcta concepción del modelo y su adecuada representación mediante el diagrama de clases (UML) son el centro y revisten vital importancia para el diseño de cualquier aplicación.
El diagrama de secuencias UML juega un papel preponderante puesto que representa la parte dinámica (en función del tiempo) del funcionamiento del modelo.
El diagrama de componentes es algo así como un “plano” de la implementación física del modelo.
La implementación de las clases mediante programación en un lenguaje como el Java, es algo que puede fluir sin mucho esfuerzo siempre y cuando se tenga bien realizado el modelo OO.