Guía Completa sobre Vectores Unidimensionales y Bidimensionales en Java y el Polimorfismo en Clases, Arrays y ArrayList

Introducción

Los vectores, o arrays, son estructuras de datos fundamentales en la programación. Java ofrece soporte robusto para vectores unidimensionales y bidimensionales, así como para estructuras más avanzadas como ArrayList. Además, el polimorfismo, una característica clave de la programación orientada a objetos, se puede aplicar eficazmente con estas estructuras de datos.

Teoría

Vectores Unidimensionales

Un vector unidimensional, también conocido como array, es una estructura de datos que almacena una colección de elementos del mismo tipo en una secuencia lineal. Cada elemento puede accederse mediante un índice, comenzando desde cero.

Declaración y Uso de Vectores Unidimensionales

Sintaxis:
tipo[] nombreDelArray = new tipo[tamaño];
Ejemplo:
int[] numeros = new int[5];
numeros[0] = 10;
numeros[1] = 20;
numeros[2] = 30;
numeros[3] = 40;
numeros[4] = 50;

Vectores Bidimensionales

Un vector bidimensional, o matriz, es un array de arrays. Es útil para representar tablas de datos, como una hoja de cálculo.

Declaración y Uso de Vectores Bidimensionales

Sintaxis:
tipo[][] nombreDelArray = new tipo[filas][columnas];
Ejemplo:
int[][] matriz = new int[3][3];
matriz[0][0] = 1;
matriz[0][1] = 2;
matriz[0][2] = 3;
matriz[1][0] = 4;
matriz[1][1] = 5;
matriz[1][2] = 6;
matriz[2][0] = 7;
matriz[2][1] = 8;
matriz[2][2] = 9;

Polimorfismo en Clases, Arrays y ArrayList

El polimorfismo es la capacidad de un objeto de tomar muchas formas. En Java, esto significa que una referencia de clase puede referirse a objetos de su clase, de sus subclases o de clases que implementan una interfaz común.

Polimorfismo con Clases

Ejemplo:
class Animal {
    void hacerSonido() {
        System.out.println("El animal hace un sonido");
    }
}

class Perro extends Animal {
    void hacerSonido() {
        System.out.println("El perro ladra");
    }
}

class Gato extends Animal {
    void hacerSonido() {
        System.out.println("El gato maúlla");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal miAnimal = new Perro();
        miAnimal.hacerSonido(); // Salida: El perro ladra

        miAnimal = new Gato();
        miAnimal.hacerSonido(); // Salida: El gato maúlla
    }
}

Polimorfismo con Arrays y ArrayList

Ejemplo con Arrays:
Animal[] animales = new Animal[2];
animales[0] = new Perro();
animales[1] = new Gato();

for (Animal animal : animales) {
    animal.hacerSonido();
}
Ejemplo con ArrayList:
import java.util.ArrayList;

ArrayList<Animal> listaDeAnimales = new ArrayList<>();
listaDeAnimales.add(new Perro());
listaDeAnimales.add(new Gato());

for (Animal animal : listaDeAnimales) {
    animal.hacerSonido();
}

Ejercicios Prácticos

Ejercicio 1: Suma de Elementos en un Vector Unidimensional

  1. Crea un vector de 10 enteros.
  2. Llena el vector con números del 1 al 10.
  3. Calcula y muestra la suma de los elementos del vector.

Solución:

public class SumaVector {
    public static void main(String[] args) {
        int[] numeros = new int[10];
        int suma = 0;

        for (int i = 0; i < numeros.length; i++) {
            numeros[i] = i + 1;
            suma += numeros[i];
        }

        System.out.println("La suma de los elementos del vector es: " + suma);
    }
}

Ejercicio 2: Transposición de una Matriz

  1. Crea una matriz de 3×3.
  2. Llena la matriz con valores.
  3. Calcula y muestra la matriz transpuesta.

Solución:

public class TransposicionMatriz {
    public static void main(String[] args) {
        int[][] matriz = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        int[][] transpuesta = new int[3][3];

        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz[i].length; j++) {
                transpuesta[j][i] = matriz[i][j];
            }
        }

        System.out.println("Matriz transpuesta:");
        for (int i = 0; i < transpuesta.length; i++) {
            for (int j = 0; j < transpuesta[i].length; j++) {
                System.out.print(transpuesta[i][j] + " ");
            }
            System.out.println();
        }
    }
}

Ejercicio 3: Polimorfismo con ArrayList

  1. Define una clase base Vehiculo con un método mover.
  2. Crea clases derivadas Coche y Bicicleta que sobrescriban el método mover.
  3. Crea un ArrayList de Vehiculo, agrega instancias de Coche y Bicicleta, y llama al método mover para cada una.

Solución:

import java.util.ArrayList;

class Vehiculo {
    void mover() {
        System.out.println("El vehículo se está moviendo");
    }
}

class Coche extends Vehiculo {
    void mover() {
        System.out.println("El coche está conduciendo");
    }
}

class Bicicleta extends Vehiculo {
    void mover() {
        System.out.println("La bicicleta está pedaleando");
    }
}

public class PolimorfismoArrayList {
    public static void main(String[] args) {
        ArrayList<Vehiculo> vehiculos = new ArrayList<>();
        vehiculos.add(new Coche());
        vehiculos.add(new Bicicleta());

        for (Vehiculo vehiculo : vehiculos) {
            vehiculo.mover();
        }
    }
}

Conclusión

Entender y aplicar conceptos de vectores unidimensionales y bidimensionales, así como el polimorfismo, es esencial para escribir código eficiente y mantenible en Java. Practicar estos ejercicios y conceptos fortalecerá tus habilidades de programación y te preparará para desarrollar aplicaciones más complejas y robustas.

Para más información y recursos, puedes consultar los siguientes artículos:

close up photo of programming of codes
Photo by luis gomes on Pexels.com

Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad