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

34
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: Ing. M. Sc. Esteban Saavedra Presentado por: Roger Saravia & J. J. La Paz, Bolivia – Octubre de 2007

Upload: rogergustavo

Post on 14-Dec-2015

12 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

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

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

E-R

Clases

+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”

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

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.