You are on page 1of 18

Qu es un archivo DLL?

Un archivo DLL es una biblioteca que contiene el cdigo y los datos que se
pueden utilizar por ms de un programa al mismo tiempo. Por ejemplo, en
sistemas operativos Windows, el archivo Comdlg32 DLL realiza comn
funciones relacionadas con el cuadro de dilogo. Por lo tanto, cada programa
puede usar la funcionalidad contenida en este archivo DLL para implementar
un cuadro de dilogo Abrir. Esto ayuda a promover la reutilizacin de cdigo y
el uso eficaz de la memoria.
Mediante el uso de un archivo DLL, un programa puede ser modular en
componentes separados. Por ejemplo, un programa de contabilidad puede
venderse por mdulo. Cada mdulo puede cargarse en el programa principal
en tiempo de ejecucin, si est instalado el mdulo. Dado que los mdulos son
independientes, el tiempo de carga del programa es ms rpido y un mdulo
slo se carga cuando se solicita esa funcionalidad.
Adems, las actualizaciones son ms fciles de aplicar a cada mdulo sin
afectar a otras partes del programa. Por ejemplo, puede que un programa de
nminas y los tipos impositivos cambian cada ao. Cuando estos cambios se
aslan en un archivo DLL, puede aplicar una actualizacin sin necesidad de
generar o vuelva a instalar el programa.
La lista siguiente describe algunos de los archivos que se implementan como
archivos DLL en los sistemas operativos Windows:

Archivos de controles ActiveX (.ocx)


Un ejemplo de un control ActiveX es un control de calendario que le
permite seleccionar una fecha en un calendario.

Archivos (.cpl) del Panel de control


Un ejemplo de un archivo .cpl es un elemento que se encuentra en el
Panel de Control.

Archivos (.drv) del controlador de dispositivo


Un ejemplo de un controlador de dispositivo es un controlador de
impresora que controla la impresin en una impresora.
Ventajas DLL
La lista siguiente describen algunas de las ventajas que se proporcionan
cuando un programa utiliza un archivo DLL:

Utiliza menos recursos


Cuando varios programas utilizan la misma biblioteca de funciones, un
archivo DLL puede reducir la duplicacin de cdigo que se carga en el
disco y en la memoria fsica.

Promueve la arquitectura modular


Un archivo DLL ayuda a promover el desarrollo de programas modulares.

Instalacin e implementacin de las aceleraciones


Cuando una funcin dentro de un archivo DLL necesita una actualizacin
o una revisin, la distribucin y la instalacin de la DLL no requiere el
programa volver a vincular con el archivo DLL.

Dependencias de DLL
Cuando un programa o un archivo DLL utiliza una funcin DLL en otro archivo
DLL, se crea una dependencia.

Una DLL dependiente se actualiza a una nueva versin.

Se fija una DLL dependiente.

Una DLL dependiente se sobrescribe con una versin anterior.

Una DLL dependiente se quita del equipo.


Estas acciones se conocen generalmente como conflictos de DLL.
La lista siguiente describe los cambios que se han introducido en Microsoft
Windows 2000 y en sistemas operativos de Windows posteriores para ayudar a
minimizar los problemas de dependencia:

Proteccin de archivos de Windows


En la proteccin de archivos de Windows, el sistema operativo impide
que las DLL se actualiza o elimina un agente no autorizado del sistema.

Archivos DLL privados


Dejar archivos DLL privados aislar un programa de los cambios que se
realizan en los archivos DLL de Private archivos DLL compartidos utilizan
informacin especfica de la versin o un archivo .local vaca para exigir
la versin de la DLL que es utilizada por el programa.
Herramientas para solucionar problemas de DLL
Varias herramientas estn disponibles para ayudarle a solucionar problemas
DLL.
Dependency Walker
La herramienta Dependency Walker puede recursivamente para todos los
archivos DLL dependientes que son utilizados por un programa.

Dependency Walker busca archivos DLL que faltan.

Dependency Walker comprueba si los archivos de programa o archivos


DLL que no son vlidas.

Dependency Walker comprueba que las funciones de importacin y


exportacin coincidencia de funciones.

Dependency Walker comprueba si hay errores de dependencia circular.

Dependency Walker comprueba los mdulos que no son vlidos porque


los mdulos son para un sistema operativo diferente.
Mediante el uso de Dependency Walker, puede documentar todos los archivos
DLL que utiliza el programa. Esto puede ayudar a evitar y corregir problemas
DLL que pueden surgir en el futuro. Cuando se instala Microsoft Visual Studio
6.0, Dependency Walker se encuentra en el directorio siguiente:
unidad\Program Files\Microsoft Visual Studio\Common\Tools
DLL Solucionador de Universal
La herramienta Solucionador Universal de Problemas de DLL (DUPS) es
utilizada para auditar, comparar, documentar y mostrar la informacin del

archivo DLL. La lista siguiente describe las utilidades de la herramienta de


duplicados:

Dlister.exe
Esta utilidad enumera todos los archivos DLL en el equipo y registra la
informacin en un archivo de texto o a un archivo de base de datos.

Dcomp.exe
Esta utilidad compara los archivos DLL que se enumeran en dos archivos
de texto y produce un tercer archivo de texto que contiene las
diferencias.

