Tipos de Datos en Programación Orientada a Objetos

Un tipo de dato representa un conjunto de valores que significan lo mismo, un atributo el cual representa la clase de datos que se está utilizando, sin embargo hay algunos tipos que no representan valores en la aplicación que se ejecutan.

Cuando se utilizan tipos entre los objetos estos no pueden intercambiarse, bueno o al menos no totalmente ya que pueden lograrse intercambiar de formas muy limitadas.

Un tipo de dato es una característica de datos que especifican como debe trabajarse el mismo dentro de un entorno, esto incluye si se deben aplicar restricciones o alguna operación específica para este tipo de dato.

Tenga en cuenta que la buena comprobación de tipos impide que se mezclen abstracciones.

La manera de comprobar los tipos se agrupan en 3 clases: estático, dinámico y estricto, este último suele tratarse como un tipo estático.

Tipo Estático

Los datos de tipo estático son expresados en tiempo de compilación con esto se dice que mediante un análisis de compilación puede determinarse el tipo de dato.

El tipo de dato estático puede llegar a ser muy restrictivo pero detecta anomalías en tiempo de compilación.

Lenguajes que utilizan un tipado estático: C++,  Java, C#.

class example
{
        private string Name;

        public string Estatic()
        {
            //Asignamos el nombre a la propiedad privada
            Name = "Daniel";
            Name = 70;             //esta asignación nos brinda un error.
            return Name;
        }
}

 

El tipo estático permite que los errores sean detectados antes de la ejecución, haciendo así la aplicación más eficiente.

El tipo estricto Todas las expresiones son consistentes en tiempo de compilación, es decir asegura que no se asigne accidentalmente un tipo de valor incorrecto a una variable, por esta razón es que suele tratarse como un tipo de datos estático. El tipo de dato estricto también se encarga de que no se accedan a propiedades o métodos que no pertenezcan al tipo de objeto.

Consistencia cualidad que tiene un objeto que resiste sin corromperse fácilmente.

La consistencia se define a través de tres restricciones fundamentales:

  • Restricción de declaración: Indica que todos las entidades deben tener un tipo declarado.
  • Restricción de Compatibilidad: El tipo fuente debe ser compatible con el tipo de destino.
  • Restricción de llamada a característica: Para poder llamar a un atributo o método X desde la clase Y, X tiene que estar definida en  la clase Y o en sus antecesores.

Pesimismo se llama así cuando se tienen operaciones con tipos las cuales creemos estar seguros que funcionaran o serán válidas siempre, pero si no se está seguro es preferible que no se permita.

Tipo Dinámico

En este tipo de dato  las comprobaciones se realizan en tiempo real es decir en tiempo de ejecución.

Esto permite que una variable tome valores de tipos diferentes en diferentes momentos. Los lenguajes que podemos mencionar que utilizan este tipado estan Phyton y PHP.

class dinamic
{
    private $id; 

    public function typeDinamic()
    {
         $this->id = "Daniel";
         $this->id = 2;
         return "Hola " . $this->id    // Resultado: "Hola 2"
    }
}

 

Existen dos términos que comúnmente son confundidos con el tipo de datos.

¿Cuándo se dice que un lenguaje es débilmente tipado?

El término débilmente tipado hace referencia a las conversiones incluidas que se realizan entre los tipos. El tipo de dato no se define sobre la variable, si no que se define sobre el valor con esto logramos que se pueda usar variables de cualquier tipo en un mismo escenario.

<?php 

   $integer = 5;
   $float = 10.50;
   
   $suma = $integer + $float // result 15.50

 

¿Cuándo se dice que un lenguaje es Fuertemente tipado?

Al contrario que el anterior, este nos obliga a tratar un tipo de dato solamente como ese mismo tipo, no permite conversiones, las conversiones de datos son explicitas.

Aquellos lenguajes fuertemente tipados no permiten que un tipo de dato sea tratado como otro, no permiten violaciones de los tipos de datos, es decir, un tipo no se puede usar como si fuera un tipo diferente para ello es necesario que se haga una conversión.

    class Program
    {
        static void Main(string[] args)
        {
            int integer = 5;
            Double numeric = 10.50;
            int total;
            //form implicit
            Double suma = integer +  numeric;

            //form explicit 
            total = integer + (int)numeric; // convierte el valor double en int 10
          
        }
    }

Esto es todo por ahora, nos vemos en el siguiente articulo, cualquier novedad no dudes en comunicarla a través de nuestro Slack.

 

Comparte este artículo

Entra en la discusión y deja tu comentario

Veces