Modelo de objetos en Java

El modelo de objetos es un sistema o interfaz que se utiliza básicamente para visualizar elementos en términos de objetos en una aplicación de software. Se modela usando técnicas orientadas a objetos y antes de realizar cualquier programación o desarrollo, el modelo de objetos se usa para crear un modelo de sistema o una arquitectura. Define características orientadas a objetos de un sistema como herencia, encapsulación y muchas otras interfaces orientadas a objetos. Aprendamos en profundidad algunas de esas terminologías orientadas a objetos:

Objetos y Clases 

Estos forman la base del paradigma orientado a objetos en Java o cualquier otro lenguaje de programación orientado a objetos. Se explican en detalle aquí:

Objeto

En un entorno orientado a objetos, un objeto es un elemento físico o conceptual del mundo real.

Características:

  1. Único y distinto de otros objetos en el sistema.
  2. Estado que indica ciertas propiedades y valores pertenecientes al objeto particular.
  3. Comportamiento que indica su interacción con otros objetos o sus actividades visibles externamente.

Un ejemplo de un objeto físico es un perro o una persona, mientras que un ejemplo de uno conceptual es un proceso o un producto.

Clase

Una clase es un modelo o prototipo de un objeto y representa un conjunto de objetos que se crean a partir del mismo. Los objetos son básicamente instancias de estas clases. Una clase consta de –

  • Los objetos de la misma clase pueden ser diferentes entre sí en términos de valores en sus atributos. Estos atributos se conocen como datos de clase.
  • Las operaciones que identifican y muestran el comportamiento de estos objetos se conocen como funciones y métodos.

Ejemplo:

Supongamos que hay una clase llamada Estudiante. Los atributos de esta clase pueden ser:

  • notas del alumno
  • Departamento en el que estudia el alumno
  • Un año académico de estudio.
  • Identidad personal, es decir, nombre, número de registro, fecha de nacimiento, etc.

Algunas de las operaciones a realizar se pueden indicar mediante las siguientes funciones:

  • averageMarks() – calcula las notas promedio del estudiante.
  • totalMarks(): calcula las calificaciones totales del alumno.
  • libraryFine(): calcula la multa que el estudiante debe pagar por devolver los libros a la biblioteca tarde.

Esto se demuestra en el siguiente código:

Java

// package whatever
 
import java.io.*;
 
public class Student {
     
  public static void main (String[] args) {
        // passing parameters to functions
        int tot = total_marks(93,99);
        double avg = avg_marks(tot, 2);
     
        // printing the output
        System.out.println("The total marks is = "+tot+". Th average is = "+avg+".");
    }
   
  // function to calculate total
  public static int total_marks(int math, int science) {
    int total = math + science;
    return total;
  }
 
  // function to calculate average marks
  public static double avg_marks(int total, int num_subs) {
   double avg = total/num_subs;
   return avg;
  }
}

Producción:

The total marks is = 192. Th average is = 96.0.

Encapsulación y ocultación de datos

Para proteger nuestros datos de ser accedidos y explotados por un uso externo, necesitamos realizar una encapsulación. Esto se explica en detalle a continuación:

Encapsulación

El proceso de unir métodos y atributos en una clase se llama encapsulación. Si una clase proporciona una interfaz, solo entonces la encapsulación permite el acceso externo a detalles internos o atributos de clase. 

Ocultación de datos

El proceso por el cual un objeto se protege del acceso directo por parte de métodos externos se denomina ocultamiento de datos. 

Ejemplo:

  • setStudentValues(): asigna valores al departamento, académico y todas las identidades personales del estudiante.
  • getStudentValues(): para obtener estos valores almacenados en los atributos respectivos.

Paso de mensajes 

Se requieren varios objetos para que una aplicación sea interactiva. El mensaje se pasa entre objetos usando las siguientes características:

  • En el paso de mensajes, pueden estar involucrados objetos de diferentes procesos.
  • Los métodos de clase deben invocarse en el paso de mensajes.
  • Entre dos objetos, el paso de mensajes suele ser unidireccional.
  • La interacción entre dos objetos está habilitada en el paso de mensajes.

El ejemplo anterior se demuestra en el siguiente código:

Java

// package whatever
 
import java.io.*;
 
public class Student {
 
   private int rollNo;
   private String name;
   private String dep;
 
    // default constructor
    public Student() {}
 
    public Student(int rollNo, String name, String dep)
    {
        this.rollNo = rollNo;
        this.name = name;
        this.dep = dep;
    }
 
    // Methods to get and set the student properties
    public int getRollNo() { return rollNo; }
 
    public void setRollNo(int rollNo)
    {
        this.rollNo = rollNo;
    }
 
    public String getName() { return name; }
 
    public void setName(String name) { this.name = name; }
 
    public String getDep() { return dep; }
 
    public void setDep(String dep) { this.dep = dep; }
 
    // function to calculate total
    public static int totalMarks(int math, int science)
    {
        int total = math + science;
        return total;
    }
 
    // function to calculate average marks
    public static double avgMarks(int total, int num_subs)
    {
        double avg = total / num_subs;
        return avg;
    }
 
    public static void main(String[] args)
    {
        // setting student attributes
        Student s1 = new Student(23, "Deepthi", "CSE");
        // setRollNo(23);
        // setName("Deepthi");
        // setDep("CSE");
         
        // printing student attributes
        System.out.println(
            "Roll number of student : " + s1.getRollNo()
            + ". The name of student : " + s1.getName()
            + ". Department of the student : " + s1.getDep() + ".");
       
        // passing parameters to functions
        int tot = totalMarks(93, 99);
        double avg = avgMarks(tot, 2);
       
        // printing the output
        System.out.println("The total marks is = " + tot
                           + ". The average is = " + avg
                           + ".");
    }
}

Producción:

Roll number of student : 23. The name of student : Deepthi. Department of the student : CSE.
The total marks is = 192. The average is = 96.0.

Herencia 

El proceso mediante el cual se generan nuevas clases a partir de clases existentes manteniendo algunas o todas sus propiedades se denomina herencia. Las clases originales a través de las cuales se pueden generar otras clases se clasifican como clase principal, superclase o clase base, mientras que las clases generadas se conocen como clases derivadas o subclases.

Ejemplo:

Para una clase Vehículo, las clases derivadas pueden ser un automóvil, una bicicleta, un autobús, etc. En este ejemplo, estas clases derivadas transmiten las propiedades de su clase principal Vehículo junto con sus propias propiedades, como el número de ruedas, asientos, etc. El ejemplo anterior se demuestra en el siguiente código:

Java

class Vehicle {
    String belongsTo = "automobiles";
}
public class Car extends Vehicle {
    int wheels = 4;
    public static void main(String args[])
    {
        Car c = new Car();
        System.out.println("Car belongs to- "
                           + c.belongsTo);
        System.out.println("Car has " + c.wheels
                           + " wheels.");
    }
}

Producción:

Car belongs to- automobiles
Car has 4 wheels.

tipos de herencia 

  1. Herencia única : una clase derivada generada a partir de una única clase base.
  2. Herencia múltiple : una clase derivada generada a partir de dos o más clases base.
  3. Herencia multinivel : una clase derivada se genera a partir de una clase base que también se genera a partir de otra clase base.
  4. Herencia jerárquica : un grupo de clases derivadas generadas a partir de una clase base que, a su vez, podría tener clases derivadas propias.
  5. Herencia híbrida : una estructura reticular a partir de una combinación de herencias múltiples y multinivel.

Polimorfismo

La capacidad en la que los objetos pueden tener una interfaz externa común con diferentes estructuras internas. Si bien se implementa la herencia, el polimorfismo es particularmente eficaz. En el polimorfismo, las funciones pueden tener los mismos nombres pero diferentes listas de parámetros. 

Ejemplo: una clase de automóvil y autobús pueden tener el método de ruedas(), pero la cantidad de ruedas para ambas es diferente, por lo que, dado que la implementación interna es diferente, no surge ningún conflicto.

Generalización y Especialización

La representación de la jerarquía de diferentes clases donde las clases derivadas se generan a partir de clases base:

Generalización

La combinación de características comunes de clases derivadas para formar una clase base generalizada. Ejemplo: «Una vaca es un animal terrestre».

Especialización

La distinción de objetos de clases existentes en grupos especializados es especialización. Esto es casi como un proceso inverso de generalización. 

El siguiente diagrama demuestra la generalización frente a la especialización:

Enlaces y Asociación

Vínculo: La representación de una conexión en la que un objeto colabora con otros objetos, es decir, la relación entre objetos se denomina vínculo.

Asociación: Se denomina asociación a un conjunto de vínculos que identifican y demuestran el comportamiento entre objetos. Las instancias de asociaciones se denominan enlaces.

Grado de Asociación

Hay tres tipos de Asociación:

  • Relación unaria: Los objetos de la misma clase se conectan.
  • Relación binaria: Los objetos de dos clases están conectados.
  • Relación ternaria: Los objetos de tres o más clases están conectados.

Cardinalidad de la asociación binaria

  • Uno a uno: Un objeto de clase A asociado con un objeto de B.
  • Uno a muchos: un objeto de clase A asociado con más de un objeto de clase B.
  • Muchos a muchos: más de un objeto de la clase A asociado con más de un objeto de la clase B.

Composición o Agregación

Una clase generalmente se puede crear usando una combinación de otras clases y objetos. Esta es la composición o agregación de clases. El «tiene un» o «parte de» de una relación es generalmente el agregado. Si un objeto consta de otros objetos, este objeto se denomina objeto agregado.

Ejemplo:

En una relación estudiante-libros, el estudiante “tiene-un” libro y el libro es “parte de” el currículo del estudiante. Aquí el estudiante es el objeto completo. Un agregado incluye:

  • Contención física: por ejemplo, una bolsa consta de cremalleras y un portabotellas.
  • Contención conceptual: por ejemplo, un estudiante tiene notas.

Ventajas del modelo de objetos

  • Habilite la forma SECA (No se repita) de escribir código.
  • Al integrar sistemas complejos, reduce los riesgos de desarrollo.
  • Permite el desarrollo rápido de software.
  • Permite actualizaciones con bastante facilidad.
  • Hace que el software sea más fácil de mantener.

Publicación traducida automáticamente

Artículo escrito por tejsidda34 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *