
5 minute read
Vectores de clases o de objetos Características Ventajas y Desventajas Ejemplo
from Arrays en Java
by Crismar25
Vector de objeto
Para crear un arreglos de objetos, se deben de seguir tres pasos fundamentales
Advertisement
1: Crear primero una clase 2: Con la clase anterior se indica el tamaño del arreglo de objetos. 3:construir cada uno de los objetos que conforman el objetos
Un Vector de objetos
Es muy frecuente que no nos baste con tener un único objeto de una clase, sino que necesitemos manipular varios objetos pertenecientes a la misma clase.
En ese caso, podemos almacenar todos ellos en un "array". Deberemos usar "new" dos veces: primero para reservar memoria para el array, y luego para cada uno de los elementos.
CACTERISTICAS
•Una clase es un conjunto de objetos de características similares •En una clase podemos instancia o crear objetos. •Las características de un objeto puede ser sus tributos que con las partes que componen a objetos o los métodos que son las acciones que puede realizar dicho objeto.
Ventajas y Desventajas
Ventaja – Acceso y operación con elementos más eficiente. – Permiten almacenar tanto objetos como tipos primitivos directamente Desventaja – Rigidez. No se pueden re dimensionar (aunque sí copiar a otros arrays estáticos de mayor tamaño).
Ejemplo
Por ejemplo, podríamos partir del ejemplo del apartado 6.8 y crear un array de 5 perros así
Perro[] misPerros = new Perro[5]; for (byte i = 0; i < 5; i ++) misPerros[i] = new Perro();

Vector Paralelo

¿Que es un Vector paralelo?
Un arreglo paralelo son dos o mas arreglos que utilizan el mismo sub indice para aceder a elementos de distintos arreglos. Estos arreglos pueden procesarse simultáneamente.
Por ejemplo Si tenemos dos vectores de 5 elementos cada uno. En uno se almacenan los nombres de personas en el otro las edades de dichas personas. Decimos que el vector nombres es paralelo al vector edades si en la componente 0 de cada vector se almacena información relacionada a una persona (Juan - 12 años)
CACTERISTICAS
•Todo vector se compone de un determinado número de elementos, lo cual lo hace que sea una estructura estática.
•Una serie de tareas trabajan de manera colectiva en la misma estructura de datos
Este concepto se da cuando hay una relación entre las componentes de igual subíndice (misma posición) de un vector y otro.
Ventajas
• Permite ejecutar problemas de un orden y complejidad mayor •Permite la ejecución de varias instrucciones en simultáneo Desventajas
•Altos costos por producción y mantenimiento •Mayor dificultad a la hora de escribir programas
Ventajas y Desventajas

Ejemplo

Ejercicios
UNIDEMENCIONAL, BIDIMENCIONAL, OBJETOS, PARALELOS
REVISTA DE VIAJES

