OOP en C# y Excepciones Parte 1

11
Escuela de Informática y Telecomunicaciones “Programación .Net – Clases y Bibliotecas” En esta guía: Objetos y Clases ............................................................................................................ 1 Objetos ...................................................................................................................... 1 Clases ........................................................................................................................ 2 Declarar clases............................................................................................................................. 2 Crear objetos ............................................................................................................................... 4 Propiedades................................................................................................................................. 6 Métodos ...................................................................................................................................... 7 Namespace (Espacio de nombres).................................................................................. 8 Bibliotecas de Clases o Librería .................................................................................... 10

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.