UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I
.
El presente trabajo est dedicado a nuestros padres y profesores quienes da a da nos inculcan el ser unas mejores personas UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I
PRESENTACION
La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I
PROGRAMACIN ORIENTADA A OBJETOS CONCEPTOS FUNDAMENTALES La programacin orientada a objetos es una forma de programar que trata de encontrar una solucin a estos problemas. Introduce nuevos conceptos, que superan y amplan conceptos antiguos ya conocidos. Entre ellos destacan los siguientes: a) CLASE: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas.
b) OBJETO: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (mtodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
c) MTODO: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para otro objeto del sistema.
d) EVENTO: Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I como evento, a la reaccin que puede desencadenar un objeto, es decir la accin que genera.
e) MENSAJE: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros asociados al evento que lo gener.
f) PROPIEDAD O ATRIBUTO: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.
g) ESTADO INTERNO: es una variable que se declara privada, que puede ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
Componentes de un objeto: atributos, identidad, relaciones y mtodos.
Identificacin de un objeto: un objeto se representa por medio de una tabla o entidad que est compuesta por sus atributos y funciones correspondientes. En comparacin con un lenguaje imperativo, una "variable", no es ms que un contenedor interno del atributo del objeto o de un estado interno, as como la "funcin" es un procedimiento interno del mtodo del objeto.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I CARACTERSTICAS DE LA POO Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las caractersticas siguientes son las ms importantes: ABSTRACCIN Denota las caractersticas 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 cmo se implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. ENCAPSULAMIENTO Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohesin de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente. MODULARIDAD Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos que se puedan compilar por separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I PRINCIPIO DE OCULTACIN Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especfica cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de objetos. RECOLECCIN DE BASURA La recoleccin de basura o garbage collector es la tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ u Object Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I LENGUAJES ORIENTADOS A OBJETOS Simula (1967) es aceptado como el primer lenguaje que posee las caractersticas principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulacin, en donde los "objetos" son la representacin de la informacin ms importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que gran parte de la teora de la programacin orientada a objetos se ha desarrollado. Entre los lenguajes orientados a objetos se destacan los siguientes: ABAP ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper (lenguaje de programacin) (Versin 5.x con librera de objetos Class(y)) Harbour Eiffel Java JavaScript (la herencia se realiza por medio de la programacin basada en prototipos) Oz R Perl (soporta herencia mltiple. La resolucin se realiza en preorden, pero puede modificarse al algoritmo linearization C3 por medio del mdulo Class::C3 en CPAN) PHP (a partir de su versin 5) PowerBuilder UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I Smalltalk (Proyecto investigativo. Influenci a Java.) Magik (SmallWorld) VB.NET Visual FoxPro (en su versin 6) Visual Basic 6.0 Visual Objects XBase++ Lenguaje DRP Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino que son hbridos que combinan la POO con otros paradigmas. Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados aadiendo extensiones orientadas a objetos a un lenguaje de programacin clsico. Un nuevo paso en la abstraccin de paradigmas de programacin es la Programacin Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en todo el mundo.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I HERENCIA Como ya hemos visto en las definiciones anteriores conceptos relacionados a lo que respecta a herencia ahora afianzaremos estos conocimientos con los siguientes datos adquiridos: La herencia permite crear clases a partir de otras ya existentes. La herencia se implementa utilizando el concepto de clases derivadas. Una clase que hereda a otra (clase derivada) puede acceder a sus miembros redefinirlos o aadir nuevos miembros que necesite. Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. 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. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple.
CLASE BASE DATOS FUNCIONES CLASE DERIVADA1 DATOS FUNCIONES
CLASE DERIVADA2 DATOS FUNCIONES UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I CARACTERSTICAS Una clase derivada puede, a su vez puede ser una clase base, dando jerarqua de clase. Una clase derivada puede acceder a los miembros public y protected de la clase base como si fueran miembros de ella. No puede tener acceso a los miembros prvate. SINTAXIS Clase derivada:[Acceso]ClaseDerivada1, Acceso ClaseDerivada2, { //Cuerpo de la clase derivada } INTERPRETACIN DE ACCESO
PRVATE Los miembros public y protected de la clase base son privados en la clase derivada.Los miembros prvate de la clase base son inaccesibles desde la clase derivada. PROTECTED Los miembros public y protected de la clase base son protected en la clase derivada. Los miembros prvate de la clase base son inaccesibles desde la clase derivada. PUBLIC: Los miembros public de la clase base son public en la clase derivada. Los miembros protected de la clase base son protectd en la clase derivada. Los miembros prvate de la clase base son inaccesibles desde la clase derivada.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I #include<iostream.h> #include<conio.h> class ClaseCirculo { public: float Radio; float Area; void LeerRadio(); void CalcularArea(); void ImprimirArea(); };
/* IMPLEMENTACION DE LAS FUNCIONES MIEMBRO DE CLASECIRCULO */
void ClaseCirculo::LeerRadio() { clrscr(); cout<<"Radio"; UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I cin>>Radio; } void ClaseCirculo::CalcularArea() { Area=3.1415*Radio*Radio; } void ClaseCirculo::ImprimirArea() { cout<<"Area:"<<Area<<endl; } /* Clase derivada. ClaseCilindro es derivada de ClaseCirculo */ class ClaseCilindro:public ClaseCirculo { public: float Altura,Volumen; void CalcularVolumen(); void LeerAltura(); void ImprimirVolumen(); UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I }; /*implementacion de las funciones miembro de ClaseCilindro */
void main() { UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I /* declaracion del ObjetoCilindro de tipo ClaseCilindro */ ClaseCilindro ObjetoCilindro;
/* ejecucion de las funciones miembro */ ObjetoCilindro.LeerRadio(); ObjetoCilindro.CalcularArea(); ObjetoCilindro.LeerAltura(); ObjetoCilindro.ImprimirArea(); ObjetoCilindro.CalcularVolumen(); ObjetoCilindro.ImprimirVolumen(); getche(); }
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I La herencia permite la programacin utilizando archivos de librera, es decir las clases bases se pueden localizar en archivos externos los cuales se pueden incluir al programa principal utilizando #include NOMBREDELALIBRERIA, adems de indicar la ruta de acceso al archivo externo. EJEMPLO: #include <iostream.h> #include<conio.h> #include<c:ClaseCir.cpp> Class ClaseCilindro:public ClaseCirculo { Prvate: float Altura; float Volumen; public: void LeerAltura(); void CalcularVolumen(); void ImprimirVolumen(); }; Void ClaseCilindro:: LeerAltura () { cout<<Altura:;cin>>Altura; } Void ClaseCilindro:: CalcularVolumen () { Volumen=AreaCirculo*Altura; } Void ClaseCilindro:: ImprimirVolumen () { cout<<Volumen:<< Volumen; UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I } Void main() { ClaseCilindro ObejtoCilindro; Clrscr(); ObjetoCilindro.LeerRadio (); ObjetoCilindro.LeerAltura (); ObjetoCilindro.CalcularAreaCirculo (); ObjetoCilindro.ImprimirArea (); ObjetoCilindro.CalcularVolumen (); ObjetoCilindro.ImprimirVolumen (); }
HERENCIA MLTIPLE La herencia mltiple es el mecanismo que permite al programador hacer clases derivadas a partir, no de una sola clase base, sino de varias. Para entender esto mejor, pongamos un ejemplo: Cuando ves a quien te atiende en una tienda, como persona que es, podrs suponer que puede hablar, comer, andar, pero, por otro lado, como empleado que es, tambin podrs suponer que tiene un jefe, que puede cobrarte dinero por la compra, que puede devolverte el cambio, etc. Si esto lo trasladamos a la programacin sera herencia mltiple (clase empleado tienda):
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I class Persona { ... Hablar(); Caminar(); ... };
class Empleado { Persona jefe; int sueldo; Cobrar(); ... };
class empleado_tienda: public Persona, Empleado { ... AlmacenarStock(); ComprobarExistencias(); ... }; Por tanto, es posible utilizar ms de una clase para que otra herede sus caractersticas.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I POLIMORFISMO Es la caracterstica ms importante de la OOP que consiste fundamentalmente en la capacidad de realizar la misma tarea pero de muchas formas distintas. El misterio de esta caracterstica radica que en el momento de la compilacin NO SE CONOCE la tarea que se realizara; recin se conoce en el momento de la ejecucin. A estas tareas misteriosas se les conoce con el nombre de VIRTUALES ya que aparentemente existen, pero realmente no hacen nada. 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 invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. CARACTERSTICAS
Tiende a la generacin de clases genricas Aplica obligatoriamente la caracterstica de herencia para la redefinicin de clases virtuales. Si una clase derivada no redefine una funcin virtual, se ejecutar la funcin de la clase base. Una funcin virtual en una clase base, continua siendo virtual cuando es heredada y su redefinicin debe de tener el mismo nombre , nmero y tipo de parmetros y tipo de valor retornado en la clase base. UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I En la clase debe haber por lo menos una funcin que establezca la secuencia lgica de ejecucin de la clase. Las funciones que en la clase base aun no se pueden desarrollar se denominan virtuales y sern desarrolladas en las clases derivadas correspondientes. No se permiten constructores virtuales. Ejemplo: #include<iostream.h> #include<conio.h> class cEntero { private: int Entero; public: virtual void Ingresa(void); virtual void Muestra(void); void ejecuta(void); { Ingresa(); Muestra(); } }; class cReal: public cEntero UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I { private: float Real; public: virtual void Ingresa(void); virtual void Muestra(void); }; void main() { cEntero ObjEntero; cReal ObjReal; clrscr(); ObjEntero. Ejecuta(); ObjReal. Ejecuta(); } void cEntero::Ingresa(void) { cout<<"Ingrese un dato entero:"; cin>>Entero; } UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I void cEntero::Muestra(void) { cout<<"Dato entero:"<<Entero; cout<<endl; } void cReal::Ingresa(void) { cout<<"Ingrese un dato real:"; cin>>Real; } void cReal::Muestra(void) { cout<<"Dato real:"<<Real;cout<<endl; }
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I
CONCLUSIONES La programacin orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construccin de la solucin. Surge en los aos 70. Un objeto es una abstraccin de algn hecho o ente del mundo real que tiene atributos que representan sus caractersticas o propiedades y mtodos que representan su comportamiento o acciones que realizan. Todas las propiedades y mtodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.
UNIVERSIDAD NACIONAL JOSE FAUSTINO SANCHEZ CARRIN EAP INGENIERIA INDUSTRIAL
ING. HUGO RODAS SERRANDO COMPUTACION I
BIBLIOGRAFA
VisualBasic.Net 2005 Express \ JUAN JOSE CASTAEDA LEN WWW.monografias.com