jueves, 17 de marzo de 2011

casos de uso


Que es un actor? modelo de actor es un modelo matemático de cálculo concurrentes que trata a los "actores" como los primitivos universales de la computación digital en paralelo: en respuesta a un mensaje que recibe, un actor puede tomar decisiones locales, crear más actores, envía más mensajes, y determinar cómo responder  al siguiente mensaje recibido

Que es un rol?
Es lo que cada desarrollador debe de desempeñar en su grupo de trabajo
Estos roles son: administrador de proyecto, analista, diseñador, programador, tester, asegurador de calidad, documentador, ingeniero de validación, y verificación, administrador de la configuración y por último, el cliente. Para cada uno de los roles hay un objetivo

Cuantos roles puede tener un usuario?
Varios.


Para quien están dirigidos los diagramas de casos de uso?
se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP.
El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.
El nombre Proceso Unificado se usa para describir el proceso genérico que incluye aquellos elementos que son comunes a la mayoría de los refinamientos existentes. También permite evitar problemas legales ya que Proceso Unificado de Rational o RUP son marcas registradas por IBM 

para quien están dirigidos los diagramas de casos de uso?
Se caracteriza por estar dirigido por casos de usoPa
, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP.
El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.
El nombre Proceso Unificado se usa para describir el proceso genérico que incluye aquellos elementos que son comunes a la mayoría de los refinamientos existentes. También permite evitar problemas legales ya que Proceso Unificado de Rational o RUP son marcas registradas por IBM 

Que es polimorfismo: el polimorfismo se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente.
Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).
Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.

Que es Agregación?
La sustitución de un modelo complicado
Por un modelo más simple, del cual se espera que proporcionara la misma
Información (2).
En el ámbito de los estudios económicos en que se utiliza la programación lineal multiperiodica, se presenta el problema de la agregación en
El planteamiento general del modelo. Este debe ser la representación fiel
Del proceso real que se quiere estudiar. Lo ideal sería que la relación entre
Modelo y realidad fuese un isomorfismo, en cuyo caso se podría reconstruir detalladamente el proceso real a partir del modelo, pero, en general,
Debido a la complicación excesiva (que haría al modelo poco manejable) o
A la falta de información de base, se tiene que acudir a modelos homomórficos que puedan proporcionar información suficiente acerca de la realidad, aunque no nos permitan su reconstrucción detallada
LA AGREGACIÓN EN LOS MODELOS DE PROGRAMACIÓN LINEAL MULTIPERIODICA
BEXV = 1,00 (cabezas). Existencias en ovejas viejas.
BEXJ = 0,50 (cabezas). Existencias en ovejas jóvenes.
MAXP = 100,00 (100 UF). Máximo de pastos naturales (la unidad es
100 unidades forrajeras).
FOND = 50,00 (100 LL). Fondo de rotación inicial.
Segundo miembro — MAR 1:
HFAR = 1,50 (n.°). Hombr es de la familia.
IFAR = 4,00 (n.°). Inactivos de la familia.
SEXI = 6,00 (Ha). Existencias en  tierras irrigadas.
MAXI = 250,00 (100 m
3
). Máximo de derechos de agua.
VEXV = 1,00 (cabezas). Existencias en vacas viejas tradicionales.
VEXJ = 1,00 (cabezas). Existencias en vacas jóvenes tradicionales.
M A XP = 100,00 (100 UF). Máximo pastos naturales.
FOND = 200,00 (100 LL). Fondo de rotación inicial.
TRX 1 = 1,00 (n.°). Tractor de uno o dos años de existencia.
Por último, se ha considerado que los miembros de la familia de
MAR 1 tienen un nivel de consumo superior a los otros casos estudiados,
Dado su mayor potencial económico.

Que es Extensión?
Los métodos de extensión permiten "agregar" métodos a los tipos existentes sin necesidad de crear un nuevo tipo derivado y volver a compilar o sin necesidad de modificar el tipo original. Los métodos de extensión constituyen un tipo especial de método estático, pero se les llama como si se tratasen de métodos de instancia en el tipo extendido. En el caso del código de cliente escrito en C# y Visual Basic, no existe ninguna diferencia aparente entre llamar a un método de extensión y llamar a los métodos realmente definidos en un tipo.

Que es sobrecarga?

