lunes, 8 de agosto de 2011

formularios (css)..continuara....


1) Formulario de Uni - un intento de estandarizar la forma de marcado (XHTML) y CSS, "modularizar" que, para tener buen aspecto, bien estructurado, altamente personalizable, formas semánticas, accesible y utilizable.

2) Sólo en CSS, menos las formas de mesa - Un gran ejemplo de una forma bien diseñada utilizando las modernas técnicas de css. Se trabaja en Win/IE6, Firefox v1.0 +, Win / Opera 8.0, tiene pequeñas diferencias de diseño en Mac / Safari 1.0.3 y Mac / Safari v1.2, y es útil, pero bastante enculada en Mac/IE5. 2.
3) Formas de Tableless - tiene un ejemplo de inicio de sesión muy buena forma, con un gráfico en el campo de entrada.
4) Una forma con estilo - Cómo dejar de estilo y formas de la tela de mirar feo.
5) Niceforms 1,0 - es una escritura que reemplazará los elementos forma más usual con la costumbre de los diseñados. Una de estas mejoras sería la posibilidad de seleccionar un aparato de radio o casilla de verificación haciendo clic en su etiqueta al lado, también destaca las etiquetas de las cajas seleccionadas para hacer las selecciones más clara y más ...
6) ¿Quieres Form - Formulario de lujo es un script casilla reemplazo de gran alcance para proporcionar la máxima flexibilidad en el cambio de la apariencia y función de los elementos de formulario HTML. Es fácil de usar y se degrada con gracia sobre todos los mayores, no apoyo a los navegadores.
7) los controles de formulario con estilo CSS, revisada - 224 imágenes que muestran los efectos de varias reglas CSS se aplica a los controles de formulario. Aunque las capturas son tomadas de 8 navegadores de 4 sistemas operativos, para un total de 14 combinaciones de navegador + OS.
8) Mostrando Buena Forma - Demo de complejo acceso, la red de estilo (es decir, la tabla-como) forma con marcado semántico (fieldset, leyendas, etc etiqueta ...) y CSS.
10) Más bonita forma que resulte accesible - Nick Rigby echa un vistazo a cómo hacer que las formas más accesibles y el uso de CSS en lugar de las tablas de la vieja escuela.
11) Check it, no lo seleccione - Si se intenta utilizar varias casillas de verificación en una lista desplegable - mejor que usar ctrl-click en un estado normal de selección múltiple listbox
12) las formas sensibles - Usabilidad Web - Roger Hudson ofrece un tutorial increíblemente claras sobre cómo una forma que está bien diseñado, con buen diseño visual se beneficiarán todos los usuarios con visión
13) Forma AJAX Contacto - Excelente ejemplo de AJAX accesible. Utiliza Javascriptdiscreto. Por Dustin Díaz.

14) AutoSuggest: Un auto-completar AJAX campo de texto - en la que añade un menú popdown de valores sugeridos para un campo de texto. El usuario puede hacer clic directamente en una sugerencia para entrar en el campo, o navegar por la lista utilizando las teclas de flecha hacia arriba y hacia abajo, la selección de un valor con la tecla de tabulación.

jueves, 21 de julio de 2011

xampp

QUE ES XAMPP?
Es un servidor independiente de plataforma, basado en Apache (diseño de páginas web) que utiliza MySQL, PHP y Perl como lenguajes, sirve para crear páginas web, diseñarlas, añadir personalizaciones; para poner videos, imágenes, etc...y hace mucho más sencillo la creación de páginas web y sin  necesidad de conectarse a internet.
HERRAMIENTAS: Apache, MySQL, PHP y Perl

QUE ES UNIX?
UNIX designa el núcleo de un sistema operativo multiusuario y multitarea. En un sentido más amplio, comprende el núcleo del sistema operativo más un conjunto de programas que permiten compilar lenguajes de programación, editar texto, interpretar comandos, manejar archivos y discos, acceder a otras máquinas, establecer comunicaciones telefónicas, enviar y recibir correo electrónico, manejar las colas de impresión y un sinfín de tareas más
KERNEL
Es el núcleo de un sistema operativo el cual permite que el software facilite a diversos programas acceder con seguridad al hardware del sistema; es decir, a sus aplicaciones.
Opera como un  designio de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo. Es el componente central de Unix y tiene las siguientes funciones: 
Ø  Creación de procesos, asignación de tiempos de atención y sincronización.
Ø  Asignación de la atención del procesador a los procesos que lo requieren.
Ø  Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de usuarios; comunicación entre usuarios v entre procesos, y manipulación de E/S y administración de periféricos.
Ø  Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.

viernes, 24 de junio de 2011

atributos css

Nombre del atributoPosibles valoresEjemplos
FUENTES - FONT
colorvalor RGB o nombre de colorcolor: #009900;
color: red;
Sirve para indicar el color del texto. Lo admiten casi todas las etiqetas de HTML. No todos los nombres de colores son admitidos en el estandar, es aconsejable entonces utilizar el valor RGB.
font-sizexx-small | x-small | small | medium | large | x-large | xx-large
Unidades de CSS
font-size:12pt;
font-size: x-large;
Sirve para indicar el tamaño de las fuentes de manera más rígida y con mayor exactitud.
font-familyserif | sans-serif | cursive | fantasy | monospace
Todas las fuentes habituales
font-family:arial,helvetica;
font-family: fantasy;
Con este atributo indicamos la familia de tipografia del texto. Los primeros valores son genéricos, es decir, los exploradores las comprenden y utilizan las fuentes que el usuario tenga en su sistema.
También se pueden definir con tipografías normales, como ocurría en html. Si el nombre de una fuente tiene espacios se utilizan comillas para que se entienda bien.
font-weightnormal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900font-weight:bold;
font-weight: 200;
Sirve para definir la anchura de los caracteres, o dicho de otra manera, para poner negrillas con total libertad.
Normal y 400 son el mismo valor, así como bold y 700.
font-stylenormal | italic | obliquefont-style:normal;
font-style: italic;
Es el estilo de la fuente, que puede ser normal, itálica u oblícua. El estilo oblique es similar al italic.
PÁRRAFOS - TEXT
line-heightnormal y unidades CSSline-height: 12px;
line-height: normal;
El alto de una línea,y por tanto, el espaciado entre líneas. Es una de esas características que no se podian mofificar utilizando HTML.
text-decorationnone | [ underline || overline || line-through ]text-decoration: none;
text-decoration: underline;
Para establecer la decoración de un texto, es decir, si está subrayado, sobrerayado o tachado.
text-alignleft | right | center | justifytext-align: right;
text-align: center;
Sirve para indicar la alineación del texto. Es interesante destacar que las hojas de estilo permiten el justificado de texto, aunque recuerda que no tiene por que funcionar en todos los sistemas.
text-indentUnidades CSStext-indent: 10px;
text-indent: 2in;
Un atributo que sirve para hacer sangrado o márgenes en las páginas. Muy útil y novedosa.
text-transformcapitalize | uppercase | lowercase | nonetext-transform: none;
text-transform: capitalize;
Nos permite transformar el texto, haciendo que tenga la primera letra en mayúsculas de todas las palabrs, todo en mayúsculas o minúsculas.
FONDO - BACKGROUND
Background-colorUn color, con su nombre o su valor RGBbackground-color: green;
background-color: #000055;
Sirve para indicar el color de fondo de un elemento de la página.
Background-imageEl nombre de la imagen con su camino relativo o absolutobackground-image: url(mármol.gif) ;
background-image: url(http://www.x.com/fondo.gif)
Colocamos con este atributo una imagen de fondo en cualquier elemento de la página, se puede ver unapágina de ejemplo
BOX - CAJA
Margin-leftUnidades CSSmargin-left: 1cm;
margin-left: 0,5in;
Indicamos con este atributo el tamaño del margen a la izquierda
Margin-rightUnidades CSSmargin-right: 5%;
margin-right: 1in;
Se utiliza para definir el tamaño del margen a la derecha
Margin-topUnidades CSSmargin-top: 0px;
margin-top: 10px;
Indicamos con este atributo el tamaño del margen arriba de la página
Margin-bottomUnidades CSSmargin-bottom: 0pt;
margin-top: 1px;
Con el se indica el tamaño del margen en la parte de abajo de la página
Padding-leftUnidades CSSpadding-left: 0.5in;
padding-left: 1px;
Indica el espacio insertado, por la izquierda, entre el borde del elemento-continente y el contenido de este. Es parecido a el atributo cellpadding de las tablas.
El espacio insertado tiene el mismo fondo que el fondo del elemento-continente.
Padding-rightUnidades CSSpadding-right: 0.5cm;
padding-right: 1pt;
Indica el espacio insertado, en este caso por la derecha, entre el borde del elemento-continente y el contenido de este. Es parecido a el atributo cellpadding de las tablas.
El espacio insertado tiene el mismo fondo que el fondo del elemento-continente.
Padding-topUnidades CSSpadding-top: 10pt;
padding-top: 5px;
Indica el espacio insertado, por arriba, entre el borde del elemento-continente y el contenido de este.
Padding-bottomUnidades CSSpadding-right: 0.5cm;
padding-right: 1pt;
Indica el espacio insertado, en este caso por abajo, entre el borde del elemento-continente y el contenido de este.
Border-colorcolor RGB y nombre de colorborder-color: red;
border-color: #ffccff;
Para indicar el color del borde del elemento de la página al que se lo aplicamos. Se puede poner colores por separado con los atributos border-top-color, border-right-color, border-bottom-color, border-left-color.
Border-stylenone | dotted | solid | double | groove | ridge | inset | outsetborder-style: solid;
border-style: double;
El estilo del borde, los valores significan: none=ningun borde, dotted=punteado (no parece funcionar), solid=solido, double=doble borde, y desde groove hasta outset son bordes con varios efectos 3D.
border-widthUnidades CSSborder-width: 10px;
border-width: 0.5in;
El tamaño del borde del elemento al que lo aplicamos.
Para ver otros ejemlos de Box pulsar aquí
floatnone | left | rightfloat: right;
Sirve para alinear un elemento a la izquierda o la derecha haciendo que el texto se agrupe alrededor de dicho elemento. Igual que el atributo align en imagenes en sus valores right y left.
clearnone | right | leftclear: right;
Si este elemento tiene a su altura imagenes u otros elementos alineados a la derecha o la izquierda, con el atributo clear hacemos que se coloque en un lugar donde ya no tenga esos elementos a el lado que indiquemos. 

miércoles, 15 de junio de 2011

MYSQL



SQL: El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en éstas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla- información de interés de una base de datos, así como también hacer cambios sobre ella.
COMANDOS
Existen dos tipos de comandos SQL:
Los de DLL que permiten crear y definir nuevas bases de datos, campos e índices
Los DML que permiten generan consultas para ordenar, filtrar y extraer datos de la base de datos
DDL: Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de definición de las estructuras que almacenarán los datos así como de los procedimientos o funciones que permitan consultarlos. Un Data Definition Language o Lenguaje de descripción de datos ( DDL ) es un lenguaje de programación para definir estructuras de datos .
COMANDOS
CREATE: utilizado npara crear nuevas tablas, campos e índices
DROP: empleado para eliminar tablas e índices
ALTER: utilizado para modificar las tablas agregando campos o cambiando la definición de los campos
DML: Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado
COMANDOS
SELECT: utilizado para consultar registro de base de datos que satisfagan un criterio determinado
INSERT: utilizado para cargar lotes de datos en la base de datos en una única
UPDATE: utilizado para modificar los valores de los campos y registros especificados
DELETE: utilizado para eliminar registros de una tabla de una base de datos

CLAUSULAS: Son condiciones de modificación utilizadas para definir los datos que desean seleccionar o manipular
FROM: utilizada para especificar la taba en la cual se va seleccionar los registros.
WHERE: utilizada para especificar las condiciones que debe reunir los registros que se van a seleccionar
GROUP BY: utilizada para separar los registros seleccionados en grupos específicos
HAVING: utilizada para expresar la condición que debe satisfacer cada grupo
ORDER BY: utilizada para ordenar los registros seleccionados de acuerdo con un orden especifico

martes, 10 de mayo de 2011

Ruby on Rails

Definicion de Conceptos Sobre Ruby on Rails

lunes, 28 de marzo de 2011

metodos de ordenamiento y busqueda binaria

ALGORITMO DE BÚSQUEDA
Un algoritmo de búsqueda es aquel que está diseñado para localizar un elemento con ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos, o la mejor movida en una partida de ajedrez.
La variante más simple del problema es la búsqueda de un número en un vector.
Búsqueda secuencial
Se utiliza cuando el vector no está ordenado o no puede ser ordenado previamente. Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del array hasta encontrarlo, o hasta que se llegue al final. La existencia se puede asegurar cuando el elemento es localizado, pero no podemos asegurar la no existencia hasta no haber analizado todos los elementos del array. A continuación se muestra el pseudocódigo del algoritmo:[cita requerida]
Datos de entrada:
  vec: vector en el que se desea buscar el dato
  tam: tamaño del vector. Los subíndices válidos van desde 0 hasta tam-1 inclusive.
  dato: elemento que se quiere buscar.
Variables
  pos: posición actual en el array

pos = 0
Mientras pos < tam:
 Si vec[pos] == dato devolver verdadero y/o pos, de lo contrario:
 pos = pos + 1
Fin (Mientras)

DEVOLVER FALSO,BÚSQUEDA DICOTÓMICA (BINARIA)
Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias.
Está altamente recomendado para buscar en arrays de gran tamaño. Por ejemplo, en uno conteniendo 50.000.000 elementos, realiza como máximo 26 comparaciones (en el peor de los casos).
Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del array (normalmente el elemento central): si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en todo el array.
A continuación se presenta el pseudocódigo del algoritmo, tomando como elemento inicial el elemento central del array.[cita requerida]
Datos de entrada:
  vec: vector en el que se desea buscar el dato
  tam: tamaño del vector. Los subíndices válidos van desde 0 hasta tam-1 inclusive.
  dato: elemento que se quiere buscar.

Variables
  centro: subíndice central del intervalo
  inf: límite inferior del intervalo
  sup: límite superior del intervalo

inf = 0
sup = tam-1

Mientras inf <= sup:
  centro = ((sup - inf) / 2) + inf // División entera: se trunca la fracción
  Si vec[centro] == dato devolver verdadero y/o pos, de lo contrario:
   Si dato < vec[centro] entonces:
    sup = centro - 1
   En caso contrario:
    inf = centro + 1
Fin (Mientras)
Devolver Falso
Implementación recursiva en C++[cita requerida]
#include <iostream>
#include <vector>
bool busqueda_dicotomica(vector<int> v, int principio, int fin, int x){
    bool res;
    if(principio < fin){
        int m = (principio + fin)/2;
        if(x < v[m]) res = busqueda_dicotomica(v, principio, m, x);
        else if(x > v[m]) res = busqueda_dicotomica(v, m+1, fin, x);
        else res = true;
    }else res = false;
    return res;
}
/*{Post: Si se encuentra devuelve true, sino false}*/







Algoritmo de ordenamiento
En computación y matemáticas un algoritmo de ordenamiento recursivo es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de búsqueda y fusión) que requieren listas ordenadas para una ejecución rápida. También es útil para poner datos en forma canónica y para generar resultados legibles por humanos.
Desde los comienzos de la computación, el problema del ordenamiento ha atraído gran cantidad de investigación, tal vez debido a la complejidad de resolverlo eficientemente a pesar de su planteamiento simple y familiar. Por ejemplo, BubbleSort fue analizado desde 1956.1 Aunque muchos puedan considerarlo un problema resuelto, nuevos y útiles algoritmos de ordenamiento se siguen inventado hasta el día de hoy (por ejemplo, el ordenamiento de biblioteca se publicó por primera vez en el 2004). Los algoritmos de ordenamiento son comunes en las clases introductorias a la computación, donde la abundancia de algoritmos para el problema proporciona una gentil introducción a la variedad de conceptos núcleo de los algoritmos, como notación de O mayúscula, algoritmos divide y vencerás, estructuras de datos, análisis de los casos peor, mejor, y promedio, y límites inferiores.
 Clasificación
Los algoritmos de ordenamiento se pueden clasificar de las siguientes maneras:
La más común es clasificar según el lugar donde se realice la ordenación
Algoritmos de ordenamiento interno: en la memoria del ordenador.
Algoritmos de ordenamiento externo: en un lugar externo como un disco duro.
Por el tiempo que tardan en realizar la ordenación, dadas entradas ya ordenadas o inversamente ordenadas:
Algoritmos de ordenación natural: Tarda lo mínimo posible cuando la entrada está ordenada.
Algoritmos de ordenación no natural: Tarda lo mínimo posible cuando la entrada está inversamente ordenada.
Por estabilidad: un ordenamiento estable mantiene el orden relativo que tenían originalmente los elementos con claves iguales. Por ejemplo, si una lista ordenada por fecha se reordena en orden alfabético con un algoritmo estable, todos los elementos cuya clave alfabética sea la misma quedarán en orden de fecha. Otro caso sería cuando no interesan las mayúsculas y minúsculas, pero se quiere que si una clave aBC estaba antes que AbC, en el resultado ambas claves aparezcan juntas y en el orden original: aBC, AbC. Cuando los elementos son indistinguibles (porque cada elemento se ordena por la clave completa) la estabilidad no interesa. Los algoritmos de ordenamiento que no son estables se pueden implementar para que sí lo sean. Una manera de hacer esto es modificar artificialmente la clave de ordenamiento de modo que la posición original en la lista participe del ordenamiento en caso de coincidencia.
Los algoritmos se distinguen por las siguientes características:
Complejidad computacional (peor caso, caso promedio y mejor caso) en términos de n, el tamaño de la lista o arreglo. Para esto se usa el concepto de orden de una función y se usa la notación O(n). El mejor comportamiento para ordenar (si no se aprovecha la estructura de las claves) es O(n log n). Los algoritmos más simples son cuadráticos, es decir O(n²). Los algoritmos que aprovechan la estructura de las claves de ordenamiento (p. ej. bucket sort) pueden ordenar en O(kn) donde k es el tamaño del espacio de claves. Como dicho tamaño es conocido a priori, se puede decir que estos algoritmos tienen un desempeño lineal, es decir O(n).
Uso de memoria y otros recursos computacionales. También se usa la notación O(n).
Estabilidad
Los algoritmos de ordenamiento estable mantienen un relativo preorden total. Esto significa que un algoritmo es estable solo cuando hay dos registros R y S con la misma clave y con R apareciendo antes que S en la lista original.
Cuando elementos iguales (indistinguibles entre sí), como números enteros, o más generalmente, cualquier tipo de dato en donde el elemento entero es la clave, la estabilidad no es un problema. De todas formas, se asume que los siguientes pares de números están por ser ordenados por su primer componente:
(4, 1)  (3, 7)  (3, 1)  (5, 6)
En este caso, dos resultados diferentes son posibles, uno de los cuales mantiene un orden relativo de registros con claves iguales, y una en la que no:
(3, 7)  (3, 1)  (4, 1)  (5, 6)   (orden mantenido)
(3, 1)  (3, 7)  (4, 1)  (5, 6)   (orden cambiado)
Los algoritmos de ordenamiento inestable pueden cambiar el orden relativo de registros con claves iguales, pero los algoritmos estables nunca lo hacen. Los algoritmos inestables pueden ser implementados especialmente para ser estables. Una forma de hacerlo es extender artificialmente el cotejamiento de claves, para que las comparaciones entre dos objetos con claves iguales sean decididas usando el orden de las entradas original. Recordar este orden entre dos objetos con claves iguales es una solución poco práctica, ya que generalmente acarrea tener almacenamiento adicional.
Ordenar según una clave primaria, secundaria, terciara, etc., puede ser realizado utilizando cualquier método de ordenamiento, tomando todas las claves en consideración (en otras palabras, usando una sola clave compuesta). Si un método de ordenamiento es estable, es posible ordenar múltiples ítems, cada vez con una clave distinta. En este caso, las claves necesitan estar aplicadas en orden de aumentar la prioridad.
Ejemplo: ordenar pares de números, usando ambos valores
(4, 1)  (3, 7)  (3, 1)  (4, 6) (original)
(4, 1)  (3, 1)  (4, 6)  (3, 7) (después de ser ordenado por el segundo valor)
(3, 1)  (3, 7)  (4, 1)  (4, 6) (después de ser ordenado por el primer valor)
Por otro lado:
(3, 7)  (3, 1)  (4, 1)  (4, 6) (después de ser ordenado por el primer valor)
(3, 1)  (4, 1)  (4, 6)  (3, 7) (después de ser ordenando por el segundo valor,
                                 el orden por el primer valor es perturbado)
