Aprende en casa Ir a KODOTI
Aprende en casa KODOTI

¿Qué es la programación orientada a objetos?

Es un paradigma de programación que busca abstraer la realidad para poder plasmarla en nuestro código.

Rodríguez Patiño, Eduardo
Rodríguez Patiño, Eduardo
2020-07-03 | 563 lecturas

El término de programación orientada a objetos o POO, es un paradigma (forma o estilo de programar) de programación que comienza en la decada de los años 80 y lo que busca es abstraer la lógica para encapsularla dentro de nuestros objetos. De esta manera, la construcción de un software se hará a través de objetos.

¿Quién hoy en día no ha oído hablar de dicho paradigma?, y seguramente hacemos uso de este en todos nuestros proyectos pero la verdadera pregunta es ¿sabemos qué es?.

Cuando hablamos de la programación orientada a objetos, hablamos del uso de clases y objetos para la construcción del software.

¿QUÉ ES UNA CLASE?

Es la abstracción de algo plasmado en nuestro código. Por ejemplo, tenemos un carro y dicho carro queremos convertirlo en una clase debemos abstraer sus características y las actividades que puede realizar.

  • Dichas características las vamos a llamar propiedades o atributos de nuestra clase.
  • Dichas actividades las vamos a llamar los métodos de nuestra clase.

Un ejemplo sería el siguiente:

class Carro {
    public string Color { get; set; }
    public string Marca { get; set; }

    public void Escender() {

    }

    public void Apagar() {

    }

    public void Avanzar() {

    }

    public void Frenar() {

    }
}

¿QUÉ ES UN OBJETO?

El objeto es la instancia o inicialización de una clase para poder hacer uso de esta.

var carro = new Carro();
carro.Color = "Rojo";
carro.Marca = "Toyota";

carro.Escender();
carro.Avanzar();
carro.Frenar();
carro.Apagar();

Los objetos estan compuestos por 3 características:

Estado

Son los valores asignados a cada propiedad de nuestro objeto.

Comportamiento

Los métodos de nuestros objetos.

Identidad

Cada objeto es único, así se instancie el mismo 2 veces con los mismos valores.

CARACTERÍSTICAS DE LA POO

ABSTRACCIÓN

Es la capacidad de poder analizar la realidad para poder plasmarla a nuestro código y definir una futura clase. La finalidad de esto es que dicha clase solo interese conocer cual es su utilidad, más no, como fue creado o funciona por detrás.

Ejem: un automovil sabemos como funciona, más no conocemos a ciencia como ha sido construido por detrás.

ENCAPSULAMIENTO

Cuando comenzamos a declarar nuestras clases a veces queremos que alguna de las propiedades no puedan ser modificadas una vez la clase haya sido instanciada. Por ejemplo, partiendo de nuestra clase carro vamos agregar una propiedad adicional que haga referencia al estado actual del motor.

class Carro {
    public string Color { get; set; }
    public string Marca { get; set; }
    public string EstadoDelMotor { get; }
}

Nota: para los que no conocen C#, con este le hemos dicho a la nueva propiedad que solo vamos a poder acceder a ella a modo de lectura.

Lo ideal sería que el estado del motor se alterado en función al uso de este, es decir la cantidad de veces que usemos el carro generará un deterioro en el tiempo. Siendo más claros aún, el hacer uso de sus métodos acelerar, prender, apagar en un futuro va a generar un deterioro al motor.

HERENCIA

La POO implementa la característica de poder heredar las cualidades de otra clase para poder hacer uso de estas.

Por ejemplo, podemos hacer ventaja de esto para evitar la duplicidad de nuestro código ya que a veces tenemos que crear varias clases y entre ellas comparten ciertas propiedades, mejor declaramos una clase como si se tratara de una plantilla y hacemos que la hereden las demás clases.

class Vehiculo {
    public string Color { get; set; }
    public string Marca { get; set; }
}

class Carro extends Vehiculo {
    public bool Sunroof { get; set; }
}

class Moto extends Vehiculo {
    // características únicas de la moto
}

POLIMORFISMO

El entendimiento de este puede ser complejo pero la idea es que la referencia a clases distintas que comparten mismos métodos y/o atributos puedan comportarse de manera indiferente.

¿Supongamos que quisieramos crear una colección de vehículos?. Pues a simple vista no se podría porque son clases diferentes y tendría que declarar 2 variables.

Pues yo te digo que si se puede ..

var vehiculos = new List<Vehiculo>();
vehiculos.add(new Carro());
vehiculos.add(new Moto());

Y esto es posible porque la clase Carro y Moto hacen herencia de Vehículo.

Entender este pilar de la programación orientada a objeto ayuda a crear sistemas modulares y escalables.


Estudia con nosotros

🚀 Mejora tus oportunidades laborales