Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ndice general
1 Clase (informtica) 1
1.1 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Campos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Mtodos en las clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Atributo (informtica) 3
2.1 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4 Tipo de dato 5
4.1 Tipos de datos primitivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1.1 Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1.2 Numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1.3 Booleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Variables en distintos lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2.1 Pauscal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.4 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
7 Microsoft .NET 11
7.1 Consideraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
i
ii NDICE GENERAL
8 ADO.NET 15
8.1 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8.1.1 Data provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8.1.2 DataSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8.2 ADO.NET y Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.3 ADO.NET Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.4 ADO.NET Data Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.5 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8.6 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9 Diagrama de clases 18
9.1 Miembros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.1.1 Visibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.1.2 mbitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.2 Relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.2.1 Relaciones a nivel de instancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.3 Diagramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10 C Sharp 20
10.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.2 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.3 Literales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.4 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
10.5 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
10.6 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10.7 Instrucciones de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10.8 Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10.9 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
NDICE GENERAL iii
10.10Clases y objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10.11Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
10.12Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
10.13Compiladores e IDEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
10.14Metas del diseo del lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
10.15Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
10.16Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
10.16.1 En castellano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
10.16.2 En ingls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
11 Espacio de nombres 27
11.1 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
13 MSDN Library 31
13.1 La integracin con Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
13.2 Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
13.3 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
13.4 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
13.5 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
14.10.2 Imgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
14.10.3 Licencia de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Captulo 1
Clase (informtica)
1.1 Componentes
Las clases se componen de elementos, llamados genrica-
mente miembros, de varios tipos:
1
2 CAPTULO 1. CLASE (INFORMTICA)
1.1.3 Propiedades
Las propiedades son un tipo especial de mtodos. Debido
a que suele ser comn que las variables miembro sean pri-
vadas para controlar el acceso y mantener la coherencia,
surge la necesidad de permitir consultar o modicar su valor
mediante pares de mtodos: GetVariable y SetVariable.
Los lenguajes orientados a objetos ms modernos (por
ejemplo Java o C#) aaden la construccin de propiedad,
que es una sintaxis simplicada para dichos mtodos:
tipo Propiedad { get { } set { } }
Union (programacin).
Captulo 2
Atributo (informtica)
En computacin, un atributo es una especicacin que de- las mismas operaciones (por muy similares que sean,
ne una propiedad de un Objeto, elemento o archivo. Tam- estos son todos formatos de datos de grcos) como
bin puede referirse o establecer el valor especco para una un archivo BMP o PNG, ni es un nmero de coma o-
instancia determinada de los mismos. tante operado por las normas aplicadas al los enteros
Sin embargo, actualmente, el trmino atributo puede y con largos.
frecuencia se considera como si fuera una propiedad depen-
diendo de la tecnologa que se use. Por ejemplo, en computacin grca los objetos de pla-
nos pueden tener atributos tales como espesor (con valo-
Para mayor claridad, los atributos deben ser considerados res reales), color (con valores descriptivos como el marrn
ms correctamente como metadatos. Un atributo es con fre- o verde o los valores denidos en un cierto modelo de co-
cuencia y en general una caracterstica de una propiedad. lor, como RGB), etc Un objeto crculo se puede denir con
Un buen ejemplo es el proceso de asignacin de valores atributos similares, como un origen y radio.
XML a las propiedades (elementos). Tenga en cuenta que el Lenguajes de marca, como HTML y XML, utilizan los atri-
valor del elemento se encuentra antes de la etiqueta de cierre butos para describir los datos y el formato de los datos.
(por separado), no en el propio elemento. El mismo elemen-
to puede tener una serie de atributos establecidos (Nombre
= estoesunapropiedad).
2.1 Vase tambin
Si el elemento en cuestin puede ser considerado una pro-
piedad (Nombre_Cliente) de otra entidad (digamos clien-
Campo (informtica)
te), el elemento puede tener cero o ms atributos (propie-
dades) de su propio (Nombre_Cliente es de Tipo = tipo- HTML
texto).
Un atributo de un objeto por lo general consiste de un nom-
bre y un valor; de un elemento, un tipo o nombre de clase;
de un archivo, un nombre y extensin.
3
Captulo 3
Char (Carcter)
Int (Entero)
4
Captulo 4
Tipo de dato
Tipo de dato informtico es un atributo de una parte de usa informacin de los tipos de datos para comprobar la
los datos que indica al ordenador (y/o al programador) al- vericacin de los programas que acceden o manipulan los
go sobre la clase de datos sobre los que se va a procesar. datos.
Esto incluye imponer restricciones en los datos, como qu
valores pueden tomar y qu operaciones se pueden realizar.
Los tipos de datos comunes son: enteros, nmeros de coma
otante (decimales), cadenas alfanumricas, fechas, horas, 4.1 Tipos de datos primitivos
colores, etc.
Por ejemplo, por lo general el tipo int representa un Los tipos de datos hacen referencia al tipo de informacin
conjunto de enteros de 32 bits cuyo rango va desde el que se trabaja, donde la unidad mnima de almacenamiento
2.147.483.648 al 2.147.483.647, as como las operacio- es el dato, tambin se puede considerar como el rango de
nes que se pueden realizar con los enteros, como son la su- valores que puede tomar una variable durante la ejecucin
ma, la resta, y la multiplicacin. Los colores, por su parte, del programa.
se representan como tres bytes denotando la cantidad de ro-
jo, verde y azul, y una cadena de caracteres representando
el nombre del color; las operaciones permitidas en este caso 4.1.1 Caracteres
incluyen la adicin y la sustraccin, pero no la multiplica-
cin. El tipo de dato carcter es un dgito individual el cual se
ste es un concepto propio de la informtica, ms espec- puede representar como numricos (0 al 9), letras (a-z) y
camente de los lenguajes de programacin, aunque tam- smbolos (!"$&/\).
bin se encuentra relacionado con nociones similares de la Nota: En el lenguaje java la codicacin Unicode permite
matemtica y la lgica. trabajar con todos los caracteres de distintos idiomas.
En un sentido amplio, un tipo de datos dene un conjunto Tipo de dato Rango Tamao de bits char 0 a 6553516 bits
de valores y las operaciones sobre estos valores. Casi to-
dos los lenguajes de programacin explcitamente incluyen
la notacin del tipo de datos, aunque lenguajes diferentes 4.1.2 Numricos
pueden usar terminologas diferentes. La mayor parte de
los lenguajes de programacin permiten al programador de- Este tipo de dato puede ser real o entero, dependiendo del
nir tipos de datos adicionales, normalmente combinando tipo de dato que se vaya a utilizar.
mltiples elementos de otros tipos y deniendo las opera-
Enteros: son los valores que no tienen punto decimal, pue-
ciones del nuevo tipo de dato. Por ejemplo, un programador
den ser positivos o negativos y el cero.
puede crear un nuevo tipo de dato llamado Persona que
especca que el dato interpretado como Persona incluir, Tipo de dato: byte tamao = 8 bits Tipo de dato: short ta-
por ejemplo, un nombre y una fecha de nacimiento. mao = 16 bits Tipo de dato: int tamao = 32 bits Tipo de
dato: long tamao = 64 bits
Un tipo de dato puede ser tambin visto como una limita-
cin impuesta en la interpretacin de los datos en un sistema Reales: estos caracteres almacenan nmeros muy grandes
de tipicacin, describiendo la representacin, la interpre- que poseen parte entera y parte decimal.
tacin y la estructura de los valores u objetos almacena- Tipo de dato: oat tamao = 32 bits Tipo de dato: double
dos en la memoria del ordenador. El sistema de tipicacin tamao = 64 bits
5
6 CAPTULO 4. TIPO DE DATO
4.1.3 Booleanos
Este tipo de dato se emplea para valores lgicos, los pode-
mos denir como datos comparativos dicha comparacin
devuelve resultados lgicos (Verdadero o Falso).
Tipo de dato: boolean tamao = 8 bits
4.2.1 Pauscal
El lenguaje de programacin Pauscal permite declarar va-
riables de tipo caracter (Cadena) y numrica. Como se
puede apreciar, todas las variables excepto la de tipo Ca-
dena son de tipo numricas (incluyendo Booleano).
4.3 Referencias
Luca Cardelli, Peter Wegner. On Understanding Ty-
pes, Data Abstraction, and Polymorphism, from Com-
puting Surveys, (December, 1985)
Administracin de hilos
Compile time Runtime
Manejo de excepciones
Recoleccin de basura
El Common Language Runtime o CLR [1] (entorno en
tiempo de ejecucin de lenguaje comn) es un entorno de Seguridad
ejecucin para los cdigos de los programas que corren so-
bre la plataforma Microsoft .NET. El CLR es el encarga-
do de compilar una forma de cdigo intermedio llamada
Common Intermediate Language (CIL, anteriormente co- 5.1 Vase tambin
nocido como MSIL, por Microsoft Intermediate Langua-
ge), al cdigo de maquina nativo, mediante un compilador Microsoft .NET
en tiempo de ejecucin.[2] No debe confundirse el CLR con
una mquina virtual, ya que una vez que el cdigo est com- Common Language Infrastructure
pilado, corre nativamente sin intervencin de una capa de
abstraccin sobre el hardware subyacente. Es una imple- Common Intermediate Language
mentacin del estndar Common Language Infrastructure
Mquina virtual Parrot
(CLI).
Los desarrolladores que usan CLR escriben el cdigo fuente Java virtual machine
en un lenguaje compatible con .NET, como C# o Visual Ba-
sic .NET. En tiempo de compilacin, un compilador .NET Portable.NET
convierte el cdigo a CIL. En tiempo de ejecucin, el com- Mono
pilador del CLR convierte el cdigo CIL en cdigo nativo
para el sistema operativo. Alternativamente, el cdigo CIL Metadato
es compilado a cdigo nativo en un proceso separado ante-
rior a la ejecucin. Esto acelera las posteriores ejecuciones Tiempo de ejecucin
del software debido a que la compilacin de MSIL a nativo
ya no es necesaria. Common Type System
A pesar de que algunas implementaciones del Common Mquina virtual
Language Infrastructure se ejecutan en sistemas operativos
que no sean Windows, el CLR se ejecuta solo en Microsoft Conceptos de programacin en CLR Disponible tra-
Windows. duccin automtica en espaol.
7
8 CAPTULO 5. COMMON LANGUAGE RUNTIME
5.2 Referencias
[1] Barillas, Oscar. [www.wikipedia.org/wiki/Oscar_barillas
Common Language Runtime] |url= incorrecta (ayuda).
Representacin visual, en ingls, de la infraestructura de lenguaje Empaquetar todos los tipos en unidades completamen-
comn. te auto descriptivas y portables.
9
10 CAPTULO 6. INFRAESTRUCTURA DE LENGUAJE COMN
Metadatos.
Especicaciones de lenguaje comn, en ingls Com-
mon Language Specication (CLS).
Sistema de ejecucin virtual, del ingls Virtual Execu-
tion System (VES).
ECMA
Captulo 7
Microsoft .NET
.NET es un framework de Microsoft que hace un nfasis biblioteca de clases base (BCL por sus siglas en ingls, tal
en la transparencia de redes, con independencia de plata- vez el ms importante de los componentes de la platafor-
forma de hardware y que permita un rpido desarrollo de ma), dene un conjunto funcional mnimo que debe imple-
aplicaciones. Basado en ella, la empresa intenta desarrollar mentarse para que el marco de trabajo sea soportado por un
una estrategia horizontal que integre todos sus productos, sistema operativo. Aunque Microsoft implement esta nor-
desde el sistema operativo hasta las herramientas de mer- ma para su sistema operativo Windows, la publicacin de
cado. la norma abre la posibilidad de que sea implementada para
cualquier otro sistema operativo existente o futuro, permi-
.NET podra considerarse una respuesta de Microsoft al
creciente mercado de los negocios en entornos Web, como tiendo que las aplicaciones corran sobre la plataforma inde-
pendientemente del sistema operativo para el cual haya sido
competencia a la plataforma Java de Oracle Corporation y a
los diversos framework de desarrollo web basados en PHP. implementada. El Proyecto Mono emprendido por Ximian
pretende realizar la implementacin de la norma para varios
Su propuesta es ofrecer una manera rpida y econmica, a
la vez que segura y robusta, de desarrollar aplicaciones o sistemas operativos adicionales bajo el marco del cdigo
como la misma plataforma las denomina, soluciones per- abierto.
mitiendo una integracin ms rpida y gil entre empresas
y un acceso ms simple y universal a todo tipo de informa-
cin desde cualquier tipo de dispositivo. 7.2 Componentes
Los principales componentes del marco de trabajo son:
7.1 Consideraciones
El conjunto de lenguajes de programacin.
La plataforma .NET de Microsoft es un componente La biblioteca de clases base o BCL.
de software que puede ser aadido al sistema operativo
Windows. Provee un extenso conjunto de soluciones pre- El entorno comn de ejecucin para lenguajes, o CLR
denidas para necesidades generales de la programacin de por sus siglas en ingls.
aplicaciones, y administra la ejecucin de los programas es-
critos especcamente con la plataforma. Esta solucin es Debido a la publicacin de la norma para la infraestruc-
el producto principal en la oferta de Microsoft, y pretende tura comn de lenguajes (CLI por sus siglas en ingls),
ser utilizada por la mayora de las aplicaciones creadas para el desarrollo de lenguajes se facilita, por lo que el marco
la plataforma Windows. de trabajo .NET soporta ya ms de 20 lenguajes de progra-
.NET Framework se incluye en Windows Server 2008, macin y es posible desarrollar cualquiera de los tipos de
Windows Vista y Windows 7. De igual manera, la ver- aplicaciones soportados en la plataforma con cualquiera de
sin actual de dicho componente puede ser instalada en ellos, lo que elimina las diferencias que existan entre lo que
Windows XP, y en la familia de sistemas operativos era posible hacer con uno u otro lenguaje.
Windows Server 2003. Una versin reducida de .NET Algunos de los lenguajes desarrollados para el marco de tra-
Framework est disponible para la plataforma Windows bajo .NET son: C#, Visual Basic .NET, Delphi (Object Pas-
Mobile, incluyendo telfonos inteligentes. cal), C++, F#, J#, Perl, Python, Fortran, Prolog (existen al
La norma (incluido en ECMA-335, ISO/IEC 23271) que menos dos implementaciones, el P#[1] y el Prolog.NET[2] ),
dene el conjunto de funciones que debe implementar la Cobol y PowerBuilder.
11
12 CAPTULO 7. MICROSOFT .NET
7.3 Common Language Runtime Compilador MSIL a nativo: transforma cdigo inter-
medio de alto nivel independiente del hardware que lo
ejecuta a cdigo de mquina propio del dispositivo que
lo ejecuta.
Administrador de cdigo: coordina toda la operacin
de los distintos subsistemas del Common Language
Runtime.
Recolector de basura: elimina de memoria objetos no
utilizados automticamente.
Motor de seguridad: administra la seguridad del cdi-
go que se ejecuta.
Motor de depuracin: permite hacer un seguimiento
de la ejecucin del cdigo an cuando se utilicen len-
guajes distintos.
Vericador de tipos: controla que las variables de la
Estructura interna del entorno de ejecucin en lenguaje comn.
aplicacin usen el rea de memoria que tienen asigna-
El CLR es el verdadero ncleo del framework de .NET, do.
entorno de ejecucin en el que se cargan las aplicaciones Administrador de excepciones: maneja los errores que
desarrolladas en los distintos lenguajes, ampliando el con- se producen durante la ejecucin del cdigo.
junto de servicios del sistema operativo (W2k y W2003).
Permite integrar proyectos en distintos lenguajes soporta- Soporte de multiproceso (hilos): permite desarrollar
dos por la plataforma .Net, como C++, Visual Basic, C#, aplicaciones que ejecuten cdigo en forma paralela.
entre otros.
Empaquetador de COM: coordina la comunicacin
La herramienta de desarrollo compila el cdigo fuente de con los componentes COM para que puedan ser usa-
cualquiera de los lenguajes soportados por .NET en un c- dos por el .NET Framework.
digo intermedio, el CIL (Common Intermediate Language)
antes conocido como MSIL (Microsoft Intermediate Lan- Biblioteca de Clases Base que incluye soporte para
guage), similar al BYTECODE de Java. Para generarlo, muchas funcionalidades comunes en las aplicaciones.
el compilador se basa en la especicacin CLS (Common
Language Specication) que determina las reglas necesarias
para crear el cdigo MSIL compatible con el CLR. 7.4 Estandarizacin y licenciamien-
Para ejecutarse se necesita un segundo paso, un compila- to
dor JIT (Just-In-Time) es el que genera el cdigo mquina
real que se ejecuta en la plataforma del cliente. De esta for-
En agosto de 2000, Microsoft, Hewlett-Packard e Intel tra-
ma se consigue con .NET independencia de la plataforma
bajaron conjuntamente para estandarizar el lenguaje de
de hardware. La compilacin JIT la realiza el CLR a me-
programacin C# y una Infraestructura de Lenguaje Co-
dida que el programa invoca mtodos. El cdigo ejecutable
mn (CLI por sus siglas en ingls). Para Diciembre de 2001,
obtenido se almacena en la memoria cach del ordenador,
ambos fueron raticados por los estndares Internaciona-
siendo recompilado de nuevo slo en el caso de producirse
les ECMA.[3][4] ISO tambin sigui los pasos para abril de
algn cambio en el cdigo fuente.
2003.
Mientras Microsoft y sus socios de negocios ganaban paten-
7.3.1 Caractersticas tes para los lenguajes CLI y C#, ECMA e ISO solicitaron
que era esencial que la implementacin estuviera disponi-
Es el encargado de proveer lo que se llama cdigo adminis- ble bajo trminos no discriminatorios. Adems de alcan-
trado, es decir, un entorno que provee servicios automticos zar estos trminos, las compaas tambin accedan a dejar
al cdigo que se ejecuta. Los servicios son variados: estas patentes disponibles. Sin embargo, esto no aplic pa-
ra la parte del .NET Framework, que no est cubierto por
Cargador de clases: permite cargar en memoria las cla- los estndares ECMA/ISO. Esto incluye Windows Forms,
ses. ADO.NET y ASP.NET.
7.6. BIBLIOTECA DE CLASES BASE DE .NET 13
Windows Forms
7.8 Versiones
.NET Show
Captulo 8
ADO.NET
8.1 Arquitectura
.NET 3.0 Stack
ADO.NET consiste en dos partes primarias:
.NET Development
.NET 3.0 Applications
Tools
8.1.1 Data provider
.NET 2.0 CLR, .NET 2.0 Base Class Libraries Connection: Proporciona una conexin usada para co-
ASP .NET 2.0, ADO.NET 2.0, WinForms 2.0 municarse con la fuente de datos. Tambin acta como
Abstract Factory para los objetos command.
Command: Usado para realizar alguna accin en la
Windows fuente de datos, como lectura, actualizacin, o borra-
(Windows XP, Windows Server 2003/R2 do de datos relacionales.
Vista/Longhorn)
Parameter: Describe un simple parmetro para un
PC Hardware command. Un ejemplo comn es un parmetro para
ser usado en un procedimiento almacenado.
DataAdapter: Puente utilizado para transferir data
Esta tecnologa es una parte del .NET Framework 3.0 (habiendo entre una fuente de datos y un objeto DataSet (ver aba-
sido parte del framework desde la versin 1.0).
jo).
DataReader: Es una clase usada para procesar ecien-
temente una lista grande de resultados, un registro a la
vez.
ADO.NET es un conjunto de componentes del software
que pueden ser usados por los programadores para acce- 8.1.2 DataSets
der a datos y a servicios de datos. Es una parte de la bi-
blioteca de clases base que estn incluidas en el Microsoft Los objetos DataSets, son un grupo de clases que describen
.NET Framework. Es comnmente usado por los progra- una simple base de datos relacional en memoria, fueron la
madores para acceder y para modicar los datos almacena- estrella del show en el lanzamiento inicial (1.0) del Micro-
dos en un Sistema Gestor de Bases de Datos Relacionales, soft .NET Framework. Las clases forman una jerarqua de
aunque tambin puede ser usado para acceder a datos en contencin:
fuentes no relacionales. ADO.NET es a veces considerado
como una evolucin de la tecnologa ActiveX Data Objects Un objeto DataSet representa un esquema (o una ba-
(ADO), pero fue cambiado tan extensivamente que puede se de datos entera o un subconjunto de una). Puede
ser concebido como un producto enteramente nuevo. contener las tablas y las relaciones entre esas tablas.
15
16 CAPTULO 8. ADO.NET
Un objeto DataTable representa una sola tabla 8.2 ADO.NET y Visual Studio .NET
en la base de datos. Tiene un nombre, las, y co-
lumnas. En el IDE Visual Studio .NET existe la funcionalidad para
crear las subclases especializadas de las clases del DataSet
Un objeto DataView se sienta sobre un
para un esquema particular de base de datos, permitiendo
DataTable y ordena los datos (como una
el acceso conveniente a cada campo a travs de propiedades
clusula order by de SQL) y, si se acti-
fuertemente tipadas. Esto ayuda a capturar ms errores de
va un ltro, ltra los registros (como una
programacin en tiempo de compilacin y hace ms til la
clusula where del SQL). Para facilitar es-
caracterstica Intellisense del IDE.
tas operaciones se usa un ndice en memo-
ria. Todas las DataTables tienen un ltro por
defecto, mientras que pueden ser denidos
cualquier nmero de DataViews adiciona- 8.3 ADO.NET Entity Framework
les, reduciendo la interaccin con la base de
datos subyacente y mejorando as el desem-
El ADO.NET Entity Framework es un conjunto de APIs
peo.
de acceso a datos para el Microsoft .NET Framework,
Un DataColumn representa una co- apuntando a la versin de ADO.NET que se incluye con
lumna de la tabla, incluyendo su nom- el .NET Framework 3.5. Fue lanzado como actualizacin
bre y tipo. separada junto con el Service Pack 1 para el .NET Fra-
Un objeto DataRow representa una so- mework, despus del lanzamiento de tanto el .NET Frame-
la la en la tabla, y permite leer y actua- work 3.5 y el Visual Studio 2008. Una nueva versin del
lizar los valores en esa la, as como la Entity Framework (v 4.0) ser liberada junto al Visual Stu-
recuperacin de cualquier la que est dio 2010 y el .NET Framework 4.0.
relacionada con ella a travs de una re- Una entidad del Entity Framework es un objeto que tiene
lacin de clave primaria - clave extran- una clave representando la clave primaria de una entidad
jera. lgica de datastore. Un modelo conceptual Entity Data Mo-
Un DataRowView representa una sola del (modelo Entidad-Relacin) es mapeado a un modelo de
la de un DataView, la diferencia entre esquema de datastore. Usando el Entity Data Model, el Fra-
un DataRow y el DataRowView es im- mework permite que los datos sean tratados como entidades
portante cuando se est interactuando independientemente de sus representaciones del datastore
sobre un resultset. subyacente.
El Entity SQL es un lenguaje similar al SQL para consultar
Un DataRelation es una relacin entre las ta- el Entity Data Model (en vez del datastore subyacente). Si-
blas, tales como una relacin de clave primaria -
milarmente, las extensiones del Linq, Linq-to-Entities, pro-
clave ajena. Esto es til para permitir la funcio-
porcionan consultas tipeadas en el Entity Data Model. Las
nalidad del DataRow de recuperar las relacio- consultas Entity SQL y Linq-to-Entities son convertidas in-
nadas. ternamente en un Canonical Query Tree que entonces es
Un Constraint describe una propiedad de la ba- convertido en una consulta comprensible al datastore sub-
se de datos que se debe cumplir, como que los yacente (ej. en SQL en el caso de una base de datos rela-
valores en una columna de clave primaria deben cional). Las entidades pueden utilizar sus relaciones, y sus
ser nicos. A medida que los datos son modica- cambios enviados de regreso al datastore.
dos cualquier violacin que se presente causar
excepciones.
8.4 ADO.NET Data Services
Un DataSet es llenado desde una base de datos por un Da-
taAdapter cuyas propiedades Connection y Command que Tambin conocido como WCF Data Services, su nombre
han sido iniciados. Sin embargo, un DataSet puede guar- clave es Astoria.
dar su contenido a XML (opcionalmente con un esquema Es una plataforma para que Microsoft llame a los servicios
XSD), o llenarse a s mismo desde un XML, haciendo esto de datos, es una combinacin del tiempo de ejecucin y un
excepcionalmente til para los servicios web, computacin servicio web a travs del cual los servicios se exponen. Ade-
distribuida, y aplicaciones ocasionalmente conectadas des- ms, tambin incluye el Data Services Toolkit que permite a
conectados. Astoria Data Services crearse desde dentro de ASP.NET. El
8.6. ENLACES EXTERNOS 17
Diagrama de clases
Diagrama de Clases
9.1.2 mbitos
Persona
+Nombre
+C.I
UML especica dos tipos de mbitos para los miembros:
instancias y clasicadores y estos ltimos se representan con
Trabajador Universidad Estudiante
+Fecha Inicio
1 *
+Nombre
+Ciudad
1
+Nombre
*
+C.I
nombres subrayados.
9.1 Miembros
9.2 Relaciones
UML proporciona mecanismos para representar los miem-
bros de la clase, como atributos y mtodos, as como infor- Una relacin es un trmino general que abarca los tipos es-
macin adicional sobre ellos. peccos de conexiones lgicas que se pueden encontrar
en los diagramas de clases y objetos. UML presenta las si-
guientes relaciones:
18
9.3. DIAGRAMAS 19
9.3 Diagramas
Una asociacin representa a una familia de enlaces. Una
asociacin binaria (entre dos clases) normalmente se repre-
El diagrama de clases puede tener como ejemplo: una
senta con una lnea contnua. Una misma asociacin puede
clase que seria un objeto o persona misma en la cual
relacionar cualquier nmero de clases. Una asociacin que
se especica cada accin y especicacin.
relacione tres clases se llama asociacin ternaria.
A una asociacin se le puede asignar un nombre, y en sus ex-
tremos se puede hacer indicaciones, como el rol que desem- Propiedades de objetos que tienen propiedades y/u
pea la asociacin, los nombres de las clases relacionadas, operaciones que contienen un contexto y un dominio,
su multiplicidad, su visibilidad, y otras propiedades. los primeros dos ejemplos son clases de datos y el ter-
Hay cuatro tipos diferentes de asociacin: bidireccional, cero clase de lgica de negocio, dependiendo de quin
unidireccional, agregacin (en la que se incluye la compo- disee el sistema se pueden unir los datos con las ope-
sicin) y reexiva. Las asociaciones unidireccional y bidi- raciones.
reccional son las ms comunes.
Por ejemplo, una clase vuelo se asocia con una clase avin El diagrama de clases incluye mucha ms informacin
de forma bidireccional. La asociacin representa la relacin como la relacin entre un objeto y otro, la herencia
esttica que comparten los objetos de ambas clases. de propiedades de otro objeto, conjuntos de operacio-
nes/propiedades que son implementadas para una in-
terfaz grca.
Agregacin
Presenta las clases del sistema con sus relaciones es-
tructurales y de herencia.
Professor 1 1..* Class
+ listOfStudents : list + Students : list
El diagrama de clases es la base para elaborar una ar-
quitectura MVC o MVP.
Ejemplo de diagrama de clases con una agregacin entre dos clases
(en ingls)
C Sharp
El ttulo de este artculo se muestra incorrectamen- Hejlsberg lider el proyecto de desarrollo de C#. Anterior-
te debido a limitaciones tcnicas. El ttulo correcto mente, ya haba participado en el desarrollo de otros len-
es C#. guajes como Turbo Pascal, Delphi y J++.
20
10.5. CONSTANTES 21
empezar por un smbolo, ni aunque sea una palabra 4. Si un operando es ulong, el otro operando se transfor-
clave. ma a ulong.
const double PI = 3.1415; Las instrucciones if-else, for, while, do-while, switch,
return, break, continue son, bsicamente, iguales que
readonly en C, C++ y Java.
A diferencia de const, no requiere que se asigne el valor al La instruccin foreach, al igual que en Java, realiza un
mismo tiempo que se declara. Pueden ser miembros de la ciclo a travs de los elementos de una matriz o colec-
instancia o miembros estticos de la clase (static). cin. En este ciclo se recorre la coleccin y la variable
recibe un elemento de dicha coleccin en cada itera-
readonly double E; E = 2.71828;
cin.
for (int i = 0; i < 10; i++) { // ... } Un mtodo debe tener como mximo un nico par-
metro params y ste debe ser el ltimo.
while
Un mtodo puede devolver cualquier tipo de dato, in-
while (i < 10) { // ... } cluyendo tipos de clase.
El mtodo Main es un mtodo especial al cual se reere int[,] intMultiArray = new int[3, 2]; // 3 las y 2 columnas
el punto de partida del programa.
Declarar e inicializar una matriz multidimensional (el ta-
ref mao de la matriz se puede omitir):
void PassRef(ref int x) { if (x == 2) { x = 10; } } int z = 0; int[,] intMultiArray = new int[,] { {1, 2}, {3, 4}, {5, 6} };
PassRef(ref z);
Acceder a un elemento de una matriz multidimensional:
out
intMultiArray[2, 0]; // Retornar el valor '5'
void PassOut(out int x) { x = 2; } int z; PassOut(out z);
Ms informacin en: Tutorial de matrices (C#) (en ingls).
params
int MaxVal(char c, params int[] nums) { // ... } int a =
1; MaxVal('a', 23, 3, a, 12); // El primer parmetro es 10.10 Clases y objetos
obligatorio, seguidamente se pueden poner tantos nmeros
enteros como se quiera Una variable de objeto de cierta clase no almacena los
valores del objeto sino su referencia (al igual que Java).
Sobrecarga de mtodos
El operador de asignacin no copia los valores de un
int Suma(int x, int y) { return x + y; } int Suma(int x, int y, objeto, sino la referencia al mismo (al igual que Java).
int z) { return x + y + z; } Suma(1, 2); // Llamar al primer
mtodo. Suma(1, 2, 3); // Llamar al segundo mtodo. Un constructor tiene el mismo nombre que su clase y
es sintcticamente similar a un mtodo.
Un mtodo static puede llamar slo a otros mtodos class Clase { } Clase c1 = new Clase(); Clase c2 = new
static. Clase(); bool b = c1 == c2; // Retornar 'false', ya que son
dos objetos distintos
Un mtodo static slo debe tener acceso directamente
a datos static.
class Clase { int i = 1; Clase() { this.Arrancar(); // Llamar string texto = Cadena de caracteres"; string texto = new
System.String(Cadena de caracteres); // Equivalente al
al mtodo 'Arrancar' del objeto } void Arrancar() { // ... }
} anterior
class Clase { static int i = 1; } Clase.i; // Retornar el valor string texto = Cadena de caracteres"; int i = texto.Length;
'1'. No hace falta crear un objeto, ya que al ser 'static', // Retornar '20'
pertenece a la clase.
Comparar dos cadenas:
operator: bool b = texto == texto"; // Retornar 'true', ya que
class Clase { static int operator +(int x, int y) { // Sobre- ambas cadenas contienen texto
carga el operador '+' // ... } static int operator -(int x, int
y) { // Sobrecarga el operador '-' // ... } static int operator Concatenar cadenas:
int(byte x) { // Sobrecarga la conversin de tipo 'byte' a string texto = Cadena de + " caracteres"; // Ntese el
'int' // ... } } espacio antes de caracteres, si no se pusiera, aparecera
junto: decaracteres
Comparacin de objetos:
10.12. EJEMPLOS 25
Delphi 2006, de Borland Software Corporation. Wikilibros alberga un libro o manual sobre C
sharp NET.
DotGNU Portable.NET, de la Free Software Founda-
tion. Gua de programacin de C#
Mtodos numricos en C#
10.14 Metas del diseo del lenguaje Programacin con C#
Inclusin de principios de ingeniera de software tales Geeks.ms Blogs sobre desarrolladores de la plataforma
como revisin estricta de los tipos de datos, revisin .NET y C#
de lmites de vectores, deteccin de intentos de usar Kit de desarrollo de software (SDK) de Microsoft
variables no inicializadas, y recoleccin de basura au- .NET Framework 2.0 (x86), (x64) e (IA64)
tomtica.
C# | WebProgramacin Artculos, ejemplos, fragmen-
Capacidad para desarrollar componentes de software tos de cdigo, etc.
que se puedan usar en ambientes distribuidos.
10.15 Referencias
[1] En ocasiones representado como 'C', donde el segundo ca-
rcter es un sostenido (sharp en ingls)
10.16.1 En castellano
Wikilibros
Captulo 11
Espacio de nombres
27
Captulo 12
28
12.3. MSDN MAGAZINE 29
relacionados con la diseo, desarrollo y prueba y/o la docu- den recibir las ediciones de principios de sistemas operati-
mentacin de proyectos de software como se indica en el vos de Microsoft u otros productos de Microsoft (las apli-
faq de licencia de MSDN. Como era de esperar, cualquier caciones Microsoft Oce, Visual Studio, etc.)
software creado con las herramientas de desarrollo (como Microsoft tambin ha acogido una serie de desarrolladores
Visual Studio), junto con los componentes en tiempo de eje- centrados en conferencias en su campus de Redmond, que
cucin necesarios para el aprovechamiento de ella, no se los suscriptores de MSDN el privilegio de. Dependiendo del
limita en modo alguno, ya sea por Microsoft, dicho softwa- tamao de la empresa y sus productos, estas conferencias
re pueden y regularmente se utiliza para la produccin de puede ser uno-a-uno y tener un solo foco.
negocios. El acuerdo de licencia se reere a varios otros te-
mas en la suscripcin y subvenciones adicionales similares Las universidades y escuelas secundarias pueden inscribir-
excepciones, segn corresponda. se en la MSDN Academic Alliance programa, que propor-
ciona acceso a algunos desarrolladores de software de Mi-
Un MSDN abonado tiene derecho a activar tantos ejem- crosoft para su ciencias de la computacin y estudiantes de
plares como sea necesario para su propio desarrollo. Por lo ingeniera (y posiblemente otros estudiantes o profesores
tanto, si un equipo entusiasta de alguna manera tiene 20 or- tambin). A MSDNAA cuenta no es una cuenta de MSDN
denadores en casa que utiliza el propio para el desarrollo y no puede utilizarse para el acceso del abonado la seccin
de software (y no estn actuando como parte de una em- de la pgina web de MSDN o de sus descargas.
presa, por ejemplo, una granja de servidores), una suscrip-
cin permite a todos los 20 de estos ordenadores a estar
ejecutndose su propia copia de Windows, Oce, y cual-
quier otro producto de Microsoft. Despus de unas pocas 12.3 MSDN Magazine
instalaciones, las claves de activacin se detendr permite
la activacin automtica del producto a travs de Internet, Microsoft proporciona el contenido editorial de MSDN
pero despus de una llamada telefnica a la Activacin de Magazine, una publicacin mensual. La revista fue creada
productos de lnea telefnica para conrmar que las instala- como una fusin entre el Microsoft Systems Journal (MSJ)
ciones son realmente legtimo y coherente con el acuerdo de y Microsoft Internet Developer (MIND) en revistas de mar-
licencia, las activaciones se conceden a travs del telfono.zo de 2000. MSJ los nmeros anteriores estn disponibles
en lnea. MSDN Magazine est disponible como una revista
A pesar de una suscripcin MSDN es sobre una base anual,
impresa en los Estados Unidos, y en lnea en 11 idiomas.
la licencia para el uso del software, segn el acuerdo, no
pongan n. El individuo solo no tiene derecho a cualquier
actualizacin despus de que el software ha caducado. Una
suscripcin MSDN tambin permite el acceso a programas 12.4 MSDN Blogs
informticos obsoletos de Microsoft en el pasado. Si bien
no estn incluidos en el ordinario de CD / DVD envos, los Adems de editar su contenido tcnico, el sitio web de
suscriptores pueden descargar el software de edad, como MSDN tambin contiene una serie de empleado blogs.
MS-DOS 5.0 y Windows 3.1 de MSDN Subscriber Down-
loads. Este software generalmente viene en forma de ISO,
o un disquete, los archivos de imagen que permiten que el 12.5 Siguiente versin
abonado pueda reproducir el original medios de instalacin
tras la descarga.
MSDN2 se abri en noviembre de 2004 como fuente pa-
ra Visual Studio 2005 API informacin, con notables dife-
rencias estn actualizando cdigo del sitio web, mejor se
12.2 Servicio de informacin ajusten a estndares web y, por tanto, dar una larga espe-
ra de una mejor alternativa de apoyo para los navegadores
web para Internet Explorer en la API navegador. En 2008,
La divisin se ejecuta un servicio de informacin proporcio- el grupo original de MSDN fue retirado y se convirti en
nada por Microsoft para los desarrolladores de software. Su MSDN2 msdn.microsoft.com
objetivo principal es de Microsoft.NET, sin embargo que
adems incluye artculos sobre aspectos tales como prcti-
cas de programacin y los patrones de diseo. Muchos re-
cursos estn disponibles gratuitamente en lnea, mientras 12.6 Enlaces externos
que otros estn disponibles por correo a travs de una sus-
cripcin. MSDN Home page
Dependiendo de nivel de suscripcin, los suscriptores pue- MSDN Blogs
30 CAPTULO 12. MICROSOFT DEVELOPER NETWORK
MSDN Events
MSDN Beta search
MSDN Magazine
MSDN Wiki beta (Visual Studio, .NET -related docu-
mentation and software drop site. No talk pages yet -
Comments are meant to go elsewhere, such as Channel
9.)
Captulo 13
MSDN Library
MSDN Library (Biblioteca de desarrollo de Microsoft, en vigente en ese momento o, a veces dos versiones de Visual
Espaol) es la biblioteca ocial de Microsoft con la docu- Studio. Adems, cada nueva versin de Visual Studio no se
mentacin tcnica dirigida a los desarrolladores de la pla- integra con una versin anterior de MSDN. Una Bibliote-
taforma Microsoft Windows. MSDN representa la red de ca compatibles MSDN se libera con cada nueva versin de
desarrolladores de Microsoft. Visual Studio e incluido en el DVD de Visual Studio. Medi-
La biblioteca contiene documentacin sobre el API utili- da que se lanzan nuevas versiones de Visual Studio, nuevas
ediciones de MSDN Library no se integran con las versio-
zado con los productos de Microsoft as como cdigo de
ejemplo, artculos tcnicos, y sugerencias de programacin. nes anteriores de Visual Studio y ni siquiera son de edad
y / o documentacin obsoleta para los productos obsoletos
MSDN Library est disponible en la web y en CD y DVD
para suscriptores de pago. Inicialmente, la versin fsica o suspender. MSDN Library versiones se puede instalar de
lado a lado, es decir, tanto los de ms edad, as como la
slo estaba disponible como parte de una suscripcin a
MSDN y actualizada de forma trimestral. Sin embargo, a versin ms reciente de MSDN Library, pueden co-existir.
partir del ao 2006 puede ser descargada gratuitamente des-
de el Centro de descarga de Microsoft en formato de imagen
ISO[1][2][3] y el CD/DVD ya no se publica trimestralmente. 13.2 Versiones
En su lugar, su publicacin coincide con las actualizaciones
de las versiones de software ms importantes (como Visual
Studio y la publicacin de Service Packs de Windows).[4] De octubre de 2001 MSDN Library es la ltima ver-
sin que incluye la documentacin y la integracin con
Desde mayo de 2006, Microsoft tambin ha empezado a
Visual Studio 6.0.[6]
producir gratuitamente una versin en CD de la comuni-
dad de MSDN Library disponible para su descarga como
imagen ISO tambin en su Centro de descargas, que slo La de enero de 2003 MSDN Library es la ltima ver-
contiene las actualizaciones de contenido. El formato fsi- sin que incluye la documentacin y la integracin con
co de la biblioteca de la comunidad de MSDN est dirigida Visual Studio. NET (2002).[6][7]
mayormente a desarrolladores de pases donde las conexio-
nes de banda ancha a Internet no estn disponibles.[5] La de enero de 2006 MSDN Library es la ltima ver-
sin que incluye la documentacin y la integracin con
La edicin de Visual Studio Express se distribuye slo con Visual Studio. NET 2003.[7]
la biblioteca de MSDN Express, que forma parte de la bi-
blioteca completa, aunque pueden ser descargada libremen-
De abril de 2007 MSDN Library fue la ltima versin
te e instalada independiente.
que incluye la documentacin y la integracin con Vi-
sual Studio 2005 (Service Pack 1).
13.1 La integracin con Visual Stu- La versin 2008 de enero y ms tarde para incluir
la documentacin y la integracin con Visual Studio
dio 2008.
Cada edicin de MSDN Library slo se puede acceder con La versin de noviembre de 2008 y ms tarde para
un visor de ayuda (Microsoft Document Explorer o el visor incluir la documentacin y la integracin con Visual
de ayudar a otros), que est integrado con la nica versin Studio 2008 SP1.[8]
31
32 CAPTULO 13. MSDN LIBRARY
13.4 Referencias
[1] Edicin de disco de MSDN Library ahora tambin libre
La programacin orientada a objetos o POO (OOP se- Los mtodos (comportamiento) y atributos (estado) es-
gn sus siglas en ingls) es un paradigma de programa- tn estrechamente relacionados por la propiedad de conjun-
cin que usa objetos en sus interacciones, para disear to. Esta propiedad destaca que una clase requiere de mto-
aplicaciones y programas informticos. Est basado en va- dos para poder tratar los atributos con los que cuenta. El
rias tcnicas, incluyendo herencia, cohesin, abstraccin, programador debe pensar indistintamente en ambos con-
polimorsmo, acoplamiento y encapsulamiento. Su uso se ceptos, sin separar ni darle mayor importancia a alguno de
populariz a principios de la dcada de los aos 1990. En ellos. Hacerlo podra producir el hbito errneo de crear
la actualidad, existe una gran variedad de lenguajes de pro- clases contenedoras de informacin por un lado y clases con
gramacin que soportan la orientacin a objeto. mtodos que manejen a las primeras por el otro. De esta
manera se estara realizando una programacin estructu-
rada camuada en un lenguaje de programacin orientado
a objetos.
14.1 Introduccin
La POO diere de la programacin estructurada tradicio-
nal, en la que los datos y los procedimientos estn separados
Los objetos son entidades que tienen un determinado esta-
y sin relacin, ya que lo nico que se busca es el procesa-
do, comportamiento (mtodo) e identidad:
miento de unos datos de entrada para obtener otros de sali-
da. La programacin estructurada anima al programador a
El estado est compuesto de datos o informaciones; se- pensar sobre todo en trminos de procedimientos o funcio-
rn uno o varios atributos a los que se habrn asignado nes, y en segundo lugar en las estructuras de datos que esos
unos valores concretos (datos). procedimientos manejan. En la programacin estructurada
solo se escriben funciones que procesan datos. Los progra-
El comportamiento est denido por los mtodos o madores que emplean programacin orientada a objetos, en
mensajes a los que sabe responder dicho objeto, es de- cambio, primero denen objetos para luego enviarles men-
cir, qu operaciones se pueden realizar con l. sajes solicitndoles que realicen sus mtodos por s mismos.
33
34 CAPTULO 14. PROGRAMACIN ORIENTADA A OBJETOS
escrita sobre Basic) pero diseado para ser un sistema com- Los componentes registrados como privados (priva-
pletamente dinmico en el cual los objetos se podran crear te) tambin se heredan, pero como no pertenecen a la
y modicar sobre la marcha (en tiempo de ejecucin) en clase, se mantienen escondidos al programador y slo
lugar de tener un sistema basado en programas estticos. pueden ser accedidos a travs de otros mtodos pbli-
La programacin orientada a objetos se fue convirtiendo en cos. Esto es as para mantener hegemnico el ideal de
el estilo de programacin dominante a mediados de los aos POO.
ochenta, en gran parte debido a la inuencia de C++, una Objeto Instancia de una clase. Entidad provista de un con-
extensin del lenguaje de programacin C. Su dominacin junto de propiedades o atributos (datos) y de com-
fue consolidada gracias al auge de las Interfaces grcas de portamiento o funcionalidad (mtodos), los mismos
usuario, para las cuales la programacin orientada a objetos que consecuentemente reaccionan a eventos. Se co-
est particularmente bien adaptada. En este caso, se habla rresponden con los objetos reales del mundo que nos
tambin de programacin dirigida por eventos. rodea, o con objetos internos del sistema (del progra-
Las caractersticas de orientacin a objetos fueron agrega- ma). Es una instancia a una clase.
das a muchos lenguajes existentes durante ese tiempo, in-
cluyendo Ada, BASIC, Lisp ms Pascal, entre otros. La adi- Mtodo Algoritmo asociado a un objeto (o a una clase de
cin de estas caractersticas a los lenguajes que no fueron objetos), cuya ejecucin se desencadena tras la recep-
diseados inicialmente para ellas condujo a menudo a pro- cin de un mensaje. Desde el punto de vista del com-
blemas de compatibilidad y en la capacidad de manteni- portamiento, es lo que el objeto puede hacer. Un m-
miento del cdigo. Los lenguajes orientados a objetos pu- todo puede producir un cambio en las propiedades del
ros, por su parte, carecan de las caractersticas de las cua- objeto, o la generacin de un evento con un nuevo
les muchos programadores haban venido a depender. Pa- mensaje para otro objeto del sistema.
ra saltar este obstculo, se hicieron muchas tentativas para
crear nuevos lenguajes basados en mtodos orientados a ob- Evento Es un suceso en el sistema (tal como una interac-
jetos, pero permitiendo algunas caractersticas imperativas cin del usuario con la mquina, o un mensaje enviado
de maneras seguras. El Eiel de Bertrand Meyer fue un por un objeto). El sistema maneja el evento enviando
temprano y moderadamente acertado lenguaje con esos ob- el mensaje adecuado al objeto pertinente. Tambin se
jetivos, pero ahora ha sido esencialmente reemplazado por puede denir como evento la reaccin que puede des-
Java, en gran parte debido a la aparicin de Internet y a la encadenar un objeto; es decir, la accin que genera.
implementacin de la mquina virtual de Java en la mayora
Atributos Caractersticas que tiene la clase.
de navegadores. PHP en su versin 5 se ha modicado; so-
porta una orientacin completa a objetos, cumpliendo todas Mensaje Una comunicacin dirigida a un objeto, que le
las caractersticas propias de la orientacin a objetos. ordena que ejecute uno de sus mtodos con ciertos pa-
rmetros asociados al evento que lo gener.
En comparacin con un lenguaje imperativo, una varia- objeto pueden acceder a su estado. Esto asegura que
ble no es ms que un contenedor interno del atributo del otros objetos no puedan cambiar el estado interno de
objeto o de un estado interno, as como la funcin es un un objeto de manera inesperada, eliminando efectos
procedimiento interno del mtodo del objeto. secundarios e interacciones inesperadas. Algunos len-
guajes relajan esto, permitiendo un acceso directo a
los datos internos del objeto de una manera controla-
14.4 Caractersticas de la POO da y limitando el grado de abstraccin. La aplicacin
entera se reduce a un agregado o rompecabezas de ob-
jetos.
Existe un acuerdo acerca de qu caractersticas contempla
la orientacin a objetos. Las caractersticas siguientes son Polimorsmo Comportamientos diferentes, asociados a
las ms importantes: objetos distintos, pueden compartir el mismo nombre;
al llamarlos por ese nombre se utilizar el comporta-
Abstraccin Denota las caractersticas esenciales de un miento correspondiente al objeto que se est usando.
objeto, donde se capturan sus comportamientos. Cada O, dicho de otro modo, las referencias y las coleccio-
objeto en el sistema sirve como modelo de un agente nes de objetos pueden contener objetos de diferentes
abstracto que puede realizar trabajo, informar y cam- tipos, y la invocacin de un comportamiento en una
biar su estado, y comunicarse con otros objetos en el referencia producir el comportamiento correcto para
sistema sin revelar cmo se implementan estas carac- el tipo real del objeto referenciado. Cuando esto ocu-
tersticas. Los procesos, las funciones o los mtodos rre en tiempo de ejecucin, esta ltima caractersti-
pueden tambin ser abstrados, y, cuando lo estn, una ca se llama asignacin tarda o asignacin dinmica.
variedad de tcnicas son requeridas para ampliar una Algunos lenguajes proporcionan medios ms estticos
abstraccin. El proceso de abstraccin permite selec- (en tiempo de compilacin) de polimorsmo, tales
cionar las caractersticas relevantes dentro de un con- como las plantillas y la sobrecarga de operadores de
junto e identicar comportamientos comunes para de- C++.
nir nuevos tipos de entidades en el mundo real. La
Herencia Las clases no se encuentran aisladas, sino que
abstraccin es clave en el proceso de anlisis y dise-
se relacionan entre s, formando una jerarqua de cla-
o orientado a objetos, ya que mediante ella podemos
sicacin. Los objetos heredan las propiedades y el
llegar a armar un conjunto de clases que permitan mo-
comportamiento de todas las clases a las que pertene-
delar la realidad o el problema que se quiere atacar.
cen. La herencia organiza y facilita el polimorsmo y
Encapsulamiento Signica reunir todos los elementos que el encapsulamiento, permitiendo a los objetos ser de-
pueden considerarse pertenecientes a una misma enti- nidos y creados como tipos especializados de objetos
dad, al mismo nivel de abstraccin. Esto permite au- preexistentes. Estos pueden compartir (y extender) su
mentar la cohesin de los componentes del sistema. comportamiento sin tener que volver a implementarlo.
Algunos autores confunden este concepto con el prin- Esto suele hacerse habitualmente agrupando los obje-
cipio de ocultacin, principalmente porque se suelen tos en clases y estas en rboles o enrejados que reejan
emplear conjuntamente. un comportamiento comn. Cuando un objeto hereda
de ms de una clase se dice que hay herencia mltiple;
Modularidad Se denomina modularidad a la propiedad siendo de alta complejidad tcnica por lo cual suele re-
que permite subdividir una aplicacin en partes ms currirse a la herencia virtual para evitar la duplicacin
pequeas (llamadas mdulos), cada una de las cuales de datos.
debe ser tan independiente como sea posible de la apli-
cacin en s y de las restantes partes. Estos mdulos se Recoleccin de basura La recoleccin de basura o garba-
pueden compilar por separado, pero tienen conexiones ge collection es la tcnica por la cual el entorno de ob-
con otros mdulos. Al igual que la encapsulacin, los jetos se encarga de destruir automticamente, y por
lenguajes soportan la modularidad de diversas formas. tanto desvincular la memoria asociada, los objetos que
hayan quedado sin ninguna referencia a ellos. Esto sig-
Principio de ocultacin Cada objeto est aislado del ex- nica que el programador no debe preocuparse por la
terior, es un mdulo natural, y cada tipo de objeto ex- asignacin o liberacin de memoria, ya que el entorno
pone una interfaz a otros objetos que especica cmo la asignar al crear un nuevo objeto y la liberar cuan-
pueden interactuar con los objetos de la clase. El aisla- do nadie lo est usando. En la mayora de los lenguajes
miento protege a las propiedades de un objeto contra hbridos que se extendieron para soportar el Paradig-
su modicacin por quien no tenga derecho a acce- ma de Programacin Orientada a Objetos como C++
der a ellas; solamente los propios mtodos internos del u Object Pascal, esta caracterstica no existe y la me-
36 CAPTULO 14. PROGRAMACIN ORIENTADA A OBJETOS
Harbour
14.5 Resumen Eiel
Oz
14.6 Algunos lenguajes orientados a
objetos R
ActionScript 3 Vala
Ada VB.NET
C++ Visual FoxPro[7]
C#
Visual Basic 6.0
Clarion
Visual DataFlex
Clipper[1]
Visual Objects
D
XBase++
Object Pascal (Embarcadero Delphi)
GObject Scala[8]
14.9. ENLACES EXTERNOS 37
[3] en castellano
[7] en su versin 6
Pedrovicenterosero, Damosu, Adryitan, Amgc56, RedBot, Neres, Abece, Patriciocs, PatruBOT, KamikazeBot, Dinamik-bot, TjBot, Edslov,
EmausBot, Savh, ZroBot, ChessBOT, Eldavan, UnRar, Jcaraballo, Ruos, Xerox 5B, Rezabot, MerlIwBot, KLBot2, AbelNightroad26, Avic-
Bot, MetroBot, Invadibot, Sergiohs, Vetranio, Sophihurtado, TheDonWea, Flashlack, Addbot, Giliofelix, Yantime y Annimos: 197
Espacio de nombres Fuente: https://es.wikipedia.org/wiki/Espacio_de_nombres?oldid=77347696 Colaboradores: Chobot, Escarbot, Jorgeola-
ya, Caliver, Idioma-bot, Pavelancka, Biasoli, Muro Bot, Bigsus-bot, Fanattiq, AVBOT, EmausBot, Sergio Andres Segovia, MerlIwBot, Zerabat,
Addbot y Annimos: 8
Microsoft Developer Network Fuente: https://es.wikipedia.org/wiki/Microsoft_Developer_Network?oldid=79950353 Colaboradores: Cho-
bot, Oscar ., BOTijo, The Photographer, CEM-bot, Roberpl, Thijs!bot, Locovich, TXiKiBoT, Marvelshine, Biasoli, Shooke, Muro Bot, Ga-
briellocutor, Pan con queso, Ssigfrrido, Rge, LucienBOT, Luckas-bot, Boto a Boto, Ptbotgourou, DiegoFb, ArthurBot, Rubinbot, Hprmedina,
Misamisa1, EmausBot, Allforrous, MerlIwBot, KLBot2, Jarould y Annimos: 9
MSDN Library Fuente: https://es.wikipedia.org/wiki/MSDN_Library?oldid=66864358 Colaboradores: Cidfadon, Aungari, LucienBOT,
Luckas-bot, Nachosan, EmausBot y KLBot2
Programacin orientada a objetos Fuente: https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos?oldid=83206425 Cola-
boradores: AstroNomo, Andre Engels, Moriel, Sauron, Pieter, Hashar, ManuelGR, Robbot, Raul2010~eswiki, Angus, Caravena, Vivero, Co-
mae, Rosarino, Dodo, Crescent Moon, Ascnder, Sms, Elwikipedista, Tano4595, Barcex, JavierCantero, Jecanre, Ivan.Romero, MatiasBellone,
Identy, Niqueco, SergioVares, Soulreaper, Joji, Airunp, Nulain, Alejolp, JMPerez, Taichi, Rembiapo pohyiete (bot), El Padrino, Dem, Fun-
in, Josuemb, Murven, Byj2000, Alhen, Superzerocool, Yrbot, Vitamine, BOTijo, YurikBot, Icvav, GermanX, ZeruGiran, KnightRider, The
Photographer, Edwardcetera, Jesuja, Txo, Otermin, Lasneyx, Spc, Tomatejc, Aleator, Jstitch, BOTpolicia, l, Manawo, Chguer, CEM-bot,
Jorgelrm, Tute, Laura Fiorucci, Mariano12 1989, X.Cyclop, Anonimato1990, Antur, Montgomery, Alvaro qc, PabloCastellano, Mahadeva,
Yeza, JoaquinFerrero, IrwinSantos, Kavanagh, Cratn, Isha, Egaida, Mpeinadopa, JAnDbot, Kved, Mansoncc, Muro de Aguas, TXiKiBoT, Su-
perJoe, Anthemfor182, Bot-Schafter, Humberto, Netito777, Xsm34, Sirpuppet, Idioma-bot, Plux, Jmvkrecords, Developer, Biasoli, Cinevoro,
VolkovBot, Technopat, Queninosta, Nesita02, Erl, Penguino, Matdrodes, FJJW, Etnas, Carocbax, DJ Nietzsche, Muro Bot, Edmenb, Othe-
rox, Dj Merlin, Soynatan, SieBot, ESTEBAN ESPINOZA, Carmin, Mel 23, Manw, Pascow, Pedro Felipe, Aleposta, Tirithel, Locos epraix,
Ing moi, Javierito92, Marcecoro, HUB, Nicop, DragonBot, Lentucky, Farisori, Estirabot, Tosin2627, Eduardosalg, Leonpolanco, Pan con que-
so, Pablo323, Cosmox, Furti, Poco a poco, Tonchizerodos, Alexbot, Darkicebot, Serser, Prision3ro, BodhisattvaBot, Raulshc, Aipni-Lovrij,
SilvonenBot, Camilo, UA31, Abajo estaba el pez, AVBOT, David0811, Angel GN, MarcoAurelio, Carok, Diegusjaimes, DumZiBoT, Cars-
racBot, HerculeBot, Arjuno3, Juvalen, Andreasmperu, Luckas-bot, Spirit-Black-Wikipedista, Yonidebot, ArthurBot, Milyka, SuperBraulio13,
Xqbot, Jkbw, Dreitmen, Leonardo Tadei, Pedrovicenterosero, FrescoBot, Ricardogpn, Metronomo, Botarel, BOTirithel, Hprmedina, Halfdrag,
Bitman28, Marsal20, Vubo, Maaksz2, El mago de la Wiki, PatruBOT, Dinamik-bot, LilyKitty, TjBot, Akira 999, Foundling, EmausBot, Sergio
Andres Segovia, Africanus, Superbenja, J053d, Minirobots, Wrdhat, Emiduronte, MadriCR, Waka Waka, Penavarro09, Tokvo, MerlIwBot,
Raymonddoyle, MetroBot, Bibliolotranstornado, DLeandroc, Helmy oved, Syum90, Lautaro 97, Josefergui, Lamauro, Jean70000, Addbot,
Balles2601, Jmas131, Machado Ortiz, DarkBlueZV, Jlopezsilva, Jarould, Matiia, DavidBorjaM, Vivi bos y Annimos: 617
14.10.2 Imgenes
Archivo:Common_Language_Runtime_diagram.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/a/af/Common_Language_
Runtime_diagram.svg Licencia: CC-BY-SA-3.0 Colaboradores: Trabajo propio, based on ASCII diagram found at Wikipedia:en:Common Lan-
guage Runtime Artista original: Leif Arne Storset
Archivo:Commons-emblem-question_book_orange.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/1/1f/
Commons-emblem-question_book_orange.svg Licencia: CC BY-SA 3.0 Colaboradores: <a href='//commons.wikimedia.
org/wiki/File:Commons-emblem-issue.svg' class='image'><img alt='Commons-emblem-issue.svg' src='//upload.wikimedia.org/
wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/25px-Commons-emblem-issue.svg.png' width='25' height='25'
srcset='//upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/38px-Commons-emblem-issue.svg.png
1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/50px-Commons-emblem-issue.svg.png 2x'
data-le-width='48' data-le-height='48' /></a> + <a href='//commons.wikimedia.org/wiki/File:Question_book.svg' class='image'><img
alt='Question book.svg' src='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/25px-Question_book.svg.png'
width='25' height='20' srcset='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/38px-Question_book.svg.png
1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/50px-Question_book.svg.png 2x' data-le-width='252'
data-le-height='199' /></a> Artista original: GNOME icon artists, Jorge 2701
Archivo:Commons-logo.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg Licencia: Public domain Co-
laboradores: This version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions used to be slightly
warped.) Artista original: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier PNG version, created by Reidab.
Archivo:Diagrama_CLR.jpg Fuente: https://upload.wikimedia.org/wikipedia/commons/9/99/Diagrama_CLR.jpg Licencia: CC BY-SA 2.5-
2.0-1.0 Colaboradores: ? Artista original: ?
Archivo:Diagrama_Interno_CLR.jpg Fuente: https://upload.wikimedia.org/wikipedia/commons/d/df/Diagrama_Interno_CLR.jpg Licencia:
CC BY-SA 2.5-2.0-1.0 Colaboradores: ? Artista original: ?
Archivo:Diagrama_de_Clases.png Fuente: https://upload.wikimedia.org/wikipedia/commons/6/6d/Diagrama_de_Clases.png Licencia: CC0
Colaboradores: Trabajo propio Artista original: The Photographer
Archivo:Diagrama_de_clases.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/2/24/Diagrama_de_clases.svg Licencia: CC BY-
SA 3.0 Colaboradores: Trabajo propio Artista original: The Photographer
Archivo:DotNet3.0.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/4/49/DotNet3.0.svg Licencia: CC-BY-SA-3.0 Colaborado-
res: Transferred from en.wikipedia Artista original: Original uploader was Surachit at en.wikipedia Later version(s) were uploaded by Soumyasch
at en.wikipedia.
40 CAPTULO 14. PROGRAMACIN ORIENTADA A OBJETOS