Introducción al Lenguaje C# y al Paradigma Orientado a Objetos

Introducción al Lenguaje C# y al Paradigma Orientado a Objetos

Los conceptos básicos para empezar a construir aplicaciones funcionales y reales

Hay un precio que pagar antes de empezar a construir aplicaciones para el mundo real y no refiere a alguna suscripción o cobro, me refiero a un mínimo de conocimiento teórico sobre el lenguaje y sobre un paradigma de programación - el orientado a objetos.

Llevaremos el viaje lo más suave posible, pero en un futuro mi recomendación es profundizar en los conceptos y en el conocimiento del lenguaje y para no inventarnos la rueda lo mejor es este enlace oficial de Microsoft Documentos de C#: inicio, tutoriales y referencias. | Microsoft Learn

Yo aportaré una visión resumida.

¿Que es C#?

C# (pronunciado "si sharp" en inglés) es un lenguaje de programación moderno, basado en objetos y con seguridad de tipos, quienes llevan tiempo en esto de programar encuentra similitudes en la sintaxis (forma en la que se escribe el código) con Java, C++ y Delphi; de hecho, varios de los creadores de estos lenguajes hacen parte del equipo que inventó C#.

Tipos y Variables

Todos los programas requieren datos: El usuario ingresa información, la aplicación procesa información y posteriormente entrega información; esa información es de cierto tipo y esa misma información es representada en el código mediante variables.

Piensa en lo siguiente: Necesitamos construir un programa que almacene los precios de los combustibles en las estaciones de servicio, permitiendo que una persona pueda ver el listado de estaciones que están abiertas, consultar cual tiene el menor precio y cual está más cerca.

Acá identificamos información: El precio del combustible, el tipo de combustible. si la estación está abierta o no y la dirección de la estación de servicio. Si profundizamos más veremos que esta información es un de un tipo específico

  • El precio del combustible claramente es un valor numérico; El Galón de Gasolina cuesta US$ 5

  • El tipo de combustible puede ser una lista de opciones: Diesel, Gasolina, Gas

  • Si está abierta o no la estación podemos verlo como un valor si o nó, verdadero o falso

  • La dirección de la estación de servicio es un conjunto de letras que describen una ubicación Avenida Siempreviva 742 por ejemplo

Una breve introducción al POO

Dando un paso más podríamos decir que una Estación de Servicio es también un dato, lo que ocurre es que es un dato compuesto de otros datos, a esto lo llamaremos Clase y la estación de servicio de la Avenida Siempreviva 742 que tiene vende Gasolina y Diesel es lo que llamaremos un Objeto, es decir, darle valores específicos a una clase.

Y si te propongo otro reto ¿Como hacemos con las estaciones de servicio que tienen más de un tipo de Combustible? ¿Como hacer si el precio de Diesel, Gasolina y Gas es por supuesto diferente en cada caso? Pues es acá donde podemos construir otra clase que se llame Combustible y ahora tendremos dos clases Estación de Servicio y Combustible, y el valor y tipo de combustible ya no estaría asociado a la estación, si no al combustible que la estación posee, a esto lo llamaremos Relación, donde una clase puede relacionarse con otras varias formas (Composición, Agregación y Herencia). Una Estación de Servicio tendrá varios Combustibles, esto ultimo lo haremos (provisionalmente) mediante una estructura que se llama Arreglo, que es basicamente una forma de poner información de un mismo tipo junta.

¿Te muestro como se vería el código? Puedes usar el video del ejemplo pasado para construir una aplicación de consola, copiar este código y verás la magia.

public class EstacionDeServicio
{
    public Combustible[] Combustibles { get; set; }
    public bool EstaAbierta { get; set; }
    public string Direccion { get; set; }

    public EstacionDeServicio(bool estaAbierta, string direccion, Combustible[] combustibles)
    {
        this.EstaAbierta = estaAbierta;
        this.Direccion = direccion;
        this.Combustibles = combustibles;
    }
}

public class Combustible
{
    public string TipoCombustible { get; set; }
    public double CostoGalon { get; set; }

    public Combustible(string tipoCombustible, double costoGalon)
    {
        this.TipoCombustible = tipoCombustible;
        this.CostoGalon = costoGalon;
    }
}

En este video te explico brevemente el código.

Es un paso sencillo, pero significativo.

Ahora aprenderemos a crear objetos de las clases, recuerda que los objetos nacen de tomar la información que tiene definida una clase y asignarle valores.

Supongamos que tenemos tres estaciones de servicio

DirecciónEsta AbiertaCombustiblesCosto del Galón
Calle 1 # 1 - 1SiDiesel, Gasolina, Gas9000, 14000, 5500
Av SiempreVivaNoGasolina, Diesel14500,8500
Carrera 2 # 2 - 2SiDiesel, Gasolina, Gas10000, 13000, 6550

Veamos esto en código


var combustible1 = new Combustible[3] { new("Diesel", 9000), new("Gasolina", 14000), new("Gas", 5500) };
var estacion1 = new EstacionDeServicio(true, "Calle 1 # 1 - 1", combustible1);

var combustible2 = new Combustible[2] { new("Gasolina", 14500), new("Diesel", 8500) };
var estacion2 = new EstacionDeServicio(false, "Av SiempreViva", combustible2);

var combustible3 = new Combustible[3] { new("Diesel", 10000), new("Gasolina", 13000), new("Gas", 6550) };
var estacion3 = new EstacionDeServicio(true, "Carrera 2 # 2 - 2", combustible3);

public class EstacionDeServicio
{
    public Combustible[] Combustibles { get; set; }
    public bool EstaAbierta { get; set; }
    public string Direccion { get; set; }

    public EstacionDeServicio(bool estaAbierta, string direccion, Combustible[] combustibles)
    {
        this.EstaAbierta = estaAbierta;
        this.Direccion = direccion;
        this.Combustibles = combustibles;
    }
}

public class Combustible
{
    public string TipoCombustible { get; set; }
    public double CostoGalon { get; set; }

    public Combustible(string tipoCombustible, double costoGalon)
    {
        this.TipoCombustible = tipoCombustible;
        this.CostoGalon = costoGalon;
    }
}

En el video te explico brevemente el código

Este código aún no brinda ninguna funcionalidad, pero nos sirve de ejemplo para empezar a entender la sintaxis de .NET, los tipos de datos y variables y el Paradigma Orientado a Objetos.

En la siguiente publicación construiremos una pequeña API usando ASPNET Core

Nos seguimos hablando.

Nota: Déjame saber en los comentarios si el contenido del post estuvo complejo o sencillo y que puedo publicar posteriormente para ampliar las explicaciones.