InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial C#
Introduccion a C#
Programacion con C#
Fundamentos de C#
Operadores
Instrucciones
Estrcuturas de control.
Definición de clases
Creación de objetos
Herencia y métodos virtuales
Polimorfismo
Ocultación de miembros
Miembros de tipo
Encapsulación
Espacios de nombres
Importación de espacios de nombres
Espacio de nombres distribuidos
Variables y tipos de datos
Tablas unidimensionales
Tablas multidimensionales
La clase System.Array
Cadenas de texto
Constantes
Orden de inicialización de variables
Métodos
Métodos externos
Constructores
Destructores
Propiedades
Indizadores
Redefinición de operadores
Delegados y eventos
La clase MulticastDelegate
Llamadas asíncronas
Implementación interna de los delegados
Eventos
Estructuras
Boxing y unboxing
Constructores de estructuras
Enumeraciones
Interfaces
Excepciones
Otras instrucciones
Atributos
Definición de nuevos atributos
Lectura de atributos en tiempo de ejecución
Atributos de compilación
Pseudoatributos
Código inseguro
Definición de punteros
Manipulación de punteros
Operadores relacionados con código inseguro
Fijación de variables apuntadas
Novedades de C# 2.0
Genéricos
Tipos parciales
Iteradores
Mejoras en la manipulación de delegados
Tipos anulables
Modificadores de visibilidad de bloques get y set
Clases estáticas
Referencias a espacios de nombres
Supresión temporal de avisos
Atributos condicionales
Incrustación de tablas en estructuras
Modificaciones en el compilador
También puedes ver ...
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
Generar archivos PDF con C#
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
String.Format

Afiliados
La Web del programador
MundoProgramacion


 

Definición de clases

Conceptos de clase y objeto

    C# es un lenguaje orientado a objetos puro[6], 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.

    Una clase es la definición de las características concretas de un determinado tipo de objetos. Es decir, de cuáles son los datos y los métodos de los que van a disponer todos los objetos de ese tipo. Por esta razón, se suele decir que el tipo de dato de un objeto es la clase que define las características del mismo[7].

Sintaxis de definición de clases

La sintaxis básica para definir una clase es la que a continuación se muestra:


class <nombreClase>
{
 <miembros>
}

    De este modo se definiría una clase de nombre cuyos miembros son los definidos en . Los miembros de una clase son los datos y métodos de los que van a disponer todos los objetos de la misma. Un ejemplo de cómo declarar una clase de nombre A que no tenga ningún miembro es la siguiente:


class A
{}

    Una clase así declarada no dispondrá de ningún miembro a excepción de los implícitamente definidos de manera común para todos los objetos que creemos en C#. Estos miembros los veremos dentro de poco en este mismo tema bajo el epígrafe La clase primegina: System.Object.

    Aunque en C# hay muchos tipos de miembros distintos, por ahora vamos a considerar que éstos únicamente pueden ser campos o métodos y vamos a hablar un poco acerca de ellos y de cómo se definen:

  • Campos: Un campo es un dato común a todos los objetos de una determinada clase. Para definir cuáles son los campos de los que una clase dispone se usa la siguiente sintaxis dentro de la zona señalada como <miembros> en la definición de la misma:


<tipoCampo> <nombreCampo>;

El nombre que demos al campo puede ser cualquier identificador que queramos siempre y cuando siga las reglas descritas en el Tema 4: Aspectos Léxicos para la escritura de identificadores y no coincida con el nombre de ningún otro miembro previamente definido en la definición de clase.

Los campos de un objeto son a su vez objetos, y en <tipoCampo> hemos de indicar cuál es el tipo de dato del objeto que vamos a crear. Éste tipo puede corresponderse con cualquiera que los predefinidos en la BCL o con cualquier otro que nosotros hallamos definido siguiendo la sintaxis arriba mostrada. A continuación se muestra un ejemplo de definición de una clase de nombre Persona que dispone de tres campos:


