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 ...
Serialización: XmlSerializer y BinaryFormater
Handler para manipular imagenes
Conversiones de tipos personalizadas (VB y C#)
Compresión por gzip y deflate
La página Web que está abriendo contiene tanto elementos seguros como no seguros.
Cómo insertar un fichero .xml en un campo de tipo XML de SQL server 2005 o 2008
Comparativa de sentencias VB.Net vs C#
Aprende Ajax desde cero
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)

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 

 
muy bueno por dayana rivas (monagas)
Respuesta recibida el [02/12/2008 12:36:45]
muy bueno este tutorial, me sirvio de mucho para mi trabajo, halla aquellos flojos que dicen que esta aburrido, solo quieren que le hagan las cosas.. y de aca se puede sacar muy buena informacion.

 
buen manual por hugo
Respuesta recibida el [05/01/2009 09:54:04]
Me parece un muy buen manual ya que me a ayudado a comprender como funcionan las clases.

Buen manual

 
El tutorial esta bien y no cre... por edilson
Respuesta recibida el [05/01/2009 01:44:29]
El tutorial esta bien y no creo que le falten ejemplos. Yo lo estoy leyendo y hasta el momento he comprendido los conceptos, lo que pasa es que hay personas que requieren todo molidito y no les gusta pensar un poquito....

 
???? por X
Respuesta recibida el [25/01/2009 03:26:56]
..Pues.. no entiendo nada de los anteriores comentarios. ¿Ejemplos? ¿para qué? El tutorial es del LENGUAJE DE PROGRAMACIÓN C#, no de cómo programar. NO ES LO MISMO. Programar es la lógica con la que se hacen (o harán) las cosas, el lenguaje de programación la forma en la que pasamos esto a la computadora. 
En mi opinión todos los quejumbrosos deberían de aprender a programar primero; una vez esto, el codificar se puede hacer en cualquier lenguaje de programación, C y sus derivados, Pascal, VB, etc...

 
:D por Lootpack
Respuesta recibida el [23/03/2009 10:55:11]
Un tutorial cojonudo.

Estoy empezando con mis primeros pinitos con este lenguaje y me parece que tiene los conceptos claros y fáciles de entender.

Ni me parece aburrido ni me parece incompleto respecto al número de ejemplos (opinión personal claro).

Un saludo y gracias

 
Me parece que lo explica bien ... por Xelnaga
Respuesta recibida el [22/04/2009 12:51:12]
Me parece que lo explica bien y no necesita mas ejemplos. Si no lo entendeis dedicaros a estudiar otra cosa porque esta realmente mascadito.

 
Me parece que lo explica bien ... por Xelnaga
Respuesta recibida el [22/04/2009 12:51:51]
Me parece que lo explica bien y no necesita mas ejemplos. Si no lo entendeis dedicaros a estudiar otra cosa porque esta realmente mascadito.

 
PREGUNTA por CRISTIAN
Respuesta recibida el [18/05/2009 11:40:48]
COMO HAGO ESTOY HACIENDO UN PROGRAMA EN C# Y NECESITO Q EL PROGRAMA INTERACTUE CON UNA BASE DE DATOS COMO LO HAGO QUEDARE MUY AGRADECIDO SI ME OUEDEN AYUDAR


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: 41293 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: 201 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 315 | Comentarios: 1 | Archivo: Articulos
Visitas: 390 | Comentarios: 1 | Archivo: Articulos
Categorias: Humor
Visitas: 615 | Comentarios: 3 | Archivo: Articulos
Categorias: C#|ASP.NET
Visitas: 1177 | Comentarios: 4 | Archivo: Articulos
Visitas: 697 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|ASP|Windows XP|Windows 2003
Visitas: 828 | Comentarios: 2 | Archivo: Articulos
Categorias: Java|Solaris
Visitas: 584 | Comentarios: 0 | Archivo: Articulos
Visitas: 1484 | Comentarios: 1 | Archivo: Articulos
Categorias: ADO.NET
Visitas: 1533 | Comentarios: 3 | Archivo: Articulos
Categorias: ASP.NET

Útimos temas recibidos en los foros ...
Manual Visual Studio.NET por Shiko ... [Visual Basic .NET] 34 26/10/2006
llamar procedimientos de pl/sql en java por jhon ... [ORACLE] 0 03/07/2009
consulta multitablas por anga ... [mySQL] 0 03/07/2009
objetos helper php bajo oracle por objetos_helper_oracle ... [ISAPI] 0 02/07/2009
ranuras isa o pci por sara ... [Access] 5 30/03/2006
descargar tutorial C# por afmp ... [C#] 54 14/10/2008
Tutorial TOAD para Oracle en Español por ijpj ... [ORACLE] 19 14/03/2009
quiero mi numero de mi autogenerado por pablo ... [Visual Basic .NET] 1 15/06/2009
Ayuda con cargar fotografias de otra pc por Alex ... [ASP.NET] 0 01/07/2009
splash screen por zelca ... [Visual Basic .NET] 0 01/07/2009
Error de inicio de aplicación por Danrre ... [C#] 0 30/06/2009
sumar los precios de la columna "precio" del grig por jardinderosas ... [C#] 7 01/11/2007

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 ...
14/01/2008 Novedades Visual Studio 2008 DataSet en 3 capas o MVC
12/06/2007 Estructuras de control en Transact SQL    forma parte de...Tutorial de Transact SQL
01/06/2006 Cursores de actualización en PL/SQL    forma parte de...Tutorial PL/SQL
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
13/04/2008 Métodos Extensores: INNER JOIN    forma parte de...Linq y Métodos extensores
28/06/2006 Excepciones en PL/SQL    forma parte de...Tutorial PL/SQL
03/10/2006 Herencia y métodos virtuales    forma parte de...Tutorial C#
14/07/2007 Como encriptar texto y variables usando algoritmos estandard como DES o TRIPLEDES
03/10/2006 Creación de objetos    forma parte de...Tutorial C#
03/10/2006 Definición de clases    forma parte de...Tutorial C#

 

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