Está en la página 1de 24

PROGRAMACIÓN

ORIENTADA A OBJETOS

ARREGLOS
A cargo de:
Dra. Maricela Bravo

Dra. Maricela Bravo Programación


Orientada a Objetos
 Un arreglo (array) es una estructura de
datos con un tamaño prestablecido en
la cual se pueden almacenar datos del
mismo tipo.
 Los datos en un arreglo son
almacenados en forma secuencial en la
memoria y ocupan una determinada
cantidad de bytes según sea el tipo de
Arreglo dato.
 El tamaño de un arreglo se declara
desde el primer momento cuando este
es construido, y no puede cambiar en
tiempo de ejecución. Cada dato
almacenado es considerado un
elemento al cual se accede por un
índice de posición (un número entero
no negativo).
Dra. Maricela Bravo Programación Orientada a Objetos
 Un arreglo es una lista de elementos similares
 Un arreglo tiene:
 nombre

Arreglos
 tipo
 tamaño
 Estos deben ser declarados cuando el arreglo es creado.
 El tamaño del arreglo no puede ser cambiado durante la
ejecución del programa.

Dra. Maricela Bravo Programación Orientada a Objetos


 numArray tiene espacio para 8
elementos
 Los elementos son accedidos numArray =
3 6 3 1 6 3 4 1
por su índice 0 1 2 3 4 5 6 7

 en Java, los índices de los


arreglos comienzan con 0.

Dra. Maricela Bravo


Programación Orientada a Objetos
Declaración de
Arreglos
int numArray[];
declara numArray como un arreglo
de enteros

numArray = new int[8];


reserva 8 espacios de enteros en
memoria, etiquetados de
numArray[0] - numArray[7]

int numArray[] = new int[8];


combina las dos instrucciones
anteriores.

Dra. Maricela Bravo Programación Orientada a Objetos


Asignación de valores

Se hace referencia a los elementos del


arreglo mediante su índice.
• numArray[0] = 3;
• numArray[1] = 6;
• numArray[2] = 3; ...

Se puede inicializar en un solo paso.

• int numArray[] = {3, 6, 3, 1, 6, 3, 4, 1};


Dra. Maricela Bravo Programación Orientada a Objetos
Iteración con arreglos

 Los ciclos for loops son los más usuales para trabajar con
arreglos:

for (int i = 0; i < numArray.length; i++)


{
numArray[i] = getsomevalue();
}

Dra. Maricela Bravo


Programación Orientada a Objetos
Arreglos de objetos

 Hasta ahora solo se han visto arreglos de tipos de datos


primitivos.
 integers
 doubles, floats, characters…

 Frecuentemente se necesitan arreglos de objetos


 Estudiantes, Libros, Créditos ……

 Se necesitan seguir tres pasos.

Dra. Maricela Bravo


Programación Orientada a Objetos
1. Declarar el arreglo

private Student listaAlumnos[];


 Esto declara listaAlumnos

2 .Crear el arreglo

Declaración listaAlumnos = new Alumno[10];

del arreglo  reserva 10 espacios en memoria que pueden almacenar


referencias a los objetos de Alumno

3. Crear el objeto de estudiante y añadirlo al arreglo

listaAlumnos[0] = new Alumno("Cesar",


"Computacion");

Dra. Maricela Bravo Programación Orientada a Objetos


Arreglos de
cadenas
A cargo de Maricela Bravo

Dra. Maricela Bravo

Programación Orientada a Objetos


Arreglos Unidimensionales

La sintaxis para declarar e inicializar un array es:


Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión];

También es posible usar esta declaración:


Tipo_de_variable[ ] Nombre_del_array;
Nombre_del_array = new Tipo_de_variable[dimensión];

Dra. Maricela Bravo Programación Orientada a Objetos


Ejemplos de declaración e inicialización
- byte[ ] edad = new byte[4];

- short[ ] edad = new short[4];

- int[ ] edad = new int[4];

- long[ ] edad = new long[4];

- float[ ] estatura = new float[3];

- double[ ] estatura = new double[3];

- boolean[ ] estado = new boolean[5];

- char[ ] sexo = new char[2];

- String[ ] nombre = new String[2];


Dra. Maricela Bravo Programación Orientada a Objetos
Arreglo de Cadenas
String [ ] nombre = {"María", "Gerson"}; //Arreglo de 2 elementos

public class ArregloDeNombres


{
public static void main(String arg[ ])
{
String[ ] nombre = new String[4];
nombre[0] = "Luis";
nombre[1] = "María";
nombre[2] = "Carlos";
nombre[3] = "José";
nombre[4] = "Ismael"; //Error: No existe esta variable array de índice 4
}
}
Dra. Maricela Bravo Programación Orientada a Objetos
Métodos de
la clase
String
Maricela Bravo

Dra. Maricela Bravo

Programación Orientada a Objetos


 Java trata a las cadenas como objetos, no como tipos
primitivos
 ¿Cómo se pueden comparar cadenas, ya sea para saber
si son equivalentes o para saber si una es menor o
mayor que otra según el alfabeto?
Método equals e  Las cadenas String en Java tienen un método llamado
iqualsIgnoreCase equals, que devuelve un true si la cadena equivale a
otra, y false en caso contrario.
 Ejemplo cadena.equals(otraCadena) o
cadena.equals("Hola"), es decir, se comparan dos
cadenas, ya sea poniendo las variables o la cadena en
sí.

Dra. Maricela Bravo Programación Orientada a Objetos


 El método compareTo funciona similar a equals a diferencia de
