lunes, 9 de marzo de 2009

diagrama de clases

Clase




Una clase define los atributos y los métodos de una serie de objetos. Todos los objetos de esta clase (instancias de esa clase) tienen el mismo comportamiento y el mismo conjunto de atributos (cada objetos tiene el suyo propio). En ocasiones se utiliza el término “tipo” en lugar de clase, pero recuerde que no son lo mismo, y que el término tipo tiene un significado más general.
En ¨, las clases están representadas por rectángulos, con el nombre de la clase, y también pueden mostrar atributos y operaciones de la clase en otros dos “compartimentos” dentro del rectángulo.










Atributos
En UML, los atributos se muestran al menos con su nombre, y también pueden mostrar su tipo, valor inicial y otras propiedades. Los atributos también pueden ser mostrados visualmente:
· + Indica atributos públicos
· # Indica atributos protegidos
· - Indica atributos privados
Operaciones
La operaciones (métodos) también se muestan al menos con su nombre, y pueden mostrar sus parámetros y valores de retorno. Las operaciones, al igual que los atributos, se pueden mostrar visualmente:
· + Indica operaciones públicas
· # Indica operaciones protegidas
· - Indica operaciones privadas


Diagramas de clases: conjunto de clases, interfaces y colaboraciones, y las relaciones entre ellas.





Asociaciones de clases



Las clases se puede relaciones (estar asocionadas) con otras de diferentes maneras:

Generalización
La herencia es uno de los conceptos fundamentales de la programación orientada a objetos, en la que una clase “recoge” todos los atributos y operaciones de la clase de la que es heredera, y puede alterar/modificar algunos de ellos, así como añadir más atributos y operaciones propias.
En UML, una asociación de generalización entre dos clases, coloca a estas en una jerarquía que representa el concepto de herencia de una clase derivada de la clase base. En UML, las generalizaciones se representan por medio de una línea que conecta las dos clases, con una flecha en el lado de la clase base.















Asociaciones
Una asociación representa una relación entre clases, y aporta la semántica común y la estructura de muchos tipos de “conexiones” entre objetos.
Las asociaciones son los mecanismos que permite a los objetos comunicarse entre sí. Describe la conexión entre diferentes clases (la conexión entre los objetos reales se denomina conexión de objetos o enlace).
Las asociaciones pueden tener una papel que especifica el propósito de la asociación y pueden ser unidireccionales o bidireccionales (indicando si los dos objetos participantes en la relación pueden intercambiar mensajes entre sí, o es únicamente uno de ellos el que recibe información del otro). Cada extremo de la asociación también tiene un valor de multiplicidad, que indica cuántos objetos de ese lado de la asociación están relacionados con un objeto del extremo contrario.
En UML, las asociaciones se representan por medio de líneas que conectan las clases participantes en la relación, y también pueden mostrar el papel y la multiplicidad de cada uno de los participantes. La multiplicidad se muestra como un rango [mín...máx] de valores no negativos, con un asterisco (*) representando el infinito en el lado máximo.



Acumulación
Las acumulaciones son tipos especiales de asociaciones en las que las dos clases participantes no tienen un estado igual, pero constituyen una relación “completa”. Una acumulación describe cómo se compone la clase que asume el rol completo de otras clases que se encargan de las partes. En las acumulaciones, la clase que actúa como completa, tiene una multiplicidad de uno.
En UML, las acumulaciones están representadas por una asociación que muestra un rombo en uno de los lados de la clase completa.

Composición
Las composiciones son asociaciones que representan acumulaciones muy fuertes. Esto significa que las composiciones también forman relaciones completas, pero dichas relaciones son tan fuertes que las partes no pueden existir por sí mismas. Únicamente existen como parte del conjunto, y si este es destruido las partes también lo son.
En UML, las composiciones están representadas por un rombo sólido al lado del conjunto.



EJEMPLO DE UN DIAGRAMA DE CLASES











viernes, 6 de marzo de 2009

Google y su plan de dominación mundial en aplicaciones Web


Los grandes rivales de Google, es decir, Microsoft y Yahoo!, también cuentan con sus propios servicios de mapas. 'MSN Virtual Earth' y 'Yahoo! Maps' son los de cada compañía respectivamente, que además se combinan en algunos lugares con búsquedas locales. Estos servicios de mapas por satélite tienen, un problema que afrontar: las denuncias de algunos gobiernos de que son peligrosos para su seguridad.



Razón por la que se podría decir que google no se ha quedado dormido en los laureles pues ha demostrado su consecuente crecimiento incluyendo su gran avance donde cuenta actualmente con 72 aplicaciones . Ahora Google Docs, que ha incorporado una “vista de impresión” para nuestros documentos de texto, planillas de cálculo, y presentaciones.

Google permitirá a los programadores vender aplicaciones para su sistema operativo Android para teléfonos móviles en Estados Unidos a partir de la próxima semana. Este anuncio muestra el compromiso de Google de expandirse en el mercado de los móviles, tras retirarse de otras iniciativas como la publicidad en radio y prensa off line.

Google Docs es una sencilla pero potente suite ofimática, todo en línea.
Nos permite crear nuevos documentos, editar los que ya teníamos o compartirlos en la red.
Las principales ventajas de Google Docs son:

Nuestros documentos se almacenan en línea permitiendo acceder a ellos desde cualquier ordenador con conexión a internet, y compartirlos con quienes queramos, permitiendo su edición o llegar a publicarlos para que todo el mundo pueda verlos.

La gran cantidad de formatos que soporta con el procesador de texto podremos editar nuestros documentos de Word, Openoffice, documentos de texto... y guardarlos con el mismo formato u otros distintos. Y lo mismo sucede con presentaciones y hojas de cálculo.

Google Docs es una herramienta totalmente gratuita.


Google Docs también tiene una versión para móviles, por lo que si accedes a través de uno el interfaz será distinto.

Si no conoces funciones básicas tales como manejar el ratón, teclado, manejar ventanas, etc. aquí puedes aprenderlas.

Para poder utilizar Google Docs debemos tener una cuenta Google (por ejemplo una cuenta de correo GMail).
Si no tienes cuenta GMail, puedes obtener una totalmente gratuita siguiendo los pasos que aquí te explicamos.

Al ser una aplicación Web, Google Docs necesita ser utilizado a través de un navegador. Así que el primer paso será abrir una nueva ventana el nuestro.

Las imágenes que aquí mostramos pertenecen al Internet Explorer 7, pero Google Docs funciona perfectamente con cualquier navegador. Otros navegadores, como Firefox, incorporan alguna funcionalidad extra a la hora de editar documentos.
Sólo mostraremos el contenido de la ventana del navegador, para evitar confusiones a usuarios de otros navegadores. Recuerda que los botones y menús del navegador no tienen funciones especificas en Google Docs, aunque sí que podemos aprovechar las opciones del menú edición tal como hariamos en cualquier página web.


Google Docs también puede ser accesible offline, es decir, podemos utilizar la aplicación sin estar conectados a Internet. Lógicamente, hasta que no nos conectemos, no se guardarán los cambios en nuestra cuenta de Google Docs. Para poder utilizar este servicio, debemos de instalar en nuestro navegador Google Gears.


Google Docs & Spreadsheets, Google Calendar se presentaron como buenos reemplazos, salvo algunos inconvenientes a la hora de, por ejemplo, tener que exportar documentos al formato de Office para hacerlos compatibles con el resto de personas. Y claro, tenemos la gran ventaja de poder acceder a toda nuestra cuenta de correo, documentos, y demás, desde cualquier PC, tanto desde la oficina, como en casa.



Aunque Office Live Workpress dejó de ser privado y se volvió accesible para todo el mundo.
lanzando su“versión online” del paquete de oficina Office para tratar de “morder” un poco del mercado que han ganado aplicaciones tan utilizadas hoy en día como Google Docs.

Microsoft desarrollo Office Live Workspace un lugar en línea para guardar, tener acceso, compartir documentos y archivos totalmente gratis aunque no se tenga office instalado. Todo lo que se necesitará es tener acceso a Internet y un explorador compatible
Existen muchas personas que no conocen Office Live Workspace