class Persona
{
   string Nombre;// Campo de cada objeto Persona que almacena su nombre
   int Edad;  // Campo de cada objeto Persona que almacena su edad
   string NIF;   // Campo de cada objeto Persona que almacena su NIF
}

    Según esta definición, todos los objetos de clase Persona incorporarán campos que almacenarán cuál es el nombre de la persona que cada objeto representa, cuál es su edad y cuál es su NIF. El tipo int incluido en la definición del campo Edad es un tipo predefinido en la BCL cuyos objetos son capaces de almacenar números enteros con signo comprendidos entre -2.147.483.648 y 2.147.483.647 (32 bits), mientras que string es un tipo predefinido que permite almacenar cadenas de texto que sigan el formato de los literales de cadena visto en el Tema 4: Aspectos Léxicos

    Para acceder a un campo de un determinado objeto se usa la sintaxis:


<objeto>.<campo>

    Por ejemplo, para acceder al campo Edad de un objeto Persona llamado p y cambiar su valor por 20 se haría:


p.edad = 20;

    En realidad lo marcado como <objeto> no tiene porqué ser necesariamente el nombre de algún objeto, sino que puede ser cualquier expresión que produzca como resultado una referencia no nula a un objeto (si produjese null se lanzaría una excepción del tipo predefinido System.NullPointerException)

  • Metodos:Un método es un conjunto de instrucciones a las que se les asocia un nombre de modo que si se desea ejecutarlas basta referenciarlas a través de dicho nombre en vez de tener que escribirlas. Dentro de estas instrucciones es posible acceder con total libertad a la información almacenada en los campos pertenecientes a la clase dentro de la que el método se ha definido, por lo que como al principio del tema se indicó, los métodos permiten manipular los datos almacenados en los objetos.

La sintaxis que se usa en C# para definir los métodos es la siguiente:


<tipoDevuelto> <nombreMétodo> (<parametros>)
{
 <instrucciones>
}

Todo método puede devolver un objeto como resultado de la ejecución de las instrucciones que lo forman, y el tipo de dato al que pertenece este objeto es lo que se indica en <tipoDevuelto>. Si no devuelve nada se indica void, y si devuelve algo es obligatorio finalizar la ejecución de sus instrucciones con alguna instrucción return <objeto>; que indique qué objeto ha de devolverse.

Opcionalmente todo método puede recibir en cada llamada una lista de objetos a       los que podrá acceder durante la ejecución de sus instrucciones. En <parametros> se indica es cuáles son los tipos de dato de estos objetos y cuál es el nombre con el que harán referencia las instrucciones del método a cada uno de ellos. Aunque los objetos que puede recibir el método pueden ser diferentes cada vez que se solicite su ejecución, siempre han de ser de los mismos tipos y han de seguir el orden establecido en <parametros>.

Un ejemplo de cómo declarar un método de nombre Cumpleaños es la siguiente modificación de la definición de la clase Persona usada antes como ejemplo:


class
Persona
{
 string Nombre;//Campo de cada objeto Persona que almacena su nombre
 int Edad;     //Campo de cada objeto Persona que almacena su edad
 string NIF;   //Campo de cada objeto Persona que almacena su NIF
 
 void Cumpleaños()//Incrementa en uno de la edad del objeto Persona
 {
  Edad++;
 }
}

La sintaxis usada para llamar a los métodos de un objeto es la misma que la usada para llamar a sus campos, sólo que ahora tras el nombre del método al que     se desea llamar hay que indicar entre paréntesis cuáles son los valores que se desea dar a los parámetros del método al hacer la llamada. O sea, se escribe:


<objeto>.<método>(<parámetros>)

Como es lógico, si el método no tomase parámetros se dejarían vacíos los parámetros en la llamada al mismo. Por ejemplo, para llamar al método Cumpleaños() de un objeto Persona llamado p se haría:


p.Cumpleaños();   // El método no toma parámetros,
// luego no le pasamos ninguno

Es importante señalar que en una misma clase pueden definirse varios métodos con el mismo nombre siempre y cuando tomen diferente número o tipo de parámetros. A esto se le  conoce como sobrecarga de métodos, y es posible ya que el compilador sabrá a cual llamar a partir de los <parámetros> especificados.

Sin embargo, lo que no se permite es definir varios métodos que únicamente se diferencien en su valor de retorno, ya que como éste no se tiene porqué indicar al llamarlos no podría diferenciarse a que método en concreto se hace referencia en cada llamada. Por ejemplo, a partir de la llamada:


