10 agosto, 2012

You are currently browsing the daily archive for 10 agosto, 2012.

Las heramientas CASE (Computer Aided Software Engineering) pretenden aplicar los métodos de la ingenieria a la producción de software y surgen en respuesta a la crisis del software de finales de los sesenta. Cubren todas las etapas del ciclo de vida del software y básicamente pretende generar software de calidad minimizando tiempo y costes tanto en el desarrollo como en el mantenimiento del mismo.

El lenguaje UML (Unified Modeling Language) es un estandar que permite especificar y diseñar software basado en el paradigma de la orientación a objetos.

En este enlace podemos ver  diferentes herramientas CASE que soportan UML y que permiten  generar código automáticamente en diferentes lenguajes de programación.

Tags: ,

Existen diferentes posibilidades a la hora de definir una función kernel:

  1. Gaussiana [Gingold & Monaghan, 1977]:$latex W(r,h) = alpha_D cdot e^{-q^2}$ con $latex 0 leq q leq 2$ donde $latex q=frac{r}{h}$, $latex r$ es la distancia entre dos partículas determinadas y $latex alpha_D$, el factor dimensional, que es $latex frac{1}{pi h^2}$ en dos dimensiones y $latex frac{1}{pi^{frac{3}{2}} h^3}$ en tres.
  2. Cuadrática [Gingold & Monaghan, 1977]: $latex alpha_D (frac{3}{16} q^2 – frac{3}{4} q + frac{3}{4})$ con $latex 0 leq q leq 2$ y donde $latex alpha_D$ es $latex frac{2}{pi h^2}$ en 2D y $latex frac{5}{4 pi h^3}$ en 3D.
  3. B-spline cúbico [Monaghan & Lattancio, 1985]: $latex W(r,h) = alpha_D begin{cases} 1 – frac{3}{2} q^2 + frac{3}{4} q^3 ,& mbox{if } 0 leq q leq 1 \ frac{1}{4}(2-q)^3 ,& mbox{if } 1 < q leq 2 \ 0 ,& mbox{if } q > 2end{cases}$ con $latex alpha_D = frac{10}{7 pi h^2}$ en dos dimensiones y $latex frac{1}{pi h^3}$ en 3 dimensiones.
  4. Quíntica: $latex W(r,h) = alpha_D (1-frac{q}{2}^4)(2q + 1)$ con $latex 0 leq q leq 2$ y $latex alpha_D = frac{7}{4 pi h^2}$ en 2D y $latex frac{7}{8 pi h^3}$ en 3D.

Pensando en posibles implementaciones, parece lógico utilizar una classe abstracta Kernel de la que heredaran las anteriores implementando sus métodos, de manera que, las posibles clases que llamen a la misma puedan hacerlo siempre de la misma manera independientement de cual estemos utilizando.

Tags: , , , ,

El siguiente código muestra la definición de una clase en el lenguaje C++. En el podemos ver los elementos típicos de las mismas.

En el fichero Complex.h, tendriamos la representación del tipo:

[sourcecode languaje=»cpp»]

#ifndef ComplexH
#define ComplexH

class Complex {

private:

//atributos
double re;
double im;

public:

//constructores
Complex();
Complex(double re, double im);

//metodos
double get_re();
double get_im();
void set_re(double re);
void set_im(double im);
double get_mod();
double get_arg();

//destructor
~Complex();

};
[/sourcecode]

Mientras que en el fichero Complex.cpp tendriamos la implementación del mismo:

[sourcecode languaje=»cpp»]
#include "Complex.h"

//constructores
Complex::Complex() {
re = 0;
im = 0;
}

Complex::Complex(double re, double im) {
this.re = re;
this.im = im;
}

//destructor
Complex::~Complex() {
}

//metodos
double Complex::get_re() {
return this.re;
}

double Complex::get_im() {
return this.im;
}

void Complex::set_re(double re) {
this.re = re;
}

void Complex::set_im(double im) {
this.im = im;
}

double Complex::get_mod() {
return …;
}

double Complex::get_arg(){
return …;
}

};
[/sourcecode]