Está en la página 1de 17

I) Descripcion de C++

Es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido.

El nombre C++ fue propuesto por Rick Mascitti en el ao 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que C++ es una extensin de C.

II)

Programacion Orientado a Objetos:

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.

2.1 Caracteristicas
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

lacohesin 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 se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. 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 especifica 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. 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 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++. Herencia: 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 enclases 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.

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.

2.3- Encapsulacion:
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.

2.4- 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 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++.

2.5- 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.

III) Objeto:

En el paradigma de programacin orientada a objetos (POO, o bien OOP en ingls), un objeto se define como la unidad que en tiempo de ejecucin realiza las tareas de un programa. Tambin a un nivel ms bsico se define como la instancia de una clase. Estos objetos interactan unos con otros, en contraposicin a la visin tradicional en la cual un programa es una coleccin de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio. En el mundo de la programacin orientada a objetos (POO), un objeto es el resultado de la instanciacin de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en ella definida, pero sta queda implementada slo al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombreclase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sera un objeto de clase_silla. Es posible crear (construir) mltiples objetos (sillas) utilizando la definicin de la clase (plano) anterior. Los conceptos de clase y objetos son anlogos a los de tipo de datos y variable, es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dicho tipo: int a,b; ( 'int' es un tipo de dato y 'a' y 'b' son variables de tipo entero con las que podemos operar) Para utilizar la funcionalidad definida en una clase en particular (salvo en las clases abstractas), primeramente es necesario crear un objeto de esa clase. De la misma manera para una persona que desea sentarse, las especificaciones para construir una silla sern de poca utilidad; lo que se necesita es una silla real construida a partir de esas especificaciones. Siguiendo con la analoga anterior, tambin se puede decir que para hacer operaciones aritmticas, de nada sirve por s solo el tipo entero (int); para ello necesitamos variables (o constantes) con las que operar.

IV) Creacion de Clases y Objetos:


class Aritmetica { public: inline int sumar (int a, int b) const {

return a + b; } inline int restar (int a, int b) const { return a - b; } inline float multiplicar (int a, int b) const { return a * b; } inline float dividir (int a, int b) const { return a / b; } };

4.1- Creacion de una Clase:


La base del encapsulamiento es la clase, a partir de ellas se le dan las caractersticas y comportamiento a los objetos. Lo primero es crear la clase y despus en la funcin main que sigue siendo la principal crearemos los objetos de cada una de las clases. Las variables y funciones de una clase pueden ser publicas, privadas o protegidas. Por defecto si no se indica nada son privadas. Estos modificadores nos indican en que partes de un programa podemos utilizar las funciones y variables. private: Solo tendrn acceso los de la misma clase donde estn definidos. public: Se pude hacer referencia desde cualquier parte del programa. protected: Se puede hacer referencia desde la misma clase y las subclases. Creacin de una clase: class nomb_clase{ funciones y variables privadas; public: funciones y variables publicas; }

Creacin del objeto: nomb_clase nombre_objeto1; nomb_clase nombre_objeto2; Llamadas a las funciones de una clase: nombre_objeto.nomb_funcion(parmetros); Desarrollo de funciones miembro: val_devuelto nomb_clase::nomb_funcion(parametros){ cuerpo; } EJEMPLO: Declaramos una clase con una variable privada y dos funciones pblicas. La clase recibe el nombre de miclase. class miclase{ int a; public: void funcion1(int num); int funcion2(); }

4.2- Creacin de Objetos: LO MISMO DE ARRIBA

4.3- Llamada a las funciones de una Clase:


void CRender::m_Renderear() { strcpy(buffer, "C++ en wikibooks"); return; }

4.4- Funciones Miembros:


Funcin miembro es aquella que est declarada en mbito de clase. Son similares a las funciones habituales, con la salvedad de que el compilador realizara el proceso de Decoracin de nombre (Name Mangling en ingls): Cambiara el nombre de la funcin aadiendo un identificador

de la clase en la que est declarada, pudiendo incluir caracteres especiales o identificadores numricos. Adems, las funciones miembro reciben implcitamente un parmetro adicional: El puntero this, que referencia al objeto que ejecuta la funcin. Las funciones miembro se invocan accediendo primero al objeto al cual refieren, con la sintaxis: myobject.mymemberfunction(), esto es un claro ejemplo de una funcin miembro.

V)

Operaciones Con Objetos:

Se puede asignar un objeto a otro a condicin de que ambos objetos sean del mismo tipo (misma clase). Cuando un objeto se asigna a otro se hace una copia a nivel de bits de todos los miembros, es decir se copian los contenidos de todos los datos. Los objetos continan siendo independientes. objeto_destino=objeto_origen; EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a,b; public: void obtener(int i, int j){a=i;b=j;} void mostrar(){cout << a << " "<< b << "\n";} }; void main() { miclase o1,o2; o1.obtener(10,4); o2=o1; o1.show(); o2.show(); getch(); } ARRAY DE OBJETOS: Los objetos son variables y tienen las mismas capacidades y atributos que cualquier tipo de variables, por tanto es posible disponer objetos en un array. La sintaxis es exactamente igual a la utilizada para declarar y acceder al array. Tambin disponemos de arrays bidimensionales.

DECLARACIN: nombre_clase nombre_objeto[n elementos]; nombre_clase nombre_objeto[n elementos]={elementos}; INICIALIZACIN: nombre_objeto[ndice].funcin(valores); EJEMPLO: Unidimensional. #include <iostream.h> #include <stdio.h> #include <conio.h> class ejemplo{ int a; public: void pasar(int x){a=x;} int mostrar() {return a;} }; void main() { ejemplo ob[4]; int indice; clrscr(); for(indice=0;indice<4;indice++) ob[indice].pasar(indice); for(indice=0;indice<4;indice++) { cout << ob[indice].mostrar(); cout << "\n"; } getch(); } EJEMPLO: Bidimensional. #include <iostream.h> #include <stdio.h> #include <conio.h> class bidi{ int a,b; public: bidi(int n, int m){a=n;b=m;} int pasa_a(){return a;} int pasa_b(){return b;} };

void main() { clrscr(); int fil,col; bidi objeto[3][2]={ bidi(1,2),bidi(3,4), bidi(5,6),bidi(7,8), bidi(9,10),bidi(11,12)}; for(fil=0;fil<3;fil++) { for(col=0;col<2;col++) { cout << objeto[fil][col].pasa_a(); cout << " "; cout << objeto[fil][col].pasa_b(); cout << "\n"; } } getch(); } PASO DE OBJETOS A FUNCIONES: Los objetos se pueden pasar a funciones como argumentos de la misma manera que se pasan otros tipos de datos. Hay que declarar el parmetro como un tipo de clase y despus usar un objeto de esa clase como argumento cuando se llama a la funcin. Cuando se pasa un objeto a una funcin se hace una copia de ese objeto. Cuando se crea una copia de un objeto porque se usa como argumento para una funcin, no se llama a la funcin constructora. Sin embargo, cuando la copia se destruye (al salir de mbito), se llama a la funcin destructora. PROTOTIPO DE FUNCIN: tipo_devuelto nombre(nombre_clase nombre_objeto){ cuerpo; } LLAMADA A LA FUNCIN: nombre_funcion(objeto); EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h>

class objetos{ int i; public: objetos(int n){i=n;} int devol(){return i;} }; int sqr(objetos o) { return o.devol()*o.devol(); } void main() { objetos a(10), b(2); cout << sqr(a); cout << sqr(b); getch(); } OBJETOS DEVUELTOS POR FUCIONES: Al igual que se pueden pasar objetos, las funciones pueden devolver objetos. Primero hay que declarar la funcin para que devuelva un tipo de clase. Segundo hay que devolver un objeto de ese tipo usando la sentencia return. Cuando un objeto es devuelto por una funcin, se crea automticamente un objeto temporal que guarda el valor devuelto. Este es el objeto que realmente devuelve la funcin. Despus el objeto se destruye, esto puede causar efectos laterales inesperados. EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> class ejemplo{ char cadena[80]; public: void muestra(){cout<<cadena<<"\n";} void copia(char *cad){strcpy(cadena,cad);} }; ejemplo entrada() { char cadena[80]; ejemplo str;

cout<<"Introducir cadena: "; cin>>cadena; str.copia(cadena); return str; } void main() { ejemplo ob; ob=entrada(); ob.muestra(); getch(); } PUNTEROS A OBJETOS: Hasta ahora se ha accedido a miembros de un objeto usando el operador punto. Es posible acceder a un miembro de un objeto a travs de un puntero a ese objeto. Cuando sea este el caso, se emplea el operador de flecha (->) en vez del operador punto. Para obtener la direccin de un objeto, se precede al objeto con el operador &. Se trabaja de igual forma que los punteros a otros tipos. EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a; public: miclase(int x); int get(); }; miclase::miclase(int x) { a=x; } int miclase::get() { return a; } void main() { clrscr(); miclase obj(200); miclase *p;

p=&obj; cout << "El valor del Objeto es " << obj.get(); cout << "El valor del Puntero es " << p->get(); getch(); }

VI) Asignacion de Objetos:


Se puede asignar un objeto a otro a condicin de que ambos objetos sean del mismo tipo (misma clase). Cuando un objeto se asigna a otro se hace una copia a nivel de bits de todos los miembros, es decir se copian los contenidos de todos los datos. Los objetos continan siendo independientes. objeto_destino=objeto_origen; EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a,b; public: void obtener(int i, int j){a=i;b=j;} void mostrar(){cout << a << " "<< b << "\n";} }; void main() { miclase o1,o2; o1.obtener(10,4); o2=o1; o1.show(); o2.show(); getch(); }

VII) Array de Objetos:


Los objetos son variables y tienen las mismas capacidades y atributos que cualquier tipo de variables, por tanto es posible disponer objetos en un array. La sintaxis es exactamente igual a la utilizada para declarar y acceder al array. Tambin disponemos de arrays bidimensionales.

DECLARACIN: nombre_clase nombre_objeto[n elementos]; nombre_clase nombre_objeto[n elementos]={elementos}; INICIALIZACIN: nombre_objeto[ndice].funcin(valores); EJEMPLO: Unidimensional. #include <iostream.h> #include <stdio.h> #include <conio.h> class ejemplo{ int a; public: void pasar(int x){a=x;} int mostrar() {return a;} }; void main() { ejemplo ob[4]; int indice; clrscr(); for(indice=0;indice<4;indice++) ob[indice].pasar(indice); for(indice=0;indice<4;indice++) { cout << ob[indice].mostrar(); cout << "\n"; } getch(); } EJEMPLO: Bidimensional. #include <iostream.h> #include <stdio.h> #include <conio.h> class bidi{ int a,b; public: bidi(int n, int m){a=n;b=m;} int pasa_a(){return a;} int pasa_b(){return b;} };

void main() { clrscr(); int fil,col; bidi objeto[3][2]={ bidi(1,2),bidi(3,4), bidi(5,6),bidi(7,8), bidi(9,10),bidi(11,12)}; for(fil=0;fil<3;fil++) { for(col=0;col<2;col++) { cout << objeto[fil][col].pasa_a(); cout << " "; cout << objeto[fil][col].pasa_b(); cout << "\n"; } } getch(); }

VIII) Paso de Objetos a Funciones:


Los objetos se pueden pasar a funciones como argumentos de la misma manera que se pasan otros tipos de datos. Hay que declarar el parmetro como un tipo de clase y despus usar un objeto de esa clase como argumento cuando se llama a la funcin. Cuando se pasa un objeto a una funcin se hace una copia de ese objeto. Cuando se crea una copia de un objeto porque se usa como argumento para una funcin, no se llama a la funcin constructora. Sin embargo, cuando la copia se destruye (al salir de mbito), se llama a la funcin destructora. PROTOTIPO DE FUNCIN: tipo_devuelto nombre(nombre_clase nombre_objeto){ cuerpo; } LLAMADA A LA FUNCIN: nombre_funcion(objeto); EJEMPLO: #include <iostream.h>

#include <stdio.h> #include <conio.h> class objetos{ int i; public: objetos(int n){i=n;} int devol(){return i;} }; int sqr(objetos o) { return o.devol()*o.devol(); } void main() { objetos a(10), b(2); cout << sqr(a); cout << sqr(b); getch(); }

IX) Objetos Devueltos por Funciones:


Al igual que se pueden pasar objetos, las funciones pueden devolver objetos. Primero hay que declarar la funcin para que devuelva un tipo de clase. Segundo hay que devolver un objeto de ese tipo usando la sentencia return. Cuando un objeto es devuelto por una funcin, se crea automticamente un objeto temporal que guarda el valor devuelto. Este es el objeto que realmente devuelve la funcin. Despus el objeto se destruye, esto puede causar efectos laterales inesperados. EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> class ejemplo{ char cadena[80]; public: void muestra(){cout<<cadena<<"\n";} void copia(char *cad){strcpy(cadena,cad);} }; ejemplo entrada()

{ char cadena[80]; ejemplo str; cout<<"Introducir cadena: "; cin>>cadena; str.copia(cadena); return str; } void main() { ejemplo ob; ob=entrada(); ob.muestra(); getch(); }

X)

Punteros a Objetos:

Hasta ahora se ha accedido a miembros de un objeto usando el operador punto. Es posible acceder a un miembro de un objeto a travs de un puntero a ese objeto. Cuando sea este el caso, se emplea el operador de flecha (->) en vez del operador punto. Para obtener la direccin de un objeto, se precede al objeto con el operador &. Se trabaja de igual forma que los punteros a otros tipos. EJEMPLO: #include <iostream.h> #include <stdio.h> #include <conio.h> class miclase{ int a; public: miclase(int x); int get(); }; miclase::miclase(int x) { a=x; } int miclase::get() { return a; }

void main() { clrscr(); miclase obj(200); miclase *p; p=&obj; cout << "El valor del Objeto es " << obj.get(); cout << "El valor del Puntero es " << p->get(); getch(); }

También podría gustarte