Lista de algoritmos de ordenamiento
Algunos algoritmos de ordenamiento agrupados según estabilidad tomando en cuenta la complejidad computacional.

Estables
Nombre traducido          Nombre original              Complejidad      Memoria             Método
Ordenamiento de burbuja         Bubblesort         O(n²)     O(1)       Intercambio
Ordenamiento de burbuja bidireccional              Cocktail sort       O(n²)     O(1)       Intercambio
Ordenamiento por inserción     Insertion sort    O(n²)     O(1)       Inserción
Ordenamiento por casilleros     Bucket sort        O(n)      O(n)      No comparativo
Ordenamiento por cuentas        Counting sort    O(n+k) O(n+k) No comparativo
Ordenamiento por mezcla          Merge sort         O(n log n)           O(n)      Mezcla
Ordenamiento con árbol binario              Binary tree sort                O(n log n)           O(n)      Inserción
Pigeonhole sort               O(n+k) O(k)      
Ordenamiento Radix     Radix sort           O(nk)    O(n)      No comparativo
Distribution sort              O(n³) versión recursiva O(n²)    
Gnome sort       O(n²)     
              
Inestables
Nombre traducido          Nombre original              Complejidad      Memoria             Método
Ordenamiento Shell      Shell sort             O(n1.25)              O(1)       Inserción
Comb sort          O(n log n)           O(1)       Intercambio
Ordenamiento por selección     Selection sort    O(n²)     O(1)       Selección
Ordenamiento por montículos Heapsort             O(n log n)           O(1)       Selección
Smoothsort       O(n log n)           O(1)       Selección
Ordenamiento rápido   Quicksort            Promedio: O(n log n),
peor caso: O(n²)              O(log n)               Partición
Several Unique Sort       Promedio: O(n u),
peor caso: O(n²);
u=n; u = número único de registros                      
Cuestionables, imprácticos
Nombre traducido          Nombre original              Complejidad      Memoria             Método
Bogosort             O(n × n!), peor: no termina                      
Pancake sorting               O(n), excepto en
máquinas de Von Neumann                     
Randomsort                                     

