Programacion orientada objetos-1

15

Click here to load reader

Transcript of Programacion orientada objetos-1

Page 1: Programacion orientada objetos-1

ACADEMIA DE COMPUTACIÓN

JAVIER JIMÉNEZ PACHECO

PROGRAMACIÓN ORIENTADA A OBJETOS Introducción Antecedentes

A partir de la década de los 70 se originó la llamada Crisis del Software debido a una serie de problemas encontrados en el desarrollo de sistemas para computadoras. La crisis también se derivó de la contra-dicción entre el reciente desarrollo del hardware y su aprovechamiento a través del software, esto es, que se dedicó poco esfuerzo al desarrollo de metodologías para la creación del software, creando un atraso de entre una y dos generaciones entre los microprocesadores y el software que los manipula. Las respuestas a estos problemas fueron entre otras:

Programación estructuradas en los lenguajes de programación.

Modularidad y organización de bibliotecas. Estas mejoras no fueron suficientes para resolver el problema ya que no se consideró:

Recursos humanos para el mantenimiento consistente en adaptar el software a nuevos requeri-mientos imposibles de haber sido planificados inicialmente.

Errores del software, esto es, resultados erróneos.

Altos costos y tiempo de desarrollo muy largos.

• El análisis era deficiente, lo cual derivaba cambios y adaptaciones.

• Problemas de comunicación entre los diferentes módulos al momento de la unión.

Sistemas poco flexibles y confiables.

• Esto ocurre cuando el sistema no cubre las necesidades del usuario final.

• No proporciona la información que el usuario requiere.

• Información no confiable.

• sistema difícil de manipular. Ante tantos problemas, los especialistas en software llegaron a la conclusión de que en cualquier técnica que trate de resolver los problemas anteriores, el desarrollo de sistemas deberá contemplar las siguien-tes características:

Entender el problema y dominarlo.

Comunicación entre personas.

Prever cambios continuos.

Reutilizar el código. Historia de la Programación Orientada a Objetos (POO). Al mismo tiempo que se da la Crisis del Software, por otro lado la Orientación a Objetos (OO) se empezó a discutir a fines de los años 60 con el desarrollo del lenguaje SIMULA67 por Nygaard y Ole-Johan Dahl en el Centro de Cálculo Noruego, en él, introdujeron los conceptos de clase, subclases y rutinas, muy parecidos los conceptos a los lenguajes orientados a objetos de hoy en día. A mitad de la década de los 70 los científicos del Centro de Investigaciones Palo Alto de XEROX (PARC) (XEROX Palo Alto Re-search Center) crearon el lenguaje SMALLTALK, el primer lenguaje orientado a objetos consistente y completo. En él cada elemento del lenguaje fue realizado un objeto. Este último lenguaje evolucionó a través de varios lanzamientos realizados por PARC.

Page 2: Programacion orientada objetos-1

2

PROFESOR JAVIER JIMÉNEZ PACHECO

A pesar de este movimiento temprano hacia los lenguajes orientados a objetos, sólo se lograron peque-ñas incursiones en la comunidad de la programación general. El progreso reciente se ha acelerado de-bido principalmente a la disponibilidad de las extensiones orientadas a objetos para dos lenguajes popu-lares: C y PASCAL, y a las extensiones prometidas para otros lenguajes comerciales populares como BASIC y COBOL. Paradigma de la Programación Orientada a Objetos. Para aquel que no es un programador, Orientación a Objetos significa algo bastante familiar: considerar al mundo como un conjunto de entidades u objetos que están relacionados y se comunican entre ellos. Esta es la forma en que la gente normal ve el mundo, así es que este pensamiento tiene intrínsecamente sentido. La Orientación a Objetos se basa en estas ideas: un programa es un mundo que representa un subcon-junto del mundo real. La estructura del programa se simplifica en gran medida si cada una de las enti-dades u objetos del problema que se está modelando corresponde directamente con un objeto que se puede manipular internamente en un programa. Para el desarrollo de sistemas, la orientación a objetos es un nivel de abstracción de computadora más allá de los procedimientos y los datos. La orientación a objetos anima al desarrollador de sistemas a concentrarse en los temas importantes e ignorar el resto a la hora de la modelación. El hecho de que el tema central sean los objetos, aunque intuitivamente, marca una desviación significa-tiva de los anteriores paradigmas de la programación. Una ecuación para reconocer una aproximación a la Orientación a Objetos es:

MENSAJESCONÓNCOMUNICACIHERENCIAOBJETOSYCLASESN_OBJETOSORIENTACIÓ ++= Todos los sistemas que merecen la descripción de Orientado a Objetos contienen estos mecanismos esenciales, aunque los mecanismos pueden no estar realizados exactamente de la misma forma. Anali-cemos ahora los términos de la ecuación. OBJETOS (Sinónimo de instancia). Es la abstracción de alguna cosa en el dominio del problema que refleja la capacidad de un sistema de alcanzar información alrededor de él. Los objetos, por lo tanto, son entidades que tienen atributos (datos) y formas de comportamiento (procedimientos) particulares. Las aplicaciones pueden constar de diferentes clases de objetos. Un objeto pasivo es el que actúa solamen-te bajo petición. Los objetos activos efectúan el seguimiento de los sucesos que ocurren en una aplica-ción y actúan de forma autónoma. CLASE. Una clase es una descripción de un conjunto de objetos casi idénticos. Una clase consta de métodos y datos que resumen las características comunes de los objetos, incluyendo una descripción de cómo crear un nuevo objeto de la clase. En otras palabras, las clases contienen los anteproyectos para crear objetos. Redefiniendo un objeto. Un objeto es un modelo o instancia de una clase. Ejemplos de estos conceptos (utilizaremos un lenguaje más fácil de entender para definirlos):

Una clase es un molde que define los datos y procedimientos que actúan sobre esos da-tos y los objetos serán los elementos producidos por ese molde.

Ejemplo 1: Consideremos cómo un programador podría designar una aplicación de procesamiento de una posición en el espacio en forma orientada a objetos.

Page 3: Programacion orientada objetos-1

3

PROFESOR JAVIER JIMÉNEZ PACHECO

clase

métodos

variables

posición

iniciarleerXleerYsaludaX, Y

Los objetos serían PuntoA, PuntoB donde tanto PuntoA como PuntoB tienen las características de posi-ción. Ejemplo 2: Veamos ahora cómo sería la aplicación con el sistema de los números complejos en forma orientada a objetos.

clase

métodos

variables

complejos

iniciaroperadores para lasoperaciones entreellosreal, imaginaria

Algunos objetos son p y q que por ser números complejos son de la forma (real, imaginaria). Descripción del término herencia La herencia es un mecanismo para expresar similaridad entre clases, simplificando definiciones de las clases similares previamente definidas. La herencia permite crear nuevas clases llamadas subclases agregando solamente las diferencias con la clase. En otras palabras la herencia es una partición en sub-clases más especializadas. El principio en que se basa este concepto es de que las clases que se derivan de otras clase, comparten las características comunes de la clase de la que descienden. Ejemplo 1:

posición

punto

círculo

muestraocultavisible visiblesaluda

expandecomprimecreasaluda radio

Page 4: Programacion orientada objetos-1

4

PROFESOR JAVIER JIMÉNEZ PACHECO

Ejemplo 2: Para este ejemplo usaremos la clase publicación.

publicación

libro periódico

Descripción del término comunicación con mensajes. Los objetos tienen la posibilidad de actuar, la acción sucede cuando un objeto recibe un mensaje, que es, una solicitud que pide al objeto que se comporte de alguna forma. Cuando se ejecutan los progra-mas orientados a objetos, los objetos reciben, interpretan y responden a mensajes procedentes de otros objetos. Los mensajes pueden contener información para clasificar una solicitud. El objeto emisor del mensaje no necesita conocer la forma en que el objeto receptor está llevando a cabo la solicitud, sola-mente conoce que se está sucediendo. Los procedimientos residen en el objeto y determinan cómo actúa el objeto cuando recibe un mensaje. De hecho, los métodos proporcionan el único mecanismo para cambiar los valores de las variables del objeto. (A este hecho se le conoce como encapsulamiento). Los mensajes que reciben el objeto son los únicos conductos que conectan al objeto con el mundo exte-rior. Estas características de los objetos confieren a la orientación a objetos su ventaja: la orientación a objetos fomenta la modularidad haciendo muy claras las fronteras entre objetos, explícita la comunica-ción entre los mismo y oculta los detalles de la realización. En un programa con orientación a objetos ocurren tres sucesos:

1) Se crean los objetos cuando se necesitan.

2) Los mensajes se mueven de un objeto a otro a medida que el programa procesa internamente información o responde a la entrada del usuarios.

3) Se borran los objetos cuando ya no son necesarios y se recupera memoria.

objeto

datos

métodos

objeto

datos

métodosmensaje

mensaje mensaje

métodosdatos

Page 5: Programacion orientada objetos-1

5

PROFESOR JAVIER JIMÉNEZ PACHECO

Características deseadas de la Programación Orientada a Objetos Las características deseadas pueden variar y es difícil ponerse de acuerdo. Principio de Abstracción

• Datos • Procedimientos

Encapsulamiento Herencia

• Simple • Múltiple

Comunicación con mensajes Polimorfismo Manejo automático de memoria

• Constructores • Destructores

Métodos virtuales Sobreposición de operadores Antes de ver cada uno de estos conceptos es importante mencionar que los ejemplos de los mismos se darán con seudo código, por lo que daremos una idea de este concepto. El seudo código se utiliza como una herramienta para estructurar el código de un programa sin compro-meterse con ningún lenguaje, pero que es posible que tenga alguna semejanza con el lenguaje a utilizar. En el seudo código se utilizan palabras en nuestro lenguaje que son similares a las palabras utilizadas por los lenguajes de programación. En realidad el seudo código es muy similar a un algoritmo pero más estructurado, ya que se le deben de dar sangrías a la escritura de las instrucciones para hacerlo más legible en la lectura. Iniciamos: Principio de abstracción

• Es el principio de ignorar los aspectos de un sujeto que no son relevantes en un propósito de or-den de concentración más exacto.

• El proceso de representar entidades reales como elementos internos a un programa recibe el

nombre de abstracción.

• De esta forma, un tipo de dato abstracto se puede escribir concentrándose en las operaciones que manipulan a los objetos de este tipo, sin caer en detalles de representación y manipulación de datos.

Datos. Es un atributo del objeto que representa cuantitativamente o cualitativamente a ese

objeto.

Procedimiento. Es una operación que lleva a cabo un servicio a los atributos del objeto.

Page 6: Programacion orientada objetos-1

6

PROFESOR JAVIER JIMÉNEZ PACHECO

Ejemplo 1: En el ejemplo de la posición en el espacio se quiere representar en objetos, queremos abstraer esta parte del mundo real a un programa que pueda representarlos. Una posición en el plano la determinan las coordenadas (x, y), que serían nuestros datos y los procedimientos que las manipulen pueden ser:

iniciar posición leer x leer y saluda

Ejemplo 2: En el ejemplo de los números complejos se tiene que éstos son de la forma (real, imaginaria), donde real e imaginaria son números reales, de lo que podemos intuir que los datos sean:

real e imaginaria Los atributos que manipulan estos datos pueden ser todos los operadores aritméticos (+, -, *, /) y los operadores de relación ( =, < > ). Encapsulamiento (ocultamiento de datos). Se refiere al hecho de que ningún programador ni de ningu-na otra parte de un programa se pueda tener acceso a los datos de un objeto en forma directa, sino a través de los procedimientos del objeto. Ejemplo 1: En este ejemplo para leer cualquiera de las coordenadas no se puede directamente sólo leyendo por separado las coordenadas con los procedimientos de lectura. Ejemplo 2: En el ejemplo de los números complejos cada número complejo no se puede modificar a menos que sea con los operadores. Herencia. La herencia es un mecanismo que para expresar similaridad entre clases, simplificando defi-niciones de clases similares previamente detenidas.

• La herencia simple es cuando el lenguaje sólo permite que una clase derive de una clase.

• La herencia múltiple es cuando una clase puede ser derivada de más de una clase. Ejemplo 1. Herencia simple:

clase posición

datos

procedimientos

clase punto

datos

procedimientos

Page 7: Programacion orientada objetos-1

7

PROFESOR JAVIER JIMÉNEZ PACHECO

Ejemplo 2. Herencia múltiple (multimedia):

sonido imagen

imagen con sonido

Comunicación con mensajes. Las variable de un objeto sólo pueden ser manipuladas por sus propios métodos. Es decir, los mensajes mandan una petición de acción a un objeto, mientras que los métodos del objeto deciden cómo llevar a cabo la acción. Ejemplo: En la definición de posición consta de los datos, coordenadas X e Y y los métodos que inician y devuelven los valores X y Y.