p.Cumpleaños();

Si además de la versión de Cumpleaños() que no retorna nada hubiese otra que retornase un int, ¿cómo sabría entonces el compilador a cuál llamar?

Antes de continuar es preciso señalar que en C# todo, incluido los literales, son objetos del tipo de cada literal y por tanto pueden contar con miembros a los que se accedería tal y como se ha explicado. Para entender esto no hay nada mejor que un ejemplo:


string s = 12.ToString();

Este código almacena el literal de cadena “12” en la variable s, pues 12 es un objeto de tipo int (tipo que representa enteros) y cuenta cuenta con el método común a todos los ints llamado ToString() que lo que hace es devolver una cadena cuyos caracteres son los dígitos que forman el entero representado por el int sobre el que se aplica; y como la variable s es de tipo string (tipo que representa cadenas) es perfectamente posible almacenar dicha cadena en ella, que es lo que se hace en el código anterior.


Inicio | Tutorial C# Estrcuturas de control.Tutorial C#Creación de objetos Versión para imprimir Foros de consulta

 
verde por x
Respuesta recibida el [10/06/2007 12:07:27]
mejoren su pagina por que esta bien aburrida

 
Respuesta al anterior por ElErmitaño
Respuesta recibida el [07/08/2007 04:01:38]
Se supone que es 1 tutorial sobre C#, no una página de entretenimiento ^_^" jajaja

 
Frank Moya Pons por Anónimo
Respuesta recibida el [12/10/2007 08:44:51]
Que es la Clase, su Clasificacion y su Valor

 
=P por Jealotus
Respuesta recibida el [08/11/2007 09:29:46]
me parece buen tutorial... me ha explicado mejor la mayoria de las cosas que las que me ha explicado el maestro...
faltan algunos ejemplos... o eso ayudaria mas a comprender otros casos...

 
xap por mari
Respuesta recibida el [29/01/2008 07:42:28]
pues si me ayudo un poquito con unas dudas pero faltan mas ejemplos 

 
me gustaría... por angel
Respuesta recibida el [09/03/2008 12:25:32]
Hola, apenas empecé a leer éste manual y quisiera saber si me podrían mandar ejemplos de todos los temas que tienen y además quisiera saber si se puede descargar èste tutorial?
sancermoa@gmail.com

 
Bueno por Fredy
Respuesta recibida el [03/04/2008 10:30:05]
DEberias poenr ejemplos mas interesante y ams informacion, la verdad no parece un tutorial jeje

 
regular por yuli
Respuesta recibida el [15/04/2008 01:32:53]
hola. poss me parecio un poco aburridon, se necesitan mas ejemplos, y mayor explikcion, ya saben q programacion no es nada facil, asi q pongas mas ejemplos, seee. bye?.


 
regular por yuli
Respuesta recibida el [15/04/2008 01:35:12]
hola aki no mas pasando, por fa pon mas ejemplos q lo expliquen bien y q sea entendible mayormnt, estauvo aburrido, pero pueden mejorar. sale.aprovechando.
visiten mi metro www.metroflog.com/yuli_89

 
No entiendo las quejas de la g... por Jon
Respuesta recibida el [04/05/2008 05:51:45]
No entiendo las quejas de la gente sobre lo aburrido que resulta el tutorial. No es una novela ni una página de juegos, es un tutorial sobre un lenguaje de programación... la verdad es que con tal de quejarse la gente. En fin, que muchas gracias por colgar este manual.

 
comentario.. por ALFREDYNHO
Respuesta recibida el [10/05/2008 11:47:47]
Esta muy bueno pero podria ser excelente con algunos ejemplos mas ya que aprender a programar es programando  y para eso se necesita ejemplitos ^_^
Yo no soy un experto pero ahi voy

 
kedo 1 duda por vicky
Respuesta recibida el [04/06/2008 08:58:35]
no encontre la definicion de control

