Professional Documents
Culture Documents
Clases JAVA
Clases JAVA
Segundo Cuatrimestre
UCSE - 2021
Java
De esta forma, se compila una vez el programa y luego el mismo se interpreta cada
vez que se ejecuta en un dispositivo
Características de Java
➢ Independiente de Plataforma: dado que utiliza la JVM para ejecutar los programas sin
importar el S.O. del dispositivo
➢ Orientado a Objetos: uno de los paradigmas de programación más utilizados por los
programadores en donde todo es un objeto
➢ Sencillo: fácil de aprender, similar a otros lenguajes como C++, curva de aprendizaje sencilla
➢ Seguro: debido a que los programas se ejecutan en la JVM, se garantiza que no puedan acceder a
nada que esté fuera de la misma
➢ Arquitectura Neutral: no importa si la arquitectura del sistema es 32bits o 64bits, los tipos de
datos siempre ocupan el mismo espacio
➢ Portable: un programa en Java puede ser utilizado en cualquier plataforma que ejecute la JVM
➢ Robusto: tiene un control total de la memoria y controla muchas posibles situaciones de error
mediante el manejo de excepciones
➢ Interpretado: los bytecodes generados luego de la compilación del programa permiten que
sean interpretados en tiempo real a código máquina, para poder ser ejecutados en un dispositivo
NetBeans (IDE para Java)
NetBeans – Crear Proyecto
NetBeans – Crear Proyecto
NetBeans – Crear Proyecto
NetBeans – Crear Proyecto
Método main()
➢ El nombre de cada archivo del proyecto debe comenzar con la primera letra en
MAYUSCULAS y así cada nueva palabra. Ej. “MiPrimeraAplicacion” es un nombre
correcto. Es un lenguaje sensible a mayúsculas
➢ Cada archivo del proyecto tiene la extensión .java. Ej. “MiPrimeraAplicacion.java”
➢ Lo que conocemos como funciones, en Java se llaman métodos ya que TODO es
un objeto y es un concepto del paradigma orientado a objetos que sigue este
lenguaje
➢ Los archivos se organizan en paquetes (packages). Se lo podría entender como un
sistema de “carpetas” de tal manera que se localice fácilmente un archivo .java
dentro del proyecto o se reutilice código de otro proyecto
➢ Toda instrucción finaliza con un punto y coma “;”
Uso básico
Mostrar o imprimir un mensaje por consola
Imprime texto
System.out.print("Mi mensaje");
System es una clase, out un atributo, println() y print() son métodos, y lo que
va entre paréntesis () son los parámetros enviados.
Uso básico
Escribir comentarios
Un ejemplo de uso de librerías es al momento de hacer una impresión por pantalla con:
System.out.println(“mensaje”);
Para hacer uso de las librerías (propias o externas o bien propias de Java) se debe utilizar la
palabra reservada “import” seguido de la “ruta” del paquete o clase que se desea agregar al
proyecto.
➢ Carácter: char
En Java existen tipos de datos que son objetos que provienen de clases.
Un ejemplo es String, cuyo nombre comienza con S mayúscula debido a que se trata de una
clase, y por tanto, toda variable de tipo String se tratará de un objeto que heredará todos los
métodos y atributos de dicha clase.
String miVariable = “un valor”;
Dado que Java es un lenguaje estático o fuertemente tipado, se debe indicar siempre el tipo de
dato (primitivo o compuesto). La privacidad se verá luego en los Modificadores de Acceso de
Java.
Ejemplos:
int numero = 2; //Tipo primitivo
String cadena = “Hola”; //Tipo compuesto
boolean bandera = true; //Tipo primitivo
Sintaxis
final tipo identificador = valor;
Ejemplo
final int unaConstante = 10;
Uso básico
Modificadores de acceso
➢ Permiten controlar el acceso a los datos (encapsulamiento de la POO) que conforman un objeto.
➢ Incrementan la seguridad en cuanto al acceso a los datos ya que restringen así el acceso a
diferentes atributos, métodos y constructores definidos en el programa.
➢ Permiten que cuando una aplicación vaya a ser usada por otros usuarios o programadores, los
mismos no modifiquen incorrectamente un valor en particular.
Ejemplo:
Scanner sc = new Scanner(System.in); (siempre que se requiera ingresar datos)
System.out.println(“Ingrese su edad:”);
int edad = sc.nextInt(); (captura la entrada por teclado de dato tipo entero)
System.out.println(“Ingrese su nombre:”);
String nombre = sc.nextLine(); (captura la entrada por teclado de texto completo)
Sintaxis:
if (condición){
//código
}
Ejemplo:
int edad = 20;
if (edad >= 18){
System.out.println(“Es mayor de edad”);
}
Uso básico
Condicional IF-ELSE
Sintaxis:
if (condición){
//código si SE CUMPLE la condición
}else {
//código si NO SE CUMPLE la condición
}
Ejemplo:
int edad = 20;
if (edad >= 18){
System.out.println(“Es mayor de edad”);
}else{
System.out.println(“Es menor de edad”);
}
Uso básico
Condicional SWITCH
Sintaxis:
switch (opción){
case opción1:
//código para opción 1
break;
case opción2:
//código para opción 2
break;
default:
//código opción por defecto
break;
}
Uso básico
Condicional SWITCH
Ejemplo:
int opcion = 2;
switch (opcion){
case 1:
System.out.println(“Elegiste opción 1”);
break;
default:
System.out.println(“Opción incorrecta”);
break;
}
Uso básico
Bucles o Ciclos - FOR
Sintaxis:
for(int i = valorInicial; i <= valorFinal; i = i + incremento) {
//código
}
Ejemplo:
for(int i=0;i<5;i++) {
System.out.println(“El valor de i es: ” + i);
}
Uso básico
Bucles o Ciclos - WHILE
Sintaxis:
while (condición) {
//código
}
Ejemplo:
int contador = 1;
while (contador <= 10) {
System.out.println(contador);
contador++;
}
Uso básico
Bucles o Ciclos – DO-WHILE
Sintaxis:
do {
//código (se ejecuta al menos una vez antes de evaluar la condición)
} while (condición);
Ejemplo:
do {
System.out.println(“Ingrese un número: ”);
nro = sc.nextInt();
System.out.println(nro);
} while (nro != 0); //Mientras el nro. sea distinto de cero, se ejecuta el
código
Uso básico
Funciones, métodos y procedimientos
➢ Funciones: conjunto de instrucciones que forman parte de un bloque, reciben parámetros y
retornan un valor. El valor retornado puede ser de algún tipo primitivo o compuesto.
➢ Métodos: idénticos a las funciones pero con la única diferencia que SIEMPRE están asociados
a objetos, es decir, pertenecen a un objeto (en cambio una función existe por sí sola sin
necesidad de un objeto).
➢ Procedimientos: conjunto de instrucciones que forman parte de un bloque, reciben
parámetros y no retornan ningún valor. El tipo de dato que emplean es “void”.
Leer números enteros y por cada uno indicar si el mismo es par o impar y
si es positivo o negativo. Cuando se ingrese el número cero finalizar el
programa.
Utilizar estructuras condicionales y de bucle.
Utilizar funciones.
Java
Ejercicio 1
➢ Marca
➢ Modelo
➢ Color
➢ Kilómetros
➢ Año
Comportamiento
➢ Ningún objeto existe en forma aislada
➢ Los objetos reciben acciones, y ellos mismos actúan sobre otros
➢ El comportamiento es cómo actúa y reacciona un objeto, en términos de
sus cambios de estado y paso de mensajes
➢ Representa su actividad visible y comprobable exteriormente
➢ Una operación es una acción que un objeto efectúa sobre otro con el fin
de provocar una reacción. Las operaciones que los objetos cliente
pueden realizar sobre un objeto, suelen declararse como métodos y
forman parte de la declaración de la clase a la que pertenece ese objeto
Clase
Objeto
Sobrecarga de métodos
➢ Útil para que el mismo método opere con parámetros de distinto tipo o que un método
reciba una lista de parámetros diferente
➢ Puede haber dos métodos con el mismo nombre que realizan dos funciones distintas
➢ La diferencia entre los métodos sobrecargados está en su declaración
Los dos métodos se diferencian por la declaración de sus parámetros y ambos métodos
realizan operaciones distintas
Clase
Objeto
Arreglos
➢ Estructura de almacenamiento que permite almacenar muchos objetos de la misma clase e
identificarlos con el mismo nombre
➢ También conocidos como arrays. Existen unidimensionales y multidimensionales.
Sintaxis:
tipoDato[ ] identificador;
o
tipoDato identificador[ ]; Ambas declaraciones son equivalentes, el tipo de
dato base del arreglo es int y el nombre es
Ejemplo de declaración de array “numeros”.
de enteros: Todos los elementos del arreglo “números[ ]”
int[ ] numeros; almacenan un int.
o
int numeros[ ];
Arreglos
➢ Un arreglo también puede ser de tipo completo o formado por tipos de datos definidos por el
usuario.
Ejemplo de declaración de array:
Auto miArreglo[ ];
“miArreglo” es un array de elementos de la clase “Auto”. Cada elemento del mismo
referencia a una instancia u objeto de la clase “Auto”.
➢ Cuando un arreglo se declara, solo se crea una referencia del arreglo. Para realmente crear o
dar memoria al arreglo, se puede crear un arreglo de la siguiente manera
Sintaxis:
int miArreglo[ ]; //Declaración
miArreglo = new int[10]; //Instanciación indicando el tamaño = 10 elementos
O
int[ ] miArreglo = new int[10]; //Se declara e instancia el arreglo
Arreglos - Instanciación
A tener en cuenta sobre la inicialización e instanciación:
De esta forma, el tamaño del arreglo declarado se “amoldará” a la cantidad de elementos con
los que se lo inicializa.
Arreglos - Utilización
El acceso a los elementos de un arreglo, para su lectura o para su asignación, se realiza de
manera directa por el número de índice del mismo:
Ejemplo:
char miArreglo[ ];
miArreglo = new char[10];
De la misma manera, puede realizarse el recorrido a través del bucle FOR-EACH (similar a
FOR):
De la misma manera, puede realizarse el recorrido a través del bucle FOR-EACH (similar a
FOR):
➢ Comienza con la palabra clave for al igual que un bucle for normal.
➢ En lugar de declarar e inicializar una variable contador del bucle, declara una variable que es
del mismo tipo que del array, seguido de dos puntos y seguido del nombre del array.
➢ En el cuerpo del bucle, puede usar la variable del bucle que creó en lugar de usar un
elemento indexado del array.
➢ Se usa comúnmente para iterar sobre un array o una clase de colecciones (por ejemplo,
ArrayList).
Arreglos - Objetos
Se pueden tener también arreglos de objetos de una clase en Particular.
Ejemplo:
Si se tiene una clase Auto y se quiere crear un arreglo de objetos de tipo Auto se hace lo
siguiente:
Ejemplo 2
Después, crear un vector de String donde se guardará el resultado de la nota con palabras, las
cuales son:
-Si la nota esta entre 0 y 4,99 será "Insuficiente"
-Si está entre 5 y 6,99 será "Bueno".
-Si está entre 7 y 8,99 será "Muy Bueno".
-Si está entre 9 y 10 será "Excelente".
Crear sus respectivos métodos get y set correspondientes para cada atributo. Crear el método
toString() para mostrar la información relativa al libro con el siguiente formato:
“El libro con ISBN creado por el autor tiene páginas”
En el fichero main, crear 2 objetos Libro (los valores que se quieran) y mostrarlos por pantalla.
Por último, indicar cuál de los 2 tiene más páginas.
Java - Listas
LISTAS
https://jarroba.com/arraylist-en-java-ejemplos/
http://panamahitek.com/el-uso-de-listas-en-java/
https://www.arquitecturajava.com/java-arraylist-for-y-sus-opciones/
http://puntocomnoesunlenguaje.blogspot.com/2012/12/arraylist-en-java.html
https://curiotecnology.blogspot.com/2012/09/manejo-de-listas-java.html
https://www.tutorialcup.com/es/java/arraylist-java.htm
https://es.gadget-info.com/difference-between-list
https://programmerclick.com/article/25531500270/
Listas
➢ Una lista es una estructura de datos que conforma una secuencia de elementos
dispuesto en un cierto orden, en la que cada elemento tiene como mucho un
predecesor y un sucesor.
➢ El número de elementos de la lista no suele estar fijado, ni suele estar limitado
por anticipado (a diferencia de los arrays o vectores).
➢ Es una de las estructuras de datos más utilizadas en Java.
➢ Se puede representar la estructura de datos de forma gráfica con cajas y flechas.
Las cajas son los elementos y las flechas simbolizan el orden de los elementos.
➢ Dado que las listas mantienen una secuencia particular, admiten ciertas
operaciones como son insertar un nodo adicional, borrar un nodo, obtener un
nodo, acceder a un elemento por su índice dentro de la lsita, etc.
➢ Si se quiere acceder a un elemento de la lista utilizando el índice, recordar que los
índices siempre comienzan desde cero (0).
➢ En síntesis, es una estructura de datos que almacena datos en memoria de forma
similar a un array pero con la ventaja de que el número de elementos que
almacena es definido de manera dinámica a medida que se van agregando o
quitando elementos a la misma.
Listas – Jerarquía de Listas
Listas – Declaración
Sintaxis:
ArrayList identificador = new ArrayList();
Ejemplo:
ArrayList miLista = new ArrayList();
miLista.add("Lenguaje"); //Se añaden elementos con el método “add()”
miLista.add(3);
miLista.add('a');
miLista.add(23.5);
Listas – Declaración
Debido a que la lista puede contener objetos de distinto tipo, esto puede ocasionar problemas
y complicaciones a la hora de trabajar con la lista, por esta razón siempre se le deberá asignar
un tipo de dato específico a la lista.
Sintaxis:
ArrayList<tipoDato> identificador = new ArrayList();
Donde “tipoDato” deberá ser una clase ya que no se pueden usar tipos primitivos de forma
directa (int, float, etc.).
Para poder usar tipos primitivos, se deberá utilizar su clase envolvente.
Ejemplo:
ArrayList<Integer> miLista = new ArrayList(); //”Integer” es la clase envolvente del tipo
primitivo “int”
Listas – Declaración
Aclaración sobre las clases envolventes:
//Copiar un ArrayList
ArrayList arrayListCopia = (ArrayList) nombreArrayList.clone();
Listas – Recorrido
El recorrido puede hacerse utilizando el bucle FOR o el bucle FOR EACH
Iterator<String> it = miLista.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
Listas – Iteradores
hasNext:devuelve true si hay más elementos en la lista
next: devuelve el siguiente objeto contenido en la lista
Iterator<String> it = miLista.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
Listas – Pasar como Parámetro
Muchas veces es necesario enviar como parámetro de un método una lista en
particular, para ello se procede la siguiente manera:
Donde “MiClase” es una clase en particular que existe dentro del proyecto. De modo
tal que al acceder a un elemento se podrán acceder a los atributos y métodos que
tenga dicha instancia de clase (objeto).
El resto del funcionamiento es exactamente el mismo que de las listas vistas hasta
ahora.
Listas de Objetos
Ejemplo 1
Se tiene una clase Empleado con los atributos: id, nombre, cargo.
Se necesita crear una lista que contenga 3 empleados.
Se necesita imprimir el contenido de la lista.
Listas de Objetos
Ejercicio 1: usando menú de opciones, clases/objetos y listas.
Crear una clase Libro que contenga los siguientes atributos:
– ISBN
– Titulo
– Autor
– Número de páginas
Crear sus respectivos métodos get y set correspondientes para cada atributo. Crear
el método getDatos() para mostrar la información relativa al libro con el siguiente
formato:
“El libro con ISBN XXXX creado por el autor XXXX tiene XX páginas”
Crear 5 libros (solicitando datos al usuario), agregarlos a una lista y mostrarlos por
pantalla (todos).
Mostrar el segundo libro.
Mostrar cuál es el libro que tiene más páginas.
Listas de Objetos
Ejercicio 2: usando menú de opciones, clases/objetos y listas.
Crear una clase Producto que contenga los siguientes atributos:
– Código
– Nombre
– Precio
– Stock
Crear sus respectivos métodos get y set correspondientes para cada atributo.
Crear 5 productos (solicitando datos al usuario), agregarlos a una lista y mostrarlos por pantalla (todos).
Permitir realizar la búsqueda de un producto por su código, esto se hace recorriendo la lista y comparando el
código ingresado por el usuario contra el código de cada elemento de la lista, usando el método:
miElemento.equalsIgnoreCase(codigoDelUsuario) devuelve true si es igual, false si no es igual. (Consultar
método equalsIgnoreCase() en documentación de Java si hay alguna duda). Si se encuentra el producto,
imprimir sus datos.
Modificar el stock de un producto previa búsqueda en la lista por su código. Se busca por código, si se
encuentra se modifica el valor de stock con su método set() y luego finaliza la búsqueda.
Imprimir todos los productos.
Herencia
➢ Es la capacidad de crear clases que adquieren de manera automática los
miembros (atributos y métodos) de otras clases que ya existen, pudiendo al
mismo tiempo añadir atributos y métodos propios.
➢ Es uno de los pilares de la POO.
➢ Java soporta la herencia permitiendo una clase a incorporar otra clase en su
declaración. Esto se hace mediante el uso de la palabra clave extends. Por lo
tanto, la subclase se añade (se extiende) a la superclase.
Herencia – Conceptos básicos
En la herencia, es importante entender los siguientes conceptos básicos:
➢ Reutilización del código:en aquellos casos donde se necesita crear una clase
que, además de incluir métodos propios, deba incluir los métodos definidos en
otra, la herencia evita tener que reescribir todos esos métodos en la nueva clase.
Lo mismo para los atributos.
C14EJ1
Herencia – Control de Acceso a
Miembros
A menudo una variable de instancia de una clase se declarará
privada (private) para evitar su uso no autorizado o alteración.
Heredar una clase no anula la restricción de acceso privado. Por
lo tanto, aunque una subclase incluye a todos los miembros
(atributos) de su superclase, no puede acceder a los miembros
de la superclase que se han declarado privados.
Herencia – Control de Acceso a
Miembros
Ejemplo:
Si se modifica la clase Bidimensional y se hacen privados sus atributos:
class Bidimensional{
private double base;
private double altura;
void mostrarDimension(){
System.out.println("La base y altura es: "+base+" y "+altura);
}
}
double area(){
return base*altura/2; //Error! no se puede acceder a estos atributos
}
}
Herencia – Control de Acceso a
Miembros
En este caso, solamente se podrá acceder a los atributos privados altura y base
de Bidimensional desde sus propios métodos. Por tanto solo se los podrá
acceder desde su propia clase, no desde las subclases.
Por esta razón, siempre se utilizan métodos de acceso o métodos get()/set() que
permitan acceder a los atributos privados de la superclase.
Esto se usa cuando se quiere llamar al método de clase padre (superclase). Entonces,
cuando una clase padre e hijo (subclase) tienen los mismos métodos nombrados,
entonces para resolver la ambigüedad se utiliza la palabra clave super.
Herencia – Datos importantes
➢ Superclase predeterminada: excepto la clase Object, que no tiene superclase, cada clase
tiene una y solo una superclase directa (herencia única). En ausencia de cualquier otra
superclase explícita, cada clase es implícitamente una subclase de la clase Object.
➢ La superclase solo puede ser una: una superclase puede tener cualquier cantidad de
subclases. Pero una subclase solo puede tener una superclase. Esto se debe a que Java no
admite herencia múltiple con clases. Aunque con interfaces, la herencia múltiple es compatible
con java.
➢ Heredar constructores: una subclase hereda todos los miembros (campos, métodos y
clases anidadas) de su superclase. Los constructores no son miembros, por lo que no son
heredados por subclases, pero el constructor de la superclase puede invocarse desde la
subclase (usando “super”).
➢ Herencia de miembros privados: una subclase no hereda los miembros privados de su
clase principal. Sin embargo, si la superclase tiene métodos públicos o protegidos (como get()
y set()) para acceder a sus campos privados, estos también pueden ser utilizados por la
subclase.
Herencia – Sobre las subclases
En las subclases se pueden heredar los miembros tal como están, reemplazarlos,
ocultarlos o complementarlos con nuevos miembros:
➢ Los campos heredados se pueden usar directamente, al igual que cualquier otro
campo.
➢ Se pueden declarar nuevos campos en la subclase que no están en la superclase.
➢ Los métodos heredados se pueden usar directamente tal como son.
➢ Se puede escribir un nuevo método de instancia en la subclase que tenga la misma
firma que el de la superclase, anulándolo.
➢ Se pueden declarar nuevos métodos en la subclase que no están en la superclase.
➢ Se puede escribir un constructor de subclase que invoca el constructor de la
superclase, ya sea implícitamente o mediante la palabra reservada “super”.
Herencia – Ejercicio 1
Definir una clase Auto y una clase Moto que desciendan de la clase Vehiculo.
Definir los atributos a gusto teniendo en cuenta que atributos tienen esas clases en
los objetos del mundo real.
Definir los métodos de acceso get()/set().
Definir constructores donde corresponda para facilitar la inicialización de los
atributos del objeto.
Definir un método obtenerDatos() en la clase Vehiculo y en la clase Auto.
Crear dos objetos, uno Auto y otro Moto, asignar valores a sus atributos y llamar al
método obtenerDatos() y mostrar todos los atributos que tiene ese objeto Auto (de
la clase Auto y Vehiculo).
Usar herencia.
Herencia – Ejercicio 2
Utilizando menú de opciones, listas y herencia:
Se tiene que crear un sistema de gestión para una empresa que cuenta con varios empleados.
Cada empleado tiene un nro. de legajo, puesto y salario. Se necesita que el sistema permita:
-Aumentar el salario de un empleado en un porcentaje X.
-Modificar el puesto de un empleado por otro.
-Buscar empleado por número de legajo y mostrar sus datos.
-Eliminar un empleado de la lista de empleados buscándolo por número de legajo.
-Listar todos los empleados.
Definir los atributos a gusto teniendo en cuenta los atributos que existen en el mundo real para
los objetos de las clases identificadas.
Definir los atributos, métodos de acceso, constructores y métodos modificadores que
correspondan en base al problema y a la imaginación para abstraer el mundo real dentro del
dominio planteado.
Herencia – Ejercicio 3
Utilizando menú de opciones, listas y herencia:
Se tiene que crear un sistema de gestión para una expendedora de bebidas.
De cada bebida solamente interesa su numero de identificación (ID, único), cantidad de litros, precio y marca.
Las bebidas pueden ser agua mineral o bebidas azucaradas.
Si se trata de agua mineral, también interesará saber de cuál manantial es (un nombre del origen).
Si se trata de una bebida azucarada, interesará saber cuál es el porcentaje de azúcar y si tiene o no alguna
promoción. En caso de tener promoción, al precio se le descontará siempre un 10%.
Se necesita que el sistema permita:
-Cargar una bebida indicando los datos que correspondan según si es agua mineral o bebida azucarada. (El ID
de la bebida NO debe repetirse, debe ser único).
-Eliminar una bebida dado su ID.
-Buscar una bebida por ID y mostrar sus datos.
-Calcular el precio promedio de todas las bebidas existentes.
-Calcular el precio promedio de una marca de bebida en particular.
-Listar todas las bebidas
Definir los atributos, métodos de acceso, constructores y métodos modificadores que correspondan en base
al problema y a la imaginación para abstraer el mundo real dentro del dominio planteado.