Procedimiento leer X Regresa valor de X

Polimorfismo Es cuando una clase tiene varios procedimientos con el mismo nombre, pero con distinto tipo y/o número de argumentos. Ejemplo 1: Se puede tener más de un procedimiento saluda en la clase posición.

a) Se puede tener un procedimiento

procedimiento Saluda escribe "Hola soy posición";

b) Se puede tener un procedimiento

procedimiento Saluda (mensaje) escribe mensaje;

Manejo Automático de Memoria. En el apartado de comunicación con mensajes se menciona que en un programa con orientación a objetos ocurren tres sucesos, dos de ellos nos interesan. El primer suce-so dice: "Se crean los objetos cuando se necesitan." y el tercer suceso indica: "Se borran los objetos cuando ya no son necesarios y se recupera la memoria.". Estos sucesos se desarrollan con los construc-tores y destructores.

• Constructores

Los constructores son procedimientos de la clase que permiten crear objetos. Un constructor es llamado para asignar memoria a un objeto, para asignar valores a los datos del objeto y realizar tareas iniciales para un nuevo objeto. Esto implique que si no podemos trabajar con un objeto que no haya sido creado a través de un constructor y si sólo se pueden modificar mediante los procedimientos de la clase NO TENE-MOS FORMA DE CORROMPER EL OBJETO, lo cual aumenta la confiabilidad y facilita la rehu-sabilidad.

Page 8: Programacion orientada objetos-1

8

PROFESOR JAVIER JIMÉNEZ PACHECO

• Destructores

Un destructor es un procedimiento de la clase que realiza la tarea opuesta a su constructor, libe-ra la memoria que fue asignada al objeto que fue creado por el constructor. Es deseable que el destructor se invoque implícitamente cuando el objeto abandone el bloque donde fue declarado. El destructor le permite al programador despreocuparse de tener que liberar la memoria que deja de utilizar y correr el riesgo de que ésta se sature.

Ejemplos: Normalmente en los lenguajes con orientación a objetos el destructor como el constructor tienen el mis-mo nombre de la clase a la que pertenece. Ejemplo 1:

Constructor iniciar (real 1, real 2) x = real 1 y = real 2 Destructor iniciar borra x borra y

Métodos Virtuales. Una jerarquía de clases unidas por la herencia, con nombres de métodos comunes para operaciones que son similares conceptualmente, pero que realizan tareas diferentes. Como conse-cuencia, cuando diferentes objetos de las diferentes clases de la jerarquía reciben el mismo mensaje, éste provoca acciones totalmente distintas. Ejemplo: En el ejemplo 1, Posición, Punto y Círculo pueden recibir cada uno el mensaje saluda y responder de distinta forma, los procedimientos serían:

a) posición saluda

"Hola, soy posición";

b) punto saluda

"Hola, soy punto";

c) círculo saluda

"Hola, soy círculo" Se puede hacer algo más complejo como hacer procedimientos que mostrará el punto o mostrará el círculo. Sobreposición de Operadores. Es una característica de un lenguaje de programación que permite que el mismo operador sea utilizado con tipos diferentes. Dicho de otra forma, si se tiene una aritmética definida con ciertos operadores, sería deseable que permita utilizar la misma notación para los nuevos tipos de operadores que se definan. Ejemplo: En el ejemplo 2 de números complejos se tienen los operadores aritméticos un ejemplo de sobrecarga de operadores sería:

complejos operador +(complejo,complejo)

Page 9: Programacion orientada objetos-1

9

PROFESOR JAVIER JIMÉNEZ PACHECO

complejos operador *(complejo,complejo) Lenguajes de Programación Orientada a Objetos Para explotar el paradigma de la orientación a objetos se necesitan lenguajes idóneos. Existen dos tipos diferentes de lenguajes de Programación Orientada a Objetos: Puros e Híbridos. Los lenguajes puros son aquellos en los que casi todo es un objeto, es decir, tienen las propiedades específicas de la programación orientada a objetos. Entre ellos se tienen SIMULA (basado en ALGOL), SMALLTALK y SMALLTALK V (que es el más difundido), ACTOR y EIFFEL. Los lenguajes híbridos son los lenguajes que añaden a las propiedades tradicionales estructuradas, características orientadas a objetos. Representantes de este grupo son C++ descendiente de C, TURBO PASCAL. Características de algunos lenguajes SMALLTALK

Es el primer lenguaje con orientación a objetos. Descendiente de SIMULA-67 fue desarrollado por XEROX´5 es el lenguaje puro de POO por excelencia. El entorno SMALLTALK está disponible en muchas plataformas, entre ellas DOS, OS/2 y WINDOWS.

TURBO / QUICK / OBJECTIVE-PASCAL

Borland International y Microsoft simultáneamente lanzaron versiones orientadas a objetos de PAS-CAL. Borland utilizó la filosofía de C++ y Microsoft la filosofía de SMALLTALK en sus versiones. Sin embargo, Borland ha evolucionado su producto con versiones 5.5 / 6.0 y 7.0 incluyendo una bibliote-ca de clases llamada Turbo Vision está disponible en DOS, WINDOWS y OS/2.

C++

C++ es el híbrido más popular, existen versiones para las plataformas: DOS, OS/2, WINDOWS, UNIX, XENIX, etc. y muchos fabricantes, como AT&T, Borland, etc. Es descendiente de C ANSI.

Ejemplos con C++ Ejemplo 1:

Figuras geométricas #include <iostream.h> /* *************** clase posicion ******************* */ class posicion { private: int X,Y; public: // caracteristica de lenguaje hibrido void iniciar (int iniciarX, int iniciarY) { X = iniciarX; Y = iniciarY; }; int leerX(); int leerY(); virtual void mensaje(){ cout << "Hola estoy en posicion\n";}; }; // fin posicion

Page 10: Programacion orientada objetos-1

10

PROFESOR JAVIER JIMÉNEZ PACHECO

int posicion::leerY() { return Y; } int posicion::leerX() { return X; } /* *************** clase punto ********************** */ class punto : public posicion { int visible; public: virtual void mostrar(); virtual void ocultar(); int EsVisible(); virtual void saluda(){ cout << " Hola soy un punto\n";}; }; // fin punto void punto::mostrar() { visible = 1; }; void punto::ocultar() { visible = 0; }; int punto::EsVisible() { return visible; } /* *************** clase circulo ********************** */ class circulo : public punto { int radio; public: void iniciar (int iniciarX, int iniciarY, int IniciaRadio) { punto::iniciar(iniciarX, iniciarY); radio = IniciaRadio; }; void expandir(int ExpandirPor); void comprimir(int ComprimirPor); virtual void saluda(){ cout << " Hola soy un circulo\n";}; }; void circulo::expandir(int ExpandirPor) { radio = radio + ExpandirPor; };

Page 11: Programacion orientada objetos-1

11

PROFESOR JAVIER JIMÉNEZ PACHECO

void circulo::comprimir(int ComprimirPor) { radio = radio - ComprimirPor; } /* *************** fin clase circulo ********************** */ void main (void) { int Z; circulo posicionA; posicionA.iniciar(16,3,35); posicionA.ocultar(); if (posicionA.EsVisible()) { Z = posicionA.leerX(); cout << "\n valor visible de X " << Z; posicionA.saluda(); } else cout << "\n valor X no visible " ; } Ejemplo 2:

Sistema de los números complejos #include <iostream.h> class complex { private: double r,i; public: void create (double, double); // crea un objeto tipo complejo complex (double, double); // constructor crea un complejo complex operator +( complex ); // sobrecarga de operadores // polimorfismo void suma(complex); complex suma(complex, complex); complex operator *(complex ); // sobrecarga de operadores // polimorfismo void producto(complex); complex producto(complex,complex); complex operator =(complex ); // sobrecarga de operadores /* complex operator -(complex ); complex operator /(complex ); */

Page 12: Programacion orientada objetos-1

12

PROFESOR JAVIER JIMÉNEZ PACHECO

double real(void); double imag(void); void escritura(void); }; // fin complex void complex::create (double re= 0, double im= 0) { r= re; i= im; } void complex::complex (double re= 0, double im= 0) // constructor { r= re; i= im; } complex complex::operator +(complex a) // sobrecarga de operadores { complex t; t.create (a.r + r, a.i+i); return t; } complex complex::suma (complex a, complex b) // suma de dos complejos { complex t; t.create (a.r + b.r, a.i+b.i); return t; } void complex::suma (complex a) // suma de 2 complejos { r+= a.r; i+= a.i; } complex complex::producto (complex a, complex b) { complex t; t.create (a.r * b.r - b.i * a.i , a.i * b.r + a.r * b.i); return t; } void complex::producto (complex a) { r = a.r * a.r - a.i * a.i; i = 2 * a.i * a.r; } complex complex::operator *(complex a) { complex t; r = a.r * a.r - a.i * a.i; i = 2 * a.i * a.r; t.create(r,i);