por todo lo demas esta muy bien el tutorial...

 
... por Stratega
Respuesta recibida el [10/06/2008 04:45:00]
A este tutorial, se le deberían agregar más ejemplos !!! Favor de no confundir "Ejemplos" con "Entretención".

 
A caballo regalado ... por Bufalo_lp
Respuesta recibida el [13/07/2008 07:42:54]
Quejarse menos, leer y practicar más. Chiquillos, comprender la sintaxis de un lenguaje es un cosa. Ahora, aprender algoritmo estructurado, algoritmo O.O. es otra historia, los ejemplos sirven pero no generan producción propia. Uno aprende de los errores y estos se dan con la practica.  

 
Efectivamente hacen falta ejemplo por Algoeno
Respuesta recibida el [01/08/2008 03:58:03]
Me parece un buen tutorial y estoy de acuerdo con lo que dice JON pues es un tutorial de programacion, y no una revista de chismes o algo asi, mejor hay que leer mas y dejar de quejarse. haaaa y la verdad si hacen falta mas ejemplos, digo para entender mejor puesto que en mi caso es mejor la practica que la teoria, si pudieran poner mas ejemplos estaria de lujo...

 
Excelente por Ocupado
Respuesta recibida el [21/08/2008 04:11:06]
Me pareció muy claro y útil. Supongo que cuando piden ejemplos se referirán a algún código completo de algún juego divertido jaja
A leer mas detenidamente y a quejarse menos :)
Muchas gracias

 
muy buen tutorial por viktor
Respuesta recibida el [02/09/2008 05:50:09]
me parece excelente muy bien explikado,,!

saludo0s

 
Clases por Israel
Respuesta recibida el [18/10/2008 10:21:07]
Gracias por el tutorial, ahora, como podria ser una clase para manipular datos?

gracias por todo

 
Hola por Linda
Respuesta recibida el [10/11/2008 03:58:00]
Me parece un  buen manual, lo que importa es la intención en enseñarnos a programar, ah y lo de aburrido no tiene nada, solo que como alguien empieza a poner  un comentario asi ya todos se siguen, y mejor que hagan las cosas solos, no quieren que aqui les hagan la tarea o si? Por mi parte buen manual, ojala sigan subiendo mas cosas

 
graxias por toño
Respuesta recibida el [16/11/2008 10:09:44]
esta bien padre suy pag aunke me gustaria ke icieran un programa el cual nos mostrara el signo zodiakalde la persona al escribir su fecha 


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial C# Estrcuturas de control.Tutorial C#Creación de objetos Versión para imprimir

Definición de clases
Autor: José Antonio González Seco
Visitas: 27093 Fecha de publicación: 03/10/2006
José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.




Visitas: 305 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 137 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 101 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 430 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1449 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 239 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 611 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 2578 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 464 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 1072 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista

Útimos temas recibidos en los foros ...
replicacion de datos por jade ... [SQL Server] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 con logo... por Moises ... [ASP.NET] 1 21/11/2008
Crystal reports XI Release 2 y asp.net por mvargas ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 por Moises ... [C#] 0 21/11/2008
Cuestión de BFILE. por Megatron ... [ORACLE] 0 21/11/2008
Enviar email por Dol ... [ASP.NET] 5 21/08/2007
*******PREGUNTA********: por T.S.U.En Informatíca ... [Visual Basic 6.0] 5 17/03/2008
Programar tareas en oracle. por Rodrigo ... [ORACLE] 0 21/11/2008
fechas con datatimepicker por peyin ... [Visual Basic .NET] 3 20/11/2008
agregar datos de un gridview a un textbox por jhors ... [ASP.NET] 3 19/09/2007
Select de sql en c# por Stuart ... [C#] 1 20/11/2008
Manual en Español de SQL Navigator for Oracle por Maira ... [ORACLE] 12 30/03/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
13/07/2006 Paquetes en PL/SQL    forma parte de...Tutorial PL/SQL
17/07/2006 Tipo VARRAY    forma parte de...Tutorial PL/SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
09/10/2006 Cadenas de texto    forma parte de...Tutorial C#
10/07/2006 Funciones en PL/SQL    forma parte de...Tutorial PL/SQL
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
19/09/2006 Recuperar datos BLOB de ORACLE
11/09/2006 Trabajar con datos de tipo BLOB en ORACLE
03/10/2006 Programacion con C#    forma parte de...Tutorial C#

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]