Clases y Objetos

Clases y Objetos

Conceptos fundamentales en el Modelo de Objetos

Hay 4 conceptos fundamentales en el paradigma Orientado a Objetos, estos son:

  • Abstracción
  • Encapsulamiento
  • Herencia
  • Polimorfismo

Abstracción

  • Consiste en representar las características escenciales de un objeto, olvidándose de otras no escenciales.

  • Definir una abstracción significa describir una entidad del mundo real, no importa lo compleja que sea y luego utilizarla en la descripción de un programa.

  • Una clase es una abstracción de un grupo de objetos, que tiene la posibilidad de realizar una serie de operaciones.

¿Que es una clase?

  • Conjunto de objetos con propiedades y comportamientos similares.

  • Una clase esta asociada de:

    • Atributos: Se utilizan para describir, identificar o informar el estado de un objeto.
    • Métodos: Definen el comportamiento del objeto

¿Que es un Objeto?

  • Es una entidad única con la que se representa cada una de las instancias de una clase, con su propio estado.

  • Se pueden crear tantos objetos de una clase como se quieran.

Clases y Objetos

La clase define el Tipo de Dato (Atributos y Métodos) que serán comunes a todas las instancias (objetos) de la clase.

Encapsulamiento

  • Cada clase "Firma un contrato con el exterior" comprometiéndose a exhibir un determinado comportamiento, pero cómo lo consigue queda oculto o encapsulado en el interior de la clase.

  • "La abstracción y el encapsulamiento son conceptos complementarios: La abstracción se centra en el comportamiento observable de un objeto, mientras que el encapsulamiento se centra en la implementación que da lugar a ese comportamiento" (Booch).

  • Ventaja: Permite que la implementación de un objeto se pueda cambiar sin afectar a las aplicaciones que lo utilizan.

  • El acceso a los datos se realiza a través de los métodos de la Interfaz.

Herencia

La herencia es el mecanismo que permite definir una clase (subclase) a partir de otra clase (superclase), de manera que la subclase hereda la estructura (estado) de la superclase a través de las variables, y hereda el comportamiento a través de los métodos.

Polimorfismo

  • Se refiere a la capacidad de que objetos de tipos diferentes respondan al mismo mensaje con su propio comportamiento.

  • Múltiples formas de ejecutar un mismo método común y que pertenecen a varias clases.

Ventajas de la Programación Orientada a Objetos

  • Reutilización de código.
  • Extensibilidad de código.
  • Facilidad de mantenimiento del software.
  • Portabilidad.
  • Rapidez de desarrollo de software.
  • Facilidad de trabajo en equipo.
  • Más fáciles de entender poreque se usa abstracciones cercanas al mundo real.

Implementación de Clases

Sintaxis de Clase

Ejemplo en Java:

public class MiClase
{
    //Definición de atributos
    //Definición de métodos
}

Atributos

Los atributos en una clase pueden ser:

  • Atributos de Clase: Son comunes a todas las instancais de la calse, por tanto el valor es el mismo para todos los objetos. Ejemplo: Contador de instancias de una clase.

  • Atributos de instancia: Determinan el estado de los objetos. Cada objeto puede tener valores diferentes para estos atributos. Ejemplo: Nombre y Edad de cada Objeto Cliente.

Sintaxis de Atributo

tipoDato nombreVariable;

El tipo de dato puede ser:

  • Tipo Primitivo: int, float, double, char, etc.

  • Tipo Compuesto: String, referencia a objetos de otra clase.

Ejemplo:

public class Circulo
{
    double radio;
    //... más codigo
}

Métodos

  • Son las operaciones (funciones) que se le podrán aplicar a los objetos.

  • Tipicamente se utilizan para:

    • Obtener el estado del objeto: Obtener algún atributo en particular (métodos getter).
    • Modificar el estado del objeto: Modificar algún atributo en particular (métodos setter).

Ejemplo: ObtenerEdad, ModificarEdad, etc.

  • Son funciones, por tanto: pueden retornar valores y recibir parámetros.

Sintaxis de Métodos

tipoRetorno nombreMétodo([ListaParámetros])
{
    //Cuerpo del método
    [return valorRetorno;]
}

TipoRetorno:

  • Si el método retorna algún valor, se evalúa el tipo de dato al que pertenece (int, float, etc), y se hace uso de la instrucción return.

  • Si el método no retorna valor, el tipoRetorno debe ser void y por lo tanto ya no se usa la instrucción return.

Ejemplos:

Método con parámetros y retorno

double calcularArea(double radio)
{
    double area;
    area = radio*radio*3.1415;
    return area;
}

Método con parámetros y sin retorno

void calcularArea(double radio)
{
    double area;
    area = radio*radio*3.1415;
    System.out.println("El area es: "+area);
}

Ciclo de Vida de los Objetos

El proceso para crear objetos tiene dos etapas:

  • Declaración: Los objetos se declaran indicando el nombre de la clase y después el nombre del objeto.
Circulo c1;
  • Creación: El objeto se crea con la palabra reserva new y una llamada al constructor.
new Circulo();
- Los objetos en Java no necesitan destrucción explícita por parte del programador.

- El lenguaje tiene implementado un sistema de recolección de basura (garbage collection).

¿Que es un Constructor?

  • Un constructor es un método especial que se llama automáticamente cuando se crea un Objeto.

  • Tiene el mismo nombre que la clase.

  • Pueden recibir parámetros pero no retornan ningún valor.

  • Se utilizan para inicializar los atributos de la Clase.

  • Pueden sobrecargarse: Se pueden definir varios constructores los cuales deben diferenciarse en los parámetros.

Ejemplo:

Cliente();
Cliente(nombre);
Cliente(nombre, edad);

Sintaxis del Constructor

public class NombreClase
{
    NombreClase()//constructor
    {}
}

Implementando una Clase Java

class Circulo
{
    double radio; //atributo

    Circulo() //constructor por defecto
    {
        radio = 0;
    }

    Circulo(double r) //Constructor con 1 parámetro
    {
        radio = r;
    }

    //Métodos para Cacular el Área y Perímetro
    double calcularArea()
    {
        return 3.1415*radio*radio;
    }

    double calcularPerimetro()
    {
        return 2*3.1415*radio;
    }
}

Envío de Mensajes

  • Un mensaje es una petición para solicitar una llamada a una función que pertenece a un objeto en particular.

  • Todos los objetos de una determinada clase pueden recibir los mismos mensajes.

  • Cada mensaje tiene tres componentes:

    • El objeto destinario del mensaje.
    • El nombre del método a ejecutar.
    • Los parámetros (si existen) del método.

Ejemplo de Sintaxis:

objeto.metodo();
objeto.metodo(argumentos);

Instanciación de Clases

  • Tipos:
    • Implícita: Se instancia en forma directa al Constructor de la Clase.
      ```java
      new Circulo();
      ```
    • Explícita: Se especifica de que clase se va a instanciar el Objeto.
      ```java
      Circulo c = new Circulo();
      ```

Instanciando Clases en Java

public class PruebaCirculo
{
    public static void main(String[]args)
    {
        //Declaración de un Objeto
        Circulo c1;
        //Creación del objeto
        c1 = new Circulo();
        //Declaración y creación de un objeto en una sola linea
        Circulo c2 = new Circulo(10);

        //Impimir resultado en pantalla
        System.out.println("Area c1: " +c1.calcularArea());
        System.out.println("Perimtro c1: " +c1.calcularPerimetro());
        System.out.println("Area c2: " +c2.calcularArea());
        System.out.println("Perimetro c2: " +c2.calcularPerimetro());
    }
}

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *