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
- Crea un vector de 10 enteros.
- Llena el vector con números del 1 al 10.
- 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
- Crea una matriz de 3×3.
- Llena la matriz con valores.
- 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
- Define una clase base
Vehiculo
con un métodomover
. - Crea clases derivadas
Coche
yBicicleta
que sobrescriban el métodomover
. - Crea un
ArrayList
deVehiculo
, agrega instancias deCoche
yBicicleta
, y llama al métodomover
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:
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.