domingo, 22 de enero de 2012

Conceptos de la Programacion Orientada a Objetos


Polimorfismo
En programación orientada a objetos el polimorfismo se refiere a la posibilidad de definir clases diferentes que tienen métodos o atributos denominados de forma idéntica, pero que se comportan de manera distinta. 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.

Encapsulación:
Es el ocultamiento del estado El encapsulamiento es una característica de la programación orientada a objetos. 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.

Objeto:
En el paradigma de programación orientada a objetos (POO), 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.

Método:
un método es una subrutina asociada exclusivamente a una clase o a un objeto. Análogamente a los procedimientos en los lenguajes imperativos, un método consiste generalmente de una serie de sentencias para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha acción y o, posiblemente, un valor de salida de algún tipo.

Herencia
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 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 similares a los ya existentes.

Diferencias entre Sitio web, Pagina web y Portal web


¿Sitio web, Pagina web, Portal web? ¿Te confunde saber cual es cual?
Si, a primera vista parecen lo mismo, pero la verdad es que son cosas diferentes aunque están relacionadas.

Tomaremos un ejemplo para diferenciarlas más fácilmente, imaginemos un libro de medicina, el libro se llama “El Cuerpo Humano” y está compuesto por diferentes capítulos tales como: “el corazón”, “el cerebro”, “los pulmones”, “las extremidades”, y dicho libro lo podemos encontrar en nuestra biblioteca favorita. Ahora bien, el libro “El Cuerpo Humano” es el Sitio Web, los capítulos son las páginas web que conforman el Sitio Web, y la biblioteca donde encontramos muchos más libros es el Portal Web.

Ahora que están un poco más claras las diferencias, vamos a los conceptos

Sitio Web: conjunto de páginas web relacionadas entre sí, alojadas generalmente en un mismo servidor. Puede incluir texto, gráficos, ficheros de audio y vídeo, entre otros. Cada sitio web tiene una página de inicio (home page) que es el primer documento que ve el usuario cuando entra en el sitio web poniendo el nombre del dominio (dirección URL) de ese sitio web en un navegador. Todos los sitios web públicamente accesibles constituyen la gigantesca World Wide Web (wwww) de información.

Página web: documento componente de un sitio web de la www que se especifica por una dirección única o URL. Es multimedia (porque puede contener textos, imágenes, sonidos, animaciones) con hiperenlaces (vínculos que permiten acceder a otras páginas) Visualmente se muestra en la pantalla del ordenador como si fuera una página.

Portal de Internet: es un sitio web cuyo objetivo es ofrecer al usuario, de forma fácil e integrada, el acceso a una serie de recursos y de servicios, entre los que suelen encontrarse buscadores, foros, documentos, aplicaciones, compra electrónica, etc. Principalmente están dirigidos a resolver necesidades específicas de un grupo de personas o de acceso a la información y servicios de una institución pública o privada.

Arquitectura del software

Ayer estuve en mi clase de diplomado de software y tratamos un tema muy interesante “la arquitectura de software”, para los que entienden un poquito del software y de todas las complicaciones que se pueden presentar a la hora de la creación del mismo, sabemos que en ocasiones la tarea es tan enredada que necesitamos la ayuda de modelos y patrones para guiarnos y así lograr un producto de calidad.

Definiremos de manera sencilla cada concepto tratado.
El proceso de creación de software es complejo por esto no es raro encontrarnos con que los conceptos relacionados se tornen confusos.

Arquitectura del software

Existe un gran número de definiciones de la arquitectura del software pero entre las más relevantes podemos encontrar la definición de Clements que nos dice:

“La AS es, a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes según se la percibe desde el resto del sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta, aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a la mayor parte de las abstracciones.”

También encontramos la definición de la IEEE Std 1471-2000 que dice: “La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución”.

Rol del arquitecto de software
El arquitecto de software debe ser una persona con amplios conocimientos técnicos, algunas de sus responsabilidades es estar al tanto de los diseños, la arquitectura y los asuntos técnicos de los proyectos.
El rol del arquitecto de software incluye las siguientes tareas.
·         Definición de las vistas de la arquitectura de una aplicación.
·         Dar soporte técnico-tecnológico a desarrolladores, clientes y expertos en negocios.
·         Conceptualizar y experimentar con distintos enfoques arquitectónicos;
·         Crear documentos de modelos y componentes y especificaciones de interfaces,
·         validar la arquitectura contra requerimientos, suposiciones.
·         Tener una dosis de estrategia y política.

Todas estas tareas son tan importantes para el inicio del proyecto que si algo sale mal acá se ve en peligro todo el proyecto.

Nuestra profesora menciono que iniciar un proyecto software sin los diseños, documentos, modelos y requerimientos. Es como si la construcción de un edificio se iniciara sin los planos y los estudios del terreno.