sobota, 28 kwietnia 2007

O potrzebie UML

Wyjaśnienie:
Idea jest taka żeby napisać klasę która liczy dajmu na to całkę z funkcji f, ale nie wie z jakiej funckji --- metoda wyliczająca w punkcie x jest abstarkcyjna:
virtual inline double getValue(double x)=0;

Teraz dodajemy małe klasy, któe na swój sposób implementują funkcję (może to być przez wskaźnik do funkcji, przez obiekt, przez parser matematyki.

*wrapper_f --- implementuje getValue jako wskaźnik do funkcji

*wrapper_obj --- implementuje getValue poprzez obiekt funkcyjny


random_generator_base --- zwykły generator liczb losowych (też z funkcją virtualną)

range_function_base --- to klasa opisująca obiekt będący funkcją na przedziale skoczonym.

random_generator --- losuje liczby z dziedziny i zbioru wartości funkcji.

von_neumann --- coś losującego liczby losowe metodą eliminacji von neumanna

simple_monte_carlo --- całkuje funkcję metodą monte carlo.

Cztery ostatnie klasy mają swoje wrappery.

O tyle fajnie że klasa (cała) simple_monte_carlo_f wygląda tak i jest już w pełni funkcjonalną klasą mającą kilkanaście metod:

template &lq class DOUBLE&rq
class simple_monte_carlo_f:
public random_generator_base_wrapper_f& lq DOUBLE&rq,
public simple_monte_carlo_base &lq DOUBLE&rq,
public range_function_base_wrapper_f &lq DOUBLE&rq{
simple_monte_carlo_f(DOUBLE _begin, DOUBLE _end, DOUBLE
(*_rand)(),DOUBLE (*_fun)(DOUBLE x)):

random_generator_base_wrapper_f lq DOUBLE&rq(_rand),
range_function_base_wrapper_f lq DOUBLE&rq(_fun)
{
this->set(_begin,_end);
}
};

Na diagramie (uproszczonym, bo wskazującym tylko dziedziczenie) wygląda cały schemat masakrycznie --- tak:

Reklama:

Zachęcam do zajrzenia na: http://fizolof.blogspot.com/

Moja strona domowa zmieniła adres: http://jbhome.wikidot.com/

Ta strona nie będzie już updejtowana. Blog został przeniesiony na: http://jbhome.wikidot.com/blog:start

Blog: