UNIVERSIDAD ABIERTA PARA ADULTOS UAPA
 STERLING RAFAEL
SANTANA
Temas:
 Conceptos de clase y objeto
 Herencia
 Operador new
 Métodos virtuales
 Clases abstractas
 Polimorfismo
 Acceso a la clase base
 Encapsulamiento
Participante:
Conceptos de clase y objeto: C# es un lenguaje orientado a
objetos puro, 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 métodos que permiten manipular dichos datos, y un programa
en C# no es más que un conjunto
de objetos que interaccionan unos con otros a través de sus
métodos.
Las clases pueden heredar de otra clase. Para conseguir esto, se
coloca un signo de dos puntos después del nombre de la clase al
declarar la clase y se denomina la clase de la cual se hereda (la
clase base) después del signo de dos puntos, del modo siguiente:
La nueva clase (la clase derivada) obtiene todos los datos no
privados y el comportamiento de la clase base, además de
todos los demás datos y comportamientos que define para sí
misma. La nueva clase tiene dos tipos efectivos: el tipo de la
nueva clase y el tipo de la clase que hereda.
En el ejemplo anterior, la clase B es claramente B y A.
Cuando se tiene acceso a un objeto B, se puede utilizar la
operación de conversión de tipos para convertirlo en un
objeto A. La conversión de tipos no cambia el objeto B, pero
la vista del objeto B se restringe a los datos y
comportamientos de A. Después de convertir un objeto B en
un objeto A, es posible volver a convertir ese objeto A en un
objeto B. No todas las instancias de A se pueden convertir en
B, sólo aquellas que son realmente instancias de B. Si se
tiene acceso a la clase B como tipo B, se obtienen los datos
y comportamientos tanto de la clase A como de la clase B. La
capacidad que tiene un objeto de representar más de un tipo
se denomina polimorfismo.
HERENCIA
La herencia es un concepto fundamental de la
programación orientada a objetos. Cuando se dice que
una cierta clase A hereda otra clase B significa que la
clase A contiene todos los miembros de la clase B más
algunos que opcionalmente puede implementar ella
misma
Las clases en C# soportan herencia simple, de forma que
una clase puede derivar de otra, pero no de varias (como
si era posible en C++). De hecho, en C# todas las clases
derivan implícitamente de la clase object.
La sintaxis que se utiliza es la siguiente:
class MiClaseDerivada : MiClaseBase
{
//miembros
}
OPERADOR NEW
Ahora que ya sabemos cómo definir las clases de objetos que
podremos usar en nuestras aplicaciones ha llegado el momento de
explicar cómo crear objetos de una determinada clase. Algo de ello
ya se introdujo en el Tema 4: Aspectos Léxicos cuando se comentó
la utilidad del operador new, que precisamente es crear objetos y
cuya sintaxis es:
new <nombreTipo>(<parametros>).
Este operador crea un nuevo objeto del tipo cuyo nombre se
le indica y llama durante su proceso de creación al
constructor del mismo apropiado según los valores que se le
pasen en <parametros>, devolviendo una referencia al objeto
recién creado. Hay que resaltar el hecho de que new no
devuelve el propio objeto creado, sino una referencia a
la dirección de memoria dinámica donde en realidad se ha
creado.
MÉTODOS VIRTUALES
Ya hemos visto que es posible definir tipos cuyos métodos se
hereden de definiciones de otros tipos. Lo que ahora vamos a ver
es que además es posible cambiar dichar definición en la clase
hija, para lo que habría que haber precedido con la palabra
reservada virtual la definición de dicho método en la clase padre. A
este tipo de métodos se les llama métodos virtuales, y la sintaxis
que se usa para definirlos es la siguiente:
virtual <tipoDevuelto> <nombreMétodo>(<parámetros>)
{
<código>
}
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 estáticos
(esto último se verá más adelante en este mismo tema) Para definir una clase
abstracta se antepone abstract a su definición, 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
El polimorfismo es otro de los pilares fundamentales de la
programación 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 sólo
poderse acceder a través de dicha variable a los miembros
comunes a ambos tipos. Sin embargo, las versiones de los
métodos virtuales a las que se llamaría a través de esas
variables no serían las definidas como miembros del tipo
de dichas variables, sino las definidas en el verdadero tipo
de los objetos que almacenan.
A continuación se muestra un ejemplo de cómo 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 versión del método Cumpleaños() a la que
se podría llamar a través de la variable de tipo Persona
sería la definida en la clase Trabajador, y no la definida en
Persona:
A través de la herencia, una clase puede utilizarse como más de
un tipo; puede utilizarse como su propio tipo, cualquier tipo base
o cualquier tipo de interfaz si implementa interfaces. Esto se
denomina polimorfismo. En C#, todos los tipos son polimórficos.
Los tipos se pueden utilizar como su propio tipo o como una
instancia de Object, porque cualquier tipo trata automáticamente
a Object como tipo base.
El polimorfismo no sólo es importante para las clases derivadas,
sino también para las clases base. Cualquiera que utilice la clase
base podría, de hecho, estar utilizando un objeto de la clase
derivada que se haya convertido en el tipo de clase base. Los
diseñadores de una clase base pueden anticipar qué aspectos de
su clase base cambiarán probablemente para un tipo derivado.
Por ejemplo, es posible que una clase base para automóviles
contenga un comportamiento sujeto a cambios si el automóvil en
cuestión es un vehículo familiar o uno descapotable. Una clase
base puede marcar esos miembros de clase como virtuales, lo
cual permite que las clases derivadas que representan
automóviles descapotables y vehículos familiares reemplacen
ese comportamiento.
Acceso a la clase base: Hay determinadas circunstancias en las que cuando
redefinamos un determinado método nos interese poder acceder al código de la versión
original. Por ejemplo, porque el código redefinido que vayamos a escribir haga lo mismo
que el original y además algunas cosas extras. En estos casos se podría pensar que
una forma de conseguir esto sería convirtiendo el objeto actual al tipo del método a
redefinir y entonces llamar así a ese método, como por ejemplo en el siguiente código:
using System;
class A
{
public virtual void F()
{
Console.WriteLine(“A”);
}
}
class B:A
{
public override void F()
{
Console.WriteLine(“Antes”);
((A) this).F(); // (2)
Console.WriteLine(“Después”);
}
public static void Main()
{
B b = new B();
b.F();
}
}
ENCAPSULAMIENTO
El Encapsulamiento, además de brindar seguridad a las aplicaciones
permite tener una organización muy precisa a la hora de desarrollar sin
embargo en muchas ocasiones se vuelve tedioso manejar todos los
métodos de encapsulamiento de un objeto, en especial cuando son
muchos los atributos de la clase.
Empecemos por definir ciertos conceptos básicos de la programación
orientada a objetos (POO). Está compuesta por clases, una clase en
términos coloquiales, es el plano de un objeto, es donde se deben
definir todas las características de los objetos de la vida real o de
objetos abstractos, en POO siempre se habla de dos conceptos claves:
Atributos y Métodos.
Atributos: Son las características de los objetos, por ejemplo, los
atributos de una persona son, nombre, apellidos, número de
documento, estatura, color de piel, peso, etcétera.
Métodos: Son las funciones o acciones del objeto en caso de la
persona, los métodos son, caminar, hablar, reír, pensar, gritar, etcétera.
Presentacion de clases en c#
Presentacion de clases en c#