Programa que lee por teclado la nota de los alumnos de una clase y calcula la nota media del grupo. También muestra los alumnos con notas superiores a la media. El número de alumnos se lee por teclado.
Solución:
import java.util.*;
public class Recorrido2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int numAlum, i; double suma = 0, media;
do { System.out.print("Número de alumnos de la clase: "); numAlum = sc.nextInt(); } while (numAlum <= 0);
double[] notas = new double[numAlum]; //se crea el array// Entrada de datos. Se asigna a cada elemento del array// la nota introducida por tecladofor (i = 0; i < notas.length; i++) { System.out.print("Alumno " + (i + 1) + " Nota final: "); notas[i] = sc.nextDouble(); }
// Sumar todas las notasfor (i = 0; i < notas.length; i++) { suma = suma + notas[i]; }
// Calcular la media media = suma / notas.length;
// Mostrar la media System.out.printf("Nota media del curso: %.2f %n", media);
// Mostrar los valores superiores a la media System.out.println("Listado de notas superiores a la media: "); for (i = 0; i < notas.length; i++) { if (notas[i] > media) { System.out.println("Alumno numero " + (i + 1)+ " Nota final: " + notas[i]); }
Generar una matriz de 3×3 con números aleatorios sin repetirse.
Solución:
import java.util.Arrays; public class Ejercicio _ matrices _ DDR _ 06 { public static void main(String[] args) { int matriz[][]=n int[] numeros=generarNumerosAleatoriosSinRepetir(1, 9, matriz.length*matriz[0].length); for(int i=0;i<matriz.length;i++){ for(int j=0;j<matriz[0].length;j++){ matriz[i][j]=numeros[(matriz.length*i) + j ]; System.out.print(matriz[i][j]+" "); } System.out.println(""); } } //Funcion para generar numeroa aleatorios que no se repitan public static int[] generarNumerosAleatoriosSinRepetir(int minimo, int maximo, int longitud){
//En caso de que uno sea mayotr que otro //Lo intercambiamos if(maximo<minimo){ int aux=maximo; maximo=minimo; minimo=aux; } //Si caben los numeros del rango //Generamos el array if( (maximo-minimo) >= (longitud-1) ){
int numero _ elementos=0; int numeros[]=new int[longitud]; //RECOMENDADO: rellena el arreglo con un numero que nunca se va a generar Arrays.fill(numeros, minimo-1); boolean encontrado; int aleatorio;
//Hasta que el numero de elementos no sea como el de la longitud del array no salimos while(numero _ elementos<longitud){
aleatorio=generaNumeroAleatorio(minimo, maximo); encontrado=false;
//Buscamos si el numero existe for(int i=0;i<numeros.length && !encontrado;i++){ if(aleatorio==numeros[i]){ encontrado=true; }
//Sino lo agregamos if(!encontrado){ numeros[numero _ elementos++] = aleatorio; }
} return numeros; }else{ System.out.println("No se puede generar el arreglo, revusa los parametros"); return null; } } //Genera un numero aleatorio entre el minimo y el maximo, includo el maximo y el minimo public static int generaNumeroAleatorio(int minimo,int maximo){
int num=(int)Math.floor(Math.random()*(maximo-minimo+1)+(minimo)); return num; }
Crear un array de objetos, una clase empleados Solución:
import javax.swing.JOptionPane; public class EmpleadoApp {
public static void main(String[] args) {
//Creamos un array de objetos de la clase empleados Empleado arrayObjetos[]=new Empleado[10];
//Creamos 10 empleados por defecto int suma=0; for (int i=0;i<arrayObjetos.length;i++){ //Indicamos cada uno de los parametros del objeto String nombre=JOptionPane.showInputDialog("Escribe un nombre");
String apellido=JOptionPane.showInputDialog("Escribe un apellido");
String texto=JOptionPane.showInputDialog("Escribe una edad"); int edad=Integer.parseInt(texto);
texto=JOptionPane.showInputDialog("Escribe un salario"); double salario=Double.parseDouble(texto);
arrayObjetos[i]=new Empleado(nombre, apellido, edad, salario); }
//Lo recorremos y sumamos de nuevo los salarios for (int i=0;i<arrayObjetos.length;i++){ //Mostramos la direccion del objeto System.out.println(arrayObjetos[i]); suma+=arrayObjetos[i].getSalario(); } System.out.println("La suma de salarios es "+suma); }
Desarrollar un programa que permita cargar 5 nombres de personas y sus edades respectivas. Luego de realizar la carga por teclado de todos los datos imprimir los nombres de las personas mayores de edad (mayores o iguales a 18 años)
solución:
import java.util.Scanner; public class PruebaVector10 { private Scanner teclado; private String[] nombres; private int[] edades;
public void cargar() { teclado=new Scanner(System.in); nombres=new String[5]; edades=new int[5]; for(int f=0;f<nombres.length;f++) { System.out.print("Ingrese nombre:"); nombres[f]=teclado.next();
System.out.print("Ingrese edad:"); edades[f]=teclado.nextInt(); }
public void mayoresEdad() { System.out.println("Personas mayores de edad."); for(int f=0;f<nombres.length;f++) { if (edades[f]>=18) { System.out.println(nombres[f]); }
public static void main(String[] ar) { PruebaVector10 pv=new PruebaVector10(); pv.cargar(); pv.mayoresEdad(); } }
ARRAYS
