martes, 9 de febrero de 2010

POO en C# Contenido Basico I

Que son clases?:
Las clases son declaraciones o abstracciones de objetos, lo que significa, que una clase es la definición de un objeto. Cuando se programa un objeto y se definen sus características y funcionalidades, realmente se programa una clase.

Una clase es un contenedor de uno o más datos (variables o propiedades miembro) junto a las operaciones de manipulación de dichos datos (funciones/métodos). Las clases pueden definirse como estructuras (struct), uniones (union) o clases (class) pudiendo existir diferencias entre cada una de las definiciones según el lenguaje. además las clases son agrupaciones de objetos que describen su comportamiento

La sintaxis típica de una clase es:

class Nombre {
// Variables miembro (habitualmente privadas)
miembro_1; //lista de miembros
miembro_2;
miembro_3;

// Funciones o métodos (habitualmente públicas)
funcion_miembro_1( ); // funciones miembro conocidas
funcion_miembro_2 ( ); // funciones como métodos

// Propiedades (habitualmente públicas)
propiedad_1;
propiedad_2;
propiedad_3;
propiedad_4;
}


Variables miembro:
Las propiedades o atributos son características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las variables son algo así como el almacén de los datos de estado relacionados con los objetos.

Habitualmente, las variables miembro son privadas al objeto (siguiendo las directrices de diseño del Principio de ocultación) y su acceso se realiza mediante propiedades o métodos que realizan comprobaciones adicionales.

Suelen denominarse con nombres.

Métodos:
Implementan la funcionalidad asociada al objeto. Los métodos son el equivalente a las funciones en los lenguajes estructurados. Se diferencian de ellos en que es posible acceder a las variables de la clase de forma implícita.

Cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje invocando a un método que realizará la acción.

Habitualmente, los métodos suelen ser verbos.

Ejemplo de declaración de un método público que no devuelve nada:

public void NombreMetodo(Argumentos){Cuerpo del método;}

void (Referencia de C#)
Cuando se utiliza como tipo de valor devuelto por un método, void especifica que el método no devuelve ningún valor.

No se permite utilizar void en una lista de parámetros de un método. Un método que no utiliza parámetros y que no devuelve ningún valor se declara del siguiente modo:

void MetodoSimle();

void también se utiliza en un contexto no seguro para declarar un puntero a un tipo desconocido.

Clase Ejemplo:
En el siguiente ejemplo se muestra la declaración de campos de clase, constructores y métodos. También muestra la creación de instancias de objetos y la impresión de datos de instancia. En este ejemplo, se declaran dos clases, la clase persona, que contiene dos campos privados (nombre y edad) y dos métodos públicos. La segunda clase, MainClass, se utiliza para contener Main.

using System;
class Persona
{
private int edad;
private string nombre;

//constructor por defecto:
public Persona()
{
nombre = "N/A";
}

// Constructor:
public Persona(string _nombre, int _edad)
{
this.nombre = _nombre;
this.edad = _edad;
}

// Metodo para imprimir:
public void PrintPersona()
{
Console.WriteLine("{0}, {1} años de edad.", nombre, edad);
}
}

class MainClass
{
static void Main()
{
// Creando objetos
// Los objetos deben ser creados utilizando el operador new:
Persona persona1 = new Persona("Juancito", 11);
Persona persona2 = new Persona("Mariita", 10);

// Creando un objeto utilizando el constructor por defecto:
Persona persona3 = new Persona();

// Desplegando resultados:
Console.Write("persona #1: ");
persona1.PrintPersona();
Console.Write("persona #2: ");
persona2.PrintPersona();
Console.Write("persona #3: ");
persona3.PrintPersona();
}
}

Resultados
persona #1: Juancito, 11 años de edad.
persona #2: Mariita, 10 años de edad.
persona #3: N/A, 0 years old. Comentarios

En el ejemplo anterior, observe que sólo se puede obtener acceso a los campos privados (nombre y edad) a través de los métodos públicos de la clase persona. Por ejemplo, no es posible imprimir un valor nombre de la clase persona, desde el método Main, con una instrucción como ésta:

Console.Write(persona1.nombre); // Error El acceso a los miembros privados de persona desde Main sólo sería posible si Main fuera un miembro de la clase.

Los tipos declarados en una clase sin un modificador de acceso tienen como valor predeterminado private, de modo que los miembros de datos de este ejemplo seguirían siendo private aunque se quite la palabra clave.

Por último, observe que, para el objeto creado mediante el constructor predeterminado (persona3), el campo edad se inicializó a cero de forma predeterminada.


Modificadores de acceso
public: Acceso no restringido.

protected: Acceso limitado a la clase contenedora o a los tipos derivados de
esta clase.

internal: Acceso limitado al proyecto actual.

protected internal: Acceso limitado al proyecto actual o a los tipos derivados
de la clase contenedora.

private: Acceso limitado al tipo contenedor.


abstract
Indica que una clase está definida sólo como clase base de otras clases.

const
Especifica que el valor del campo o de la variable local no se pueden modificar.

event
Declara un evento.

extern
Indica que el método está implementado externamente.

new
Oculta un miembro heredado de un miembro de clase base.

override
Proporciona una nueva implementación de un miembro virtual heredado de una clase base.

partial
Define clases y estructuras parciales a lo largo del mismo ensamblado.

readonly
Declara un campo al cual sólo se pueden asignar valores como parte de la declaración o en un constructor de la misma clase.

sealed
Especifica que una clase no se puede heredar.

static
Declara un miembro que pertenece al propio tipo en vez de a un objeto específico.

unsafe
Declara un contexto no seguro.

virtual
Declara un método o un descriptor de acceso cuya implementación se puede cambiar mediante un miembro de reemplazo perteneciente a una clase derivada.

volatile
Indica que un campo puede ser modificado en el programa por el sistema operativo, el hardware o un subproceso en ejecución de forma simultánea.

3 comentarios:

  1. Man.. sos un CAPO!!.. excelente ejemplo.. 8 dudas de 10 ya se hicieron humo.. GRACIAS!!

    ResponderBorrar
  2. muchas gracias despejaste muchas dudas

    ResponderBorrar
  3. muchas gracias me fue de mucha ayuda

    ResponderBorrar

Preguntas;Comentarios;Aportes;Criticas Positivas;Recomendaciones.