Espacio de almacenamiento: Microsoft Live Wokspace está limitado a 500MB de espacio lo que equivaldría aproximadamente a 1000 documentos de Office. Aunque en Google Docs este punto no está tan claro, he encontrado un párrafo en el que dice que cada usuario tiene un límite de almacenamiento combinado de 5000 documentos y/o presentaciones y 5000 imágenes. En cuanto a las hojas de cálculo el límite baja a 1000. De todas maneras, no queda muy claro el espacio en MB del que disponemos en Google Docs.

Tipos de archivos: Google Docs está limitado a los tipos de archivos que sus servicios permiten editar de manera online: HTML, .txt, .doc .rtf, .odt, .xls, .csv, .ods, .tsv, .tsb, .ppt, y .pps. Office Live Workspace permite subir cualquier tipo de archivos, no solo documentos de Office (tiene algunas restricciones con determinados tipos de archivos como los .exe)
Tamaño de los archivos: Google Docs permite subir documentos de hasta 500KB cada uno más 2MB para las imágenes incrustadas. Las presentaciones pueden ser de hasta 10MB, las hojas de cálculo están limitadas a 10.000 filas, 256 columnas o 100.000 celdas. Office Live Workspace permite subir archivos de hasta 25MB.

Función de compartir: Google Docs permite compartir archivos con solo marcar una casilla en el menu. Las personas con las que compartimos estos archivos pueden ser invitadas como “colaboradores” que pueden modificar los documentos o “visualizadores”. Los documentos y las presentaciones pueden ser compartidas hasta con 200 usuarios, mientras que las hojas de cálculo no tienen límites. Office Live Workspace permite compartir los archivos casi de las misma manera, pudiendo marcar a los usuarios con los que queremos compartir los documentos como “editores” o visualizadores. Los archivos pueden ser compartidos hasta con 100 usuarios.
Colaboración: en Google Docs los colaboradores pueden trabajar en conjunto y en tiempo real. Diez personas pueden editar y/o ver documentos o presentaciones al mismo tiempo y 50 personas en el caso de las hojas de cálculo. En Office Live Workspace las colaboraciones no son en tiempo real. Si un usuario está editando un archivos, los demás son informados de esta situación y solo pueden editarlo cuando el usuario termina y guarda los cambios.

Versiones de los documentos: tanto Google Docs como Office Live Workspace permiten navegar entre las distintas versiones guardadas y volver a una copia anterior del documento.

Subida múltiple de documentos: Google Docs permite navegar los archivos en la PC y subirlos uno por uno. Los documentos y las presentaciones pueden enviarse por email pero no las hojas de cálculo. Google lanzó una pequeña aplicación (Document List Uploader) que permite subir archivos arrastrando y soltando (drag an drop). También existen herramientas de terceros como DocSyncer que facilitan la carga de archivos subiendo automáticamente múltiples documentos. Office Live Workspace permite subir varios archivos al mismo tiempo, aunque esta función solo está disponible para aquellas personas que utilicen Internet Explorer.

Integración: Google Docs solo ofrece versión online (no tiene versión para escritorio), aunque es posible editar los archivos de manera offline con otro tipo de software como Open Office o Microsoft Office. En Office Live Workspace(OLW) la integración es la clave. Desde la versión online podemos presionar el botón “Editar” y abrir el documento con el software de escritorio Microsoft Office. El servicio ofrece un agregado que funciona con las versiones Office XP, 2003 y 2007. Este agregado permite abrir y guardar archivos directamente en el espacio online desde el menu de Office.


Enlaces directos: tanto Google Docs como Office Live Workspace ofrecen enlaces directos a los documentos para poder compartirlos con otros usuarios.

Carpetas: Google Docs permite almacenar los archivos en directorios y sub directorios. Se puede decir que Office Live Workspace también ofrece la posibilidad de almacenar en directorios si consideramos que cada “workspace” es básicamente un directorio que contiene archivos que queremos agrupar, pero en cambio no nos permite crear subdirectorios.


