Anda di halaman 1dari 1

E R Buscar en 199 992 páginas Anónimo

Más

Lo que enlaza aquí


Cambios relacionados
Versión para imprimir
Enlace permanente
C++ Información de la página
Registros de página
Página Discusión Ver Ver código Historial
Navegación

Página Principal C++ es un lenguaje imperativo orientado a objetos derivado del C. En realidad
Ayuda Categorías
un superconjunto de C, que nació para añadirle cualidades y características C++
¿Cómo buscar? de las que carecía. El resultado es que como su ancestro, sigue muy ligado al
Parte de la familia Derivados de C Informática
Portal del colaborador hardware subyacente, manteniendo una considerable potencia para Lenguajes de
Políticas de programación a bajo nivel, pero se la han añadido elementos que le permiten programación
Moderación
también un estilo de programación con alto nivel de abstracción. Lenguajes de
Artículos de programación orientada a
referencia Estrictamente hablando, C no es un subconjunto de C++; de hecho es posible
objetos
escribir código C que es ilegal en C++. Pero a efectos prácticos, dado el
Artículos destacados Programación
esfuerzo de compatibilidad desplegado en su diseño, puede considerarse que
Artículos certificados
C++ es una extensión del C clásico. La definición "oficial" del lenguaje nos
Notificar error o fusión
dice que C++ es un lenguaje de propósito general basado en el C, al que se
Blog EcuRed
han añadido nuevos tipos de datos, clases, plantillas, mecanismo de
En Facebook
excepciones, sistema de espacios de nombres, funciones inline, sobrecarga
En Twitter
de operadores, referencias, operadores para manejo de memoria persistente, Lenguaje de programación
Biblioteca
y algunas utilidades adicionales de librería (en realidad la librería Estándar C Creador Bjarne
Árbol de Categorías
es un subconjunto de la librería C++) Stroustrup
Plantillas
recomendadas Lanzamiento inicial 1983
Cambios recientes Sistemas Operativos
Multiplataforma
Página aleatoria Sumario [ocultar] compatibles

Solicitudes 1 Un Poco de historia


2 Conceptos generales de la programación orientada a objetos
Artículos requeridos
Artículos a normalizar 3 Acerca de la POO
Artículos a fusionar 4 Acerca de Intérprete y compiladores
Artículos huérfanos 5 Qué se puede hacer con C++

5.1 Un ejemplo de código


6 ¿Qué se ha hecho en C o en C++?
Herramientas wiki 6.1 Sistemas Operativos y otros programas
Páginas especiales 7 Ver también
Citar esta página 8 Fuentes

Un Poco de historia
El comité para el estándar 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 estándar lo marcaba el libro escrito en 1978 por
estos dos autores1. El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue Bjarne Stroustrup, también de la ATT. Al
comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado
fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C
(++). Ante la gran difusión 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 algún tiempo después por un comité ISO) para estandarizarlo
a nivel americano e internacional. En la actualidad, el C++ es un lenguaje versátil, 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, concisión y eficiencia. Además, ha
eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java,
un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet.
Hay que señalar 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++. 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. Como lenguaje orientado a objetos se basa en una filosofía completamente diferente,
que exige del programador un completo cambio de mentalidad. Las características propias de la Programación Orientada a
Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que sí que cambian radicalmente su
naturaleza.

Conceptos generales de la programación orientada a objetos


Clase: Es una plantilla que define la estructura de un conjunto de objetos, que al ser creados se llamarán las instancias de la
clase. Esta estructura está compuesta por la definición de los atributos y la implementación de las operaciones ( métodos ).
Objeto: Es la implementación de una instancia de clase, es decir, una ocurrencia de esta, que tiene los atributos definidos por
la clase, y sobre la que se puede ejecutar las operaciones definidas en ella.
Identidad: Característica de cada objeto que lo diferencia de los demás, incluyendo de aquellos que pudieran pertenecer a la
misma clase y tener los mismos valores en sus atributos.
Herencia: Es la capacidad que tienen las clases para heredar propiedades y métodos de otras clases.

Acerca de la POO
La POO es una nueva filosofía de programación que se basa en la utilización de objetos. El objetivo de la POO no es sino la
meta de cualquier modelo de programación estructurada convencional: "imponer" una serie de normas de desarrollo que
aseguren y faciliten la mantenibilidad y reusabilidad del código. Los mecanismos básicos de la POO son: objetos, mensajes,
métodos y clases.

Objetos. Un objeto es una entidad que tiene unos atributos particulares (datos) y unas formas de operar sobre ellos (los
métodos o funciones miembro). Es decir, un objeto incluye, por una parte una serie de operaciones que definen su
comportamiento, y una serie de variables manipuladas por esas funciones que definen su estado. Por ejemplo, una ventana
Windows contendrá operaciones como "maximizar" y variables como "ancho" y "alto" de la ventana.
Mensajes. En C++, un mensaje se corresponde con el nombre de uno de los métodos de un objeto. Cuando se pasa un
mensaje a un objeto, este responde ejecutando el código de la función asociada.
Método. Un método (función miembro) se implementa dentro de un objeto y determina como tiene que actuar el objeto
cuando se produce el mensaje asociado. En C++ un método se corresponde con la definición de la función miembro del
objeto. La estructura más interna de un objeto está oculta, de tal manera que la única conexión con el exterior son los
mensajes
Clases. Una clase es la definición de un tipo de objetos. De esta manera, una clase "Empleado" representaría todos los
empleados de una empresa, mientras que un objeto de esa clase (también denominado instancia) representaría a uno de
esos empleados en particular.