que éste devuelve un entero, no un booleano.
 Cuando la primera cadena es menor que la segunda, compareTo
devolverá un entero negativo. Si es igual, devuelve 0. Y si es mayor,
devuelve un entero positivo.
 El método compareTo se usa para establecer un orden léxico en
una cadena. El orden léxico no es más que orden alfabético. El
Método compareTo o método compareTo hace una comparación secuencial de letras en
la cadena que tienen la misma posición. compareTo está definido
compareToIgnoreCase en la interfaz java.lang.Comparable.
 También existe compareToIgnoreCase, que compara ignorando si
son mayúsculas o minúsculas; por ejemplo, ese método diría que
“hOlA” y “hola” son iguales.
 Para una comparación de igualdad usa el método equals.
 Para ordenar cadenas o comparándolas lexicográficamente usa
compareTo.

Dra. Maricela Bravo Programación Orientada a Objetos


Ejemplo
String cadena1 = "Abeja";
String cadena2 = "ABEjA";

//compareTo
int dif = cadena1.compareTo(cadena2);
System.out.println("Diferencia entre " + cadena1 + " con " + cadena2 + " es "+ dif);

//compareToIgnoreCase
dif = cadena1.compareToIgnoreCase(cadena2);
System.out.println("Diferencia entre " + cadena1 + " con " + cadena2 + " es "+ dif);

//equals
if(cadena1.equals(cadena2))
System.out.println("son iguales");
else
System.out.println("son diferentes");

//equalsIgnoreCase
if(cadena1.equalsIgnoreCase(cadena2))
System.out.println("son iguales");
else
System.out.println("son diferentes");
Dra. Maricela Bravo Programación Orientada a Objetos
Método de ordenamiento
Burbuja
 Ordenación de burbuja es un sencillo algoritmo de
ordenamiento.
 Funciona revisando cada elemento del arreglo que va a ser
ordenado con el siguiente, intercambiándolos de posición si
están en el orden equivocado.
 Es necesario revisar varias veces toda el arreglo hasta que
no se necesiten más intercambios, lo cual significa que el
arreglo está ordenado.
 Obtiene su nombre de la forma con la que suben por la lista
los elementos durante los intercambios, como si fueran
pequeñas “burbujas”.
 También es conocido como el método del intercambio
directo. Dado que solo usa comparaciones para operar
elementos.
Dra. Maricela Bravo
Programación Orientada a Objetos

Esta foto de Autor desconocido está bajo licencia CC BY


Método para el ordenamiento
de un arreglo de cadenas
public void ordenaArregloCadenas(String [] arreglo)
{
for(int i = 0; i<(arreglo.length-1); i++)
{
for(int j = i + 1; j<arreglo.length; j++)
{
if(arreglo[i].compareToIgnoreCase(arreglo[j])>0)
{
String aux = arreglo[i];
arreglo[i] = arreglo[j];
arreglo[j] = aux;
}
}
}
}

Dra. Maricela Bravo


Programación Orientada a Objetos
Ejercicio

 Escribe un programa en Java que pida una lista de nombres de personas, que las
almacene en un arreglo y que permita realizar las siguientes operaciones:

 Imprimir el contenido del arreglo

 Que indique el nombre con menos caracteres.

 Que indique el nombre con más caracteres.

 Ordenar el contenido del arreglo alfabéticamente.

Dra. Maricela Bravo Programación Orientada a Objetos


Dudas o comentarios???

Dra. Maricela Bravo Programación Orientada a Objetos


Lectura de datos desde el teclado

 Existen varias formas de leer datos desde el teclado, las formas


más usadas son mediante las clases: BuffererReader y Scanner.

 BufferedReader. Esta clase se encuentra dentro de la librería


java.io la cual requiere de generar un objeto de la misma clase.
BufferedReader entrada = new BufferedReader(new
InputStreamReader(System.in));

 Scanner. Esta clase pertenece por default a java y al igual que el


BufferedReader requiere que se genere un objeto de dicha clase
Scanner entrada = new Scanner(System.in);
Dra. Maricela Bravo Programación Orientada a Objetos
Diferencias entre Scanner y BufferReader
 Ambas clases se utilizan para leer la entrada del sistema (consola).
 Scanner se usa normalmente cuando se sabe que la entrada es de tipo cadena o de
tipos primitivos.
 BufferReader se usa para leer texto en secuencias de caracteres mientras se
almacenan los caracteres en el búfer para una lectura eficiente de caracteres.
 Las diferencias más importantes entre la clase Scanner y una clase BufferReader, son:

Dra. Maricela Bravo Programación Orientada a Objetos


DIFERENCIA CARACTERÍSTICA SCANNER CLASS BUFFERREADER CLASS

Scanner no es síncrono por naturaleza por lo


BufferReader si es síncrono.
1 Synchronous que debería usarse solamente en procesos de
Puede usarse en ambientes multiproceso.
un solo hilo.

Scanner tiene un búfer pequeño de 1 KB char BufferReader tiene un búfer más grande de 8KB
2 Buffer Memory
buffer. byte Buffer.

Scanner es un poco más lento ya que necesita BufferReader es más rápido ya que solo lee
3 Velocidad de procesamiento
parsear los datos. flujos de carcateres.

Scanner ofrece métodos como nextInt(), BufferReader ofrece métodos como parseInt(),
4 Métodos
nextShort(), etc. parseShort(), etc.

Scanner tiene el método nextLine() para leer BufferReader tiene el método readLine() para
5 Read Line
una línea. leer una línea.

Dra. Maricela Bravo Programación Orientada a Objetos

También podría gustarte