Вы находитесь на странице: 1из 11

Manual C++

Tiamat Arantxa Snchez Vzquez 03/08/2011

INDICE: Historia del C++3 Clases..4 Libreras.8 Herencia.8 Encapsulamiento.9 Bibliografa.. Anexos...

Historia del C++ En 1980 surge C++ de la mano de Bjarne Stroustrup (tambin de Laboratorios Bell de AT&T). Disea este lenguaje con el objetivo de aadir a C nuevas caractersticas: clases y funciones virtuales (de SIMULA67), tipos genricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier punto del programa (de ALGOL68), y sobre todo, un autntico motor de objetos con herencia mltiple que permite combinar la programacin imperativa de C con la programacin orientada a objetos. Estas nuevas caractersticas mantienen siempre la esencia del lenguaje C: otorgan el control absoluto de la aplicacin al programador, consiguiendo una velocidad muy superior a la ofrecida por otros lenguajes. El siguiente hecho fundamental en la evolucin de C++ es sin duda la incorporacin de la librera STL aos ms tarde, obra de Alexander Stepanov y Adrew Koening. Esta librera de clases con contenedores y algoritmos genricos proporciona a C++ una potencia nica entre los lenguajes de alto nivel. El comit para el estndar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estndar lo marcaba el libro escrito en 1978 por estos dos autores1. El lenguaje C++ se comenz a desarrollar en 1980. Su autor fue B. Stroustrup, tambin de la ATT. Al comienzo era una extensin del lenguaje C que fue denominada C con clases. Este nuevo lenguaje comenz a ser utilizado fuera de la ATT en 1983. El nombre C++ es tambin de ese ao, y hace referencia al carcter del operador incremento de C (++). Ante la gran difusin y xito que iba obteniendo en el mundo de los programadores, la ATT comenz a estandarizarlo internamente en 1987. En 1989 se form un comit ANSI (seguido algn tiempo despus por un comit ISO) para estandarizarlo a nivel americano e internacional. Debido al xito del lenguaje, en 1990 se renen las organizaciones ANSI e ISO para definir un estndar que formalice el lenguaje. El proceso culmina en 1998 con la aprobacin del ANSI C++. En la actualidad, el C++ es un lenguaje verstil, potente y general. Su xito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisin y eficiencia. Adems, ha eliminado algunas de las dificultades y limitaciones del C original. La evolucin de C++ ha continuado con la aparicin de Java, un lenguaje creado simplificando algunas cosas de C++ y aadiendo otras, que se utiliza para realizar aplicaciones en Internet. Hay que sealar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de ste fueron tomadas del C++. El C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con l, aunque ya se ha dicho que presenta ciertas ventajas (las modificaciones menores, que se vern a continuacin). Como lenguaje orientado a objetos se basa en una filosofa completamente diferente, que exige del programador un completo cambio de

mentalidad. Las caractersticas propias de la Programacin Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que s que cambian radicalmente su naturaleza. Clases: Definicin de Clases Cada clase contiene : datos (datos miembro o campos), los cuales especifican las propiedades de los objetos. funciones (funciones miembro o mtodos), mediante los cuales se modela su comportamiento y las acciones que puede realizar. Un ejemplo de esto se puede apreciar en el siguiente fragmento de cdigo: 1 // Declaracin de una clase 2 class MiClase 3{ 4 // Declaracin de datos miembro 5 // Declaracin de mtodos 6 }; En la declaracin de una clase, para cada dato miembro, debe especificarse mediante los modificadores de acceso el mbito desde el cual puede accederse a dicho miembro. stos son: private: Slo se permite su acceso desde los mtodos de la clase. public: Se permite su acceso desde cualquier punto que pueda usar la clase. Un dato pblico es accesible desde cualquier objeto de la clase. protected: Se permite su uso en los mtodos de la clase y en los de las clases derivadas mediante herencia. Un ejemplo de esto se puede apreciar en el siguiente fragmento de cdigo: 1 class Triangulo