martes, 22 de marzo de 2011

simbologia UML

PAQUETES: Permiten dividir un modelo, reagrupar y encapsular los elementos de modelado y se representa con una carpeta con nombre.

 CASO DE USO: es representado por una elipse y es una descripción de la secuencia de interacciones que se producen entre un actor y el sistema, cuando el actor usa el sistema para llevar a cabo una tarea específica.

ACTOR: es una entidad externa al sistema que realiza algún tipo de interacción con el mismo. Se representa mediante una figura humana dibujada con palotes. Esta representación sirve tanto para actores que son personas como para otro tipo de actores (otros sistemas, sensores, etc.).

RELACIONES Las relaciones pueden tener lugar entre actores y casos de uso o entre casos de uso. La relación entre un actor y un caso de uso es una relación de comunicación, que indica que un actor interviene en el caso de uso. Normalmente, el actor aporta información para la realización de un caso de uso o recibe información como resultado de la realización del mismo, por ello, esta relación puede ser unidireccional o bidireccional, aunque generalmentese muestracomo bidireccional, ya que no es necesario especificar en detalle estas relaciones. La relación entre casos de uso es una relación unidireccional. Esta relación puede presentar uno de los dos siguientes tipos: “usa” y “extiende”.
A.LA RELACIÓN “INCLUDE” (INCLUYE).Una instancia del Caso de uso origen incluye también el comportamiento descrito por el Caso de Uso destino. «include» reemplazó al denominado «uses», por ejemplo: si un actor realiza una interacción con un caso de uso A, automáticamente lo hará con el caso de uso B.

B.LA RELACIÓN “EXTEND” (EXTIENDE). Se utiliza cuando se quiere reflejar un comportamiento opcional de un caso de uso. Por ejemplo, se tiene el caso de uso A que representa un comportamiento habitual del sistema.Sin embargo, dependiendo de algún factor, este caso de uso puede presentar un comportamiento adicional o ligeramente diferente, que se podría reflejar en un caso de uso B. En este caso, habrá una relación “extiende” del caso de uso B al A.

jueves, 17 de marzo de 2011

ACTOR-POO

Qué es un Actor?
Un actor es alguien o algo que interactúa con el sistema; es quien utiliza el sistema. Por la frase "interactúa con el sistema" se debe entender que el actor envía a o recibe del sistema unos mensajes o intercambia información con el sistema. En pocas palabras, el actor lleva a cabo los casos de uso. Un actor puede ser una persona u otro sistema que se comunica con el sistema a modelar.
Hay dos tipos de actores:
Actores primarios:
·         Son usuarios del sistema cuyo objetivo son satisfechos por medio de servicios que ofrece el sistema
·         Por ejemplo un cliente en un cajero automático
Actor de soporte:
·         Provee un servicio, por ejemplo información al sistema. Puede ser un sistema externo, una organización o persona. Por ejemplo un sistema de autorización de tarjetas de crédito es un actor de soporte
Un actor es un tipo (o sea, una clase), no es una instancia y representa a un rol.
 Qué es un rol?
El concepto está vinculado a la función o papel que cumple alguien o algo.
Ejemplo “el  delantero le planteo al entrenador que no entiende cuál es su rol en el equipo”
 Cuantos roles puede tener un usuario?
 Puede desempeñar varios roles; como ejemplo se tiene:
Operario-estudiante
Estudiante-operario
Donde podemos identificar que el operario puede desempeñar el papel de estudiante o viceversa
 Para quien están dirigidos los diagramas de casos de uso?
A los actores del sistema
Clientes o potenciales clientes
Socios
Proveedores
Autoridades
Propietarios
Sistemas de información externos al negocio
Otras parte de la organización, si ésta es grande
 Cuantos niveles de Diagramas de Casos de uso existen y menciónelos.
Dependiendo del alcance del sistema
 Qué hacer cuando el diagrama de caso de uso es muy grande y no cabe en una sola hoja?
Tomar los elementos y montarlos en otro diagrama
 Cuando se tiene un diagrama de casos de uso muy complejo què recomendarías?
Dividirlo en varios diagramas de casos de uso para entenderlo mas rápido.

Que es una clase?
Una clase es una construcción que permite crear tipos personalizados propios mediante la agrupación de variables de otros tipos, métodos y eventos. Una clase es como un plano. Define los datos y el comportamiento de un tipo. Si la clase no se declara como estática, el código de cliente puede utilizarla mediante la creación de objetos o instancias que se asignan a una variable. La variable permanece en memoria hasta todas las referencias a ella están fuera del ámbito. En ese momento, CLR la marca como apta para la recolección de elementos no utilizados. Si la clase se declara como estática, solo existe una copia en memoria y el código de cliente solo puede tener acceso a ella a través de la propia clase y no de una variable de instancia. Para obtener más información, vea Clases estáticas y sus miembros (Guía de programación de C#).
Ejm: || ruby> class Perro
ruby| def ladra
ruby| print "guau guau\n"
ruby| end
ruby| end
nil
||

Que es un Objeto?
 En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto se define como la unidad que en tiempo de ejecución realiza las tareas de un programa. También a un nivel más básico se define como la instancia de una clase.
Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un programa es una colección de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio.

Que es una Instancia?
 Una instancia de un programa es una copia de una versión ejecutable del programa que ha sido escrito en la memoria del computador.
Una instancia de un programa es creada típicamente por el click de usuario en un icono de una interfaz Gráfica para usuarios GUI o por la entrada de un comando en una interfaz de línea de comandos CLI y presionando la tecla ENTER. Instancias de programas pueden ser creadas por otros programas
Ejm: Un ejemplo de instancia en un lenguaje de programación visual, sería tomar o arrastrar un objeto de la barra de herramientas o de la lista de librerías y colocarlo en el escritorio o escenario de trabajo (estamos creando una instancia de ese objeto, una copia).


Que es UML?
Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.
Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.
Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional o RUP), pero no especifica en sí mismo qué metodología o proceso usar.