Las principales características de la POO son: abstracción, encapsulamiento, herencia y polimorfismo:

Abstracción. Es el mecanismo de diseño en la POO. Nos permite extraer de un conjunto de entidades datos y
comportamientos comunes para almacenarlos en clases.
Encapsulamiento. Mediante esta técnica conseguiremos que cada clase sea una caja negra, de tal manera que los objetos
de esa clase se puedan manipular como unidades básicas. Los detalles de la implementación se encuentran dentro de la
clase, mientras que desde el exterior, un objeto será simplemente una entidad que responde a una serie de mensajes
públicos (también denominados interfaz de la clase).
Herencia. Es el mecanismo que nos permite crear clases derivadas (especialización) a partir de clases bases
(generalización). Es decir, podríamos tener la clase "Empleado" (clase base) y la clase "Vendedor" derivando de la anterior.
Una librería de clases (como la MFC) no es más que un conjunto de definiciones de clases interconectadas por múltiples
relaciones de herencia.
Polimorfismo. Esta característica nos permite disponer de múltiples implementaciones de un mismo método de clase,
dependiendo de la clase en la que se realice. Es decir, podemos acceder a una variedad de métodos distintos (con el mismo
nombre) mediante el mismo mecanismo de acceso. En C++ el polimorfismo se consigue mediante la definición de clases
derivadas, funciones virtuales y el uso de punteros a objetos.

Otros dos conceptos muy importantes en la POO son relativos a la creación y destrucción de objetos. En lenguajes
estructurados convencionales, cuando se define una variable se le reserva espacio en memoria y, si no se inicializa
expresamente, se hace por defecto (por ejemplo, en C una variable global siempre se inicializa a 0, pero una automática no, por
lo que si no se inicializa expresamente su contenido inicial será basura); por otra parte, cuando se destruye una variable (por que
se abandona el ámbito de su definición - scope -) se libera la memoria que estaba ocupando. Si ahora hacemos el paralelismo
obligado entre variables y objetos para los lenguajes POO nos daremos cuenta de que deben existir procedimientos especiales
de construcción y destrucción de objetos. En concreto, cada clase tiene dos funciones miembro especiales denominadas
constructor y destructor.

Constructor -> Función miembro que es automáticamente invocada cada vez que se define un objeto, su objetivo es la
inicialización del mismo. Toma el mismo nombre que la clase, puede recibir parámetros y podemos tener varios constructores
definidos.
Destructor -> Función miembro invocada automáticamente cada vez que se destruye un objeto. Su objetivo es realizar
operaciones como liberación de memoria, cerrar ficheros abiertos, etc. Toma el mismo nombre de la clase comenzado
primero por el carácter "~", no toma parámetros y no admite la sobrecarga (sólo puede existir uno en cada clase).

En muchos casos, para las clases mas sencillas, podemos encontrar clases que no tiene constructor o destructor, ó ninguno de
los dos. En C++, siempre existen constructores y destructores por defecto que realizan una inicialización/liberación estándar.

Acerca de Intérprete y compiladores


Antes, mencionar que tanto C como C++ son lenguajes compilados, y no interpretados. Esta diferencia es muy importante, ya
que afecta mucho a muchos aspectos relacionados con la ejecución del programa. En un lenguaje interpretado, el programa está
escrito en forma de texto, es el propio programa fuente. Este programa fuente es procesado por un programa externo, el
intérprete, que traduce el programa, instrucción a instrucción, al tiempo que lo ejecuta. En los lenguajes interpretados no existen
programas ejecutables directamente por el ordenador. El intérprete traduce, en tiempo real, cada línea del programa fuente, cada
vez que se quiere ejecutar el programa. El los lenguajes compilados el proceso de traducción sólo se hace una vez. El programa
compilador toma como entrada el código fuente del programa, y da como salida un fichero que puede ser ejecutado por el
ordenador directamente. Una vez compilado, el programa ejecutable es autónomo, y ya no es necesario disponer del programa
original ni del compilador para ejecutarlo. Cada opción tiene sus ventajas e inconvenientes, y algunas características que son
consideradas una ventaja, pueden ser un inconveniente en ciertas circunstancias, y viceversa.

Los lenguajes interpretados son fácilmente modificables, ya que necesitamos tener el el código fuente disponible en el
ordenador. En los compilados, estos ficheros no son necesarios, una vez compilados.
Los lenguajes interpretados necesitan un programa externo, llamado intérprete o a veces máquina virtual, o framework. Este
programa actua como intermediario entre el fuente y el sistema operativo. En los compilados ese papel lo desempeña el
compilador, pero al contrario que con el intérprete, una vez ha hecho su trabajo, no es necesario que esté presente para
ejecutar el programa.
Estas dos características, lógicamente, hacen que los programas compilados requieran menos espacio de memoria que los
interpretados (si contamos el espacio usado por el intérprete), y en general, los compilados son más rápidos, ya que sólo se
compilan una vez, y el tiempo dedicado a esa tarea no se suma al de ejecución.

Entre los lenguajes interpretados están: BASIC (Código de instrucciones de propósito general para principiantes), Java, PHP.
Muchos lenguajes de script, etc. Entre los lenguajes compilados están: C, C++, Pascal.

Qué se puede hacer con C++


¿Qué clase de programas y aplicaciones se pueden crear usando C y C++? La respuesta es muy sencilla: TODOS. Tanto C
como C++ son lenguajes de programación de propósito general. Todo puede programarse con ellos, desde sistemas operativos
y compiladores hasta aplicaciones de bases de datos y procesadores de texto, pasando por juegos, aplicaciones a medida, etc.

Un ejemplo de código
Este es el clásico programa hola mundo, la idea está centrada en el nacimiento de un nuevo programa de manos de su creador.

#include <iostream>

using namespace std;

int main()
{
cout << "Hola mundo" << endl;
return 0;
}

¿Qué se ha hecho en C o en C++?

Sistemas Operativos y otros programas


Así como Unix el antecesor de este sistema operativo, GNU/Linux -a menudo denominado tan sólo como Linux, que es el
nombre del núcleo del SO- hace uso de un buen número de lenguajes de programación en sus distintos componentes.
¿Cuáles son esos lenguajes? Cada tipo de recurso parece tener ciertas preferencias, y es que hay lenguajes más adecuados
para unas cosas. Obviamente el lenguaje de programación C sigue siendo la base, pero hay mucho más implicados.
Kernel y drivers de dispositivos: Tanto los drivers como el kernel funcionan en un nivel realmente bajo de operaciones en el
ordenador. Para escribir el kernel del sistema operativo y acceder a las propiedades del hardware tales como los ciclos de la
memoria, buses de entrada/salida, etc., se necesita un lenguaje que pueda comunicarse con el hardware con potencia. El
kernel Linux hace uso del lenguaje C (aunque en realidad no se trate de un lenguaje de bajo nivel) con una pequeña parte en
lenguaje ensamblador.
Librerías y utilidades: Las librerías y utilidades básicas del sistema tales como mkdir, chmod, chown, head, tail, chroot,
uptime, users también están escritas en lenguaje C.
Gestores de paquetes y programas de configuración: Los gestores de paquetes tales como yum, apt, dpkg, etcétera, también
están escritos en C, que como veis es la estrella absoluta de los componentes "base" de un sistema GNU/Linux.
Entornos de Escritorio y gestores de ventanas: La mayoría de gente usa un entorno de escritorio, y es que a día de hoy poco
queda sólo en interfaz de línea de comandos. Los gestores de ventanas tales como metacity, kwin están desarrollados en C y
requieren gcc para ser compilados. El entorno de escritorio, iconos, ventanas, barras de herramientas, etc, están basados en
librerías específicas (Qt para KDE, GTK+ para GNOME) y hacen uso del lenguaje mayoritario, C.
Aplicaciones gráficas de usuario: Este es el punto donde entran en juego una gran cantidad de lenguajes de programación,
dado que básicamente es la capa más alta. Tenemos una gran variedad: C, Python, Java, Perl y otros. Hay librerías GTK+,
Tcl/Tk, Qt que son un frontend gráfico a tareas que corren por detrás en línea de comando.
El Sistema operativo Windows está hecho básicamente en C, C tiene la ventaja de que puede escalarse con ensamblador, lo
cual es buena opción para optimizar ciertos módulos.

Las versiones anteriores de Windows estaban hechas en Basic (Basic NO visual Basic) que es un lenguaje de bajo nivel de hace
unos cuantos años ya. Es un lenguaje que se usa mucho en la electrónica aun.

Actualmente Windows 7 Mac os x Leopard y Linux usan mas de una Tecnología ya se empezó a usar c# c++ y hasta java en
el caso de linux se usa phytom c y tbn ensambladores y demás cosas, y Mac siempre basado en Unix con compilación en
C++ para los últimos Sistemas Operativos.

Ver también
Ciencia de la Información
Puntero (C++)
Librería Estándar C++
Facetas C++
Contenedores C++
Constructor (C++)
Ficheros en C++
Programación de Computadoras
Programación Orientada a Objetos
Programación C Sharp
Historia del Lenguaje C
Code_Blocks

Fuentes
Manual C++
Curso Visual
C++
C++ en Wikipedia
C++ en ProgramacionFacil.com
C++ en SomosLibres.org
El C++ y los Sistemas Operativos
Windows está escrito en C++

Normativa de privacidad EcuRed Exoneraciones

Anda mungkin juga menyukai