Guardar/Exportar: Google Docs permite guardar los archivos en nuestra PC (dependiendo del formato original) en formato de Microsoft Office, Open Office, HTML, txt o PDF. Podemos seleccionar el formato que queremos desde el menu. Office Live Workspace obviamente asume que queremos guardar nuestros archivos en formato Microsoft Office aunque también podemos guardarlos en otros formatos como por ejemplo PDF.


Acceso desde teléfonos móviles: Google Docs está disponibles desde cualquier dispositivo móvil pero no podemos editar los documentos. Office Live Workspace no tiene acceso desde móviles.



Google Docs, es mucho más sencillo de utilizar, pues no esta atados a un software en particular como es el Office Live Workspace que viene de la mano con Microsoft Office, y se tiene acceso a documentos desde el teléfono móvil, aunque Microsoft ha hecho un buen trabajo con Office Live Workspace superando a Google Docs en varios aspectos.

Office Live Workspace(OLW) ofrece mayores prestaciones y funcionalidades mucho más potentes que las que nos entrega Google Docs. El servicio de Microsoft está integrado con un software gratuito para compartir escritorio llamado SharedView, con el cual pueden trabajar varias personas al mismo tiempo en un documento (y además mantener discusiones vía chat para coordinarse). Asimismo se nos proporcionan alertas de actividad personalizables para mantenernos al tanto de que ocurre en nuestro espacio de trabajo. Además no sólo podemos compartir documentos, sino que Workspaces completos (que vendrían siendo algo parecido a carpetas) con lo que el trabajo en grupo se hace mucho más fácil y fluido,No permite crear subcarpetas, no permite realizar búsquedas internas, etc. Todas cosas muy básicas que hasta las suites más novatas como Acrobat.com ya incluyen. Lo único rescatable de OLW en este aspecto es la posibilidad que nos entrega de subir varios documentos a la vez haciendo Drag&Drop desde el escritorio, pero fuera de eso, nada.

CONCLUSION Office Live Workspace es buen complemento de Microsoft Office, nada más. Si lo que quieren los de Redmond es quitarle algo de terreno al cada día más popular Google Docs van a tener que tomarse las cosas un poco más en serio, y sobre todo, empezar a aplicar política de apertura que dijeron que iban a adoptar.

la revolucion de la tecnologia orientada a objetos

LA TECNOLOGIA ORIENTADA A OBJETOS esta abarcando todos los ambitos no solo en la programación dado todas las ventajas que ofrece tales como la reutilización de código permitiendo crear sistemas mas complejos de modo que esto también influye en la cantidad de líneas de código que de algún modo serán menos, inclusive esto permite que si se le quiere añadir alguna nueva característica sólo se le agrega una pequeña línea de código sino también en la creación y administración de bases de datos, etc





primero seria necesario conocer ciertos conceptos


¿Qué es un objeto?
Un objeto es una estructura de datos (cuyos componentes denominaremos atributos) y un conjunto de procedimientos y funciones (que denominaremos métodos) para manipular la estructura de datos. La única forma de manipular la información del objeto es a través de sus métodos.



la Programacion Orientada a Objetos(POO) tiene una serie de ventajas como son:

Fomenta la reutilización y extensión del código.
Permite crear sistemas más complejos.
Relacionar el sistema al mundo real.
Facilita la creación de programas visuales.
Construcción de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software



Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.



La programación modular consiste en descomponer la aplicación a realizar en módulos que se programan y compilan por separado. Después, la aplicación se construye a partir de un programa principal que usa los módulos previamente programados.
Cuando los programas son grandes es absolutamente necesario descomponerlos en módulos. Cuando se desarrolla una aplicación informática en equipo, cada programador se puede encargar de la realización de una parte que se materializará en uno o varios módulos y podrá de esta forma trabajar de forma independiente. Posteriormente los diferentes módulos se unirán para constituir la aplicación final.



La programación modular tiene muchas ventajas:
§ facilita una buena organización del código
§ facilita el reparto de trabajo entre varios programadores (cada uno puede dedicarse a implementar uno de los módulos)
§ facilita el mantenimiento de las aplicaciones (se puede mejorar un módulo sin tener que cambiar más que los ficheros de ese módulo)



La programación orientada a objetos facilita la modularización del código, puesto que fuerza a que cada clase esté en ficheros (de cabecera y de código) diferentes. Por tanto, las aplicaciones estarán mejor organizadas y serán más claras de entender. Evidentes cuando el tamaño de la aplicación es grande. Si la aplicación es pequeña entonces probablemente no vale la pena usar la programación orientada a objetos. Observa por ejemplo, que en la aplicación que acabas de hacer has tenido que escribir mucho código para hacer bien poca cosa. Programando directamente en C hubieras podido hacer lo mismo con menos líneas de código y probablemente con igual grado de claridad y estructuración.Por último, otra ventaja importante de la programación orientada a objetos es la facilidad para reutilizar código.



Características asociadas al POO

Abstracción
La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc.
En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
Por ejemplo, en Java tenemos:
public class Automovil {// variables// métodos}
Encapsulamiento
El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.
Ocultamiento
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer sólo los detalles que sean necesarios para el resto del sistema.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque habrá cierto comportamiento privado de la Clase que no podrá ser accedido por otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos mecanismos dónde se validarán que algunas condiciones se cumplan. En Java el ocultamiento se logra usando las palabras reservadas: public, private y protected delante de las variables y métodos.

Lenguajes de Programación Orientado a Objetos


En 1985, E. Stroustrup extendió el lenguaje de programación C a C++, es decir C con conceptos de clases y objetos, también por esas fechas se creo desde sus bases el lenguaje EIFFEL.
En 1995 apareció el más reciente lenguaje OO, Java desarrollado por SUN, que hereda conceptos de C++.
El lenguaje de desarrollo más extendido para aplicaciones Web, el PHP 5, trae todas las características necesarias para desarrollar software orientado a objetos.
Además de otros lenguajes que fueron evolucionando, como el Pascal a Delphi.
Finalmente también otros lenguajes script como el ActionScript que si bien no es totalmente orientado a objetos pero sí posee las características.
Análisis y diseño Orientado a Objetos
Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos. También se necesitará realizar un análisis y diseño orientado a objetos.
El modelamiento visual es la clave para realizar el análisis OO. Desde los inicios del desarrollo de software OO han existido diferentes metodologías para hacer esto del modelamiento, pero sin lugar a duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologías.
Según los mismos diseñadores del lenguaje UML, éste tiene como fin modelar cualquier tipo de sistemas (no solamente de software) usando los conceptos de la orientación a objetos. Y además, este lenguaje debe ser entendible para los humanos y máquinas.
Actualmente en la industria del desarrollo de software tenemos al UML como un estándar para el modelamiento de sistemas OO. Fue la empresa Racional que creó estas definiciones y especificaciones del estándar UML, y lo abrió al mercado. La misma empresa creó uno de los programas más conocidos hoy en día para este fin; el Racional Rose, pero también existen otros programas como el Poseidon que trae licencias del tipo community edition que permiten su uso libremente.
El UML consta de todos los elementos y diagramas que permiten modelar los sistemas en base al paradigma orientado a objetos. Los modelos orientados a objetos cuando se construyen en forma correcta, son fáciles de comunicar, cambiar, expandir, validar y verificar. Este modelamiento en UML es flexible al cambio y permite crear componentes plenamente reutilizables.


Ventajas y desventajas de la programación orientada a objetos
La programación orientada a objetos pretende reflejar el mundo real, que se compone de objetos con los que (en general) sólo podemos realizar aquellas operaciones (métodos) previstos por los diseñadores del objeto. Una lavadora, por ejemplo, se compone de una serie de elementos (atributos) tales como: un motor, cables, tubos, una caja metálica, etc. Para usar una lavadora a nadie se le ocurre abrir la caja metálica y empezar a manipular esos elementos. Si hiciera eso lo más probable es que estropease la lavadora. Lo que hará es usar alguno de los programas de lavado pre-establecidos. Con los objetos pasa lo mismo: el hecho de que no podamos acceder directamente a sus atributos, sino usar solamente sus métodos hace que se reduzca la probabilidad de cometer errores, siempre y cuando los objetos hayan sido probados a fondo previamente.