En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados. A esto se llama también sobrecarga de funciones.
También existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se le da más de una implementación a un operador.
Sobrecarga es la capacidad de un lenguaje de programación, que permite nombrar con el mismo identificador diferentes variables u operaciones
El mismo método dentro de una clase permite hacer cosas distintas en función de los parámetros
Java no permite al programador implementar sus propios operadores sobrecargados, pero sí utilizar los predefinidos como el +. • C++, por el contrario si permite hacerlo.

Sobrecarga de métodos
Algunos métodos en una clase pueden tener el mismo nombre. Estos métodos deben contar con diferentes argumentos. El compilador decide qué método invocar comparando los argumentos. Se generara un error si los métodos sólo varían en el tipo de retorno.
Ejemplo Articulo.java
public class Articulo {
   private float precio;
   public void setPrecio() {
        precio = 3.50;
   }
   public void setPrecio(float nuevoPrecio) {                                                                  
        precio = nuevoPrecio;
   }
}


martes, 8 de marzo de 2011

"poo"

§  Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la programación orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular". Los celulares tienen características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).
Descripción: http://java.ciberaula.com/imagenes/ciberaula/es/area/java/articulo/java_too_tres.gif
Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten esas características comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS.
Descripción: http://java.ciberaula.com/imagenes/ciberaula/es/area/java/articulo/java_too_cuatro.gif
Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y mismas características.
Definición teórica: La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase.
Definición Teórica: Una instancia es un objeto de una clase en particular.
.ejemplo

