lunes, 22 de febrero de 2010

FOXPRO 8.0

INTRODUCCION A LA PROGRAMACION ORIENTADA A OBJETOS



En el transcurso de los últimos 35 años, los diseñadores de hardware para ordenadores han pasado del diseño de equipos del tamaño de un hangar a ordenadores portátiles basados en microprocesadores minúsculos.
En el mismo periodo, los desarrolladores de software han pasado de escribir programas en ensamblador y COBOL a escribirlos en C y C++. Podríamos denominar a esto progreso (algunas personas no estarían de acuerdo), pero claramente en mundo de software no progresa tan rápidamente como el mundo hardware. Entonces ¿Qué tienen los diseñadores de hardware que los desarrolladores de software no poseen.


Que es?


La programación orientada a objeto (poo u oop según sus siglas en ingles) es un paradigma en programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadoras. Esta basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se popularizo a principio de la década 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.


Historia


Al mismo tiempo que se da la crisis del software, por otro lado la orientación a objeto (oo) se empezó a discutir a fines de los años 60 con el desarrollo del lenguaje SIMULA67 por nigaard y ole-johan dahi en el centro de cálculo noruego. En el, introdujeron los concepto de clases subclases y rutinas, muy parecidos los conceptos a los lenguajes de orientación a objeto de hoy en día. A mitad de la década de los 70 los científicos del centro de investigación palo alto de XEROX (PARC) (XEROX palo alto research center) crearon el lenguaje SMALLTALK, el primer lenguaje orientado a objeto consistente y completo. En el cada elemento del lenguaje fue realizado un objeto. Este ultimo lenguaje evoluciono atreves de varios elementos realizados por PARC.A pesar de este movimiento temprano hacia los lenguajes orientados a objetos, solo se lograron pequeñas incursiones en la comunidad de la programación general. El progreso reciente se a acelerado debido principalmente a la disponibilidad de la extensiones orientadas a objetos para dos lenguajes populares C y PASCAL, y las extensiones prometidas para otros lenguajes comerciales populares como BASIC y COBOL


Objeto