Dtxt2DB.exe
Esta utilidad carga los archivos de texto que se crean mediante la utilidad
Dlister.exe y la utilidad de Dcomp.exe en la base de datos de dllHell.

DlgDtxt2DB.exe
Esta utilidad ofrece una versin de interfaz grfica de usuario de la
utilidad Dtxt2DB.exe.
Para obtener ms informacin acerca de la herramienta de duplicados, haga
clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base:
247957 Uso de DUPS.exe para resolver problemas de compatibilidad DLL
Base de datos DLL Help
La base de datos DLL Help le ayudar a encontrar las versiones especficas de
archivos DLL que estn instaladas por los productos de software de
Microsoft. Para obtener ms informacin acerca de la base de datos DLL Help,
visite el siguiente sitio Web de Microsoft:
Desarrollo de DLL
Esta seccin describe los problemas y los requisitos que debe tener en cuenta
al desarrollar las DLL.
Tipos de archivos DLL
Cuando se carga un archivo DLL en una aplicacin, dos mtodos de
vinculacin permiten llamar a las funciones exportadas del archivo DLL. Los
dos mtodos de vinculacin son vinculacin dinmica en tiempo de carga y
vinculacin dinmica en tiempo de ejecucin.
Vinculacin dinmica en tiempo de carga
En la vinculacin dinmica en tiempo de ejecucin, una aplicacin llama a la
funcin LoadLibrary o a la funcinLoadLibraryEx para cargar el archivo DLL
en tiempo de ejecucin. Despus de la DLL funcin de DLL ha cargado
correctamente, utilice la funcin GetProcAddress para obtener la direccin de
la exportacin, que que desea llamar. Cuando se utiliza la vinculacin dinmica
en tiempo de ejecucin, no es necesario un Importar archivo de biblioteca.
En la lista siguiente describe la aplicacin criterios de cundo se debe utilizar la
vinculacin dinmica en tiempo de carga y cundo se debe utilizar el tiempo de
ejecucin vinculacin dinmica:

Rendimiento de inicio
Si el rendimiento de inicio de la aplicacin es importante, que debe
utilizar la vinculacin dinmica en tiempo de ejecucin.
Facilidad de uso
En la vinculacin dinmica en tiempo de carga, son las funciones DLL
exportadas al igual que las funciones locales. Ello resulta ms fcil para
llamar a estos funciones.
Lgica de la aplicacin
En la vinculacin dinmica en tiempo de ejecucin, una aplicacin puede
bifurcar a cargar mdulos diferentes segn sea necesario. Esto es
importante cuando se desarrolla versiones de varios idiomas.

Vinculacin dinmica en tiempo de ejecucin


La lista siguiente describe los criterios de aplicacin para la vinculacin
dinmica en tiempo de carga de uso y cundo utilizar la vinculacin dinmica
en tiempo de ejecucin:
BOOL APIENTRY DllMain(
HANDLE hModule,
// Handle to DLL module
DWORD ul_reason_for_call,
// Reason for calling function
LPVOID lpReserved ) // Reserved
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACHED:
// A process is loading the DLL.
break;
case DLL_THREAD_ATTACHED:
// A process is creating a new thread.
break;
case DLL_THREAD_DETACH:
// A thread exits normally.
break;
case DLL_PROCESS_DETACH:
// A process unloads the DLL.
break;
}
return TRUE;
}
Cuando la funcin de punto de entrada, devuelve un valor FALSE , la
aplicacin no se iniciar si est utilizando el tiempo de carga vinculacin
dinmica. Si utiliza vinculacin dinmica en tiempo de ejecucin, slo la
persona No se cargar la DLL.
Slo debe realizar la funcin de punto de entrada simple las tareas de
inicializacin y no debe llamar a cualquier otro de terminacin o cargar el
archivo DLL funciones. Por ejemplo, en la funcin de punto de entrada, debera
no directamente o indirectamente, llame a la funcin LoadLibrary o la
funcin LoadLibraryEx . Adems, no debe llamar la
funcin FreeLibrarycuando el proceso est finalizando.

Nota En las aplicaciones multiproceso, asegrese de que dicho acceso al


archivo DLL global de datos est sincronizado (seguro para subprocesos) para
evitar la corrupcin de datos posibles. A hacer esto, utilice TLS para
proporcionar datos nicos para cada subproceso.
El punto de entrada DLL
Para exportar funciones DLL, puede agregar una palabra clave de la funcin la
DLL exporta funciones o crear un archivo de definicin (.def) del mdulo que se
enumeran las funciones DLL exportadas.
Para exportar las funciones del archivo DLL, puede agregar una palabra clave
de la funcin a las funciones exportadas del archivo DLL o crear un archivo de
definicin (.def) del mdulo que se enumera las funciones exportadas del
archivo DLL.
__declspec (dllexport)
Para utilizar una palabra clave de la funcin, debe declarar cada funcin que se
desea exportar con la siguiente palabra clave:
__declspec (dllexport)
Normalmente, utilizara un archivo de encabezado que tiene una instruccin
de definir y una instruccin ifdef para separar la declaracin de exportacin y
la importacin declaracin.
Normalmente, se utilizara un archivo de encabezado que tiene una declaracin
de definir y una instruccin ifdef para separar la declaracin de exportacin y
la instruccin de importacin.
// SampleDLL.def
//
LIBRARY "sampleDLL"
EXPORTS
HelloWorld
Exportar funciones de archivos DLL
Tambin puede utilizar un archivo de definicin de mdulo para declarar
funciones DLL exportadas. Cuando se utiliza un archivo de definicin de
mdulo, no es necesario agregar la palabra clave function a las funciones
exportadas del archivo DLL. En el archivo de definicin de mdulo, declare la
instruccin de biblioteca y las exportaciones del archivo DLL. El cdigo
siguiente es un ejemplo de un archivo de definicin.
El siguiente cdigo es un ejemplo de un archivo DLL que se cre en Visual C++
mediante el Biblioteca de vnculos dinmicos Win32 tipo de proyecto.
// SampleDLL.cpp
//
#include "stdafx.h"
#define EXPORTING_DLL

#include "sampleDLL.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
void HelloWorld()
{
MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);
}
// File: SampleDLL.h
//
#ifndef INDLL_H
#define INDLL_H
#ifdef EXPORTING_DLL
extern __declspec(dllexport) void HelloWorld() ;
#else
extern __declspec(dllimport) void HelloWorld() ;
#endif
#endif
El cdigo siguiente es un ejemplo de un archivo DLL que se cre en Visual C++
con el tipo de proyecto de Biblioteca de vnculos dinmicos Win32 .
// SampleApp.cpp
//
#include "stdafx.h"
#include "sampleDLL.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int
nCmdShow)
{
HelloWorld();
return 0;
}
El cdigo siguiente es un ejemplo de un proyecto de Aplicacin Win32 que
llama a la funcin exportada del archivo DLL en la DLL SampleDLL.
En la vinculacin dinmica en tiempo de ejecucin, utilice cdigo similar al el
siguiente cdigo para llamar a la SampleDLL.dll exporta la funcin DLL.
...
typedef VOID (*DLLPROC) (LPTSTR);
...

HINSTANCE hinstDLL;
DLLPROC HelloWorld;
BOOL fFreeDLL;
hinstDLL = LoadLibrary("sampleDLL.dll");
if (hinstDLL != NULL)
{
HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");
if (HelloWorld != NULL)
(HelloWorld);
fFreeDLL = FreeLibrary(hinstDLL);
}
...
En vinculacin dinmica en tiempo de ejecucin, se utiliza cdigo similar al
siguiente cdigo para llamar a la SampleDLL.dll exporta la funcin DLL.
1. La carpeta de aplicacin
2. La carpeta actual
3. La carpeta de sistema de Windows
Nota La funcin GetSystemDirectory devuelve la ruta de acceso del
sistema Windows carpeta.
4. La carpeta de Windows
Nota La funcin GetWindowsDirectory devuelve la ruta de acceso de la
carpeta de Windows.
Archivo DLL de muestra y aplicacin
Al compilar y vincular la aplicacin SampleDLL, el sistema operativo Windows
busca la DLL SampleDLL en las ubicaciones siguientes en este orden:
Con la introduccin de Microsoft .NET y la de.NET Framework, la mayora de
los problemas asociados con los archivos DLL se han eliminado mediante el
uso de ensamblados. Un ensamblado es una unidad lgica de funcionalidad
que se ejecuta bajo el control de .NET common language runtime
(CLR). Fsicamente, existe un ensamblado como un archivo .dll o como un
archivo .exe. Sin embargo, internamente un ensamblado es muy diferente de
una DLL de Win32 de Microsoft.

Nombre del ensamblado

Informacin de versin

Informacin de referencia cultural

Informacin sobre nombre seguro

La lista de ensamblados de archivos

Informacin de referencia de tipo

Informacin de ensamblado que se hace referencia y dependientes


Un archivo de ensamblado contiene un manifiesto de ensamblado, metadatos,
cdigo de lenguaje intermedio (MSIL) de Microsoft y otros recursos. El
manifiesto del ensamblado contiene los metadatos del ensamblado que
proporciona toda la informacin necesaria para un ensamblado se

autodescriptivo. Se incluye la siguiente informacin en el manifiesto del


ensamblado:
El cdigo MSIL que se encuentra en el ensamblado no se puede ejecutar
directamente. En su lugar, la ejecucin de cdigo MSIL se administra a travs
de CLR. De manera predeterminada, cuando se crea un ensamblado, el
ensamblado es privado para la aplicacin. Para crear un ensamblado
compartido requiere que asignar un nombre seguro al ensamblado y, a
continuacin, publicar el ensamblado en la cach de ensamblados global.

Autodescriptivos
Cuando se crea un ensamblado, toda la informacin que es necesario
para el CLR para ejecutar el ensamblado est contenido en el manifiesto
del ensamblado. El manifiesto del ensamblado contiene una lista de los
ensamblados dependientes. Por lo tanto, el CLR puede mantener un
conjunto coherente de ensamblados que se utilizan en la aplicacin. En
archivos DLL de Win32, no se puede mantener la coherencia entre un
conjunto de Archivos DLL que se utilizan en una aplicacin al utilizar
archivos DLL compartidos.

Control de versiones
En un manifiesto de ensamblado se registra la informacin de versin y
aplicado por el CLR. Adems, las directivas de versin le permiten aplicar
uso especfico de la versin. En archivos DLL de Win32, no se puede
aplicar control de versiones mediante la sistema operativo. En su lugar,
debe asegurarse de que los archivos DLL son con versiones anteriores
es compatible.

Implementacin de Side-by-side
Ensamblados admiten la implementacin de side-by-side. Una aplicacin
Puede utilizar una versin de un ensamblado, y otra aplicacin puede
utilizar una diferente versin de un ensamblado. A partir de Windows
2000, la implementacin de side-by-side es compatible con la
localizacin de archivos DLL en la carpeta de la aplicacin. Adems,
Windows Proteccin de archivos impide las DLL del sistema sobrescrito
o reemplazado por un agente no autorizado.

Aislamiento y autocontencin
Puede ser una aplicacin que se desarrolla utilizando un ensamblado
independientes y aisladas de otras aplicaciones que se ejecutan en el
equipo. Esta caracterstica le ayuda a crear las instalaciones de impacto
cero.

Ejecucin
Un ensamblado se ejecuta bajo los permisos de seguridad que se
proporcionado en el ensamblado de manifiesto y que estn controlados
por el CLR.

Independiente del lenguaje


Un ensamblado se puede desarrollar utilizando uno de los admite los
lenguajes de. NET. Por ejemplo, puede desarrollar un ensamblado de
Microsoft Visual C# y, a continuacin, utilice el ensamblado en Microsoft
Visual Basic .NET proyecto.

Los compiladores introducen las medidas adicionales de compilar el cdigo


fuente (que es legible por humanos) en cdigo objeto (que es legible por
mquinas). Este paso adicional puede parecer un inconveniente, pero los
programas compilados correr muy rpido porque la tarea que consume tiempo
de traducir el cdigo fuente en lenguaje de mquina ya se ha hecho una vez,
en tiempo de compilacin. Debido a la traduccin ya est hecho, no es
necesario cuando se ejecuta el programa.
Otra ventaja de los lenguajes compilados como C ++ es que se puede distribuir
el programa ejecutable a las personas que no cuentan con el compilador. Con
un lenguaje interpretado, debe tener el intrprete para ejecutar el programa.
La necesidad de Solucin de problemas
Las computadoras son herramientas utilizadas por las personas que estn ms
interesados en la solucin de sus problemas de negocios que luchan con el
equipo.
Irnicamente, mientras los programas se hacen ms fciles para este nuevo
pblico a usar, los propios programas se vuelven mucho ms sofisticados y
complejos. Atrs han quedado los das en que los usuarios escriben comandos
crpticos en mensajes esotricos, slo para ver una corriente de datos en bruto.
Programas actuales utilizan sofisticados " interfaces fciles de usar " la
participacin de mltiples ventanas, mens, cuadros de dilogo y la gran
cantidad de metforas con las que todos nos hemos hecho familiar.
Con el desarrollo de la Web, las computadoras entraron en una nueva era de la
penetracin en el mercado; ms personas estn utilizando los ordenadores que
nunca, y sus expectativas son muy altas. La facilidad con la que la gente puede
utilizar la Web tambin ha aumentado las expectativas. No es raro que las
personas esperan que los programas se aprovechan de la Web y lo que tiene
que ofrecer.
En los ltimos aos, las aplicaciones se han expandido a diferentes dispositivos
tambin. Ya no es un PC de escritorio el nico objetivo serio para las
aplicaciones. Ms bien, los telfonos mviles, asistentes digitales personales
(PDA), Tablet PCs y otros dispositivos son objetivos vlidos para aplicaciones
modernas.
En los pocos aos transcurridos desde la primera edicin de este libro, los
programadores han respondido a las demandas de los usuarios, y, por lo tanto,
sus programas se han convertido en ms grande y ms compleja. La
necesidad de tcnicas de programacin para ayudar a gestionar esta
complejidad se ha manifestado.
A medida que cambian los requisitos de programacin, los dos idiomas y las
tcnicas utilizadas para escribir programas evolucionan para ayudar a los
programadores a gestionar la complejidad. Aunque la historia completa es
fascinante, este libro slo se centra brevemente en la parte clave de esta
evolucin: la transformacin de la programacin de procedimiento a la
programacin orientada a objetos.

Programacin de procedimiento, estructurado y orientado a objetos