Nombre {

   // Variables miembro (habitualmente privadas)

   miembro_1; //lista de miembros

   miembro_2;

   miembro_3;



   // Funciones o métodos (habitualmente públicas)

   funcion_miembro_1( ); // funciones miembro conocidas

   funcion_miembro_2 ( ); // funciones como métodos



   // Propiedades (habitualmente públicas)

   propiedad_1;

   propiedad_2;

   propiedad_3;

   propiedad_4;



Instancia
En un mismo proyecto puedo tener una o más instancias de una misma clase sin problemas.
Cada vez que creamos una nueva instancia, ésta adquiere las propiedades, métodos y eventos de la clase a la que pertenece (es lo que permite la relación es un), sin embargo, cada instancia es independiente de las otras; esto nos da dos ventajas:
1.     Si hago algún cambio en la clase, todas las instancias de esta clase se actualizarán automáticamente; esto nos permite hacer cambios sin tener que ir a cada una de las instancias (se aplica el mismo principio de herencia, aunque a un nivel diferente).
2.     Al ser independientes de las otras instancias, puedo darles valores diferentes sin que afecten a las demás (como tener una silla negra, una roja, una más alta, etc.). Aunque comparten la misma estructura, pueden programarse individualmente, dando versatilidad y flexibilidad al código.

§  Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

§  Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.
El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes, de este modo se consigue reflejar todos los niveles de generalización que se deseen.
El término extends indica que una clase deriva de otra heredando todas sus propiedades. A una clase derivada de otra se le denomina subclase, mientras que la clase de la cual procede recibe el nombre de superclase. En todo lenguaje orientado a objetos existe una jerarquía de clases relacionadas en base a términos de herencia. En Java el punto más alto de la jerarquía es la clase object de la cual derivan en último término todas las demás clases. Object proporciona una serie de capacidades básicas que son comunes a todas las clases. Si en la definición de la nueva clase no aparece el término extends Java considera que tal clase deriva directamente de object.

Polimorfismo significa un objeto y muchas formas, es decir, permite que un método tenga múltiples implementaciones en base al tipo de objeto que se le pasa en la llamada. A esto se le conoce como sobrecarga del método. Los métodos que actúan sobre los objetos requieren información en forma de parámetros. Java es un lenguaje fuertemente equipado, es decir, los tipos deben ser exactamente iguales porque en caso contrario no se entiende el mensaje.
ejem  
#include


using namespace std;






class figura {


     public:


            float base;


            float altura;    


    public:


           float captura();


           virtual unsigned float perimetro()=0;


           virtual unsigned float area()=0;


};






class rectangulo: public figura{


     public:


            void imprime();


            unsigned float perimetro(){return 2*(base+altura);}


            unsigned float area(){return base*altura;}


     };






class triangulo: public figura{


     public:


            void muestra();


            unsigned float perimetro(){return 2*altura+base}


            unsigned float area(){return (base*altura)/2;}


     };






void figura::captura(){


     cout<<"CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISÓSCELES Y UN RECTANGULO:" <<endl;


     cout<<"escribe la altura: ";


     cin>>altura;


     cout<<"escribe la base: ";


     cin>>base;


     cout<<"EL PERIMETRO ES:" << perimetro();


     cout<<"EL AREA ES:" << area();


};



Los atributos son datos específicos de una clase. En la definición de clase se indica cuales son los atributos y conque nombre se va a designar a cada uno de ellos. El que una declaración de atributo sea pública significa que el elemento definido pueda utilizarse libremente desde cualquier otro punto del programa.
En el caso de una clase su carácter público es necesario para poder crear objetos de esa clase en otros puntos del programa (new). Para acceder a un atributo hay que indicarle el nombre del objeto al que pertenece:
unaEntrada.nombre = "Juan Pablo"
unaEntrada.apellidos = "de Frutos Martínez"
§ metodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
ACCESORES
Las variables instancia de un objeto son sus atributos, eso que diferencia a un objeto de otro dentro de la misma clase. Es importante poder modificar y leer estos atributos; lo que supone definir métodos denominados //accesores de atributos//. Veremos en un momento que no siempre hay que definir los métodos accesores explícitamente, pero vayamos paso a paso. Los dos tipos de accesores son los de //escritura// y los de //lectura//.
|| ruby> class Fruta
ruby| def set_kind(k) # escritor
ruby| @kind = k
ruby| end
ruby| def get_kind # lector
ruby| @kind
ruby| end
ruby| end
nilx
ruby> f1 = Fruta.new
#<Fruta:0x401c4410>
ruby> f1.set_kind("melocotón") #utilizamos el escritor
"melocotón"
ruby> f1.get_kind #utilizamos el lector
"melocotón"
ruby> f1 #inspeccionamos el objeto
#<Fruta:0x401c4410 @kind="melocotón">
||
Sencillo; podemos almacenar y recuperar información sobre la clase de fruta que queremos tener en cuenta. Pero los nombres de nuestros métodos son un poco largos. Los siguientes son más breves y convencionales:
|| ruby> class Fruta
ruby| def kind=(k)
ruby| @kind = k
ruby| end
ruby| def kind
ruby| @kind
ruby| end
ruby| end
nil
ruby> f2 = Fruta.new
#<Fruta:0x401c30c4>
ruby> f2.kind = "banana"
"banana"
ruby> f2.kind
"banana"
||
PARAMETRO
Un parámetro es un método para pasar información (valores a variables) del programa principal a un procedimiento y viceversa.
Un parámetro es, prácticamente, una variable cuyo valor debe ser ya sea proporcionado por el programa principal al procedimiento o ser devuelto desde el procedimiento hasta el programa principal. Por consiguiente, existen dos tipos de parámetros:
-         Parámetros de entrada: Sus valores deben ser proporcionados por el programa principal.
-         Parámetros de salida: Son parámetros cuyos valores se calcularán en el procedimiento y se deben devolver al programa principal para su proceso posterior.
Transferencia de información desde y/o hasta los procedimientos
Existen dos tipos de procedimientos:
-         Procedimientos sin parámetros: No existe comunicación entre el programa principal y los procedimientos ni viceversa.
-         Procedimientos con parámetros: Existe comunicación entre el programa principal y los procedimientos o entre dos procedimientos.
Ejemplo 1:
(Parámetros de entrada)
Procedure RecuadroDos (N : Integer);
Var
            J : Integer;
Begin
            For J := 1 to  N do
                        Write(`*´)
End;
Ejemplo 2:
(Parámetros de entrada/salida)
El procedimiento Geometria recibe la longitud y anchura de un rectángulo, calcula el área y perímetro del rectángulo y devuelve los valores obtenidos al programa principal.
Procedure Geometria (Longitud, Anchura : Real; Var Area, Perímetro : Real);
Begin
            Area := Longitud * Anchura;
            Perimetro := 2 * (Longitud + Anchura)
End;
ENCAPSULAMIENTO (INFORMÁTICA)
En
programación modular, y más específicamente en programación orientada a
objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de
los datos miembro, de un objeto de manera que sólo se puede cambiar mediante
las operaciones definidas para ese objeto .
Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.
De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.
Encapsulamiento
Se dice que es el empaquetado de métodos y atributos dentro de un objeto, mediante una interfaz grafica. La clave está precisamente en el envoltorio del objeto .
Como se puede observar de los diagramas, las variables del objeto se localizan en el centro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros objetos en el programa. Al empaquetamiento de las variables de un objeto con la protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier tiempo sin afectar otras partes del programa.