Consiste en ordenar datos en conjuntos modulares de elemento de información del mundo real (denominado un dominio), estos elementos de datos se llaman OBJETO. Estos datos se agrupan de acuerdo a las características principales del mundo real estos elementos (tamaño, color, etc).
El enfoque de objeto es una idea que se ha probado con creces, simula fue el primer lenguaje de programación en implementar en concepto de clases en 1967. En 1976, samalltalk implemento los concepto de encapsulamiento, agrupación, herencia (los concepto principales de la programación orientada a objeto a escala global (Eiffel, objetive c, loops, etc.,).


Un objeto de caracteriza por varios conceptos:


· ATRIBUTOS: esto son los datos que caracterizan al objeto son variables que almacenan datos relacionados al estado de un objeto.
· METODOS: (usualmente llamados funciones de miembro). Los métodos de un objeto caracterizan su comportamiento, es decir son todas las acciones (denominadas operaciones) que el objeto pueda realizar por si mismo. Estas operaciones hacen posible que el objeto responda a las solicitudes externas (o que actué sobre otro objeto).a demás las operaciones están estrechamente ligadas a los atributos, ya que sus acciones pueden depender de, o modificar, los valores de un atributo.
· IDENTIDAD: el objeto tiene una identidad, que lo distingue de otros objetos, sin considerar su estado. Por lo general, esta identidad se crea mediante un identificador que deriva de naturalmente de un problema (por ejemplo: un producto puede estar representado por un código, un automóvil, por un numero de modelo, etc.).


CLASE


Es la estructura de un objeto, es decir, la definición de todos los elementos de que esta hecho un objeto. Un objeto es, por lo tanto, el “resultado” de una clase. En realidad, un objeto es una instancia de una clase, por lo que se puede intercambiar los términos objetos o instancia (o incluso evento).


Una clase se compone en dos partes:


· ATRIBUTOS: (denominados, por lo general, datos miembros): esto es, los datos que se refieren al estado del objeto.
· METODOS: (denominados, por lo general, funciones miembro): son funciones que se pueden aplicar a objetos.
Si tenemos una clase llamada auto los objetos Peugeot y Renault será instancias de esa clase también pueden haber otro objetos Peugeot 406, diferenciado por su numero de modelo asi mismo dos instancias de una clase puedan tener los mismo atributos pero considerarse objetos distintos independiente.


HERENCIA


Es especifica de la programación orientada a objeto, donde una clase nueva se crea a partir de una clase existente. La herencia (la nueva clase creada) contiene las atributos y métodos de la clases primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para subclase, que luego se aplica a los atributos y métodos heredados.
Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando cuando deseas especializar una clase existente.

ENCAPSULAMIENTO


Es un mecanismo que consiste en organizar datos y métodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados, por lo tanto, la encapsulación garantiza la integridad de los datos que contiene un objeto.


POLIMORFISMO


Proviene del griego y significas que posee varias formas diferentes. Este es unos de los conceptos esenciales de una programación orientada a objetos. Así como la herencia esta relacionada con las clases y jerarquía. El polimorfismo se relaciona con los métodos.


En general, hay tres tipos de polimorfismo:


1. Polimorfismo de sobrecarga.
2. Polimorfismo paramétrico ( también llamado polimorfismo de plantilla)
3. Polimorfismo de inclusión ( también llamado redefinición o subtipado)



PROPIEDAD O ATRIBUTO

Contenedor de un tipo de dato asociado a un objeto (o a una clase de objeto). Que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

EVENTO


Un suceso en el sistema (tal como una interacción del usuario con la maquina, o un mensaje enviado por un objeto), el sistema maneja el evento enviado en mensaje adecuado al objeto pertinente. También se puede definir como evento. A la reacción que puede desencadenar un objeto. Es decir la acción que genera.


METODO

El otro elemento característico de una clase son los métodos. Los métodos son acciones que pueden realizar los objetos, es decir, son funciones o procedimientos asociados a este tipo objeto.
En el caso de las personas podemos decir que pueden nacer, morir, casarse, tener hijos, etc... Para dar un primer ejemplo de esto veamos uno de sus métodos : DEFINE CLASS persona AS CUSTOM
cNombre = ""
cApellidos = ""
dFechaNacimiento = {}
cEstadoCivil = "Soltero"
PROCEDURE Nacer
LPARAMETER cNombre, ;
cApellidos, ;
dFecha
This.cNombre = cNombre
This.cApellidos = cApellidos
This.dFechaNacimiento = dFecha
ENDPROC
ENDDEFINE
En este método damos valor a tres propiedades del objetos a partir de los parámetros que se nos han pasado. Quizás sea todavía poco evidente este código, pero poco a poco iremos entendiendolo.
En primer lugar debemos diferenciar entre los parámetros de este método y las propiedades. Los parámetros son variables y se perderán al finalizar la ejecución del método. Las propiedades, que son la que empiezan con la sintaxis This., permanecen mientras dure la existencia del objeto.
Por otra parte, este procedimiento, denominado Nacer, se diferencia de los procedimientos que estamos acostumbrados a escribir en que sólo es llamable asociado a un objeto de la clase Persona y no puede ser invocado de forma independient e. Esta es una de las grandes diferencias entre la programación estructurada y la POO.
Mensajes. Cuando llamamos a un método de un objeto se dice que estamos enviando un mensaje al objeto para que realice una determinada acción. Así cuando enviamos un mensaje de nacer a un objeto persona estamos ejecutando el método correspondiente : oPersona1 = CREATEOBJECT( "Persona" )
oPersona1.Nacer( "María", ;
"Pérez González", ;
{20-10-75} )
? oPersona1.cNombre
? oPersona1.cApellidos