Sie sind auf Seite 1von 7

public: Puede ser accedido desde cualquier cdigo.

protected: Desde una clase slo puede accederse a miembros protected de


objetos de esa misma clase o de subclases suyas. As, en el siguiente cdigo las
instrucciones comentadas con // Error no son vlidas por lo escrito junto a ellas
private: Slo puede ser accedido desde el cdigo de la clase a la que
pertenece. Es lo considerado por defecto.
internal: Slo puede ser accedido desde cdigo perteneciente al ensamblado en
que se ha definido.
protected internal: Slo puede ser accedido desde cdigo perteneciente al
ensamblado en que se ha definido o desde clases que deriven de la clase
donde se ha definido.
Conceptos de clase y objeto
C# es un lenguaje orientado a objetos puro[6], lo que significa que todo con lo que
vamos a trabajar en este lenguaje son objetos. Un objeto es un agregado de datos y de
mtodos que permiten manipular dichos datos, y un programa en C# no es ms que un
conjunto de objetos que interaccionan unos con otros a travs de sus mtodos.
Una clase es la definicin de las caractersticas concretas de un determinado tipo de
objetos. Es decir, de cules son los datos y los mtodos de los que van a disponer todos
los objetos de ese tipo. Por esta razn, se suele decir que el tipo de dato de un objeto es
la clase que define las caractersticas del mismo[7].
Sintaxis de definicin de clases
La sintaxis bsica para definir una clase es la que a continuacin se muestra:

class <nombreClase>
{
<miembros>
}
Campos: Un campo es un dato comn a todos los objetos de una determinada clase.
Para definir cules son los campos de los que una clase dispone se usa la siguiente
sintaxis dentro de la zona sealada como <miembros> en la definicin de la misma:

<tipoCampo> <nombreCampo>;
A continuacin se muestra un ejemplo de definicin de una clase de nombre Persona
que dispone de tres campos:

class Persona
{
string Nombre;// Campo de cada objeto Persona que almacena su nombre
int Edad; // Campo de cada objeto Persona que almacena su edad
string NIF; // Campo de cada objeto Persona que almacena su NIF
}
Metodos:Un mtodo es un conjunto de instrucciones a las que se les asocia un nombre
de modo que si se desea ejecutarlas basta referenciarlas a travs de dicho nombre en vez
de tener que escribirlas. Dentro de estas instrucciones es posible acceder con total
libertad a la informacin almacenada en los campos pertenecientes a la clase dentro de
la que el mtodo se ha definido, por lo que como al principio del tema se indic, los
mtodos permiten manipular los datos almacenados en los objetos.
Creacin de objetos
Operador new
Ahora que ya sabemos cmo definir las clases de objetos que podremos usar en nuestras
aplicaciones ha llegado el momento de explicar cmo crear objetos de una determinada
clase. Algo de ello ya se introdujo en el Tema 4: Aspectos Lxicos cuando se coment
la utilidad del operador new, que precisamente es crear objetos y cuya sintaxis es:

new <nombreTipo>(<parametros>)
Constructor por defecto
No es obligatorio definir un constructor para cada clase, y en caso de que no definamos
ninguno el compilador crear uno por nosotros sin parmetros ni instrucciones. Es decir,
como si se hubiese definido de esta forma:

<nombreTipo>(){}
Concepto de herencia
El mecanismo de herencia es uno de los pilares fundamentales en los que se basa la
programacin orientada a objetos. Es un mecanismo que permite definir nuevas clases a
partir de otras ya definidas de modo que si en la definicin de una clase indicamos que
sta deriva de otra, entonces la primera -a la que se le suele llamar clase hija- ser
tratada por el compilador automticamente como si su definicin incluyese la definicin
de la segunda a la que se le suele llamar clase padre o clase base. Las clases que
derivan de otras se definen usando la siguiente sintaxis:

class <nombreHija>:<nombrePadre>
{
<miembrosHija>
}
Mtodos virtuales
Ya hemos visto que es posible definir tipos cuyos mtodos se hereden de definiciones
de otros tipos. Lo que ahora vamos a ver es que adems es posible cambiar dichar
definicin en la clase hija, para lo que habra que haber precedido con la palabra
reservada virtual la definicin de dicho mtodo en la clase padre. A este tipo de
mtodos se les llama mtodos virtuales, y la sintaxis que se usa para definirlos es la
siguiente:

virtual <tipoDevuelto> <nombreMtodo>(<parmetros>)
{
<cdigo>
}


Clases abstractas
Una clase abstracta es aquella que forzosamente se ha de derivar si se desea que se
puedan crear objetos de la misma o acceder a sus miembros estticos (esto ltimo se
ver ms adelante en este mismo tema) Para definir una clase abstracta se antepone
abstract a su definicin, como se muestra en el siguiente ejemplo:

public abstract class A
{
public abstract void F();
}
abstract public class B: A
{
public void G() {}
}
class C: B
{
public override void F(){}
}
Polimorfismo
Concepto de polimorfismo
El polimorfismo es otro de los pilares fundamentales de la programacin orientada a
objetos. Es la capacidad de almacenar objetos de un determinado tipo en variables de
tipos antecesores del primero a costa, claro est, de slo poderse acceder a travs de
dicha variable a los miembros comunes a ambos tipos. Sin embargo, las versiones de los
mtodos virtuales a las que se llamara a travs de esas variables no seran las definidas
como miembros del tipo de dichas variables, sino las definidas en el verdadero tipo de
los objetos que almacenan.
A continuacin se muestra un ejemplo de cmo una variable de tipo Persona puede
usarse para almacenar objetos de tipo Trabajador. En esos casos el campo Sueldo del
objeto referenciado por la variable no ser accesible, y la versin del mtodo
Cumpleaos() a la que se podra llamar a travs de la variable de tipo Persona sera la
definida en la clase Trabajador, y no la definida en Persona:
Encapsulacin
Ya hemos visto que la herencia y el polimorfismo eran dos de los pilares
fundamentales en los que es apoya la programacin orientada a objetos. Pues bien, el
tercero y ltimo es la encapsulacin, que es un mecanismo que permite a los
diseadores de tipos de datos determinar qu miembros de los tipos creen pueden ser
utilizados por otros programadores y cules no. Las principales ventajas que ello aporta
son:
Se facilita a los programadores que vaya a usar el tipo de dato (programadores clientes)
el aprendizaje de cmo trabajar con l, pues se le pueden ocultar todos los detalles
relativos a su implementacin interna y slo dejarle visibles aquellos que puedan usar
con seguridad. Adems, as se les evita que cometan errores por manipular
inadecuadamente miembros que no deberan tocar.
Se facilita al creador del tipo la posterior modificacin del mismo, pues si los
programadores clientes no pueden acceder a los miembros no visibles, sus aplicaciones
no se vern afectadas si stos cambian o se eliminan. Gracias a esto es posible crear
inicialmente tipos de datos con un diseo sencillo aunque poco eficiente, y si
posteriormente es necesario modificarlos para aumentar su eficiencia, ello puede
hacerse sin afectar al cdigo escrito en base a la no mejorada de tipo.
Concepto de mtodo
Un mtodo es un conjunto de instrucciones a las que se les da un determinado nombre
de tal manera que sea posible ejecutarlas en cualquier momento sin tenerlas que
rescribir sino usando slo su nombre. A estas instrucciones se les denomina cuerpo del
mtodo, y a su ejecucin a travs de su nombre se le denomina llamada al mtodo.
Constructores
Concepto de constructores
Los constructores de un tipo de datos son mtodos especiales que se definen como
miembros de ste y que contienen cdigo a ejecutar cada vez que se cree un objeto de
ese tipo. ste cdigo suele usarse para labores de inicializacin de los campos del objeto
a crear, sobre todo cuando el valor de stos no es constante o incluye acciones ms all
de una asignacin de valor (aperturas de ficheros, accesos a redes, etc.)
Hay que tener en cuenta que la ejecucin del constructor siempre se realiza despus de
haberse inicializado todos los campos del objeto, ya sea con los valores iniciales que se
hubiesen especificado en su definicin o dejndolos con el valor por defecto de su tipo.
Aparte de su especial sintaxis de definicin, los constructores y los mtodos normales
tienen una diferencia muy importante: los constructores no se heredan.
Definicin de constructores
La sintaxis bsica de definicin de constructores consiste en definirlos como cualquier
otro mtodo pero dndoles el mismo nombre que el tipo de dato al que pertenecen y no
indicando el tipo de valor de retorno debido a que nunca pueden devolver nada. Es
decir, se usa la sintaxis:

<modificadores> <nombreTipo>(<parmetros>)
{
<cdigo>
}
Destructores
Al igual que es posible definir mtodos constructores que incluyan cdigo que gestione
la creacin de objetos de un tipo de dato, tambin es posible definir un destructor que
gestione cmo se destruyen los objetos de ese tipo de dato. Este mtodo suele ser til
para liberar recursos tales como los ficheros o las conexiones de redes abiertas que el
objeto a destruir estuviese acaparando en el momento en que se fuese a destruir.
La destruccin de un objeto es realizada por el recolector de basura cuando realiza una
recoleccin de basura y detecta que no existen referencias a ese objeto ni en pila, ni en
registros ni desde otros objetos s referenciados. Las recolecciones se inician
automticamente cuando el recolector detecta que queda poca memoria libre o que se va
a finalizar la ejecucin de la aplicacin, aunque tambin puede forzarse llamando al
mtodo Collect() de la clase System.GC
La sintaxis que se usa para definir un destructor es la siguiente:

~<nombreTipo>()
{
<cdigo>
}
Atributos
Un atributo es informacin que se puede aadir a los metadatos de un mdulo de
cdigo. Esta informacin puede ser referente tanto al propio mdulo o el ensamblado al
que pertenezca como a los tipos de datos definidos en l, sus miembros, los parmetros
de sus mtodos, los bloques set y get de sus propiedades e indizadores o los bloques
add y remove de sus eventos.
En C# se incluyen numerosos modificadores que nos permiten asociar informacin a los
metadatos de un mdulo. Por ejemplo, con los modificadores public, protected,
private, internal o protected internal podemos aadir informacin sobre la visibilidad
de los tipos del mdulo y de sus miembros. Pues bien, los atributos pueden verse como
un mecanismo mediante el cual el programador puede crear sus propios modificadores.
Los parmetros de un atributo pueden ser de dos tipos:
Parmetros sin nombre: Se usan de forma similar a los parmetros de los
mtodos, slo que no pueden contar con modificadores ref u out.
Parmetros con nombre: Son opcionales y pueden colocarse en cualquier
posicin en la lista de <parmetros> del atributo. Lo ltimo se debe a que para
darles valor se usa la sintaxis <nombreParmetro>=<valor>, con lo el
compilador no depender de la posicin en que se les pasen los valores para
determinar a qu parmetro se le est dando cada valor, sino que recibe explcita
su nombre.


Caractersticas de C#
Con la idea de que los programadores ms experimentados puedan obtener una visin
general del lenguaje, a continuacin se recoge de manera resumida las principales
caractersticas de C# Alguna de las caractersticas aqu sealadas no son exactamente
propias del lenguaje sino de la plataforma .NET en general, y si aqu se comentan es
porque tienen una repercusin directa en el lenguaje:
Sencillez: C# elimina muchos elementos que otros lenguajes incluyen y que son
innecesarios en .NET. Por ejemplo:
o El cdigo escrito en C# es autocontenido, lo que significa que no
necesita de ficheros adicionales al propio fuente tales como ficheros de
cabecera o ficheros IDL
o El tamao de los tipos de datos bsicos es fijo e independiente del
compilador, sistema operativo o mquina para quienes se compile (no
como en C++), lo que facilita la portabilidad del cdigo.
o No se incluyen elementos poco tiles de lenguajes como C++ tales como
macros, herencia mltiple o la necesidad de un operador diferente del
punto (.) acceder a miembros de espacios de nombres (::)
Modernidad: C# incorpora en el propio lenguaje elementos que a lo largo de
los aos ha ido demostrndose son muy tiles para el desarrollo de aplicaciones
y que en otros lenguajes como Java o C++ hay que simular, como un tipo bsico
decimal que permita realizar operaciones de alta precisin con reales de 128 bits
(muy til en el mundo financiero), la inclusin de una instruccin foreach que
permita recorrer colecciones con facilidad y es ampliable a tipos definidos por el
usuario, la inclusin de un tipo bsico string para representar cadenas o la
distincin de un tipo bool especfico para representar valores lgicos.
Orientacin a objetos: Como todo lenguaje de programacin de propsito
general actual, C# es un lenguaje orientado a objetos, aunque eso es ms bien
una caracterstica del CTS que de C#. Una diferencia de este enfoque orientado a
objetos respecto al de otros lenguajes como C++ es que el de C# es ms puro en
tanto que no admiten ni funciones ni variables globales sino que todo el cdigo y
datos han de definirse dentro de definiciones de tipos de datos, lo que reduce
problemas por conflictos de nombres y facilita la legibilidad del cdigo.

C# soporta todas las caractersticas propias del paradigma de programacin
orientada a objetos: encapsulacin, herencia y polimorfismo.

En lo referente a la encapsulacin es importante sealar que aparte de los tpicos
modificadores public, private y protected, C# aade un cuarto modificador
llamado internal, que puede combinarse con protected e indica que al elemento
a cuya definicin precede slo puede accederse desde su mismo ensamblado.


Rangos
Tipo Descripcin Bits Rango de valores Alias
SByte Bytes con signo 8 -128 127 sbyte
Byte Bytes sin signo 8 0 255 byte
Int16
Enteros cortos con signo 16
[-32.768, 32.767]
short
UInt16 Enteros cortos sin signo 16 [0, 65.535] ushort
Int32 Enteros normales 32 [-2.147.483.648, 2.147.483.647] int
UInt32 Enteros normales sin signo 32 [0, 4.294.967.295] uint
Int64
Enteros largos 64
[-9.223.372.036.854.775.808,
9.223.372.036.854.775.807]
long
UInt64 Enteros largos sin signo 64 [0-18.446.744.073.709.551.615] ulong
Single Reales con 7 dgitos de precisin 32 [1,510
-45
- 3,410
38
] float
Double Reales de 15-16 dgitos de precisin 64 [5,010
-324
- 1,710
308
] double
Decimal Reales de 28-29 dgitos de precisin 128 [1,010
-28
- 7,910
28
] decimal
Boolean Valores lgicos 32 true, false bool
Char Caracteres Unicode 16 [\u0000, \uFFFF] char
String Cadenas de caracteres Variable El permitido por la memoria string
Object Cualquier objeto Variable Cualquier objeto object

Das könnte Ihnen auch gefallen