modelo oo para pórticos planos en ingeniería estructural

Page 1

UNIVERSIDAD MAYOR DE SAN ANDRES Facultad de Ciencias Puras y Naturales Postgrado en Informática Maestría en Ingeniería del Software Programación Orientada a Objetos

MODELO OO PARA PÓRTICOS PLANOS EN INGENIERÍA ESTRUCTURAL

Presentado a: Presentado por:

Ing. M. Sc. Esteban Saavedra Roger Saravia & J. J.

La Paz, Bolivia – Octubre de 2007


Introducción

Objetivo General

Este 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.

• Diseñar el modelo O-O para una aplicación de análisis estructural.

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.

Objetivos Específicos • Desarrollar las especificaciones entidad-relación E-R. • Desarrollar el modelo entidadrelació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.


(1,1)

Coordenadas

R

(0,N)

CargNud

CodBor Borx Bory Borz

CodEle TipoE

CodNud TipoNu

R

CodCE Tipo Inicio Longitud Fx Fy Mz

Propiedades

(1,1)

R

CodCN Px Py Pz

CodCoor X Y

CodProp Elasticidad Inercia Ă rea

Considerando el Modelo E-R

PARTE (1,N)

(0,N)

(1,1)

R

CodFI fix fiy fiz

(1,1)

FuerInter

Elemento

(1,1) (1,1) (1,N) Nudo

(1,1)

(1,N)

(1,1)

R

(0,1)

TERMINA

(1,1)

Borde

(1,1)

R

R CodReac Rx Ry Rz

CargElem

(1,1)

CodDN Dx Dy Gz

(1,N)

R

(0,1)

Reacciones

(1,1)

DespNud


Aplicando la Herramienta Object-Relational Mapping (ORM) Visual Paradigm

E-R

Clases


Estructura

Diagrama de Clases

+nNu : Integer +nEle : Integer +graficar() +calcular()

*

1 Nud

{codNu>0}

+codNu : Integer +descr : String +enX : Double +enY : Double +enZ : Double +calcResul() : Double

1

«interfaz» Util1 +calcResul() : Double

* Elemento

1 *

1

+codEle : Integer +nuIni : Integer +nuFin : Integer +calcResul() : Double

{codEle>0}

* Coord

CargNud

Borde

+enZ : Double = 0

+dinami : Boolean

+resorte : Boolean +getTipo() : String

DespNud

Reacciones

+asentamien : Boolean +getEnNorma() : Boolean

-calcFuerResor() : Double

Propiedades +elasti : Double +base : Double +altura : Double +getIner() : Double +getArea() : Double

CargElem +tipo : String +ini : Double +apli : Double +fx : Double +fy : Double +mz : Double +verif() : Boolean +calcResul() : Double

FuerInter +fix : Double +fiy : Double +fiz : Double +calcResul() : Double

«requisito» verif() valida la carga


Diagrama de Caso de Uso (UML) – Primera Parte In t r o d u c ir C o o r d e n a d a s < < in c lu d e > > < < in c lu d e > >

I n g r e s a r Nu d o

< < in c lu d e > > In g r e s a r Ele m e n t o

In t r o d u c ir C a r g a s

I n t r o d u c ir P r o p ie d a d e s

< < in c lu d e > > I n t r o d u c ir C a r g a

I n g r e s a r C o n d ic ió n d e B o r d e

S o l. V e r ific a c ió n d e G r á fic a

S o l. C a lc u lo Es t r u c t u r a l I n g e n ie r o 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 R e p . F u e r z a I n t e r n a

S o l. R e p . R e a c c ió n A p o y o

S o lic it a G r á fic a D e fo r m a d a


Diagrama de Caso de Uso (UML) – Segunda Parte Actor: El ingeniero Solicita analisis estructural

Caso de Uso: Calcular la Estructura Descripción: Permite la determinación de los desplazamientos de los nudos.

Ingeniero Recuperar datos

Ensamblar matriz rigidez

Ensamblar vector fuerza

Resolver sistema ecuaciones

Calcular fuerzas internas

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...


Diagrama de Secuencia (UML) para el Caso de Uso “Analizar la Estructura” Estructu

Elemen

Prop

CargE

FuerIn

Coords

armar K

calcular solución calcular calcular

CargN

Bor

DespN

Reac


Diagrama de Componentes (UML)


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.java public 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.java public 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


1. Crear la conexiรณn a DB


1. Crear la conexiรณn a DB


1. Crear la conexiรณn a DB


1. Crear la conexiรณn a DB


Paso 2. Crear nueva aplicaciรณn


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 3. Crear modelo OO


Paso 4. Crear pantallas


Paso 4. Crear pantallas


Paso 4. Crear pantallas


Paso 4. Crear pantallas


Paso 4. Crear pantallas


Paso 4. Crear pantallas


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.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.