Clases en C#

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();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado


Este problema requiere definir tres atributos de tipo entero donde almacenamos los valores de los lados del triángulo:

          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
        }
    }
}


Al ejecutar el código muestra el siguiente resultado



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();
        }
    }
}


Al ejecutar el código muestra el siguiente resultado



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();
        }
    }
}


Al ejecutar el código muestra el siguiente resultado


2 comentarios: