miércoles, 21 de abril de 2010

Programacion orientada a objetos

Programación Orientada a Objetos:

La POO es un paradigma de programación que intenta abstraer los módulos de cada programa en objetos. Los objetos son instancias de clases, en las que se declaran/especifican al menos dos cosas: los atributos, los métodos y opcionalmente los constructores.

Los atributos son las variables que posee el objeto, mientras que los métodos son las funciones o procedimientos que podemos invocar para realizar operaciones especí­ficas sobre los atributos.

Como en Java, en C Sharp utilizamos siempre clases y objetos, aún cuando no tengamos claro el concepto. Por ejemplo, el simple hola mundo:

1using System;
2class Hola{
3 static void Main(string[] args){
4 Console.WriteLine("Hola parce!");
5 }
6}

En cada lí­nea de código estamos usando la programación orientada a objetos: lí­nea 1, creamos una clase (llamada Hola); lí­nea 2, declaramos un método (función) para nuestra clase; lí­nea 3, usando la clase Console invocamos el método WriteLine. Todo, programación orientada a objetos.

Objeto:

Los objetos son construcciones de programación que se componen de datos, comportamiento e identidad. Los datos del objeto se encuentran en los campos, propiedades y eventos del objeto; los métodos e interfaces del objeto definen los comportamientos del 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.

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 información que contienen.

  • A menudo, los objetos tienen métodos 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.

Campo:

Un campo es una variable de cualquier tipo que se declara directamente en una clase o estructura. Los campos son miembros de su tipo contenedor.

Una clase o estructura puede tener campos de instancia, campos estáticos o ambos. Los campos de instancia son específicos de una instancia de un tipo. Si tiene una clase T, con un campo de instancia F, puede crear dos objetos de tipo T y modificar el valor de F en cada objeto sin afectar al valor del otro objeto. Por el contrario, un campo estático pertenece a la propia clase y se comparte entre todas las instancias de dicha clase. Los cambios realizados en la instancia A serán inmediatamente visibles en las instancias B y C si tienen acceso al campo.

Por regla general, solo debe utilizar campos para variables con accesibilidad privada o protegida. Los datos que la clase expone al código de cliente se deben proporcionar a través de métodos, propiedades e indizadores. Si se utilizan estas construcciones para el acceso indirecto a campos internos, se establece una protección ante valores de entrada no válidos. Un campo privado que almacena los datos expuestos por una propiedad pública se denomina dispositivo de copia de seguridad o campo de respaldo.

Habitualmente los campos almacenan los datos a los que deben tener acceso más de un método de clase y que se deben almacenar durante más tiempo que el período de duración de un único método. Por ejemplo, una clase que representa una fecha del calendario podría tener tres campos enteros: uno para el mes, otro para el día y un tercero para el año. Las variables que no se utilizan fuera del ámbito de un único método se deben declarar como variables locales dentro del propio cuerpo del método.

Los campos se declaran en el bloque de clase especificando el nivel de acceso del campo, seguido por el tipo de campo y después por el nombre del mismo. Por ejemplo:

public class CalendarEntry
{
// private field
private DateTime date;

// public field (Generally not recommended)
public string day;

// Public property exposes date field safely.
public DateTime Date
{
get
{
return date;
}
set
{
if(value.Year > 1980 || value.Year <= 2008) { date = value; } else
throw new ArgumentOutOfRangeException();
}

}

// Public method also exposes date field safely.
public void SetDate(string dateString)
{
DateTime dt = Convert.ToDateTime(dateString);

if (dt.Year > 1980 || dt.Year <= 2008) { date = dt; } else
throw new ArgumentOutOfRangeException();
}

public TimeSpan GetTimeSpan(string dateString)
{
DateTime dt = Convert.ToDateTime(dateString);

if (dt != null && dt.Ticks < style="color:Blue;">return date - dt;
}
else
throw new ArgumentOutOfRangeException();

}
}


Para obtener acceso a un campo en un objeto, agregue un punto después del nombre de objeto, seguido del nombre del campo, como en objectname.fieldname. Por ejemplo:

CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";


Se puede proporcionar un valor inicial a un campo utilizando el operador de asignación cuando se declara el campo. Para asignar automáticamente al campo day el valor "Monday", por ejemplo, declararía day como en el ejemplo siguiente:

public class CalendarDateWithInitialization
{
public string day = "Monday";
//...
}

Los campos se inicializan inmediatamente antes de llamar al constructor para la instancia de objeto. Si el constructor asigna el valor de un campo, sobrescribirá cualquier valor dado durante la declaración del campo.

Los campos se pueden marcar como public, private, protected, internal o protected internal. Estos modificadores de acceso definen cómo pueden tener acceso a los campos los usuarios de la clase.

Un campo puede declararse de forma opcional como static. Esto hace que el campo esté siempre disponible para los llamadores, aunque no exista ninguna instancia de la clase.

Un campo puede declararse como readonly. Solo es posible asignar un valor a un campo de tipo readonly durante la inicialización o en un constructor. Un campo staticreadonly es muy similar a una constante, excepto en que el compilador de C# no tiene acceso a él en tiempo de compilación, solo en tiempo de ejecución.

Método:
Un método es un bloque de código que contiene una serie de instrucciones. Los programas hacen que las instrucciones se ejecuten mediante una llamada al método y la especificación de los argumentos de método necesarios. En C#, cada instrucción se ejecuta en el contexto de un método. El método Main es el punto de entrada de cada aplicación C# al que llama Common Language Runtime (CLR) cuando se inicia el programa.

Los métodos se declaran en una clase o estructura mediante la especificación del nivel de acceso como public o private, modificadores opcionales como abstract o sealed, el valor devuelto, el nombre del método y cualquier parámetro de método. Todos esos elementos constituyen la firma del método.

Los parámetros del método se encierran entre paréntesis y se separan por comas. Los paréntesis vacíos indican que el método no requiere ningún parámetro. Esta clase contiene tres métodos:

abstract class Motorcycle
{
// Anyone can call this.
public void StartEngine() {/* Method statements here */ }

// Only derived classes can call this.
protected void AddGas(int gallons) { /* Method statements here */ }

// Derived classes can override the base class implementation.
public virtual int Drive(int miles, int speed) { /* Method statements here */ return 1; }

// Derived classes must implement this.
public abstract double GetTopSpeed();
Función:
En programación orientada a objetos (POO), una función virtual o método virtual es una función cuyo comportamiento, al ser declarado "virtual", es determinado por la definición de una función con la misma cabecera en alguna de sus subclases. Este concepto es una parte muy importante del polimorfismo en la POO.
En .POO, cuando una clase derivada hereda de una clase base, un objeto de la clase derivada puede ser referido (o coercionado)tanto como del tipo de la clase base como del tipo de la clase derivada. Si hay funciones de la clase base redefinidas por la clase derivada, aparece un problema cuando un objeto derivado ha sido cohercionado como del tipo de la clase base. Cuando un objeto derivado es referido como del tipo de la base, el comportamiento de la llamada a la función deseado es ambiguo
Procedimiento:
Son unidades de código compuestas por una o más sentencias y que son almacenados en el servidor.

No hay comentarios:

Publicar un comentario