PROGRAMACIÓN Y BASES DE DATOS
PRIMERA ACTIVIDAD
BT1 PROGRAMACIÓN
BT1 PROGRAMACIÓN
Técnico Superior en Desarrollo de Aplicaciones Multiplataforma
MIKEL GARCIA PIÑEIRO
232323
HI-SCORE
bienvenid@
Hola, soy Pac-Man y, aunque soy políglota, el lenguaje que utilice hoy será {Java}.
En este documental te voy a enseñar cómo funciona mi mundo y qué reglas lo rigen. ¡Acompáñame!
índice
elementos de un programa informático
estructuras de control
desarrollo de clases
utilización de objetos
elementos de un programa
entendamos qué es un programa informático...
IDE
IDE son las siglas de Integrated Development Environment o, en español, entorno de desarrollo integrado. Es una herramienta que nos ayudará a escribir programas y hay para todos los gustos: NetBeans, IntelliJ IDEA, BlueJ o Eclipse son solo algunos ejemplo.
+ INFO
bloques de un programa de java
ya sabemos que con un 'ide' podemos escribir programas en java. Ahora, ¿qué es lo mínimo que debemos escribir para que un programa en java se ejecute?
el método main
Lo mínimo para crear un programa en Java es crear una clase y, dentro, incluir el método main: este es el punto de partida de un programa de Java, sin él no se iniciará.
System.out.println escribe en consola el texto entrecomillado.
ahora que he escrito un programa, ¿cómo lo ejecuto?
Un alumno de Java (2024)
ejecutando...
IntelliJ detecta el método main y nos lo pone fácil: el botón de "play".
variables
Ahora imagina que quieres guardar la puntuación de tu partida. Necesitamos guardar el valor en algún lugar: ¡eso es una variable! Un espacio en memoria en que almacenamos y manipulamos datos.
Java es un lenguaje estáticamente tipado, es decir, tenemos que especificar qué tipo de variable vamos a construir y no se puede cambiar.
Las variables se definen así:[visibilidad] tipo nombreVariable;
232323
HI-SCORE
VARIABLE
tipos de datos
primitivos
Son los componentes básicos de la manipulación de datos y no se pueden dividir en tipos de datos más simples.
¡Entrenamiento!
tipos de datos
no primitivos
string
wrappers
classes
arrays
+ INFO
+ INFO
+ INFO
+ INFO
ya sabemos qué es una variable. Ahora, ¿cómo le asigno un valor?
Un alumno de Java (2024)
Literales
Se llaman literales a los valores que asignamos a las variables. Tenemos los siguientes tipos:
cadenas
caracteres
booleanos
numéricos
int a = 10;double b = 1.0;float c = 1.0F; long d = 10L;
char f = 'f';char g = '%';
String h = "Game Over";
bool e = true;
constantes
Una constante será aquella variable que tenga un valor inmutable, es decir, que no se pueda cambiar. Se definen usando la palabra reservada final. Imaginemos que tenemos que definir el tamaño de los Fantasmas en pantalla. Será un valor que no cambia en el tiempo: final int alto = 20;
final int ancho = 20;
¡Entrenamiento!
expresiones
Operadores
Una expresión es una estructura de programación que se evalúa para producir un único valor y que se forma a partir de la combinación de variables, operadores y llamadas a métodos.
valorA + valorB
Métodos
myObjeto.toString()
Relacionales
valorA > valorB
operadores
aritméticos
Permiten realizar operaciones aritméticas.
operadores
de asignación
Permiten asignar valores.
operadores
relacionales
Permiten evaluar la relación entre variables.
¡qué mareo con tanto operador!
Veamos unos cuantos ejemplos escribiendo algunas expresiones mientras usamos algunos operadores.
expresión de asignación
expresión relacional
expresión aritmética
int a = 5;int b = 6; int c = a + b;
int a = 5;int b = 6; bool esMayor = a > b;
int a = 5;a += 6;
¡Entrenamiento!
conversiones de tipo
¿cómo las hago?
Es posible convertir un valor de un tipo a otro tipo distinto. Pero, ¡cuidado! No todas las conversiones son posibles, podrías encontrarte con una excepción.
Especificando el tipo entre paréntesis:
long x = 15L;int y = (int)x;
Mientras que si usamos clases, existe el método 'valueOf()':
Integer a = Integer.valueOf("900");
+ conversiones
comentarios
¡Ya acabamos con lo básico de un programa! Imagina que quieres dejar escrita una explicación del código o que una parte del programa no se ejecute: saludo a los comentarios.
// Comentario
/* Comentario de varias lineas */
Recuerda: un comentario no se ejecuta.
Veamos unos ejemplos mientras jugamos...
utilización de objetos
entendamos cómo se utilizan los objetos...
objetos
Un programa no es más que un conjunto de objetos trabajando en conjunto. Piensa en los objetos como representaciones únicas, tangibles, de un determinado tipo. En mi mundo, cada Fantasma (clase) es un objeto distinto.
blinky
inky
clyde
pinky
instanciar
Hemos dicho que Fantasma es una clase. ¿Cómo se crea cada fantasma, cada objeto? A eso se le llama instanciar un objeto.
blinky
Fantasma blinky = new Fantasma();
La palabra reservada new, seguido del constructor de la clase, instancia un objeto.
ahora me hablas del constructor, ¿qué es eso?
Un alumno de Java (2024)
constructor
El constructor construye objetos. Los constructores se invocan con la palabra new seguido del nombre de la clase. Los constructores nos permiten crear objetos con una configuración específica, es decir, con unos valores específicos. Veamos la clase 'String' qué constructores tiene:
String gameOver = new String("Game Over");
clases
¿Y qué es una clase? Es una plantilla para crear objetos. Todos los objetos de una misma clase comparten comportamiento y propiedades, entre otros.
blinky
inky
Imaginemos que ahora la clase Fantasma tiene un constructor con su velocidad. Tendremos dos objetos con propiedades distintas.
Fantasma blinky = new Fantasma(6);
Fantasma inky = new Fantasma(3);
clase
propiedades
comentario
constructor
parámetros
método
ya que hemos visto cómo es una clase, la usaremos para ilustrar cómo se usa.¡Vamos a crear fantasmas!
instanciación y uso de métodos
ahora que hemos hecho un repaso de la estructura de una clase, vamos a ver sus partes en detalle.
propiedades como métodos Get/set
Por convección, las propiedades de una clase son privadas y que se usan dos métodos para establecer el valor o para consultarlo: lo que llamamos métodos get y set.
+ INFO
inky.setVelocidadMovimiento(12);
constructores
Los constructores son muy flexibles: podemos crear un constructor sin parámetros o constructores con uno o varios parámetros.
Fantasma desconocido = new Fantasma();Fantasma inky = new Fantasma(5, "Inky");
métodos estáticos
Hemos visto que cada objeto de una misma clase tendrá unas propiedades específicas. Las variables y métodos estáticos nos permiten compartir información entre objetos de la misma clase. Se declaran con la palabra reservada static justo delante del tipo.
propiedades estáticas
inky
blinky
métodos estáticos
blinky
minimaVelocidad = 1;
minimaVelocidad = 0;
inky
Fantasma blinky = new Fantasma(6, "Blinky");Fantasma inky = new Fantasma(2, "Inky");
garbage collector
Cada vez que utilizamos la palabra new creamos un objeto que ocupa memoria. ¿Cómo se libera la memoria? Java lo hace por nosotros: el conocido proceso 'Garbage Collector', o recolector de basura, libera los recursos de los objetos que ya no se usan.
Garbage Collector
inky
blinky
estructuras de control
aprenderemos cómo cambiar el comportamiento secuencial de un programa
estructuras de control
Para entender las estructuras de control primero debemos saber que los programas se ejecutan de forma secuencial, es decir, una acción tras otra. Las estructuras de control permiten modificar ese comportamiento, influyendo en el flujo del programa bajo el análisis de condiciones.
estructuras de selección
Las estructuras de selección permiten decidir si se ejecuta un bloque de instrucciones o, por el contrario, se omite. Este control puede realizarse con la estructura if/else. Su estructura es:
Se ejecuta si se cumple la condición.
if (condición) { instrucción1; } else { instrucción2; }
Se ejecuta si no se cumple la condición.
estructuras de selección
Volviendo al ejemplo de los métodos get/set, ejecutamos lo siguiente:
pinky.setVelocidad(-1);
velocidadMovimiento = 0;
velocidadMovimiento = 5;
pinky
pinky.setVelocidad(5);
estructuras de selección
La estructura if/else permite encadenar condiciones if justo después del else
if (condición) { instrucción1; } else if (condición2) { instrucción2; } else if (condición3) { instrucción3; } else { instrucción4; }
estructuras de selección
Existe otra estructura de selección múltiple, similar al else/if con anidaciones, que permite seleccionar un bloque al cumplirse cierta condición: la estructura switch.
switch (expresion) { case valor-1:
instrucciones-1;
break;
case valor-2:
instrucciones-2;
break; default:
instruccion-def;
break;
Se ejecuta si la expresion devuelve valor-1.
Se ejecuta si la expresion devuelve valor-2.
Se ejecuta si no se cumple el resto.
estructuras de repetición
Las estructuras de repetición permiten repetir un bloque de instrucciones tantas veces como se requiera. La primera estructura de repetición que veremos será la estructura switch.
Mientras se cumpla la condición...
while (condición) {
instrucciones;
}
... se ejecutarán las instrucciones.
estructuras de repetición
La segunda estructura es la do-while. La diferencia con while es que la condición se evalúa al final, con lo que las instrucciones siempre se ejecutan al menos una vez.
Se ejecuta una primera vez...
do {
instrucciones; } while (condición);
... y si la condición es cierta se repite.
estructuras de repetición
La última estructura es la for. Es una forma particular de la estructura while. Esta estructura se utiliza cuando sabemos cuántas veces ha de repetirse, condición que verificamos con una variable de control.
for (inicialización; condición; actualización) { bloque-de-sentencias; }
estructuras de salto
break
continue
Permite saltar a la siguiente iteración del bucle, es decir, saltar el resto de la repetición que queda sin ejecutar.
Permite salir de una estructura de repetición.
do { if (condición1) { continue; } instrucciones; } while (condición2);
do { if (condición1) { break; } instrucciones; } while (condición2);
repasemos conceptos
control de excepciones
¡Los errores ocurren en todos los programas! Las excepciones son estructuras que ayudan a controlar errores. Las excepciones son objetos que heredan de la clase Exception y se controlan con la estructura try-catch. Veamos esto con unos ejemplos.
control de excepciones
Imaginemos que queremos crear un objeto pero olvidamos inicializarlo.
Fantasma blinky = null;
blinky
No hemos usado new, por lo que aún no hemos creado en memoria a blinky. Como se conoce en Java: es un objeto nulo (null). Si intentamos llamar a un método, como por ejemplo blinky.setVelocidad(5), se lanzará una excepción de tipo NullPointerException. ¿Cómo se controlanestas situaciones? Con try-catch...
ejemplo de try-catch
- La estructura comienza con try donde se intentará realizar una instrucción.
- Si se lanza una excepción se puede recoger con catch, donde se ejecutará la instrucción que queramos. Se pueden encadenar tantos catch como se quiera.
- Y finally permite que se ejecute una instrucción siempre, ocurra una excepción o no.
+ INFO
aserciones
Las aserciones (assertions) nos permiten verificar asunciones o estados de nuestro programa. Si no se cumplen, se lanzará una excepción AssertionError.
Al caso anterior le añadimos la comprobación con assert de que inky no sea null. En esta sintaxis hemos pasado el String que aparecerá como mensaje del error.
depuración
La depuración permite parar el programa mientras este se ejecuta y ver los valores que en ese momento tienen los objetos. Esta técnica es muy útil para realizar correcciones y entender, paso a paso, cómo se ejecuta un programa. Las paradas que haga el programa se llaman puntos de interrupción y puedes añadir tantos como quieras.
depuración...
IntelliJ permite añadir puntos de interrupción haciendo click a la derecha del número de línea.
desarrollo de clases
entendamos mejor qué son las clases y cómo se usan
clases
Hagamos un repaso del concepto de clase...
propiedades y métodos
constructor
estructura
qué es
Para qué sirven los constructores y cuál es su estructura
Respondemos a la pregunta: ¿qué es una clase?
Hacemos un repaso de lo que es una propiedad y un método
A través de un ejemplo de código vemos su estructura
+ INFO
+ INFO
+ INFO
+ INFO
modificadores y visibilidad
se asigna cuando no se especifica un modificador. visible para el mismo paquete.
default
hace visible la clase, método o propiedad a todo el mundo.
public
será visible únicamente desde su propia clase.
private
Un término medio: hace visible dicho miembro en su clase o en subclases.
protected
visibilidad
Los modificadores y su visibilidad
La siguiente tabla resume qué visibilidad ofrece cada modificador
herencia
Acabamos de introducir el concepto de herencia con el ejemplo del modificador protected. ¿Qué significa esto? Que la clase que extiende de otra (extends) heredará propiedades y métodos, es decir, su comportamiento.
Una clase ENEMIGO puede definir el comportamiento básico de todos los enemigos. Como, por ejemplo, destruir el objeto una vez su vida llega a cero.
enemigo
Fantasma, que extiende de enemigo, ya incorpora dicho comportamiento y no debemos implementarlo.
fantasma
herencia
enemigo
fantasma
>|
Fantasma pinky = new Fantasma();pinky.destruir();
Identifica una clase
conclusiones
Hemos dado los primeros pasos en Java y hemos abordado los siguientes contenidos:
- La identificación de los elementos de un programa informático.
- La utilización de objetos.
- El uso de estructuras de control.
- El desarrollo de clases.
Te espero en los siguientes capítulos...
¡Ya empiezas a dominar esto de la programación!
Pacman
© 2024 Mikel garcia
game over
private
Esta clase tiene dos propiedades con el modificador private. Se podrá acceder a ellas desde la clase Fantasma pero nunca fuera de ella. No podremos hacer: inky.nombre;
wrappers
Los Wrappers, o envoltorios, son clases que nos permiten usar los tipos primitivos como objetos.Integer: envuelve un int
Long: envuelve un long
Float: envuelve un float
Double: envuelve un double
Character: envuelve un char
Boolean: envuelve un boolean
Byte: envuelve un byte
Short: envuelve un short
LINK
protected
Aquí vemos dos clases de distintos paquetes. La primera de ellas tiene un método protected. La segunda clase extiende de la primera (es una subclase) y puede invocar el método 'saludar' pese a estar en un paquete distinto.
Instalación...
La instalación de IntelliJ es sencilla si seguimos la documentación oficial.
Y como usaremos Java como lenguaje de programación, debemos tenerlo instalado.
array
Sirven para almacenar listas de valores en una misma variable. Se declaran con '[]' después del tipo.
String[] ghosts = {"Blinky", "Pinky", "Inky", "Clyde"};
ARRAYS
Excepciones comunes...
String
El tipo 'String', o clase, representa una secuencia de caracteres.private String str = "Game Over";
DOCUMENTACIÓN
public
Esta clase tiene su constructor por defecto y el constructor parametrizado con el modificador public. Esto implica que son visibles desde cualquier lugar del programa.
CLASS
Una clase en Java es un conjunto de objetos que comparten características/comportamiento y propiedades/atributos comunes. En nuestro mundo, el fantasma Clyde sería un objeto de la clase Fantasma.
LINK
Por qué es útil...
Esto se basa en la idea de que nunca deberiamos acceder al estado de un objeto (sus campos) directamente, sino siempre llamando a métodos. Y resulta muy útil porque es posible cambiar la implementación de una propiedad (sus métodos get y set) sin afectar al codigo que la usa. En este ejemplo se usa una estructura de control (if) que veremos en la sección 3.
Métodos
Cómo se utilizan
El método, como decíamos, es un bloque de ejecución que podemos llamar desde un objeto en memoria. Siguiendo el ejemplo anterior:
Fantasma inky = new Fantasma(8, "Inky"); inky.pararFantasma();
El objeto "inky" pondrá a 0 su velocidad. En este caso el método no tiene parámetros. Si los tuviera, se pasarían separados por comas como en el constructor.
default
El método 'metodoDefault()', al no tener modificador, se asigna 'default' por defecto. El método será accesible en el mismo paquete (package).
¡puntos extra!
Pero cuidado...
Este tipo de estructuras con tantas anidaciones (una estructura contiene otra estructura) se considera una mala práctica porque dificultan mucho su lectura y mantenimiento. Existen métodos como el early return que son un buen sustituto:
Early return
¡puntos extra!
Java es un lenguaje compilado. Se escribe en lenguaje "natural" y se debe compilar para que la máquina virtual de Java (JVM) lo interprete. Es lo que hace IntelliJ por nosotros con el "play". ¿Cómo hago esto? >javac MyClass.java >java MyClass
Java es un lenguaje compilado e interpretado
Pac-Man
Instanciar
Creación de un objeto
En este caso, el constructor espera dos parámetros de entrada: un int y un String con el nombre del fantasma.
Fantasma inky = new Fantasma(8, "Inky");
La palabra reservada new indica que creamos un nuevo objeto en memoria. El objeto "inky" tiene sus propiedades específicas: el valor 8 como velocidad y el valor "Inky" como nombre.
tabla de conversiones
int
byte
double, float, long
double, float, long, int, char, short
long
short
double, float
double, float, long, int
float
char
double
double, float, long, int
Método estático
Cómo invocarlo
El método estático pertenece a la clase, no al objeto. Podemos invocarlo del siguiente modo:
Fantasma.subirMinimaVelocidad();
Esto hará que todas las instancias actualicen su valor.
BT1 Programación
UNED
Created on October 30, 2024
Contenidos de los 4 primeros bloques de la asignatura.
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Corporate Christmas Presentation
View
Snow Presentation
View
Nature Presentation
View
Halloween Presentation
View
Tarot Presentation
View
Winter Presentation
View
Vaporwave presentation
Explore all templates
Transcript
PROGRAMACIÓN Y BASES DE DATOS
PRIMERA ACTIVIDAD
BT1 PROGRAMACIÓN
BT1 PROGRAMACIÓN
Técnico Superior en Desarrollo de Aplicaciones Multiplataforma
MIKEL GARCIA PIÑEIRO
232323
HI-SCORE
bienvenid@
Hola, soy Pac-Man y, aunque soy políglota, el lenguaje que utilice hoy será {Java}. En este documental te voy a enseñar cómo funciona mi mundo y qué reglas lo rigen. ¡Acompáñame!
índice
elementos de un programa informático
estructuras de control
desarrollo de clases
utilización de objetos
elementos de un programa
entendamos qué es un programa informático...
IDE
IDE son las siglas de Integrated Development Environment o, en español, entorno de desarrollo integrado. Es una herramienta que nos ayudará a escribir programas y hay para todos los gustos: NetBeans, IntelliJ IDEA, BlueJ o Eclipse son solo algunos ejemplo.
+ INFO
bloques de un programa de java
ya sabemos que con un 'ide' podemos escribir programas en java. Ahora, ¿qué es lo mínimo que debemos escribir para que un programa en java se ejecute?
el método main
Lo mínimo para crear un programa en Java es crear una clase y, dentro, incluir el método main: este es el punto de partida de un programa de Java, sin él no se iniciará.
System.out.println escribe en consola el texto entrecomillado.
ahora que he escrito un programa, ¿cómo lo ejecuto?
Un alumno de Java (2024)
ejecutando...
IntelliJ detecta el método main y nos lo pone fácil: el botón de "play".
variables
Ahora imagina que quieres guardar la puntuación de tu partida. Necesitamos guardar el valor en algún lugar: ¡eso es una variable! Un espacio en memoria en que almacenamos y manipulamos datos. Java es un lenguaje estáticamente tipado, es decir, tenemos que especificar qué tipo de variable vamos a construir y no se puede cambiar. Las variables se definen así:[visibilidad] tipo nombreVariable;
232323
HI-SCORE
VARIABLE
tipos de datos
primitivos
Son los componentes básicos de la manipulación de datos y no se pueden dividir en tipos de datos más simples.
¡Entrenamiento!
tipos de datos
no primitivos
string
wrappers
classes
arrays
+ INFO
+ INFO
+ INFO
+ INFO
ya sabemos qué es una variable. Ahora, ¿cómo le asigno un valor?
Un alumno de Java (2024)
Literales
Se llaman literales a los valores que asignamos a las variables. Tenemos los siguientes tipos:
cadenas
caracteres
booleanos
numéricos
int a = 10;double b = 1.0;float c = 1.0F; long d = 10L;
char f = 'f';char g = '%';
String h = "Game Over";
bool e = true;
constantes
Una constante será aquella variable que tenga un valor inmutable, es decir, que no se pueda cambiar. Se definen usando la palabra reservada final. Imaginemos que tenemos que definir el tamaño de los Fantasmas en pantalla. Será un valor que no cambia en el tiempo: final int alto = 20; final int ancho = 20;
¡Entrenamiento!
expresiones
Operadores
Una expresión es una estructura de programación que se evalúa para producir un único valor y que se forma a partir de la combinación de variables, operadores y llamadas a métodos.
valorA + valorB
Métodos
myObjeto.toString()
Relacionales
valorA > valorB
operadores
aritméticos
Permiten realizar operaciones aritméticas.
operadores
de asignación
Permiten asignar valores.
operadores
relacionales
Permiten evaluar la relación entre variables.
¡qué mareo con tanto operador!
Veamos unos cuantos ejemplos escribiendo algunas expresiones mientras usamos algunos operadores.
expresión de asignación
expresión relacional
expresión aritmética
int a = 5;int b = 6; int c = a + b;
int a = 5;int b = 6; bool esMayor = a > b;
int a = 5;a += 6;
¡Entrenamiento!
conversiones de tipo
¿cómo las hago?
Es posible convertir un valor de un tipo a otro tipo distinto. Pero, ¡cuidado! No todas las conversiones son posibles, podrías encontrarte con una excepción.
Especificando el tipo entre paréntesis:
long x = 15L;int y = (int)x;
Mientras que si usamos clases, existe el método 'valueOf()':
Integer a = Integer.valueOf("900");
+ conversiones
comentarios
¡Ya acabamos con lo básico de un programa! Imagina que quieres dejar escrita una explicación del código o que una parte del programa no se ejecute: saludo a los comentarios.
// Comentario
/* Comentario de varias lineas */
Recuerda: un comentario no se ejecuta.
Veamos unos ejemplos mientras jugamos...
utilización de objetos
entendamos cómo se utilizan los objetos...
objetos
Un programa no es más que un conjunto de objetos trabajando en conjunto. Piensa en los objetos como representaciones únicas, tangibles, de un determinado tipo. En mi mundo, cada Fantasma (clase) es un objeto distinto.
blinky
inky
clyde
pinky
instanciar
Hemos dicho que Fantasma es una clase. ¿Cómo se crea cada fantasma, cada objeto? A eso se le llama instanciar un objeto.
blinky
Fantasma blinky = new Fantasma();
La palabra reservada new, seguido del constructor de la clase, instancia un objeto.
ahora me hablas del constructor, ¿qué es eso?
Un alumno de Java (2024)
constructor
El constructor construye objetos. Los constructores se invocan con la palabra new seguido del nombre de la clase. Los constructores nos permiten crear objetos con una configuración específica, es decir, con unos valores específicos. Veamos la clase 'String' qué constructores tiene:
String gameOver = new String("Game Over");
clases
¿Y qué es una clase? Es una plantilla para crear objetos. Todos los objetos de una misma clase comparten comportamiento y propiedades, entre otros.
blinky
inky
Imaginemos que ahora la clase Fantasma tiene un constructor con su velocidad. Tendremos dos objetos con propiedades distintas.
Fantasma blinky = new Fantasma(6);
Fantasma inky = new Fantasma(3);
clase
propiedades
comentario
constructor
parámetros
método
ya que hemos visto cómo es una clase, la usaremos para ilustrar cómo se usa.¡Vamos a crear fantasmas!
instanciación y uso de métodos
ahora que hemos hecho un repaso de la estructura de una clase, vamos a ver sus partes en detalle.
propiedades como métodos Get/set
Por convección, las propiedades de una clase son privadas y que se usan dos métodos para establecer el valor o para consultarlo: lo que llamamos métodos get y set.
+ INFO
inky.setVelocidadMovimiento(12);
constructores
Los constructores son muy flexibles: podemos crear un constructor sin parámetros o constructores con uno o varios parámetros.
Fantasma desconocido = new Fantasma();Fantasma inky = new Fantasma(5, "Inky");
métodos estáticos
Hemos visto que cada objeto de una misma clase tendrá unas propiedades específicas. Las variables y métodos estáticos nos permiten compartir información entre objetos de la misma clase. Se declaran con la palabra reservada static justo delante del tipo.
propiedades estáticas
inky
blinky
métodos estáticos
blinky
minimaVelocidad = 1;
minimaVelocidad = 0;
inky
Fantasma blinky = new Fantasma(6, "Blinky");Fantasma inky = new Fantasma(2, "Inky");
garbage collector
Cada vez que utilizamos la palabra new creamos un objeto que ocupa memoria. ¿Cómo se libera la memoria? Java lo hace por nosotros: el conocido proceso 'Garbage Collector', o recolector de basura, libera los recursos de los objetos que ya no se usan.
Garbage Collector
inky
blinky
estructuras de control
aprenderemos cómo cambiar el comportamiento secuencial de un programa
estructuras de control
Para entender las estructuras de control primero debemos saber que los programas se ejecutan de forma secuencial, es decir, una acción tras otra. Las estructuras de control permiten modificar ese comportamiento, influyendo en el flujo del programa bajo el análisis de condiciones.
estructuras de selección
Las estructuras de selección permiten decidir si se ejecuta un bloque de instrucciones o, por el contrario, se omite. Este control puede realizarse con la estructura if/else. Su estructura es:
Se ejecuta si se cumple la condición.
if (condición) { instrucción1; } else { instrucción2; }
Se ejecuta si no se cumple la condición.
estructuras de selección
Volviendo al ejemplo de los métodos get/set, ejecutamos lo siguiente:
pinky.setVelocidad(-1);
velocidadMovimiento = 0;
velocidadMovimiento = 5;
pinky
pinky.setVelocidad(5);
estructuras de selección
La estructura if/else permite encadenar condiciones if justo después del else
if (condición) { instrucción1; } else if (condición2) { instrucción2; } else if (condición3) { instrucción3; } else { instrucción4; }
estructuras de selección
Existe otra estructura de selección múltiple, similar al else/if con anidaciones, que permite seleccionar un bloque al cumplirse cierta condición: la estructura switch.
switch (expresion) { case valor-1: instrucciones-1; break; case valor-2: instrucciones-2; break; default: instruccion-def; break;
Se ejecuta si la expresion devuelve valor-1.
Se ejecuta si la expresion devuelve valor-2.
Se ejecuta si no se cumple el resto.
estructuras de repetición
Las estructuras de repetición permiten repetir un bloque de instrucciones tantas veces como se requiera. La primera estructura de repetición que veremos será la estructura switch.
Mientras se cumpla la condición...
while (condición) { instrucciones; }
... se ejecutarán las instrucciones.
estructuras de repetición
La segunda estructura es la do-while. La diferencia con while es que la condición se evalúa al final, con lo que las instrucciones siempre se ejecutan al menos una vez.
Se ejecuta una primera vez...
do { instrucciones; } while (condición);
... y si la condición es cierta se repite.
estructuras de repetición
La última estructura es la for. Es una forma particular de la estructura while. Esta estructura se utiliza cuando sabemos cuántas veces ha de repetirse, condición que verificamos con una variable de control.
for (inicialización; condición; actualización) { bloque-de-sentencias; }
estructuras de salto
break
continue
Permite saltar a la siguiente iteración del bucle, es decir, saltar el resto de la repetición que queda sin ejecutar.
Permite salir de una estructura de repetición.
do { if (condición1) { continue; } instrucciones; } while (condición2);
do { if (condición1) { break; } instrucciones; } while (condición2);
repasemos conceptos
control de excepciones
¡Los errores ocurren en todos los programas! Las excepciones son estructuras que ayudan a controlar errores. Las excepciones son objetos que heredan de la clase Exception y se controlan con la estructura try-catch. Veamos esto con unos ejemplos.
control de excepciones
Imaginemos que queremos crear un objeto pero olvidamos inicializarlo.
Fantasma blinky = null;
blinky
No hemos usado new, por lo que aún no hemos creado en memoria a blinky. Como se conoce en Java: es un objeto nulo (null). Si intentamos llamar a un método, como por ejemplo blinky.setVelocidad(5), se lanzará una excepción de tipo NullPointerException. ¿Cómo se controlanestas situaciones? Con try-catch...
ejemplo de try-catch
+ INFO
aserciones
Las aserciones (assertions) nos permiten verificar asunciones o estados de nuestro programa. Si no se cumplen, se lanzará una excepción AssertionError.
Al caso anterior le añadimos la comprobación con assert de que inky no sea null. En esta sintaxis hemos pasado el String que aparecerá como mensaje del error.
depuración
La depuración permite parar el programa mientras este se ejecuta y ver los valores que en ese momento tienen los objetos. Esta técnica es muy útil para realizar correcciones y entender, paso a paso, cómo se ejecuta un programa. Las paradas que haga el programa se llaman puntos de interrupción y puedes añadir tantos como quieras.
depuración...
IntelliJ permite añadir puntos de interrupción haciendo click a la derecha del número de línea.
desarrollo de clases
entendamos mejor qué son las clases y cómo se usan
clases
Hagamos un repaso del concepto de clase...
propiedades y métodos
constructor
estructura
qué es
Para qué sirven los constructores y cuál es su estructura
Respondemos a la pregunta: ¿qué es una clase?
Hacemos un repaso de lo que es una propiedad y un método
A través de un ejemplo de código vemos su estructura
+ INFO
+ INFO
+ INFO
+ INFO
modificadores y visibilidad
se asigna cuando no se especifica un modificador. visible para el mismo paquete.
default
hace visible la clase, método o propiedad a todo el mundo.
public
será visible únicamente desde su propia clase.
private
Un término medio: hace visible dicho miembro en su clase o en subclases.
protected
visibilidad
Los modificadores y su visibilidad
La siguiente tabla resume qué visibilidad ofrece cada modificador
herencia
Acabamos de introducir el concepto de herencia con el ejemplo del modificador protected. ¿Qué significa esto? Que la clase que extiende de otra (extends) heredará propiedades y métodos, es decir, su comportamiento.
Una clase ENEMIGO puede definir el comportamiento básico de todos los enemigos. Como, por ejemplo, destruir el objeto una vez su vida llega a cero.
enemigo
Fantasma, que extiende de enemigo, ya incorpora dicho comportamiento y no debemos implementarlo.
fantasma
herencia
enemigo
fantasma
>|
Fantasma pinky = new Fantasma();pinky.destruir();
Identifica una clase
conclusiones
Hemos dado los primeros pasos en Java y hemos abordado los siguientes contenidos:
- La identificación de los elementos de un programa informático.
- La utilización de objetos.
- El uso de estructuras de control.
- El desarrollo de clases.
Te espero en los siguientes capítulos...¡Ya empiezas a dominar esto de la programación!
Pacman
© 2024 Mikel garcia
game over
private
Esta clase tiene dos propiedades con el modificador private. Se podrá acceder a ellas desde la clase Fantasma pero nunca fuera de ella. No podremos hacer: inky.nombre;
wrappers
Los Wrappers, o envoltorios, son clases que nos permiten usar los tipos primitivos como objetos.Integer: envuelve un int Long: envuelve un long Float: envuelve un float Double: envuelve un double Character: envuelve un char Boolean: envuelve un boolean Byte: envuelve un byte Short: envuelve un short
LINK
protected
Aquí vemos dos clases de distintos paquetes. La primera de ellas tiene un método protected. La segunda clase extiende de la primera (es una subclase) y puede invocar el método 'saludar' pese a estar en un paquete distinto.
Instalación...
La instalación de IntelliJ es sencilla si seguimos la documentación oficial.
Y como usaremos Java como lenguaje de programación, debemos tenerlo instalado.
array
Sirven para almacenar listas de valores en una misma variable. Se declaran con '[]' después del tipo.
String[] ghosts = {"Blinky", "Pinky", "Inky", "Clyde"};
ARRAYS
Excepciones comunes...
String
El tipo 'String', o clase, representa una secuencia de caracteres.private String str = "Game Over";
DOCUMENTACIÓN
public
Esta clase tiene su constructor por defecto y el constructor parametrizado con el modificador public. Esto implica que son visibles desde cualquier lugar del programa.
CLASS
Una clase en Java es un conjunto de objetos que comparten características/comportamiento y propiedades/atributos comunes. En nuestro mundo, el fantasma Clyde sería un objeto de la clase Fantasma.
LINK
Por qué es útil...
Esto se basa en la idea de que nunca deberiamos acceder al estado de un objeto (sus campos) directamente, sino siempre llamando a métodos. Y resulta muy útil porque es posible cambiar la implementación de una propiedad (sus métodos get y set) sin afectar al codigo que la usa. En este ejemplo se usa una estructura de control (if) que veremos en la sección 3.
Métodos
Cómo se utilizan
El método, como decíamos, es un bloque de ejecución que podemos llamar desde un objeto en memoria. Siguiendo el ejemplo anterior:
Fantasma inky = new Fantasma(8, "Inky"); inky.pararFantasma();
El objeto "inky" pondrá a 0 su velocidad. En este caso el método no tiene parámetros. Si los tuviera, se pasarían separados por comas como en el constructor.
default
El método 'metodoDefault()', al no tener modificador, se asigna 'default' por defecto. El método será accesible en el mismo paquete (package).
¡puntos extra!
Pero cuidado...
Este tipo de estructuras con tantas anidaciones (una estructura contiene otra estructura) se considera una mala práctica porque dificultan mucho su lectura y mantenimiento. Existen métodos como el early return que son un buen sustituto:
Early return
¡puntos extra!
Java es un lenguaje compilado. Se escribe en lenguaje "natural" y se debe compilar para que la máquina virtual de Java (JVM) lo interprete. Es lo que hace IntelliJ por nosotros con el "play". ¿Cómo hago esto? >javac MyClass.java >java MyClass
Java es un lenguaje compilado e interpretado
Pac-Man
Instanciar
Creación de un objeto
En este caso, el constructor espera dos parámetros de entrada: un int y un String con el nombre del fantasma.
Fantasma inky = new Fantasma(8, "Inky");
La palabra reservada new indica que creamos un nuevo objeto en memoria. El objeto "inky" tiene sus propiedades específicas: el valor 8 como velocidad y el valor "Inky" como nombre.
tabla de conversiones
int
byte
double, float, long
double, float, long, int, char, short
long
short
double, float
double, float, long, int
float
char
double
double, float, long, int
Método estático
Cómo invocarlo
El método estático pertenece a la clase, no al objeto. Podemos invocarlo del siguiente modo:
Fantasma.subirMinimaVelocidad();
Esto hará que todas las instancias actualicen su valor.