Còmo es la estructura de un objeto y còmo se representa en UML?
Un objeto puede considerarse como una especie de cápsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempeña un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organización y están formadas esencialmente por punteros a otros objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus descendientes en la organización.

Que es encapsulación?
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.

Que es Abstracción?
La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (Característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.

Que es una relación?
Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con aquellos que forman parte de la misma organización.
Las hay de dos tipos fundamentales:
-Relaciones jerárquicas. Son esenciales para la existencia misma de la aplicación porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organización en la que ambos forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).

Una organización jerárquica simple puede definirse como aquella en la que un objeto puede tener un solo padre, mientras que en una organizacion jerárquica compleja un hijo puede tener varios padres).

-Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver con la organización de la que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos en sí mismos (de su significado) y no de su posición en la organización.
Se puede ver mejor con un ejemplo: supongamos que vamos a construir un diccionario informatizado que permita al usuario obtener la definición de una palabra cualquiera. Supongamos que, en dicho diccionario, las palabras son objetos y que la organización jerárquica es la que proviene de forma natural de la estructura de nuestros conocimientos sobre el mundo.

Que es Herencia?
En orientación a objetos la herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.
Que es Modularidad?
En programación modular, y más específicamente en programación orientada a objetos, se denomina Modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.

Que es Polimorfismo?
En programación orientada a objetos 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).

Que es Agregación?
Representa una relación del tipo "tener un" entre clases. Cuando la clase contenida no existe independientemente de la clase que la contiene se denomina agregación por valor y además implica contenido físico, mientras que si existe independientemente y se accede a ella indirectamente, es agregación por referencia.(inclusión)

Que es Extensión?
Utilización de una superclase en un subclase

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.