Programación Orientada a Objetos en C Sharp
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:
using System;
class Hola{
static void Main(string[] args){
Console.WriteLine("Hola parce!");
}
}
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.
Ejemplo de POO en C Sharp
En el siguiente ejemplo tomado del libro Cómo programar en C Sharp de Deitel, se utiliza una clase llamada tiempo. Dicha clase posee tres atributos (hora, minuto, segundo; todos variables enteras), y tres métodos. Vamos con el código, y mí¡s abajo una explicación:
using System;
public class Tiempo
{
private int hora; // 0 -23
private int minuto; // 0-59
private int segundo; // 0-59
// Constructor de la clase Tiempo que inicialize
//las variables a cero para poner la hora en media noche
public Tiempo()
{
cambiarHora( 0, 0, 0 );
}
// este metodo asigna una nueva hora en formato 24-horas.
public void cambiarHora(
int valorHora, int valorMinuto, int valorSegundo )
{
hora = ( valorHora >= 0 && valorHora < 24 ) ?
valorHora : 0;
minuto = ( valorMinuto >= 0 && valorMinuto < 60 ) ?
valorMinuto : 0;
segundo = ( valorSegundo >= 0 && valorSegundo < 60 ) ?
valorSegundo : 0;
}
// convertir a hora universal con el metodo format
public string horaUniversal()
{
return String.Format(
"{0:D2}:{1:D2}:{2:D2}", hora, minuto, segundo );
}
// convertir a tiempo estandar (12 horas) usando el metodo format
public string horaEstandar()
{
return String.Format( "{0}:{1:D2}:{2:D2} {3}",
( ( hora == 12 || hora == 0 ) ? 12 : hora % 12 ),
minuto, segundo, ( hora < 12 ? "AM" : "PM" ) );
}
}
- En la segunda línea vemos la instrucción
public class Tiempo; esto no es mí¡s que la declaración de nuestra clase. Las clases por lo general son de tipopublic, aunque si usamos clases internas anónimas es recomendable que seanprivate, aunque eso es otro tema… sigamos. - En las líneas 4, 5 y 6 tenemos la declaración de los atributos de nuestra clase. Fíjate como todos ellos son
private; es un buen tip de programación que los atributos de nuestras clases sean privados, lo que significa que sólamente serí¡n accesibles desde los métodos de la clase. - En la línea 9 tenemos la declaración de un constructor. Los constructores son los métodos invocados en el momento de crear objetos; su función es la darle valores a los atributos del objeto. Podemos tener cuantos constructores necesitemos, por supuesto con diferente tipo de argumentos. Ademí¡s, es necesario tener en cuenta que los constructores son métodos que NO tienen ningún valor de retorno, y que deben llevar el mismo nombre de la clase.
- En las líneas 14, 25 y 31 estí¡n declarados los métodos o funciones, que permiten realizar operaciones sobre nuestro objeto. Por ejemplo, el método
cambiarHorarecibe tres argumentos, con los cuales modifica los atributos. Por lo general, los métodos de las clases son de tipopublic, lo que permite invocarlos directamente a través de una instancia de la clase (es decir, un objeto).
Con el siguiente código, utilizamos la clase Tiempo:
using System;
class PruebaTiempo {
static void Main( string[] args ) {
Tiempo tiempo = new Tiempo(); // llamada al constructor de Tiempo
string salida;
// mostrar datos iniciales
salida = "Hora universal inicial es: " +
tiempo.horaUniversal() +
"\nHora estandar inicial es: " +
tiempo.horaEstandar();
// cambiar hora (valida)
tiempo.cambiarHora( 13, 27, 6 );
// aniadir nueva hora a la salida
salida += "\n\nHora universal despues de cambiada: " +
tiempo.horaUniversal() +
"\nHora estandar despues de cambiada: " +
tiempo.horaEstandar();
// cambiar hora (invalida)
tiempo.cambiarHora( 99, 99, 99 );
salida += "\n\nDespues de poner valores invalidos: " +
"\nHora universal: " + tiempo.horaUniversal() +
"\nHora estandar: " + tiempo.horaEstandar();
Console.WriteLine( salida );
}
}
- En la línea 3 creamos un objeto de tipo tiempo. Por lo general la sintaxis para crear objetos es la siguiente:
Clase objeto = new Clase(). Es decir, el nombre de la clase, el nombre del objeto, y posteriormente se incia el objeto haciendo una invocación al constructor de la clase (anteponiendo la instrucciónnew). - En la línea 8, invocamos uno de los métodos de la clase (
horaUniversal). La sintaxis para la invocación de los métodos es:objeto.nombreMetodo(arg1, arg2, ...). Así, en la línea 12 podemos ver otro ejemplo de invocación, en la que pasamos algunos argumentos al método.
El resultado del programa es el siguiente:
Hora estandar inicial es: 12:00:00 AM
Hora universal despues de cambiada: 13:27:06
Hora estandar despues de cambiada: 1:27:06 PM
Despues de poner valores invalidos:
Hora universal: 00:00:00
Hora estandar: 12:00:00 AM
Acceso a los atributos de un objeto
Si al momento de declarar los atributos de una clase utilizamos el modificador de acceso public, es posible acceder a dichos atributos directamente de la siguiente manera: objeto.variable; ó objeto.variable = unValor;. Esto por supuesto NO es recomendable, es decir, los atributos de una clase deberían ser SIEMPRE privados.
De igual forma, si hemos declarado atributos con el modificador de acceso private, NO es posible acceder directamente a ellos. Así que para modificarlos, debemos crear métodos de acceso público, algo por supuesto mí¡s seguro. Si intentamos acceder directamente a atributos que se han declarado como privados, obtendremos errores de compilación.
19 Comentarios | deja el tuyo





ps esta muiii interezzant
tu pagg
lastima que no hagas tareazzz
bababe
Hola, muy interesantes tus recursos, sólo una preguntilla, cuál es el editor que utilizas para lograr que el código se vea línea por línea (una gris y otra blanca), se ve nice eso, saludos
Utilizo un plugin para WordPress llamado SyntaxHighlighter.
Un saludo.
gracias por el aporte
Por favor alquien me podria mandar ejemplo asi de simples para poder analizarlos..recien comienzo y ejemplos explicados de esta manera ayudan mucho..desde ya muchas gracias… mi correo es joaquinguzman282@hotmail.com
es pero q me sigan enviando mas sobre java y c sharp
Gracias por el aporte me servira mucho.
Diferentes razas cultura y sexos ,pero solo una pasion GNU/Linux.-
necesito algun manual o video, donde pueda programar en csharp pero con visual estudio
Por fa..Gracias¡
Pues en los manuales o videos no se programa XD pero haber si esto te sirve http://casidiablo.net/c-crear-una-aplicacion-usando-visual-studio/
esta super buenooo
como harias el de palabras palindromas en Programacion orientada a objetos
gracias por compartir conocimiento. quiero afianzar y desarrollar con csharp. por favor envíenme ejemplos básicos y de nivel medio. aplicaciones windows y web.
gracias y éxitos.
existiran otros sistemas operativos pero no como WINDOWS
Muy buenos tutos, gracias.
jjjjjjmmmmmmmmmm
ESPERO Y ME MANDEN TUTORIALES DE ESTO Y CODIGOS ES MUY INTERESANTE