2{ 3 private: 4 float cat_opuesto; 5 float cat_adyacente;6 float hipotenusa; 7 8 // Declaracin de mtodos 9 }; 2. Constructores y Destructores Caractersticas de los constructores: Cuando se crea un objeto de una clase siempre se llama automticamente a un constructor. Se emplea para iniciar los objetos de una clase. Es particularmente til para reservar, si es necesario, memoria para ciertos campos del objeto. Pueden haber varios constructores para una clase. Un constructor tiene el mismo nombre que la clase en la que est declarado y no devuelve nada. OJO: NO es una funcin void. Cuando no se define ningn constructor en una clase, el compilador crea un constructor por defecto, sin argumentos, que inicia los datos miembros a cero. Caractersticas de los destructores: Slo hay un destructor para una clase. Cuando un objeto deja de existir siempre se llama automticamente al destructor. Un destructor tiene el mismo nombre de la clase, precedido por el carcter ~. El destructor no admite parmetros ni devuelve ningn valor. OJO: NO es una funcin void. Si no se especifica, el compilador proporciona un destructor por defecto. Su implementacin tiene sentido slo cuando el constructor ha reservado memoria

dinmicamente. Un ejemplo de esto se puede apreciar en el siguiente fragmento de cdigo: 1 class MiClase { public: int *arreglo; // Constructor MiClase () { arreglo = new int[10]; } // Destructor ~MiClase () { delete [] arreglo; } }; Clases derivadas En C++, la herencia simple se realiza tomando una clase existente y derivando nuevas clases de ella. La clase derivada hereda las estructuras de datos y funciones de la clase original. Adems, se pueden aadir nuevos miembros a las clases derivadas y los miembros heredados pueden ser modificados. Una clase utilizada para derivar nuevas clases se denomina clase base, clase padre, superclase o ascendiente. Una clase creada de otra clase se denomina clase derivada o subclase. Se pueden construir jerarquas de clases, en las que cada clase sirve como padre o raz de una nueva clase.

Conceptos fundamentales de derivacin

C++ utiliza un sistema de herencia jerrquica. Es decir, se hereda una clase de otra, creando nuevas clases a partir de las clases ya existentes. Slo se pueden heredar clases, no funciones ordinarias n variables, en C++. Una clase derivada hereda todos los miembros dato excepto, miembros dato esttico, de cada una de sus clases base. Una clase derivada hereda la funcin miembro de su clase base. Esto significa que se hereda la capacidad para llamar a funciones miembro de la clase base en los objetos de la clase derivada. Los siguientes elementos de la clase no se heredan: - Constructores - Destructores - Funciones amigas - Funciones estticas de la clase - Datos estticos de la clase - Operador de asignacin sobrecargado

Las clases base diseadas con el objetivo principal de ser heredadas por otras se denominan clases abstractas. Normalmente, no se crean instancias a partir de clases abstractas, aunque sea posible.

Clases abstractas: La abstraccin es un recurso de la mente (quizs el ms caracterstico de nuestra pretendida superioridad respecto del mundo animal). Por su parte, los lenguajes de programacin permiten expresar la solucin de un problema de forma comprensible simultneamente por la mquina y el humano. Constituyen un puente entre la abstraccin de la mente y una serie de instrucciones ejecutables por un dispositivo electrnico. En consecuencia, la capacidad de abstraccin es una caracterstica deseable de los lenguajes artificiales, pues cuanto mayor sea, mayor ser su aproximacin al lado humano. Es decir, con la imagen existente en la mente del programador. En este sentido, la introduccin de las clases en los lenguajes orientados a objetos ha representado un importante avance respecto de la programacin tradicional y dentro de ellas, las denominadas clases abstractas son las que representan el mayor grado de abstraccin.

De hecho, las clases abstractas presentan un nivel de "abstraccin" tan elevado que no sirven para instanciar objetos de ellas. Representan los escalones ms elevados de algunas jerarquas de clases y solo sirven para derivar otras clases, en las que se van implementando detalles y concreciones, hasta que finalmente presentan un nivel de definicin suficiente que permita instanciar objetos concretos. Se suelen utilizar en aquellos casos en que se quiere que una serie de clases mantengan una cierta caracterstica o interfaz comn. Por esta razn a veces se dice de ellas que son pura interfaz Clases concretas: Las clases las cuales pueden instanciarse se conocen como concretas.

Librerias: *iostream: Parte del a STL que contiene los algoritmos estndar, es quiz la mas usada e importante (aunque no indispensable *math: Contiene los prototipos de las funciones y otras definiciones para el uso y manipulacin de funciones matemticas. *ostream: Algoritmos estndar para los flujos de salida. *stdio: Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida. *stdlib: Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general. * string: Parte de la STL relativa a contenedores tipo string; una generalizacin de las cadenas alfanumricas para albergar cadenas de objetos. Muy til para el fcil uso de las cadenas de caracteres, pues elimina muchas de las dificultades que generan los char.

Herencia: Para empezar, es necesario definir dos trminos normalmente usados al tratar la herencia. Cuando una clase hereda otra, la clase que se hereda se llama clase base. La clase que hereda se llama clase derivada. La clase base define todas las cualidades que sern comunes a cualquier clase derivada. Otro punto importante es el acceso a la clase base. El acceso a la clase base pude tomar 3 valores, public, private y protected. HERENCIA MULTIPLE: Existen dos mtodos en los que una clase derivada puede heredar ms de una clase base. El primero, en el que una clase derivada puede ser usada como

la clase base de otra clase derivada, crendose una jerarqua de clases. El segundo, es que una clase derivada puede heredar directamente ms de una clase base. En esta situacin se combinan dos o ms clases base para facilitar la creacin de la clase derivada. El caso de los constructores es un poco especial. Se ejecutan en orden descendente, es decir primero se realiza el constructor de la clase base y luego el de las derivadas. En las destructoras ocurre en orden inverso, primero el de las derivadas y luego el de la base. Dentro de los mecanismos de herencia se van a diferenciar dos tipos: - La Herencia Simple. Una clase derivada tiene un slo padre. - La Herencia Mltiple. Una clase derivada hereda de ms de una clase base Herencia Simple Es cuando una clase derivada hereda de una nica clase, es decir una clase derivada slo tiene un padre o ascendente. Por su parte una clase base puede tener tantos descendientes como sean necesarios sin limitacin alguna. Es un sistema jerrquico en forma arborescente, similar a la estructura de directorios de algunos sistemas operativos Herencia Mltiple Una clase puede tener ms de una clase base. Esto significa que una clase puede heredar de dos o ms clases. A este fenmeno se le conoce como Herencia Mltiple 8. La sintaxis de la herencia mltiple es una extensin de la utilizada para la herencia simple. La manera de expresar este tipo de herencia es mediante una lista de herencia, que consta de las clases de las que se hereda separadas por comas.

Encapsulamiento: El encapsulamiento consiste en poner juntos los datos y las funciones dentro de un objeto de tipo clase. La ocultacin de informacin permite discernir entre qu partes de la abstraccin estn disponibles al resto de la aplicacin y qu partes son internas a la abstraccin. Algunos autores incluyen el concepto de ocultacin de informacin dentro del de encapsulamiento Para ello, los lenguajes de programacin ofrecen diversos niveles de ocultacin para sus miembros (atributos y mtodos).

Niveles de Ocultacin de C++ C++ ofrece tres niveles de ocultacin - El nivel de ocultacin privado (private) indica que los miembros pueden ser accedidos nicamente por los mtodos de la clase - Los miembros protegidos (protected) pueden ser accedidos por los mtodos de la clase y de sus derivadas - Los miembros pblicos (public) pueden ser utilizados desde cualquier funcin o mtodo de la aplicacin Una interfaz (interface) define el modo en el que se puede interactuar con una componente software - Est constituido por todas sus operaciones pblicas

Bibliografia:

Cmo programar en C, C++ y Java Escrito por Harvey M. Deitel,P. J. Deitel Lenguaje C++ Escrito por Brice-Arnaud GURIN C++ ESTANDAR Escrito por Enrique Hernndez Orallo,Jos Hernndez Orallo,M Carmen Juan Lizandra C++ para ingenieria y ciencias/ C++ For Science and Engineering Escrito por Gary J. Bronson

Вам также может понравиться