OOP en C# y Excepciones Parte 1
-
Upload
carlos-rojas-zapata -
Category
Documents
-
view
19 -
download
3
Transcript of OOP en C# y Excepciones Parte 1
-
Escuela de Informtica y Telecomunicaciones
Programacin .Net Clases y Bibliotecas
En esta gua:
Objetos y Clases ............................................................................................................ 1
Objetos ...................................................................................................................... 1
Clases ........................................................................................................................ 2
Declarar clases ............................................................................................................................. 2
Crear objetos ............................................................................................................................... 4
Propiedades ................................................................................................................................. 6
Mtodos ...................................................................................................................................... 7
Namespace (Espacio de nombres) .................................................................................. 8
Bibliotecas de Clases o Librera .................................................................................... 10
-
Escuela de Informtica y Telecomunicaciones
Pgina 1
Objetos y Clases C# es un lenguaje de programacin orientado a objetos que utiliza clases y estructuras para implementar
tipos como formularios Web Forms, controles de interfaz de usuario y estructuras de datos. Una aplicacin
de C# tpica se compone de clases definidas por el programador, junto con clases de .NET Framework.
C# ofrece varias maneras eficaces de definir clases, por ejemplo, proporcionar niveles de acceso diferentes,
heredar caractersticas de otras clases y permitir que el programador especifique qu sucede cuando se
crean o destruyen instancias de tipos.
Las clases tambin se pueden definir como genricas mediante la utilizacin de parmetros de tipo que
permiten que el cdigo de cliente personalice la clase de una manera eficiente y con seguridad de tipos. Una
clase genrica nica, por ejemplo System.Collections.Generic.List en la biblioteca de clases de .NET
Framework, se puede ser utilizada en el cdigo de cliente para almacenar enteros, cadenas y cualquier otro
tipo de objeto.
Los objetos, clases y estructuras tienen las propiedades siguientes:
Los objetos son instancias de un tipo de datos determinado. El tipo de datos proporciona un plano
para el objeto que se crea, o del cual se crean instancias, cuando se ejecuta la aplicacin.
Los nuevos tipos de datos se definen mediante clases y estructuras.
Las clases y estructuras conforman las unidades de creacin de aplicaciones de C#, ya que
contienen cdigo y datos. Una aplicacin de C# siempre contendr al menos una clase.
Una estructura se puede considerar una clase ligera, idnea para crear tipos de datos que
almacenan pequeas cantidades de datos, y no representa un tipo que despus se podra extender
por medio de la herencia.
Las clases de C# son compatibles con la herencia, lo que significa que se pueden derivar de una
clase previamente definida.
Objetos Los objetos son construcciones de programacin que se componen de datos, comportamiento e identidad.
Los datos del objeto se encuentran en los campos, propiedades y eventos del objeto; los mtodos e
interfaces del objeto definen los comportamientos del objeto, pero estos residen en la definicin del tipo al
que pertenece el objeto.
Los objetos tienen identidad, es decir, dos objetos con el mismo conjunto de datos no son necesariamente
el mismo objeto.
En C#, los objetos se definen mediante classes y structs, que conforman el plano nico a partir del cual
operan todos los objetos de ese tipo.
-
Escuela de Informtica y Telecomunicaciones
Pgina 2
Los objetos tienen las propiedades siguientes:
Todo lo que se utiliza en C# es un objeto, incluidos los formularios Windows Forms y los controles.
Se crean instancias de objetos; es decir, stos se crean a partir de plantillas definidas por clases y
estructuras.
Los objetos utilizan Propiedades para obtener y cambiar la informacin que contienen.
A menudo, los objetos tienen mtodos y eventos que les permiten realizar acciones.
Visual Studio proporciona herramientas para manipular objetos: la Propiedades (Ventana) permite
cambiar los atributos de los objetos, como formularios Windows Forms. El Examinador de objetos
permite examinar el contenido de un objeto.
Todos los objetos de C# heredan de Object.
Clases En C#, una clase es un tipo de datos muy eficaz. Como las estructuras, las clases definen los datos y el
comportamiento del tipo de datos. Los programadores pueden crear objetos que son instancias de una
clase. A diferencia de las estructuras, las clases admiten herencia, que es una parte fundamental de la
programacin orientada a objetos.
Declarar clases
Las clases se definen mediante la palabra clave class, como se muestra en el ejemplo siguiente:
El nivel de acceso precede a la palabra clave class. En este caso, se utiliza public, que significa que cualquiera
puede crear objetos a partir de esta clase. El nombre de la clase sigue a la palabra clave class. El resto de la
definicin es el cuerpo de clase, donde se definen el comportamiento y los datos. Los campos, propiedades,
mtodos y eventos de una clase se conocen colectivamente como miembros de clase.
Todos los tipos y miembros de tipo tienen un nivel de accesibilidad, que controla si pueden utilizarse por
otro cdigo de su ensamblado u otros ensamblados. La accesibilidad de un tipo o miembro se especifica al
declararlo utilizando uno de estos modificadores de acceso:
public: Puede obtener acceso al tipo o miembro cualquier otro cdigo del mismo
ensamblado o de otro ensamblado que haga referencia a ste.
-
Escuela de Informtica y Telecomunicaciones
Pgina 3
prvate: Solamente puede obtener acceso al tipo o miembro cdigo de la misma clase o
estructura.
protected: Solamente puede obtener acceso al tipo o miembro, cdigo de la misma clase o
estructura o de una clase derivada.
internal: Puede obtener acceso al tipo o miembro cualquier cdigo del mismo
ensamblado, pero no de un ensamblado distinto.
protected internal: Puede obtener acceso al tipo o miembro cualquier cdigo del mismo
ensamblado o cualquier clase derivada de otro ensamblado.
Las clases y estructuras declaradas directamente en un espacio de nombres (es decir, que no se anidan
dentro de otras clases o estructuras) pueden ser pblicas o internas. Si no se especifica un modificador de
acceso, internal es el valor predeterminado. Las clases y estructuras anidadas tambin pueden declararse
como privadas. No se puede obtener acceso a tipos anidados privados desde el tipo contenedor.
Las clases derivadas no pueden tener mayor accesibilidad que sus tipos base. En otras palabras, no puede
tener una clase pblica B que se derive de una clase interna A. Si se permitiera, A se hara pblica, porque se
puede obtener acceso a todos los miembros internos o protegidos de A desde la clase derivada.
La estructura genrica de una clase es:
[modificador de acceso] class MyClass { // campos
// propiedades // constructores // mtodos
}
En los siguientes aparatados se revisarn ms en detalle los elementos que conforman una clase.
-
Escuela de Informtica y Telecomunicaciones
Pgina 4
Crear objetos
Aunque se utilizan a veces de forma intercambiable, una clase y un objeto son cosas diferentes. Una clase
define un tipo de objeto, pero no es propiamente un objeto. Un objeto es una entidad concreta basada en
una clase y, a veces, se denomina instancia de una clase.
Los objetos se pueden crear con la palabra clave new seguida del nombre de la clase en la que se basar el
objeto, de la manera siguiente:
Cuando se crea una instancia de una clase, una referencia al objeto se vuelve a pasar al programador. En el
ejemplo anterior, object1 es una referencia a un objeto basado en Cliente. Esta declaracin hace referencia
el nuevo objeto, pero no contiene los datos del propio objeto. De hecho, se puede crear una referencia a
objeto sin crear un objeto:
No se recomienda la creacin de referencias a objetos como sta, que no hace referencia a un objeto,
porque al intentar el acceso a un objeto a travs de esa referencia se producir un error en tiempo de
ejecucin. Sin embargo, este tipo de referencia se puede crear para hacer referencia a un objeto, ya sea
creando un nuevo objeto o asignndola a un objeto existente, de la forma siguiente:
Este cdigo crea dos referencias a objeto que se refieren al mismo objeto. Por consiguiente, los cambios
realizados en el objeto a travs de object3 se reflejarn en los usos posteriores de object4. El hecho de que
las clases se conozcan como tipos de referencia se debe a que se hace referencia a los objetos basados en
clases por referencia.
Las clases tienen las propiedades siguientes:
A diferencia de C++, slo se admite una herencia nica: una clase puede heredar la implementacin
solamente de una clase base.
Una clase puede implementar ms de una interfaz.
-
Escuela de Informtica y Telecomunicaciones
Pgina 5
Las definiciones de clase se pueden dividir entre archivos de cdigo fuente diferentes. Para ello C#
permite la definicin de clases parciales.
Las clases estticas son clases selladas que contienen slo mtodos estticos.
-
Escuela de Informtica y Telecomunicaciones
Pgina 6
Propiedades
Una propiedad es un miembro que ofrece un mecanismo flexible para leer, escribir o calcular el valor de un
campo privado. Las propiedades pueden utilizarse como si fuesen miembros de datos pblicos, aunque en
realidad son mtodos especiales denominados descriptores de acceso. De este modo, se puede obtener
acceso a los datos con facilidad, a la vez que se promueve la seguridad y flexibilidad de los mtodos.
En este ejemplo, la clase TimePeriod almacena un perodo de tiempo. Internamente, la clase almacena el
tiempo en segundos, pero una propiedad denominada Hours permite a un cliente especificar el tiempo en
horas. Los descriptores de acceso de la propiedad Hours realizan la conversin entre horas y segundos.
La palabra clave get define un mtodo de descriptor de acceso en una propiedad o indizador que recupera
el valor de la propiedad o del elemento del indizador. La palabra clave set define un mtodo de descriptor
de acceso en una propiedad o indizador que asigna el valor de la propiedad o del elemento del indizador. La
variable privada de la clase que se expone (opcionalmente) mediante una propiedad es denominada campo.
En el caso de no tener necesidad de tratamiento de una variable en los accesores get y set, es posible
declarar la propiedad sin un respaldo explcito en un campo, como lo indica el siguiente ejemplo:
-
Escuela de Informtica y Telecomunicaciones
Pgina 7
Mtodos
Un mtodo es un bloque de cdigo que contiene una serie de instrucciones. Los programas hacen que las
instrucciones se ejecuten mediante una llamada al mtodo y la especificacin de los argumentos de mtodo
necesarios.
Los mtodos se declaran en una clase o struct mediante la especificacin del nivel de acceso como public o
private, modificadores opcionales como abstract o sealed, el valor devuelto, el nombre del mtodo y
cualquier parmetro de mtodo. Todos esos elementos constituyen la firma del mtodo.
Los parmetros del mtodo se encierran entre parntesis y se separan por comas. Los parntesis vacos
indican que el mtodo no requiere ningn parmetro. Esta clase ejemplo contiene 2 mtodos:
La definicin de mtodo especifica los nombres y tipos de cualquier parmetro que se requiera. Cuando el
cdigo de llamada llama al mtodo, proporciona valores concretos denominados argumentos a cada
parmetro. Los argumentos deben ser compatibles con el tipo de parmetro pero el nombre del argumento
(si existe) que se usa en el cdigo de llamada no tiene que ser igual que el nombre de parmetro definido en
el mtodo.
Los mtodos pueden devolver un valor al llamador. Si el tipo de valor devuelto (el que aparece antes del
nombre del mtodo) no es void, el mtodo puede devolver el valor mediante la palabra clave return. Una
instruccin con la palabra clave return seguida de un valor que se corresponda con el tipo de valor devuelto
devolver ese valor al llamador del mtodo. La palabra clave return tambin detiene la ejecucin del
mtodo. Si el tipo de valor devuelto es void, una instruccin return sin ningn valor sigue siendo til para
detener la ejecucin del mtodo. Sin la palabra clave return, el mtodo detendr la ejecucin cuando llegue
al fin del bloque de cdigo. Es necesario que los mtodos con un tipo de valor devuelto no nulo utilicen la
palabra clave return para devolver un valor.
-
Escuela de Informtica y Telecomunicaciones
Pgina 8
Namespace (Espacio de nombres) Los espacios de nombre, en adelante namespace, son utilizados en el lenguaje C#, para organizar las
estructuras dentro de un ensamblado. El .Net Framework, organiza las clases y dems elementos en sus
propios namespace y al momento de crear nuestras clases, tambin debemos organizar estas estructuras de
forma que podamos agruparlas para su posterior utilizacin.
Un namespace le da un contexto de uso a nuestras clases y se debe considerar que este elemento, es una
agrupacin lgica de las clases en l contenidas. Esto permite que en ms de un ensamblado o archivo de
cdigo podamos utilizar el mismo namespace, si hemos distribuido las clases de un mbito similar en ms
una biblioteca de clases.
La declaracin de un namespace se realiza como un bloque de cdigo al inicio del archivo de cdigo
(posterior a las declaraciones using), para agrupar todas las estructuras en su interior.
En el ejemplo vemos la clase de nombre MiClase declarada dentro del namespace MiNamespace, esto
implica que el nombre formal de la clase es MiNamespace.MiClase. Cuando hacemos uso de la clase
declarada en otro namespace, podemos hacer referencia a la clase de 2 formas:
La primera es por su nombre completo, ejemplo:
En este caso hacemos uso de la clase en un namespace distinto (NuevaAplicacion), por lo tanto no hay
visibilidad de la clase y por ello necesitamos especificar el nombre completo de la misma.
-
Escuela de Informtica y Telecomunicaciones
Pgina 9
La segunda es teniendo la declaracin del namespace en la cabecera del archivo de cdigo con la directiva
using:
En este ejemplo podemos usar directamente el nombre de la clase MiClase, ya que hemos hecho la
declaracin de uso del namespace MiNamespace con la directiva using.
En ambos casos debemos verificar que la clase est accesible para el ensamblado donde es utilizado, esto
significa que si la clase est declarada dentro del mismo ensamblado, esta debe ser pblica y en el caso de
estar en un ensamblado diferente, debe estar declarada como pblica y adems haber sido agregado como
referencia.
Se declare o no explcitamente un espacio de nombres en un archivo de cdigo fuente, el compilador agrega
un espacio de nombres predeterminado. Este espacio de nombres sin denominacin, a veces se hace
referencia a l como espacio de nombres global, est presente en todos los archivos.
Los espacios de nombres disponen implcitamente de un acceso pblico que no puede modificarse.
-
Escuela de Informtica y Telecomunicaciones
Pgina 10
Bibliotecas de Clases o Librera Los proyectos del tipo Biblioteca de Clases son utilizados para crear rpidamente clases y componentes
reutilizables que pueden compartirse con otros proyectos. Si bien las clases proporcionan cdigo reutilizable
en forma de objetos. Una biblioteca de clases contiene una o ms clases a las que se pueden llamar para
realizar acciones especficas.
Para crear una biblioteca de clases, basta con generar un nuevo proyecto seleccionando la plantilla
Biblioteca de Clases, desde el conjunto de plantillas que se presentan en la ventana Nuevo Proyecto. Al
especificar el nombre de la Biblioteca como proyecto, este mismo ser utilizado como namespace por
defecto, para todos los elementos que se agreguen en la biblioteca. No es obligatorio que el nombre del
proyecto y el namespace sean iguales.
Una vez codificadas las clases y generado el ensamblado, se obtendr como resultado un ensamblado con
extensin .dll. Si la Biblioteca de Clases est ubicada en la misma solucin del programa (u otro tipo de
ensamblando) que la utilizar, esta puede ser referenciada como proyecto, de esta forma todos los cambios
que se introducen actualizarn de forma inmediata la referencia en dicho proyecto. En el caso de que el
proyecto de Biblioteca de Clases se encuentre en otra solucin o solo se cuente con el ensamblado, este
debe ser referenciado desde el archivo fsico con extensin .dll.