Page 13: Programacion orientada objetos-1

13

PROFESOR JAVIER JIMÉNEZ PACHECO

return t; } complex complex::operator =(complex a) { r = a.r; i = a.i; return *this; } double complex::real (void) { return r; } double complex::imag (void) { return i; } void complex::escritura(void) { cout << " ( " << r << " , " << i << " )" << "\n"; } void main (void) { complex z1, z2,z3; z1.create (2.0,3.0); z2.create (1.0,4.0); z3 = z3.suma(z1,z2); // z3.suma(z3); z3 = z1 + z2; z3.escritura(); // cout << z3.real() << endl; // cout << z3.imag() << endl; z3 = z3.producto(z1,z2); z3.escritura(); // z2.producto(z2); // z2.escritura(); } Comparación del paradigma de la Programación Orientada a Objetos contra otros paradigmas. El paradigma de la programación orientada a objetos difiere de las tradiciones históricas de la programa-ción procedimental. La programación procedimental se centra en los datos y procedimientos sin limita-ciones acerca de los procedimientos que pueden actuar sobre dichos datos.

Page 14: Programacion orientada objetos-1

14

PROFESOR JAVIER JIMÉNEZ PACHECO

datosprocedimiento 1procedimiento 2procedimiento 3

paradigmas tradicionales En el paradigma de la orientación a objetos los programas son conjuntos de una única entidad básica, el objeto, el cual combina los datos con los procedimientos que actúan sobre ellos, además los objetos reciben las peticiones e interactúan enviando mensajes a cada uno de los demás.

datos

Métodos

datos

Métodos

datos

Métodos

datos

Métodos

mensaje

mensaje

Paradigma de la orientación a objetos

• Con el paradigma procedimental es más difícil modelar el mundo real

• Con el paradigma orientado a objetos se beneficia al desarrollo del software proporcionando una forma natural de modelar el fenómeno del complejo mundo real. Esto es, ofrece realmente un modelo más natural del mundo real.

• Las características comunes entre dos entes quedan explícitas en la Programación Orientada a

Objetos mientras que en la Programación tradicional no es así.

• Los lenguajes orientados a objetos benefician el desarrollo de software modular, esto quiere de-cir que el programador no necesita examinar todo el código para ver si los cambios locales cau-sarán problemas en cualquier otra parte del sistema. Por el contrario, con los lenguajes tradicio-nales, siempre existe la posibilidad de que una actualización de una subrutina o elemento de da-tos afecte a alguna rutina que se halle físicamente muy alejada de la actualización.

• El apartado anterior implica que se facilita la reutilización del código creando una biblioteca de

clases que están perfectamente probadas.

• La herencia, que no tienen los lenguajes tradicionales, es una de las características más impor-tantes y más potentes de la programación orientada a objetos, le permite a los programadores crear nuevas clases programando solamente las diferencias con las clases "padres".

• El encapsulamiento facilita la comunicación entre programadores.

• Se han hecho pruebas y se ve que un programa escrito con orientación a objetos no es muy más

grande ni lento que uno similar usando programación tradicional.

Page 15: Programacion orientada objetos-1

15

PROFESOR JAVIER JIMÉNEZ PACHECO

Conclusiones Un objetivo de esta plática es que la Academia de Computación considere esta técnica como una mate-ria dentro del currículo de la carrera. Que los maestros se interesen en difundirla considerando como un lenguaje apropiado "C++" que es un descendiente directo de C ANSI y que es una materia que ofrece la misma Academia. Se propone "C++" por lo estándar de C y por el número de plataformas que lo sopor-tan teniendo por lo mismo un amplio futuro. Otro objetivo es de que la población de la escuela en general conozca esta forma de programar que se adecua más a los fenómenos físicos de la ingeniería, y el que los analistas y estudiantes generen sus propias librerías de clases y éstas les permitan atacar problemas de una manera más rápida y confiable.