sábado, 8 de agosto de 2009

PROGRAMACIÓN ORIENTADA A OBJETOS


EL PRINCIPIO BÁSICO DE LA PROGRAMACIÓN ORIENTADA A OBJETOS

es que un sistema de software se ve como una secuencia de «transformaciones» en un conjunto de objetos. El término objeto tiene el mismo significado que un nombre o una frase nominal Es una persona, un lugar o una cosa Ejemplos de objetos del inundo real son: persona, tabla, computadora, avión, vuelo de avión, diccionario, ciudad o la capa de ozono La mayoría de los Objetos del mundo real tienen atributos (características que los describen) Por ejemplo, los atributos de una persona incluyen el nombre, la edad, el sexo, la fecha de nacimiento, la dirección, etc. Los objetos tienen atributos, y ellos, a su vez, comportamiento El comportamiento (behavkr) es el conjunto de cosas que puede hacer un objeto; por ejemplo, una persona puede estudiai, caminar, trabajar, etc En síntesis, se puede decir que los objetos conocen cosas y hacer cosas Las cosas que un objeto conoce son sus atributos; las cosas que puede hacer un objeto son su comportamiento

EN QUE SE BASA LA PROGRAMACIÓN ORIENTADA A OBJETOS

Las tecnologías orientadas a objetos se han convertido en la década de los noventa en uno de los motores clave de la industria del software Sin embargo, las tecnologías de objetos no es, como algunos innovadores pregonan, una novísima tecnología, sino que, muy al contrario, es una vieja y madura tecnología que se remonta a los años sesenta. De hecho, Simula, uno de los lenguajes orientados a objetos más antiguos, fue desarrollado en 1967 El desarrollo de programas orientados a objetos es un enfoque diferente del mundo informático Implica la creación de modelos del mundo real y la construcción de programas informáticos basados en esos modelos El proceso completo de programación comienza con la construcción de un modelo del suceso (evento) real El resultado final del proceso es un programa de computadora que contiene características que representan algunos de los objetos del mundo real que son parte del suceso

UN POCO DE HISTORIA

El primer lenguaje de programación que introdujo el concepto de clase fue Simula-67, como entidad que contenía datos y las operaciones que manipulaban los datos Así misino, introdujo también el concepto de herencia El siguiente lenguaje orientado a objetos, y seguramente el más popular desde un enfoque conceptual exclusivamente de objetos, es Smalltalk, cuya primera versión comercial se desarrolló en 1976, y en 1980 se popularizó con la aparición de Smalltalk-80. Posteriormente se ha popularizado gracias al desarrollo de Smalltalk/V de la casa Digital Y, que recientemente se lid implementado bajo entorno Windows El lenguaje se caracteriza por soportar todas las propiedades fundamentales de la orientación a objetos, dentro de un entorno
integrado de desarrollo, con interfaz interactivo de usuario basado en menús Entre los lenguajes orientados a objetos .

• 1970 desarrollo mínimo en Xerox
• 1981 lenguaje Smalltak, primer lenguaje y sistema operativo 00 popular
• 1984 lenguaje C++, lenguaje OO para escribir software real
• 1990s desarrollo del lenguaje C++ y diversas metodologías de análisis y diseño OO
• 1995 lenguaje Java, lenguaje OO para el web


VENTAJAS Y DESVENTAJAS DE LA POO

DESARROLLO TRADICIONAL FRENTE A ORIENTADO A OBJETOS


El sistema tradicional del desarrollo del software para un determinado sistema es la subdivisión del mismo en módulos, a la cual deben aplicarse criterios específicos de descomposición, los cuales se incluyen en metodologías de diseño Estos módulos se refieren a la fase de construcción de un programa, que en el modelo clásico sigue a la definición de los requisitos (fase de análisis) El modelo clásico del ciclo de vida del software no es el único modelo posible, dado que es posible desarrolla1 código de un modo evolutivo, por refinamiento y prototipos sucesivos Existen numerosos lenguajes de programación y metodologías que se han desarrollado en paralelo a los mismos, aunque normalmente con independencia de ellos
En esta sección nos centraremos en la metodología más utilizada, denominada desarrollo estructurado, que se apoya esencialmente en el diseño descendiente y en la programación estructul.ada La programación estructurada es un estilo disciplinado de programación según los lenguajes procedimentales (por procedimientos), tales como FORTRAN, BASIC, COBOL y recientemente C y C++, entre otros.


Modelos de ciclos de vida Orientados a Objetos

• Necesidad de iteración dentro y entre las fases
– Modelo de fuente
– Round-trip gestalt
– Proceso Unificado (Unified software development process -UP-)
• Todos incorporan alguna forma de
– Iteración
– Paralelismo
– Desarrollo incremental
Peligro

VENTAJAS DE LAS METODOLOGÍAS ORIENTADAS A OBJETOS

• Un sólo paradigma
– Modelos más cercanos al mundo real
• Más fáciles de entender y mantener
– Estabilidad
• Cambios en los requerimientos no implican cambios masivos en el sistema en desarrollo
– Hablan el mismo lenguaje usuarios, analistas, diseñadores, implantadores
– Facilita reutilización

ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

Cualquier metodología orientada a objetos incluye al menos dos fases. Durante el análisis se obtiene el modelo que representa las necesidades del usuario sin considerar ningún aspecto de implementación (software o hardware). En el diseño se genera la arquitectura del sistema, la cual representa al sistema considerando los detalles de implementación.


Introducción

Los objetos son entidades que combinan estado, comportamiento e identidad:
El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener, reutilizar y volver a utilizar.
De aquella forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separan ni deben separarse el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto.

sábado, 1 de agosto de 2009

CARACTERISTICAS DEL POO

DEFINICIÓN:

programación o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características siguientes son las más importantes (para más información, seguir los enlaces respectivos):
Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema.
Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado.
Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica.
Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Recolección de basura: la Recolección de basura o Garbage Collection es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando.

CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN

Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
Según el nivel de abstracción
· Lenguajes de Máquina

Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

· Lenguajes de bajo nivel

Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa. Ejecutar ese código en sistemas UNIX o basados en él equivale a una función exit(0) (terminar el programa retornando el valor 0)


· Lenguajes de medio nivel

Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.


Lenguajes de alto nivel :

Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos.


La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

ESTRUCTURA DE UN OBJETO


PARTES

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 inserté 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.

Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia.

CLASES DE POO

Definición
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas.
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.

TÉCNICA POLIFORMISMO

En programación orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.
En la práctica esto quiere decir que un puntero a un tipo puede contener varios tipos diferentes, no solo el creado. De esta forma podemos tener un puntero a un objeto de la clase Trabajador, pero este puntero puede estar apuntando a un objeto subclase de la anterior como podría ser Márketing, Ventas o Recepcionistas (todas ellas deberían ser subclase de Trabajador).
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.