La programación orientada a objetos se basa en la programación de clases; a diferencia de la programación estructurada, que está centrada en las funciones.
Clase en C#
Una clase es un molde del que luego se pueden crear múltiples objetos, con similares características.
Una clase es una plantilla (molde), que define atributos (variables) y métodos (funciones)
La clase define los atributos y métodos comunes a los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y compartirán las mismas funciones.
Debemos crear una clase antes de poder crear objetos (instancias) de esa clase. Al crear un objeto de una clase, se dice que se crea una instancia de la clase o un objeto propiamente dicho.
La sintaxis de una clase en c# es:
class [nombre de la clase] {
[atributos o variables de la clase]
[métodos o funciones de la clase]
[main]
}
Definición de un Método en C#
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, los métodos permiten manipular los datos almacenados en los objetos.
Estructura de una Clase en C#
Los componentes principales de una clase, que a partir de ahora llamaremos miembros, son:
Atributos, que determinan una estructura de almacenamiento para cada objeto de la clase.
Métodos, que no son m´as que operaciones aplicables sobre los objetos.
Para entender mejor el temo sobre las clases veremos algunos ejemplos
Ejercicios Resueltos de Clases en C#
Ejemplo 1
Desarrollar un programa que permita ingresar los lados de un triángulo e implemente los siguientes métodos: inicializar los atributos, imprimir el valor del lado mayor y otro método que muestre si es equilátero o no.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PruebaClase
{
class Triangulo
{
private int lado1,
lado2, lado3;
//Metodo inicializar
public void
Inicializar()
{
string linea;
Console.Write("Ingrese
lado 1:");
linea = Console.ReadLine();
lado1 = int.Parse(linea);
Console.Write("Ingrese lado 2:");
linea = Console.ReadLine();
lado2 = int.Parse(linea);
Console.Write("Ingrese
lado 3:");
linea = Console.ReadLine();
lado3 = int.Parse(linea);
}
//Metodo lado mayor
public void
LadoMayor()
{
Console.Write("Lado
mayor:");
if (lado1 > lado2 && lado1 > lado3)
{
Console.WriteLine(lado1);
}
else
{
if (lado2 > lado3)
{
Console.WriteLine(lado2);
}
else
{
Console.WriteLine(lado3);
}
}
}
//Metodo es
equilatero
public void
EsEquilatero()
{
if (lado1 == lado2 && lado1 == lado3)
{
Console.Write("Es un triángulo equilátero");
}
else
{
Console.Write("No es un triángulo equilátero");
}
}
static void Main(string[] args)
{
Triangulo triangulo1 = new
Triangulo();
triangulo1.Inicializar();
triangulo1.LadoMayor();
triangulo1.EsEquilatero();
Console.ReadKey();
}
}
}
private int lado1, lado2, lado3;
El primer método que deberá llamarse desde la main es el Inicializar donde cargamos los tres atributos por teclado:
public void Inicializar() {}
El método LadoMayor muestra el valor mayor de los tres enteros ingresados:
public void LadoMayor() {}
Como podemos observar cuando un problema se vuelve más complejo es más fácil y ordenado separar los distintos algoritmos en varios métodos y no codificar todo en la main.
El último método de esta clase verifica si los tres enteros ingresados son iguales:
public void EsEquilatero() {}
En la main creamos un objeto de la clase Triangulo y llamamos los métodos respectivos:
static void Main(string[] args)
{
Triangulo triangulo1 = new Triangulo();
triangulo1.Inicializar(); //llamando al método inicializar()
triangulo1.LadoMayor(); //llamando al método LadoMayor()
triangulo1.EsEquilatero(); //llamando al método EsEquilatero()
Console.ReadKey();
}
Ejemplo 2
Realizar un programa que tenga una clase que permita ingresar el nombre y la edad de una persona. Mostrar los datos ingresados. Imprimir un mensaje si es mayor de edad (edad>=18)
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace PruebaClase
{
class Persona
{
private string
nombre;
private int edad;
//Método Inicializar()
public void
Inicializar()
{
Console.Write("Ingrese
nombre:");
nombre
= Console.ReadLine();
string
linea;
Console.Write("Ingrese
edad:");
linea = Console.ReadLine();
edad = int.Parse(linea);
}
//Método Imprimir()
public void
Imprimir()
{
Console.Write("Nombre:");
Console.WriteLine(nombre);
Console.Write("Edad:");
Console.WriteLine(edad);
}
//Método es EsMayorEdad()
public void
EsMayorEdad()
{
if (edad >= 18)
{
Console.Write("Es mayor de edad");
}
else
{
Console.Write("No es mayor de edad");
}
Console.ReadKey();
}
// Main principal del programa
static void Main(string[] args)
{
Persona per1 = new
Persona();
per1.Inicializar(); //Llamando al método Inicializar();
per1.Imprimir(); //Llamando al método Imprimir();
per1.EsMayorEdad(); //Llamando al método EsMayorEdad
}
}
}
Ejemplo 3
Desarrollar un programa que tenga una clase que represente un Cuadrado y tenga los siguientes métodos: ingresar valor a su lado, imprimir su perímetro y su superficie.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace PruebaClase
{
class Cuadrado
{
private int lado;
//método Inicializar()
public void
Inicializar()
{
Console.Write("Ingrese
valor del lado:");
string linea;
linea = Console.ReadLine();
lado = int.Parse(linea);
}
//Método ImprimirPerimetro()
public void
ImprimirPerimetro()
{
int perimetro;
perimetro = lado * 4;
Console.WriteLine("El
perímetro es:" + perimetro);
}
//Método ImprimirSuperficie()
public void
ImprimirSuperficie()
{
int superficie;
superficie = lado * lado;
Console.WriteLine("La
superficie es:" + superficie);
}
//Main() principal del programa
static void Main(string[] args)
{
Cuadrado cuadrado1 = new
Cuadrado();
cuadrado1.Inicializar(); //Llamando al método Inicializar();
cuadrado1.ImprimirPerimetro(); //Llamando al método ImprimirPerimetro();
cuadrado1.ImprimirSuperficie(); //Llamando al método ImprimirSuperficie();
Console.ReadKey();
}
}
}
Ejemplo 4
Implementar la clase operaciones. Se deben ingresar los dos valores enteros, calcular su suma, resta, multiplicación y división, cada una en un método, e imprimir dichos resultados.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace PruebaClase
{
class Operaciones
{
private int valor1,
valor2;
// Método Inicializar()
public void
Inicializar()
{
string linea;
Console.Write("Ingrese
primer numero:");
linea = Console.ReadLine();
valor1 = int.Parse(linea);
Console.Write("Ingrese
segundo numero:");
linea = Console.ReadLine();
valor2 = int.Parse(linea);
}
// Método Sumar()
public void Sumar()
{
int suma;
suma = valor1 + valor2;
Console.WriteLine("La
suma es:" + suma);
}
//Método Restar()
public void Restar()
{
int resta;
resta = valor1 - valor2;
Console.WriteLine("La
resta es:" + resta);
}
// Método Multiplicar()
public void
Multiplicar()
{
int multiplicacion;
multiplicacion = valor1 * valor2;
Console.WriteLine("La
multiplicación es:" + multiplicacion);
}
//Método Dividir()
public void Dividir()
{
int division;
division = valor1 / valor2;
Console.WriteLine("La
división es:" + division);
}
// Main()
principal del programa
static void Main(string[]
args)
{
Operaciones operacion1 = new
Operaciones();
operacion1.Inicializar(); // Llamando al método Inicializar();
operacion1.Sumar(); // Llamando al método Sumar();
operacion1.Restar(); // Llamando al método Restar();
operacion1.Multiplicar(); // Llamando al método Multiplicar();
operacion1.Dividir(); // Llamando al método Dividir();
Console.ReadKey();
}
}
}
como implementariamos una clase color
ResponderEliminarHola..En el ejemplo 2
ResponderEliminar¿Cómo lo amplio para n personas?