Hasta hace poco, se pensaba que los programas de ordenador como una serie
de procedimientos que actuaron en los datos. Un procedimiento, tambin
llamado una funcin o un mtodo, es un conjunto de instrucciones especficas
ejecutado una tras otro. Los datos eran totalmente distintos de los
procedimientos, y el truco en la programacin era hacer un seguimiento de lo
funciones que llaman otras funciones, por lo que los datos se ha cambiado.
Para dar sentido a esta situacin potencialmente confusa, se cre la
programacin estructurada.
La principal idea detrs de la programacin estructurada es la idea de dividir y
conquistar. Un programa de ordenador puede ser considerado como que
consiste en un conjunto de tareas. Cualquier tarea que es demasiada compleja
para ser descrito simplemente se divide en el conjunto de tareas ms pequeos
que lo componen, hasta que las tareas son suficientemente pequeas y
autnomas que estn cada vez mas fciles de entender.
A modo de ejemplo, el clculo del salario promedio de todos los empleados de
una empresa es una tarea bastante compleja. Puede, sin embargo, que se
descomponen en las siguientes subtareas:
1. Cuente el nmero de empleados que tiene.
2. Averige lo que gana cada empleado.
3. Total de todos los salarios.
4. Divida el total por el nmero de empleados que tiene.
Con un total de los salarios se puede dividir en los siguientes pasos:
1. Obtener el registro de cada empleado.
2. Acceder al salario.
3. Agregue el sueldo al total acumulado.
4. Obtener registro del siguiente empleado.
A su vez, la obtencin de registro de cada empleado puede desglosarse en los
siguientes:
1. Abra el archivo de los empleados.
2. Ir al registro correcto.
3. Lea los datos.
La programacin estructurada sigue siendo un enfoque de gran xito para
hacer frente a problemas complejos. A fines de 1980, sin embargo, algunas de
las deficiencias de la programacin estructurada se haban convertido en
demasiado claras.
En primer lugar, un deseo natural es pensar en los datos (registros de
empleados, por ejemplo) y lo que puede hacer con esos datos (ordenar, editar,
etc.) como una sola idea. Desafortunadamente, los programas estructurados
son estructuras de datos separadas de las funciones que los manipulan, y no

hay manera natural de datos, de grupo con sus funciones asociadas dentro de
la programacin estructurada. La programacin estructurada se llama a
menudo la programacin de procedimiento debido a su enfoque en los
procedimientos (en lugar de en "objetos").
Segundo lugar los programadores frecuentemente se encuentran con la
necesidad de volver a utilizar las funciones. Pero las funciones que trabajaron
con un tipo de dato a menudo no poda ser utilizadas con otros datos, lo que
limita los beneficios obtenidos.
Programacin Orientada a Objetos (OOP)
Programacin orientada a objetos responde a estos requisitos de
programacin, proporcionando tcnicas para la gestin de enorme complejidad,
lograr la reutilizacin de componentes de software y datos de acoplamiento con
las tareas que manipulan esos datos.
La esencia de la programacin orientada a objetos es modelar "objetos" (es
decir, cosas o conceptos) en lugar de "datos". Los objetos modelo podra estar
en widgets de la pantalla, como botones y cuadros de lista, o que podra ser
real los objetos del mundo, tales como clientes, bicicletas, aviones, gatos y
agua.
Los objetos tienen caractersticas, tambin llamadas propiedades o atributos,
como la edad, rpido, amplio, negro, o mojado. Tambin tienen la capacidad,
tambin llamadas operaciones o funciones, como la compra, acelerar, vuelan,
ronroneo, o burbuja. Este es el trabajo de la programacin orientada a objetos
para representar estos objetos en el lenguaje de programacin.
Programacin orientada a objetos
C++ esta orientada a programacin con direccion u orientacin a objetos
Los tres pilares del desarrollo son
Encapsulacin
Herencia
Polimorfismo
Encapsulacin
La propiedad de ser una unidad independiente se llama encapsulacin. Con la
encapsulacin, usted puede lograr la ocultacin de datos. Ocultacin de datos
es la caracterstica de gran valor que un objeto puede ser utilizado sin que el
usuario sepa o se preocupe de cmo funciona internamente. Del mismo modo
que se puede utilizar un refrigerador sin saber cmo funciona el compresor, se
puede utilizar un objeto bien diseado sin necesidad de conocer su
funcionamiento interno. Se pueden hacer cambios a esos funcionamientos sin
afectar la operacin del programa, siempre y cuando se cumplan las
especificaciones; al igual que el compresor en un refrigerador puede ser
sustituido por otro de diseo similar.

C ++ soporta encapsulacin a travs de la creacin de tipos definidos por el


usuario, llamados clases. Despus de haber sido creado, una clase bien
definida acta como una entidad totalmente encapsulada y se utiliza como una
unidad completa . El funcionamiento interno de la clase se pueden ocultar. Los
usuarios de una clase bien definida no necesitan saber cmo funciona la clase;
slo hay que saber cmo usarlo.
Herencia y Reciclar
Cuando los ingenieros de Acme Motors quieren construir un coche nuevo,
tienen dos opciones: Se puede empezar desde cero , o se puede modificar un
modelo existente . Tal vez su modelo estrella es casi perfecto, pero quieren
aadir un turbocompresor y una transmisin de seis velocidades.
El ingeniero jefe prefiere no empezar desde cero , pero en lugar de decir , "
Vamos a construir otra estrella , pero vamos a aadir estas capacidades
adicionales. Llamaremos al nuevo modelo un Quasar". Un Quasar es una
especie de estrella, sino uno especializado con nuevas caractersticas. (Segn
la NASA, los qusares son cuerpos muy luminosos que emiten una cantidad
asombrosa de energa.).
C ++ soporta herencia. Con la herencia, se puede declarar un nuevo tipo que
es una extensin de un tipo existente. Esta nueva subclase se dice que deriva
del tipo existente y, a veces se llama un tipo derivado. Si el Quasar se deriva de
la estrella y , por lo tanto , hereda todas las cualidades de la estrella , entonces
los ingenieros pueden aadir a ellos o modificarlos segn sea necesario.
Herencia y su aplicacin en C ++ se discuten en el Da 12, "Implementacin de
Herencia", y el Da 16 , "Advanced herencia . "
Polimorfismo
C ++ soporta la idea de que diferentes objetos hacen " lo correcto " a travs de
lo que se llama polimorfismo funcin y polimorfismo clase. Poli significa
muchos, y metamorfosis significa forma. El polimorfismo se refiere al mismo
nombre de tomar muchas formas, y se discute en el da 10, "Trabajo con
funciones avanzadas ", y el da 14, " polimorfismo".
Como Evoluciono C++
Como anlisis orientado a objetos, diseo y programacin comenz a hacerse
popular, Bjarne Stroustrup tom el lenguaje ms popular para el desarrollo de
software comercial, C, y la extendi para proporcionar las caractersticas
necesarias para facilitar la programacin orientada a objetos.
Si bien es cierto que C ++ es un superconjunto de C y que prcticamente
cualquier programa de C legal es un programa legal C ++, el salto de C a C ++
es muy significativo. C ++ se benefici de su relacin con C durante muchos
aos porque los programadores de C podran facilitar en el uso de C ++. Para
conseguir realmente el beneficio completo de C ++, sin embargo , muchos
programadores descubrieron que tenan que desaprender mucho de lo que
saban y aprender una nueva forma de conceptualizar y resolver problemas de
programacin .

Debo aprender C primero


Programacin C se basa en los conceptos de programacin estructurada; C ++
se basa en la programacin orientado a objeto. Si aprendes C en primer lugar,
tendrs que " desaprender " los malos hbitos fomentados por C.
C ++ , Java y C #
C ++ es uno de los idiomas predominantes para el desarrollo de software
comercial. En los ltimos aos , Java ha cuestionado que la dominacin ; Sin
embargo , muchos de los programadores que dejaron C ++ para Java han
comenzado recientemente a regresar. En cualquier caso, las dos lenguas son
tan similares que para aprender uno es para aprender 90 por ciento de la otra.
C # es un lenguaje ms reciente desarrollada por Microsoft para la
plataforma .NET . C # utiliza esencialmente la misma sintaxis que en C ++ , y
aunque las lenguas son diferentes en algunas maneras importantes ,
aprendiendo C ++ proporciona la mayor parte de lo que usted necesita saber
acerca de C #. Ms adelante Si usted decide aprender C #, el trabajo que hace
en C ++ ser una excelente inversin.
Extensiones administradas de Microsoft para C ++ (Microsofts Managed
Extensions to C++)
Con .NET , Microsoft introdujo Extensiones a C ++ ("C ++ administrado " )
gestionado . Esta es una extensin del lenguaje C ++ para que pueda utilizar la
nueva plataforma y bibliotecas de Microsoft . Ms importante an, de C ++
permite que un programador de C ++ para tomar ventaja de las caractersticas
avanzadas del entorno .NET . Si usted decide desarrollar especficamente para
la plataforma .NET , tendr que ampliar su conocimiento del estndar C ++
para
incluir estas extensiones al lenguaje .
Estndar ANSI
El Comit de Normas Acreditadas , que opera bajo los procedimientos de la
American National Standards Institute (ANSI ) , ha creado un estndar
internacional para C ++ .
El estndar de C ++ tambin se conoce como la ISO ( Organizacin
Internacional de Normalizacin ) Estndar, el NCITS (Comit Nacional de
Normas de Tecnologa de Informacin ) Estndar, el X3 ( el antiguo nombre de
NCITS ) Standard , y el estndard ANSI / ISO . Este libro sigue refirindose a
ANSI cdigo estndar porque ese es el trmino que se utiliza con mayor
frecuencia.
ANSI se pronuncia generalmente antsi pero con la t algo silenciosa

El estndar ANSI es un intento de asegurar que C ++ es porttil asegurando ,


por ejemplo, que conforme con el estndar ANSI cdigo se escribe para el
compilador de Microsoft compilar sin errores utilizando un compilador de
cualquier otro proveedor. Adems, debido a que el cdigo de este libro es
compatible con ANSI , debe compilar sin errores en un Macintosh , un cuadro
de Windows , o un Alfa.
Para la mayora de los estudiantes de C ++ , el estndar ANSI es invisible . La
versin ms reciente de la norma ISO / IEC 14882-2003 . La versin anterior ,
la norma ISO / IEC 14882-1998 , era estable y todos los grandes fabricantes
apoyan. Todo el cdigo en la presente edicin de este libro ha sido comparado
con el estndar para asegurarse de que es compatible .
Tenga en cuenta que no todos los compiladores son totalmente compatibles
con el estndar . Adems , algunas reas de la norma se han dejado abiertas al
proveedor compilador, que no se puede confiar para compilar u operar de la
misma manera cuando se compila con diversas marcas de compiladores.

Preparacin para programar


C ++, tal vez ms que otros idiomas, exige que se disee el programa antes de
escribirla. Los problemas triviales, como las referidas en los primeros das de
este libro, no requieren mucho diseo. Los problemas complejos, sin embargo,
como los programadores profesionales tienen el desafo de todos los das, no
se requiere el diseo y la ms completo del diseo, lo ms probable es que el
programa va a resolver los problemas que est diseado para resolver, en
tiempo y en presupuesto. Un buen diseo tambin lo convierte en un programa
que es relativamente libre de errores y fcil de mantener. Se ha estimado que
un 90 por ciento del costo del software es el costo combinado de depuracin y
el mantenimiento. En la medida en que un buen diseo puede reducir esos
costes, puede tener un impacto significativo en el costo de la lnea de fondo del
proyecto.
La primera pregunta que hay que preguntarse cuando se prepara para disear
cualquier programa es: "Cul es el problema que estoy tratando de
resolver?" Cada programa debe tener un objetivo claro y bien articulado, y
usted encontrar que incluso los programas ms simples en este libro lo hace.
La segunda pregunta que todo buen programador pregunta es, "Puede esto
ser realizado sin recurrir a la escritura de software nuevo?" Reutilizar un
viejo programa, utilizando lpiz y papel, o la compra de software fuera de la
plataforma es a menudo una mejor solucin a un problema que escribir algo
nuevo. El programador que pueden ofrecer estas alternativas nunca sufrir de
falta de trabajo; encontrar soluciones menos costosas a los problemas de hoy
en da siempre genera nuevas oportunidades despus.
El proceso de comprender totalmente el problema (anlisis ) y la creacin de un
plan para una solucin ( diseo) es la base necesaria para la escritura de una
aplicacin comercial de clase mundial.

Entorno de Desarrollo
Este libro hace la suposicin de que el compilador tiene un modo en el que se
puede escribir directamente a una " consola " ( por ejemplo , una ventana MS
DOS / Comando o una ventana de shell ) , sin la preocupacin de un entorno
grfico, tales como los de windows o en Macintosh. Busque una opcin como
consola o fcil ventana o consulte la documentacin del compilador.
Este libro hace la suposicin de que el compilador tiene un modo en el que se
puede escribir directamente a una " consola " ( por ejemplo , una ventana MS
DOS / Comando o una ventana de shell ) , sin la preocupacin de un entorno
grfico, tales como los de windows o en Macintosh. Busque una opcin como
consola o fcil ventana o consulte la documentacin del compilador.
Su compilador podra ser parte de un entorno de desarrollo integrado ( IDE ) o
podra tener su propio editor de texto de cdigo fuente incorporada, o puede
que est utilizando un editor de texto comerciales o procesador de texto que
pueda producir archivos de texto . Lo importante es que todo lo que usted
escribe su programa , debe guardar los archivos simples de texto sin formato ,
sin comandos de procesamiento de textos incrustados en el texto. Los
ejemplos de editores de seguros incluyen el Notepad de Windows , el comando
DOS Edit, Breve , Epsilon , Emacs y vi . Muchos procesadores comerciales de
palabras , como WordPerfect , Word , y docenas de otros, tambin ofrecen un
mtodo para guardar archivos de texto simple .
Los archivos que usted crea con su editor se denominan archivos de origen, y
para C ++ por lo general se denominan con la extensin .cpp , .cp o .c . En este
libro los nombres de todos los archivos de cdigo fuente con la extensin .cpp ,
pero comprueba tu compilador para lo que necesita .
La mayora de los compiladores de C ++ no les importa lo que la extensin le
da a su cdigo fuente, pero si no se especifica lo contrario, el uso de muchos
.cpp por defecto. Tenga cuidado, sin embargo; algunos compiladores tratan a
los archivos .c como cdigo C y archivos .cpp como cdigo C ++.
Una vez ms, por favor revise la documentacin del compilador. En cualquier
caso, es ms fcil para que otros programadores que necesitan para entender
sus programas si utiliza constantemente .cpp para archivos de cdigo fuente de
C ++.
HACER
NO utilizar un simple editor de texto para crear su cdigo fuente, o usar el
editor incorporado que viene con su compilador.
NO guardar sus archivos con el .c, .cp, o la extensin .cpp. Se recomienda la
extensin .cpp.
S, verifique la documentacin para obtener detalles acerca de su compilador y
enlazador para asegurarse de que sabe cmo compilar y vincular sus
programas.

NO Hacer
NO use un procesador de textos que permita ahorrar caracteres de formato
especiales. Si usted hace uso de un procesador de texto, guarde el archivo
como texto ASCII.
NO use una extensin .c si su compilador trata archivos tales como el cdigo C
en lugar de cdigo C ++.
Proceso Para Crear un programa
El primer paso en la creacin de un nuevo programa es escribir los comandos
apropiados (declaraciones) en un archivo de origen. Aunque el cdigo fuente
de su archivo es un tanto crptica, y cualquier persona a quien no conoce C ++
tendr dificultades para entender para lo que es, todava est en lo que
llamamos forma legible. Su archivo de cdigo fuente no es un programa y que
no se puede ejecutar, o correr, como un dato ejecutable o archivo de programa.
Creacin de un archivo de objetos con el compilador
Para activar su cdigo fuente en un programa, se utiliza un compilador. Cmo
se invoca el compilador y cmo lo dices dnde encontrar el cdigo fuente vara
de compilador compilador; comprobar su documentacin.
Despus de compilar el cdigo fuente, se produce un fichero objeto. Este
archivo se nombra a menudo con la extensin .obj o .o. Esto todava no es un
programa ejecutable, sin embargo. Para convertir esto en un programa
ejecutable, debe ejecutar el enlazador.
Cracion de archivo ejecutable con un enlazador
Programas en C ++ son tpicamente creados mediante la vinculacin de uno o ms
ficheros objeto (.obj o archivos .o) con una o ms bibliotecas. Una biblioteca es una
coleccin de archivos enlazables que se suministran con el compilador, que ha adquirido
por separado, o que ha creado y compilado. Todos los compiladores de C ++ vienen con
una biblioteca de funciones tiles y clases que se pueden incluir en su programa. Vas a
aprender ms acerca de las funciones y clases con gran detalle en los prximos das.
Los pasos para crear un archivo ejecutable son
1. Cree un archivo de cdigo fuente con una extensin .cpp.
2. Compilar el cdigo fuente en un archivo objeto con la extencion .obj o .o.
3. Vincular el archivo objeto con las biblioteca necesarias para producir un programa
ejecutable.
El ciclo de desarrollo
Si cada programa funcion la primera vez que lo intent, este sera el ciclo de
desarrollo completo: Escriba el programa, compilar el cdigo fuente, vincular el
programa y ejecutarlo.
Por desgracia, casi todos los programas, no importa lo trivial, puede y va a
tener errores.

Algunos errores hacen que la compilacin falle, algunos causan el enlace falle,
y algunos aparecen slo cuando se ejecuta el programa (estos son a menudo
llamados "bugs").
Independientemente del tipo de error que encuentre, debe arreglarlo, y que
implica la edicin de su cdigo fuente, recompilar y volver a vincular, y luego
volver a ejecutar el programa. Este ciclo est representado en la figura 1.1, que
los diagramas de los pasos en el ciclo de desarrollo.
Hello.cpp El primer programa en C++
Escriba el cdigo fuente muestrado en el listado 1.1 directamente en su editor,
exactamente como se muestra (con exclusin de la numeracin de lneas). Una
vez que est seguro de que ha introducido correctamente, guarde el archivo,
compilarlo, vincularlo, y ejecutarlo. Si todo se ha hecho correctamente, imprime
las palabras Hola Mundo para su pantalla. No se preocupe demasiado acerca
de cmo funciona; esto es realmente slo para usted se sienta cmodo con el
ciclo de desarrollo. Todos los aspectos de este programa est cubierto durante
el prximo par de das.
Escriba el cdigo fuente muestra en el listado 1.1 directamente en su editor,
exactamente como se muestra (con exclusin de la numeracin de lneas). Una
vez que est seguro de que ha introducido correctamente, guarde el archivo,
compilarlo, vincularlo, y ejecutarlo. Si todo se ha hecho correctamente, imprime
las palabras Hola Mundo para su pantalla. No se preocupe demasiado acerca
de cmo funciona; esto es realmente slo para usted cmodo con el ciclo de
desarrollo. Todos los aspectos de este programa est cubierto durante el
prximo par de das. La siguiente lista contiene nmeros de lnea a la izquierda.
Estos nmeros son para referencia en el libro. No deben ser escritos en su
editor. Por ejemplo, en la lnea 1 del listado 1.1, deberas insertar:
#include <iostream>
LISTING 1.1 HELLO.cpp, the Hello World Program
1: #include <iostream>
2:
3: int main()
4: {
5:
std::cout << Hello World!\n;
6:
return 0;
7: }
Asegrese de las entradas esten exactamente como se muestra. Preste
especial atencin a la puntuacion. El << en la lnea 5 es el smbolo de
redireccin, producido en la mayora de los teclados manteniendo pulsada la
tecla Shift y pulsando la tecla de la coma dos veces. Entre las letras std y cout
en la lnea 5 son dos signos de dos puntos (:). Lneas 5 y 6 de cada extremo
con punto y coma (;)
Tambin compruebe para asegurarse de que est siguiendo las instrucciones
del compilador correctamente. La mayora de los compiladores enlazan
automticamente, pero consulte la documentacin para ver si es necesario

proporcionar una opcin especial o ejecutar un comando para hacer que el


vnculo se produzca.
Si recibe errores, mirar por encima de su cdigo cuidadosamente y determinar
en qu se diferencia de la lista anterior. Si usted ve un error en la lnea 1, como
no puede encontrar el archivo iostream, puede que tenga que consultar la
documentacin del compilador para obtener instrucciones sobre la
configuracin de tus ruta de inclusin o variables de entorno.
Si recibe un error que no hay prototipo de principal, agregue la lnea principal
int (); justo antes de la lnea 3 (esta es una de esas variaciones compilador
molestos). En ese caso, es necesario agregar esta lnea antes del comienzo de
la funcin principal en cada programa en este libro.
La mayora de los compiladores no requieren esto, pero algunos lo hacen. Si es
tu caso, tu programa terminado debe tener este aspecto:
#include <iostream>
int main(); // most compilers dont need this line
int main()
{
std::cout <<Hello World!\n;
return 0;
}
Es difcil de leer un programa para usted si usted no sabe cmo pronunciar los
caracteres especiales y palabras clave. Usted lee la primera lnea "Pound incluyen
(algunos dicen hash incluir, otros dicen agudo-include) ojo-oh-stream". Usted lee la
quinta lnea "ess-tee-dee-ver-a Hello World".

You might also like