You are on page 1of 8

Este artculo se tradujo de forma manual.

Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.

Programacin orientada a objetos (C# y Visual Basic)


Visual Studio 2013
Todos los lenguajes administrados de .NET Framework, como Visual Basic y C#, proporcionan plena compatibilidad con la programacin orientada a objetos, incluidos la encapsulacin, la
herencia y el polimorfismo.
La encapsulacin significa que un grupo de propiedades, mtodos y otros miembros relacionados se tratan como si de una sola unidad u objeto se tratase.
Herencia describe la posibilidad de crear nuevas clases basadas en una clase existente.
Polimorfismo significa que puede tener mltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase implementa las mismas propiedades o los mismos mtodos de
maneras diferentes.
En esta seccin se describen los conceptos siguientes:
Clases y objetos
Miembros de la clase
Propiedades y campos
Mtodos
Constructores
Destructores
Eventos
Clases anidadas
Modificadores y niveles de acceso
Creacin de instancias de las clases
Clases y miembros estticos (compartidos)
Tipos annimos
Herencia
Reemplazar miembros
Interfaces
Genricos
Delegados

Clases y objetos
Los trminos clase y objeto se usan a veces indistintamente pero, en realidad, las clases describen el tipo de los objetos, mientras que los objetos son instancias de clases que se pueden
usar. As, la accin de crear un objeto se denomina creacin de instancias. Con la analoga de plano, una clase es un plano y un objeto es un edificio construido a partir de ese plano.
Para definir una clase:
C#
class SampleClass
{
}
Tanto Visual Basic como C# tambin proporcionan una versin ligera de las clases denominadas estructuras, que resultan tiles cuando es necesario crear una matriz grande de objetos y
no se desea usar demasiada memoria para ello.
Para definir una estructura:
C#
struct SampleStruct
{
}
Para obtener ms informacin, vea:
Visual Basic
Instruccin Class (Visual Basic)
Structure (Instruccin)

C#
class (Referencia de C#)
struct (Referencia de C#)

Miembros de clase
Cada clase puede tener distintos miembros de clase, entre los que se incluyen las propiedades que describen los datos de clase, los mtodos que definen el comportamiento de la clase y
los eventos que proporcionan comunicacin entre distintos objetos y clases.

Propiedades y campos
Los campos y propiedades representan informacin que contiene un objeto. Los campos se parecen a las variables ya que se pueden leer y establecer directamente.
Para definir un campo:
C#
Class SampleClass
{
public string sampleField;
}
Las propiedades tienen procedimientos get y set, que proporcionan un mayor control sobre la forma en que se establecen o devuelven los valores.
Tanto C# como Visual Basic permiten crear un campo privado para almacenar el valor de propiedad o bien usar las denominadas propiedades de implementacin automtica que crean
este campo en segundo plano automticamente y proporcionan la lgica bsica para los procedimientos de propiedad.
Para definir una propiedad implementada automticamente:
C#
class SampleClass
{
public int SampleProperty { get; set; }
}
Si necesita realizar algunas operaciones adicionales para leer y escribir el valor de propiedad, defina un campo para almacenar el valor de propiedad y proporcione la lgica bsica para
almacenarlo y recuperar lo:
C#
class SampleClass
{
private int _sample;
public int Sample
{
// Return the value stored in a field.
get { return _sample; }
// Store the value in the field.
set { _sample = value; }
}
}
La mayora de las propiedades tienen mtodos o procedimientos para configurar y obtener el valor de la propiedad. Sin embargo, se pueden crear propiedades de solo lectura o solo
escritura para restringir su modificacin o lectura. En Visual Basic se pueden utilizar las palabras clave ReadOnly y WriteOnly palabras clave. En C#, se puede omitir el mtodo de
propiedad get o set. Sin embargo, tanto en Visual Basic como en C#, las propiedades implementadas automticamente no pueden ser de solo lectura o de solo escritura.
Para obtener ms informacin, vea:
Visual Basic
Property (Instruccin)
Get (Instruccin)
Instruccin Set (Visual Basic)
ReadOnly (Visual Basic)
WriteOnly (Visual Basic)
C#
get (Referencia de C#)
set (Referencia de C#)

Mtodos
Un mtodo es una accin que puede realizar un objeto.
Nota
En Visual Basic hay dos formas de crear un mtodo: se usa la instruccin Sub si el mtodo no devuelve un valor o bien se usa la instruccin Function si el mtodo devuelve un valor.
Para definir un mtodo de una clase:

C#
class SampleClass
{
public int sampleMethod(string sampleParam)
{
// Insert code here
}
}
Una clase puede tener varias implementaciones o sobrecargas del mismo mtodo que se diferencian en el nmero de parmetros o de tipos de parmetro.
Para sobrecargar un mtodo:
C#
public int sampleMethod(string sampleParam) {};
public int sampleMethod(int sampleParam) {}
En la mayora de los casos, un mtodo se declara dentro de una definicin de clase. Sin embargo, tanto Visual Basic como C# tambin admiten los mtodos de extensin, que permiten
agregar mtodos a una clase existente fuera de la definicin de la clase en s.
Para obtener ms informacin, vea:
Visual Basic
Function (Instruccin, Visual Basic)
Sub (Instruccin, Visual Basic)
Overloads (Visual Basic)
Mtodos de extensin (Visual Basic)
C#
Mtodos (Gua de programacin de C#)
Mtodos de extensin (Gua de programacin de C#)

Constructores
Los constructores son mtodos de clase que se ejecutan automticamente cuando se crea un objeto de un tipo determinado. Normalmente, los constructores inicializan los miembros
de datos del nuevo objeto. Un constructor se puede ejecutar slo una vez cuando se crea una clase. Adems, el cdigo del constructor siempre se ejecuta antes que cualquier otro
cdigo en una clase. Sin embargo, puede crear varias sobrecargas del constructor de la misma forma que para cualquier otro mtodo.
Para definir un constructor para una clase:
C#
public class SampleClass
{
public SampleClass()
{
// Add code here
}
}
Para obtener ms informacin, vea:
Visual Basic
Sub New
Duracin de los objetos: cmo se crean y destruyen (Visual Basic)
C#
Constructores (Gua de programacin de C#)

Destructores
Los destructores se utilizan para destruir instancias de clases. En .NET Framework, el recolector de elementos no utilizados administra automticamente la asignacin y liberacin de
memoria para los objetos administrados en la aplicacin. Sin embargo, puede que an necesite destructores para limpiar recursos no administrados que crea la aplicacin. Slo puede
haber un destructor para cada clase.
Para obtener ms informacin acerca de los destructores y la recoleccin de elementos no utilizados en .NET Framework, vea recoleccin de elementos no utilizados.

Eventos
Los eventos habilitan que una clase u objeto notifique a otras clases u objetos cuando se produce algo interesante . La clase que enva (o genera) el evento recibe el nombre de
publicador y las clases que reciben (o controlan) el evento se denominan suscriptores. Para obtener ms informacin sobre los eventos y la forma en que se generan y controlan, vea
Controlar y provocar eventos.
Visual Basic
Para declarar eventos, use Event (Instruccin).
Para generar eventos, use RaiseEvent (Instruccin).

Para especificar controladores de eventos de forma declarativa, use la instruccin WithEvents (Visual Basic) y la clusula Handles (Clusula, Visual Basic).
Para poder agregar, quitar y cambiar de forma dinmica el controlador de eventos asociado a un evento, use AddHandler (Instruccin) y RemoveHandler (Instruccin)
junto con AddressOf (Operador) (Visual Basic).
C#
Para declarar un evento en una clase, use la palabra clave event (Referencia de C#).
Para generar un evento, invoque al delegado de eventos.
Para suscribirse a un evento, use el operador +=; para anular la suscripcin de un evento, use el operador -=.

Clases anidadas
Una clase definida dentro de otra se denomina anidada. De forma predeterminada, una clase anidada es privada.
C#
class Container
{
class Nested
{
// Add code here.
}
}
Para crear una instancia de la clase anidada, use el nombre de la clase contenedora seguido de un punto y seguido, a continuacin, del nombre de la clase anidada:
C#
Container.Nested nestedInstance = new Container.Nested()

Modificadores y niveles de acceso


Todas las clases y miembros de clase pueden especificar el nivel de acceso que proporcionan a otras clases mediante los modificadores de acceso.
Estn disponibles los siguientes modificadores de acceso:
Modificador de Visual
Basic

Modificador de
C#

Public (Visual Basic)

public

Puede obtener acceso al tipo o miembro cualquier otro cdigo del mismo ensamblado o de otro ensamblado que haga
referencia a ste.

Private (Visual Basic)

private

Solamente puede obtener acceso al tipo o miembro el cdigo de la misma clase.

Protected (Visual Basic)

protected

Solamente puede obtener acceso al tipo o miembro el cdigo de la misma clase o de una clase derivada.

Friend (Visual Basic)

internal

Puede obtener acceso al tipo o miembro cualquier cdigo del mismo ensamblado, pero no de un ensamblado distinto.

Protected Friend

protected
internal

Puede obtener acceso al tipo o miembro cualquier cdigo del mismo ensamblado o cualquier clase derivada de otro ensamblado.

Definicin

Para obtener ms informacin, vea Niveles de acceso en Visual Basic y Modificadores de acceso (Gua de programacin de C#).

Creacin de instancias de las clases


Para crear un objeto, debe crear una o varias instancias de una clase.
C#
SampleClass sampleObject = new SampleClass();
Una vez creadas las instancias de una clase, puede asignar valores a las propiedades y los campos de la instancia, as como invocar mtodos de clase.
C#
// Set a property value.
sampleObject.sampleProperty = "Sample String";
// Call a method.
sampleObject.sampleMethod();
Para asignar valores a las propiedades durante el proceso de creacin de instancias de una clase, use los inicializadores de objeto:
C#
// Set a property value.
SampleClass sampleObject = new SampleClass
{ FirstProperty = "A", SecondProperty = "B" };
Para obtener ms informacin, vea:
Visual Basic

New (Operador, Visual Basic)


Inicializadores de objeto: Tipos con nombre y annimos (Visual Basic)
C#
new (Operador, Referencia de C#)
Inicializadores de objeto y de coleccin (Gua de programacin de C#)

Clases y miembros estticos (compartidos)


Un miembro esttico (compartido en Visual Basic) de la clase es una propiedad, un procedimiento o un campo que comparten todas las instancias de una clase.
Para definir un miembro esttico (compartido):
C#
static class SampleClass
{
public static string SampleString = "Sample String";
}
Para obtener acceso al miembro esttico (compartido), use el nombre de la clase sin crear un objeto perteneciente a esta:
C#
Console.WriteLine(SampleClass.SampleString);
Las clases estticas (compartidas) de C# y los mdulos de Visual Basic solamente tienen miembros estticos (compartidos) y no se pueden crear instancias de los mismos. Adems, los
miembros estticos (compartidos) tampoco pueden tener acceso a las propiedades, los campos o los mtodos no estticos (no compartidos).
Para obtener ms informacin, vea:
Visual Basic
Shared (Visual Basic)
Module (Instruccin)
C#
static (Referencia de C#)

Tipos annimos
Los tipos annimos permiten crear objetos sin escribir una definicin de clase para el tipo de datos. En su lugar, el compilador genera una clase. La clase no tiene ningn nombre que se
pueda usar y contiene las propiedades especificadas al declarar el objeto.
Para crear una instancia de un tipo annimo:
C#
// sampleObject is an instance of a simple anonymous type.
var sampleObject =
new { FirstProperty = "A", SecondProperty = "B" };
Para obtener ms informacin, vea:
Visual Basic: Tipos annimos (Visual Basic)
C#: Tipos annimos (Gua de programacin de C#)

Herencia
La herencia permite crear una nueva clase que reutiliza, extiende y modifica el comportamiento que se define en otra clase. La clase cuyos miembros se heredan se denomina clase base
y la clase que hereda esos miembros se denomina clase derivada. Sin embargo, todas las clases de C# y Visual Basic heredan implcitamente de la clase Object que admite la jerarqua de
clases .NET y proporciona servicios de bajo nivel a todas las clases.
Nota
Los lenguajes administrados de .NET Framework no admiten la herencia mltiple, es decir, solo se puede especificar una clase base para una clase derivada.
Para heredar de una clase base:
C#
class DerivedClass:BaseClass{}
De forma predeterminada, todas las clases se pueden heredar. Sin embargo, puede especificar si una clase no se debe usar como clase base o bien crear una clase que solo se pueda
usar como clase base.

Para especificar que una clase no se puede usar como clase base:
C#
public sealed class A { }
Para especificar que una clase se puede usar solo como clase base y no se pueden crear instancias de esta:
C#
public abstract class B { }
Para obtener ms informacin, vea:
Visual Basic
Inherits (Instruccin)
NotInheritable (Visual Basic)
MustInherit (Visual Basic)
C#
sealed (Referencia de C#)
abstract (Referencia de C#)

Reemplazar miembros
De forma predeterminada, una clase derivada hereda todos los miembros de su clase base. Si desea cambiar el comportamiento del miembro heredado, debe invalidarlo. Es decir, se
puede definir una nueva implementacin del mtodo, la propiedad o el evento en la clase derivada.
Los siguientes modificadores se utilizan para controlar cmo se reemplazan propiedades y mtodos:
Modificador de Visual Basic

Modificador de C#

Definicin

Overridable (Visual Basic)

virtual (Referencia de C#)

Permite invalidar un miembro de una clase derivada.

Overrides (Visual Basic)

override (Referencia de C#)

Invalida un miembro virtual (invalidable) definido en la clase base.

NotOverridable (Visual Basic)

No compatible

Impide que un miembro se invalide en una clase heredera.

MustOverride (Visual Basic)

abstract (Referencia de C#)

Requiere que se invalide un miembro de clase en la clase derivada.

Shadows (Visual Basic)

new (Modificador, Referencia de C#)

Oculta un miembro heredado de una clase base.

Interfaces
Las interfaces, como las clases, definen un conjunto de propiedades, mtodos y eventos. Pero a diferencia de las clases, las interfaces no proporcionan implementacin. Se implementan
por las clases y se definen como entidades separadas desde las clases. Una interfaz representa un contrato, en el cual una clase que implementa una interfaz debe implementar cualquier
aspecto de dicha interfaz exactamente como est definido.
Para definir una interfaz:
C#
interface ISampleInterface
{
void doSomething();
}
Para implementar una interfaz en una clase:
C#
class SampleClass : ISampleInterface
{
void ISampleInterface.doSomething()
{
// Method implementation.
}
}
Para obtener ms informacin, vea:
Visual Basic
Interfaces (Visual Basic)
Instruccin Interface (Visual Basic)

Implements (Instruccin)
C#
Interfaces (Gua de programacin de C#)
interface (Referencia de C#)

Genricos
Las clases, las estructuras, las interfaces y los mtodos de .NET Framework pueden escribir parmetros que definen los tipos de objetos que estos pueden almacenar o usar. El ejemplo
ms comn de elementos genricos es una coleccin, donde se puede especificar el tipo de objetos que se va a almacenar en una coleccin.
Para definir una clase genrica:
C#
Public class SampleGeneric<T>
{
public T Field;
}
Para crear una instancia de una clase genrica:
C#
SampleGeneric<string> sampleObject = new SampleGeneric<string>();
sampleObject.Field = "Sample string";
Para obtener ms informacin, vea:
Genricos en .NET Framework
Tipos genricos en Visual Basic (Visual Basic)
Genricos (Gua de programacin de C#)

Delegados
Un delegado es un tipo que define una firma de mtodo y puede proporcionar una referencia a cualquier mtodo con una firma compatible. Puede invocar (o llamar) al mtodo a travs
del delegado. Los delegados se utilizan para pasar mtodos como argumentos a otros mtodos.
Nota
Los controladores de eventos no son ms que mtodos que se invocan a travs de delegados. Para obtener ms informacin sobre el uso de delegados en el control de eventos, vea
Controlar y provocar eventos.
Para crear un delegado:
C#
public delegate void SampleDelegate(string str);
Para crear una referencia a un mtodo que coincida con la firma especificada por el delegado:
C#
class SampleClass
{
// Method that matches the SampleDelegate signature.
public static void sampleMethod(string message)
{
// Add code here.
}
// Method that instantiates the delegate.
void SampleDelegate()
{
SampleDelegate sd = sampleMethod;
sd("Sample string");
}
}
Para obtener ms informacin, vea:
Visual Basic
Delegados (Visual Basic)
Delegate (Instruccin)

AddressOf (Operador) (Visual Basic)


C#
Delegados (Gua de programacin de C#)
delegado (Referencia de C#)

Vea tambin
Conceptos
Gua de programacin de C#

Otros recursos

Gua de programacin en Visual Basic

Adiciones de comunidad

Programacin Orientada a Objetos


poa
paolaElizabeth
23/05/2014

2015 Microsoft

You might also like