ProgramacionEstructurada - POO
ProgramacionEstructurada - POO
Cambio de vocabulario
Aspecto PE POO
Programa en un lenguaje programa clase
funciones funciones Métodos, que definen el comportamiento del objeto
Tipos de variables int, long, float, ...
int, long, float, …
Clases desarrolladas por los programadores
Variables globales Variables globales atributos
Variables locales (dentro Variables variables
de métodos)
Componente de la clase No aplica Se refiere a un atributo o método
Representación de cosas No hay Objetos
Keywords
boolean if interface class true
char else package volatile false
byte final switch while throws
float private case return native
void protected break throw implements
short public default try import
2
Definiciones
Indicadores para la sintaxis:
[opcional] : No se escriben [ ], indica que el contenido es opcional
a|b : No se escribe | , indica que se escriba a o b; pero no los dos.
En el lenguaje Java se especifica con precisión todos los detalles necesarios de las instrucciones, al
principio esto es tedioso; pero permite integrar: la lógica, las flexibilidades, la completitud físico/lógica:
portabilidad, cambios en la lógica, trabajo en equipos.
Explicación de los detalles:
public : accesible para todos.
class : tipo de componente.
SaludoApp : nombre de la clase.
{…} : bloque de instrucciones.
static : (el método main) no pertenece a objeto.
void : el método main no retorna nada.
main : nombre del método, en ingles, principal.
(String[] args) : main recibe al parámetro args, el cual es un arreglo de tipo String.
System.out.println(..) : la clase System, tiene el objeto out, que tiene el método println("mensaje")
que escribe el mensaje en el monitor.
5. El nombre debe ser significativo (mnemónico): cosa o verboCosa, ejemplos: largo, limpiarLente
Carpeta -directorio- de trabajo (ct): es una carpeta cualquiera en la cual se ubicará al abrir el aplicativo
terminal. En ct y sus subcarpetas alojará los archivos que utilizará en una sesión de Java.
Paquete es un subconjunto de una carpeta, por el momento asumiremos que paquete es sinónimo de
carpeta. Atento no incluye a las subcarpetas. Un paquete contiene clases que serán utilizadas por otras
clases.
Las carpetas de una ruta se separan por: “/” en el ambiente Terminal, ejemplo: c1/c2
Los paquetes de una ruta se separan por: “.” en el ambiente Java, ejemplo: c1.c2
Crear objetos
Operación Sintaxis Ejemplos
Declarar la variable mi MiClase mi; Date ahora; // Date opera fechas
(objeto) de tipo MiClase Scanner sc;
asignar valor a mi mi = new MiClase(); 1) ahora = new Date();
// new es un operador 2) sc = new Scanner(System.in);
3) obj = metodo(); // metodo retorna un
// objeto tipo Obj
Crear: Declarar y asignar MiClase mi = new MiClase(); Date ahora = new Date();
valores Scanner sc = new Scanner(System.in);
Application Programming Interface (API): Conjunto de clases (programas) para ser utilizadas en otras
clases. Las API se guardan en paquetes (carpetas), buscar en google: Java 18 API documetation:
https://docs.oracle.com/en/java/javase/18/docs/api/index.html . Busquemos, por ejemplo la clase Scanner
Muestra:
Al inicio Más adelante
Resumen de constructores
Resumen de médodos
Detalles
Operadores relacionales
Operador Nombre Ejemplo
== Igualdad
!= Desiguladad cantidad == 5
cantidad != 0 // true
> Mayor que cantidad >= 9.99 // false
< Menor que cantidad <= puntoReorden
>= Mayor o igual que
<= Menor o igual que
Bloque de sentencias
Un bloque agrupa cero o más sentencias dentro de llaves:
Ejemplos:
Bloque sin sentencias: {}
bloque de 3 sentencias: {sent1; sent2, sent3}
Cuando se agrupa una sola sentencia se puede omitir las llaves:
{sent1;} // es equivalente a : sent1;
Estructura de selección // igual que en C++
Sintaxis Descripción
if (boolExpr1) { bloque1 } if boolExpr1== true, se ejecuta bloque1
[else if (boolExpr2) { bloque2 }] ... else if boolExpr2== true, se ejecuta bloque2
[else { bloque3 }] else se ejecuta bloque3
Ejemplos
int total = 123; int total = 123;
double descuento = 0; if (total < 100) descuento = .05;
if (total >= 100) descuento = .1; else if (total < 1000) descuento = .1;
else descuento = .15;
if (total < 100) descuento = .05;
else descuento = .1; if (total < 100) descuento = .05;
else { descuento = .1;
System.out.println("¡Buen descuento...!");
} // 2 sentencias, requiere { }
Ejemplos
// Ejecutar el bloque mientras el usuario Sumar los 5 primeros enteros
// permita hacerlo:
Scanner sc = new Scanner(System.in); int i=1, suma=0;
String sigue = "s"; while(i<=5) {
while (sigue.equalsIgnoreCase("s")) { suma += i;}
{ System.out.println("uno"); i++;
System.out.println("dos"); }
} // o también:
system.out.print("Sigue s/n: "); int i=1, suma=0;
sigue = sc.next(); // lee siga while(i<=5) suma += i++;
}
Programe la aplicación PromedioApp, la cual solicita números entre 0 y 100; termina cuando se tipea 999
y se imprime la cantidad de números ingresados y el promedio.
La salida en el monitor puede ser:
Ingrese un número entre 0 y 100 (999 para terminar):
Ingrese un número: 2
Ingrese un número: 4
Ingrese un número: 6
Ingrese un número: 999
Debug (bug ≡ bicho; debug: sacar los bichos del programa, depurar ) un programa en tiempo de
ejecución
Después de compilar un programa, al procesar se pueden presentar dos tipos de error:
• run time exception: El programa se cancele abruptamente y muestre en la consola, un mensaje
de error que indica el número de instrucción en la que sucedió el error: // Se lee de abajo para
arriba
Ingrese un número: 2
Ingrese otro número: tres // run time exception en la línea 10
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117) // Leer de abajo para arriba
at java.util.Scanner.nextInt(Scanner.java:2076) // método interno llamado en la línea 10
at A.main(A.java:10) // Error en la línea 10 de la clase A y método main()
El cual indica que se a producido una excepción InputMismatchException (una entrada que no
coincide con el tipo de dato) en la línea 10. Para resolver el problema:
Vamos a la línea 10 del programa y encontramos: num = sc.nextInt();
Vemos que en lugar de tipear 3; se tipeó tres
Más adelante aprenderemos a prevenir este tipo de error (bug).
2 2, 5, 4 3 11 3.67 3 11 3.67Verdad
3 0 0 No ingresó datos 0 0 NaNFalso
4 tres