Presentacion de clases en c#

  • 1.
    UNIVERSIDAD ABIERTA PARAADULTOS UAPA  STERLING RAFAEL SANTANA Temas:  Conceptos de clase y objeto  Herencia  Operador new  Métodos virtuales  Clases abstractas  Polimorfismo  Acceso a la clase base  Encapsulamiento Participante:
  • 2.
    Conceptos de clasey objeto: C# es un lenguaje orientado a objetos puro, 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 métodos que permiten manipular dichos datos, y un programa en C# no es más que un conjunto de objetos que interaccionan unos con otros a través de sus métodos. Las clases pueden heredar de otra clase. Para conseguir esto, se coloca un signo de dos puntos después del nombre de la clase al declarar la clase y se denomina la clase de la cual se hereda (la clase base) después del signo de dos puntos, del modo siguiente:
  • 3.
    La nueva clase(la clase derivada) obtiene todos los datos no privados y el comportamiento de la clase base, además de todos los demás datos y comportamientos que define para sí misma. La nueva clase tiene dos tipos efectivos: el tipo de la nueva clase y el tipo de la clase que hereda. En el ejemplo anterior, la clase B es claramente B y A. Cuando se tiene acceso a un objeto B, se puede utilizar la operación de conversión de tipos para convertirlo en un objeto A. La conversión de tipos no cambia el objeto B, pero la vista del objeto B se restringe a los datos y comportamientos de A. Después de convertir un objeto B en un objeto A, es posible volver a convertir ese objeto A en un objeto B. No todas las instancias de A se pueden convertir en B, sólo aquellas que son realmente instancias de B. Si se tiene acceso a la clase B como tipo B, se obtienen los datos y comportamientos tanto de la clase A como de la clase B. La capacidad que tiene un objeto de representar más de un tipo se denomina polimorfismo.
  • 4.
    HERENCIA La herencia esun concepto fundamental de la programación orientada a objetos. Cuando se dice que una cierta clase A hereda otra clase B significa que la clase A contiene todos los miembros de la clase B más algunos que opcionalmente puede implementar ella misma Las clases en C# soportan herencia simple, de forma que una clase puede derivar de otra, pero no de varias (como si era posible en C++). De hecho, en C# todas las clases derivan implícitamente de la clase object. La sintaxis que se utiliza es la siguiente: class MiClaseDerivada : MiClaseBase { //miembros }
  • 5.
    OPERADOR NEW Ahora queya sabemos cómo definir las clases de objetos que podremos usar en nuestras aplicaciones ha llegado el momento de explicar cómo crear objetos de una determinada clase. Algo de ello ya se introdujo en el Tema 4: Aspectos Léxicos cuando se comentó la utilidad del operador new, que precisamente es crear objetos y cuya sintaxis es: new <nombreTipo>(<parametros>). Este operador crea un nuevo objeto del tipo cuyo nombre se le indica y llama durante su proceso de creación al constructor del mismo apropiado según los valores que se le pasen en <parametros>, devolviendo una referencia al objeto recién creado. Hay que resaltar el hecho de que new no devuelve el propio objeto creado, sino una referencia a la dirección de memoria dinámica donde en realidad se ha creado.
  • 6.
    MÉTODOS VIRTUALES Ya hemosvisto que es posible definir tipos cuyos métodos se hereden de definiciones de otros tipos. Lo que ahora vamos a ver es que además es posible cambiar dichar definición en la clase hija, para lo que habría que haber precedido con la palabra reservada virtual la definición de dicho método en la clase padre. A este tipo de métodos se les llama métodos virtuales, y la sintaxis que se usa para definirlos es la siguiente: virtual <tipoDevuelto> <nombreMétodo>(<parámetros>) { <código> }
  • 7.
    Clases abstractas Una claseabstracta es aquella que forzosamente se ha de derivar si se desea que se puedan crear objetos de la misma o acceder a sus miembros estáticos (esto último se verá más adelante en este mismo tema) Para definir una clase abstracta se antepone abstract a su definición, 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() {} }
  • 8.
    POLIMORFISMO El polimorfismo esotro de los pilares fundamentales de la programación 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 sólo poderse acceder a través de dicha variable a los miembros comunes a ambos tipos. Sin embargo, las versiones de los métodos virtuales a las que se llamaría a través de esas variables no serían las definidas como miembros del tipo de dichas variables, sino las definidas en el verdadero tipo de los objetos que almacenan. A continuación se muestra un ejemplo de cómo 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 versión del método Cumpleaños() a la que se podría llamar a través de la variable de tipo Persona sería la definida en la clase Trabajador, y no la definida en Persona:
  • 11.
    A través dela herencia, una clase puede utilizarse como más de un tipo; puede utilizarse como su propio tipo, cualquier tipo base o cualquier tipo de interfaz si implementa interfaces. Esto se denomina polimorfismo. En C#, todos los tipos son polimórficos. Los tipos se pueden utilizar como su propio tipo o como una instancia de Object, porque cualquier tipo trata automáticamente a Object como tipo base. El polimorfismo no sólo es importante para las clases derivadas, sino también para las clases base. Cualquiera que utilice la clase base podría, de hecho, estar utilizando un objeto de la clase derivada que se haya convertido en el tipo de clase base. Los diseñadores de una clase base pueden anticipar qué aspectos de su clase base cambiarán probablemente para un tipo derivado. Por ejemplo, es posible que una clase base para automóviles contenga un comportamiento sujeto a cambios si el automóvil en cuestión es un vehículo familiar o uno descapotable. Una clase base puede marcar esos miembros de clase como virtuales, lo cual permite que las clases derivadas que representan automóviles descapotables y vehículos familiares reemplacen ese comportamiento.
  • 12.
    Acceso a laclase base: Hay determinadas circunstancias en las que cuando redefinamos un determinado método nos interese poder acceder al código de la versión original. Por ejemplo, porque el código redefinido que vayamos a escribir haga lo mismo que el original y además algunas cosas extras. En estos casos se podría pensar que una forma de conseguir esto sería convirtiendo el objeto actual al tipo del método a redefinir y entonces llamar así a ese método, como por ejemplo en el siguiente código: using System; class A { public virtual void F() { Console.WriteLine(“A”); } } class B:A { public override void F() { Console.WriteLine(“Antes”); ((A) this).F(); // (2) Console.WriteLine(“Después”); } public static void Main() { B b = new B(); b.F(); } }
  • 13.
    ENCAPSULAMIENTO El Encapsulamiento, ademásde brindar seguridad a las aplicaciones permite tener una organización muy precisa a la hora de desarrollar sin embargo en muchas ocasiones se vuelve tedioso manejar todos los métodos de encapsulamiento de un objeto, en especial cuando son muchos los atributos de la clase. Empecemos por definir ciertos conceptos básicos de la programación orientada a objetos (POO). Está compuesta por clases, una clase en términos coloquiales, es el plano de un objeto, es donde se deben definir todas las características de los objetos de la vida real o de objetos abstractos, en POO siempre se habla de dos conceptos claves: Atributos y Métodos. Atributos: Son las características de los objetos, por ejemplo, los atributos de una persona son, nombre, apellidos, número de documento, estatura, color de piel, peso, etcétera. Métodos: Son las funciones o acciones del objeto en caso de la persona, los métodos son, caminar, hablar, reír, pensar, gritar, etcétera.