2024-10-15-Programacion - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Clasificación lenguajes de programación. Introducción a POO. HolaMundo en Java desde consola y desde Eclipse
Buenos días, os hago esta grabación porque es el día 15 de octubre, porque el día 14, la tutorial de ayer, la estuve grabando, pero resulta que la aplicación no tenía seleccionado el audio y nos quedó un bonito vídeo, pero sin audio.
00:00:01
Así que os voy a repasar los contenidos de los que habíamos estado hablando ayer y os hago un pequeño resumen. Os subo este vídeo en sustitución de lo que era la grabación de la clase de ayer.
00:00:15
mirad estuvimos hablando en primer lugar de un cierto modo de clasificar los lenguajes de
00:00:25
programación hay muchos mecanismos pero uno de ellos va en función de lo cercano que están las
00:00:32
instrucciones que utilizamos para programar a la propia arquitectura hardware de los equipos
00:00:39
donde va a correr el programa o más cercano a la forma en la que los seres humanos vemos la
00:00:45
realidad digamos entonces unos son lenguajes de bajo nivel y los que están próximos a los
00:00:51
procesadores y los otros son lenguajes de alto nivel los lenguajes de alto nivel el más típico
00:00:57
es la forma de programar en código máquina donde el programador en realidad conoce el juego
00:01:04
instrucciones que utiliza el procesador y lo que mete realmente son combinaciones de ceros y unos
00:01:15
esto podría ser un tipo de instrucción que entiende el procesador y a partir de aquí hace ciertas cosas
00:01:20
El hardware en informática trabaja en sistema binario, con lo cual lo que utilizas son ceros y unos y las instrucciones en última instancia son ejecutadas por los equipos bajo este modelo.
00:01:26
Imaginad lo complicado que sería si una tienda nos solicita un programa para la gestión de su inventario, hacer un programa en base a ceros y unos que termine dando respuesta a esos requisitos que nos plantea la tienda.
00:01:41
A partir de aquí se empiezan a dar diferentes niveles de extracción, es decir, ir de alguna forma encasulando los códigos que van entendiendo el hardware en cosas más legibles por los seres humanos.
00:01:55
Y lo siguiente que tenemos es el lenguaje asamblador, en el cual ya por lo menos no trabajamos con ceros y unos y las instrucciones son del tipo de move, de mover a una zona de memoria un determinado valor, ADD si queremos sumar dos valores numéricos, pero aún así todavía esto queda lejísimos de cómo entendemos nosotros el problema que se quiera resolver.
00:02:07
En este caso sería el realizar el inventario de una determinada tienda.
00:02:30
Según vamos avanzando, nos encontramos con lenguajes de alto nivel.
00:02:37
Y estos sí que intentan que se plantee el código que resuelve el algoritmo sobre el que queremos trabajar
00:02:44
de una forma muy parecida a como nosotros pensamos, a como el ser humano piensa.
00:02:53
Y dentro de estos, bueno, pues tenemos en última instancia los lenguajes funcionales,
00:03:00
En cualquier lenguaje hay que respetar una determinada sintaxis de cómo funciona, pero este tipo de lenguajes lo que hacen es que buscan que describas el problema y ellos a través de las compilaciones terminan convirtiendo eso que has dicho tú a lo que sería un lenguaje máquina que al final es necesario para que corra dentro del orden.
00:03:05
Y otra vez en esta categoría de lenguajes de alto nivel serían los lenguajes del paradigma de la programación orientada a objetos.
00:03:26
programación orientada a objetos, que es el tema que nos cubre en esta asignatura
00:03:37
y en particular utilizaremos el lenguaje Java.
00:03:43
Otra clasificación que podemos hacer en los lenguajes que me interesa destacar aquí
00:03:49
es la que tiene que ver con los lenguajes que son ejecutados y los que son interpretados.
00:03:54
En los lenguajes ejecutados se desarrolla el código según la sintaxis y la semántica que tenga ese lenguaje,
00:04:00
por ejemplo en el lenguaje C++, en un fichero que normalmente tendrá una extensión que será .c o .gc,
00:04:05
ponemos el código tal cual nos define este lenguaje y lo que se hace es realizar una compilación
00:04:15
mediante un programa que es el compilador.
00:04:23
Este programa lo que hace es coger este código en C, valida su sintaxis, su semántica
00:04:27
y como salida nos proporciona un código máquina.
00:04:34
Este código máquina será propio de una plataforma de ejecución hardware.
00:04:41
Si nuestro programa en C queremos que corra en otra plataforma diferente,
00:04:46
tendremos que utilizar un compilador que volverá a tener como origen el mismo código C,
00:04:51
pero nos sacaría una combinación de código máquina, secuencias de ceros y unos,
00:04:56
que tendría un procesador diferente.
00:05:02
Con lo cual, para trabajar en diferentes plataformas, en los lenguajes que decimos que son ejecutados, el compilador es diferente en cada uno de los casos, obteniendo diferentes resultados de código máquina.
00:05:04
Y luego están los interpretados. En esta categoría es donde vamos a meter nosotros Java, aunque siempre se dice que hay otros interpretados más puros que Java, como puede ser Python.
00:05:19
Java a veces lo catalogan como semi-interpretado, pero bueno, nosotros lo vamos a considerar como interpretado en este caso.
00:05:31
y lo que hacemos es que en esta ocasión en java el código fuente, es decir, donde nosotros ponemos con sintaxis y semántica java
00:05:38
la solución que queremos dar a la resolución del algoritmo, lo introducimos en ficheros que tienen extensión .java.
00:05:49
Nuevamente le pasamos un compilador que valida que este código es correcto, por lo menos en cuanto a su escritura, su sintaxis y semántica
00:05:56
Y una vez que hemos hecho esto, tenemos un ficherito que tiene extensión .class. Este ficherito extensión .class, que también se llama bytecode, es algo intermedio, no es ni el lenguaje, ni un código máquina que entiendan una arquitectura, ni es el código Java, ya que hemos aplicado con el compilador sobre él ciertas validaciones.
00:06:05
qué pasa con este bytecode es que antes de ejecutarlo en una plataforma en cualquiera
00:06:28
de ellas tendremos que pasarle otro programa que es el intérprete intérprete es capaz de
00:06:35
entender bytecode en java y este es el que nos saca como resultado código máquina en esta
00:06:41
ocasión será el intérprete el que será diferente para cada una de las plataformas y el compilador
00:06:52
será común a todas ellas dándonos un bytecode común que va a ejecutarse en un hardware o en otro.
00:06:57
¿Qué ventajas nos proporcionan los lenguajes ejecutados? Pues típicamente, como la compilación
00:07:05
ya se ha realizado y tenemos ya el código máquina, la plataforma hardware es capaz de coger ese
00:07:11
código máquina y ponerlo en marcha de forma muy rápida. En los interpretados, nosotros lo que
00:07:16
distribuimos es el bytecode y en todos los ordenadores, dependiendo de la plataforma
00:07:21
hardware que tengan tendrán un intérprete que será algo distinto y cada vez que queramos ejecutar
00:07:27
nuestro programa se cogerá este bytecode y será necesario hacer uso del intérprete entonces el
00:07:33
tiempo de procesamiento que lleva este intérprete digamos que es una penalización en cuanto al
00:07:40
rendimiento en los programas interpretados pero la ventaja es que nosotros no tenemos que estar
00:07:44
compilando nuestro programa como desarrolladores para diferentes plataformas porque es común a
00:07:51
todas ellas. Dicho esto y centrándonos en Java, pues tenemos que Java es un lenguaje que utiliza
00:07:57
la programación orientada a objetos, lenguaje de alto nivel y es interpretado. Una segunda cosa
00:08:10
de la que estuvimos hablando en la tutoría era un poco del ciclo de vida de los proyectos.
00:08:29
Os comentaba en la universidad, yo al menos estudié una asignatura, no sé si se irá
00:08:33
cuando hice informática, que se llamaba Ingeniería de Software. Y hacía un repaso de las diferentes
00:08:38
fases por las que debemos pasar cuando estamos realizando un proyecto. Un proyecto en nuestro
00:08:43
caso va a ser software, pero un proyecto general de ingeniería. E incluso os comentaba que
00:08:49
es una secuencia de cosas que en realidad hacemos nosotros en nuestro día a día para
00:08:54
cualquier actividad entonces en primer lugar se identifican digamos las necesidades que tenemos
00:08:59
podemos definir unos requisitos de lo que lo que estamos planteando nos luego haríamos un diseño
00:09:06
que es plantear cómo vamos a resolver están esas necesidades que se han planteado luego tenemos un
00:09:13
desarrollo que sería la propia la propia implementación de la implementación de
00:09:27
la solución que hemos diseñado podríamos hacer unas pruebas para más o menos tener
00:09:35
ciertas garantías de que ese desarrollo funciona una entrega podríamos considerarlo como una
00:09:40
puesta en producción si es un programa y luego bueno pues una última fase que llevaría un
00:09:48
mantenimiento que podría ser o bien correctivo o bien evolutivo correctivo para solucionar un
00:09:55
posible problema que hayamos en el que hayamos caído cuando hicimos el desarrollo y tenemos
00:10:05
que solucionarlo porque está dando errores evolutivo porque se nos ha pedido algo adicional
00:10:10
a nuestro programa que tenemos que incluir donde nos encontramos nosotros en esta asignatura nos
00:10:17
encontramos principalmente en estas dos fases. Y en particular en esta, que es realizar nuestros
00:10:22
programas en Java. Todas estas fases en la asignatura de entornos de desarrollo,
00:10:30
dedicaréis algunos temas, hablar un poquito de ellas y muy en particular en la parte de diseño,
00:10:41
trabajaréis con diagramas de UML casi con toda seguridad. En la parte de pruebas haréis pruebas
00:10:47
de caja blanca, de caja negra, digamos que en torno al desarrollo
00:10:53
tiene un recorrido más por todo este ciclo de vida y programación
00:10:57
en particular por en lo que vendría a ser el
00:11:01
desarrollo. Una vez que hemos ubicado un poco Java en los lenguajes
00:11:05
de programación y en la fase donde trabajamos
00:11:15
pues otra cosa que os comentaba es
00:11:19
algunos conceptos así como muy generales, una visión muy general de la programación orientada
00:11:22
objetos. Al ser de alto nivel, intenta acercarse a nuestra forma de ver los problemas. Y os ponía
00:11:28
como ejemplo el desarrollo de una clase, de la tutoría sobre la que estábamos trabajando.
00:11:33
Entonces decíamos, vamos a intentar identificar qué actores participan en el desarrollo de una
00:11:41
clase. Y decíamos, bueno, pues parece razonable que haya un profesor, que haya algún profesor,
00:11:51
Parece razonable que haya alumnos y, bueno, decíamos, parece razonable que la clase se desarrolle en un aula.
00:11:58
En principio, en nuestro contexto, para dar respuesta a los requisitos, que sería el enunciado del problema que queremos hacer,
00:12:05
estos son los actores que pensamos podrían participar.
00:12:12
En la programación orientada a objetos, lo que hacemos es que para cada uno de estos actores, identificaremos una clase.
00:12:15
En la programación orientada a objetos, uno de los términos clave, una de las palabras clave son las clases. Las clases son esquemas de qué caracteriza a un determinado profesor en este ejercicio, porque hablaremos de la clase profesor y qué acciones es capaz de hacer.
00:12:23
Entonces nosotros cogeremos y en nuestro programa, dentro del código diremos, vamos a definir una clase, aparecen otras palabras por ahí de las que iremos hablando durante el curso, la clase profesor, es decir, en nuestro programa va a participar algún profesor en algún momento.
00:12:41
Y los profesores tienen unas determinadas características. Todo lo que define al profesor, ponemos esta cabecera o asignatura como firma de la clase, que es un término que se utiliza, y lo encerramos entre una apertura de llave y un cierre de llave.
00:12:57
Todo lo que tenga que ver con la clase profesor va a estar definido dentro de este ámbito, de estas llaves.
00:13:13
¿Y qué definimos en toda clase en la programación orientada a objetos, sea Java o sea cualquier otro de los lenguajes?
00:13:21
Definimos unos determinados parámetros o características.
00:13:27
Estos parámetros son de diferentes tipos y será, por ejemplo, los profesores tienen una edad.
00:13:37
Sí, dentro del contexto nos parece que puede ser relevante en el programa la edad que tienen los profesores, porque el enunciado en algún momento así lo define.
00:13:44
Los profesores pueden tener un nombre, y los profesores pueden tener un número de la seguridad social, y NUMSEC, porque como el desarrollo de la clase se realiza en el ámbito de trabajo, pues igual este dato en este programa podría llegar a ser importante.
00:13:53
Estas son características que tendrán los profesores.
00:14:10
A todo profesor que participe en nuestro programa le podremos dar una edad, un nombre y un número de la seguridad social.
00:14:13
Son los parámetros, características o atributos.
00:14:22
Son formas de llamar a estas características que se definen en las clases.
00:14:27
Y luego los profesores pueden realizar una serie de acciones que las identificamos como métodos.
00:14:32
Entonces, esta serie de acciones típicamente aparecen como verbos, public, y será, por ejemplo, el método saluda.
00:14:43
Y los métodos suelen llevar aquí una apertura y cierre de corchetes, a veces con información aquí dentro,
00:14:54
y haremos desarrollándolo. Y fijaros que hemos utilizado un verbo. Normalmente los métodos, como son acciones,
00:15:00
pues aparecerán con verbos, los atributos pues no aparecerán con verbos
00:15:07
porque no son acciones, son características que puedan tener. Entonces cuando un profesor
00:15:11
que participe en nuestro programa quiera realizar la acción de saludar
00:15:16
lo que el programa pondrá en marcha será aquel código que
00:15:20
pongamos aquí entre las llaves de apertura y cierre del método
00:15:24
saludar. Además un profesor podrá
00:15:28
poner
00:15:32
tarea. Pues cuando durante el programa queramos que un profesor ponga tarea, invocaremos de alguna
00:15:38
forma a este método poner tarea que está relacionado con la clase profesor y la serie de actividades
00:15:49
que serán serán aquellas que nosotros codifiquemos en nuestro lenguaje en Java dentro de las llaves
00:15:54
del método poner tarea. Pero esto quiere decir la clase profesor que haya un profesor haciendo
00:16:00
cosas en nuestro programa. No, las clases vendrían a ser un esquema de las características y las
00:16:09
acciones que van a ser capaces de hacer los profesores, pero todavía no ha cobrado vida
00:16:14
ningún profesor en nuestro programa para llevar a cabo esa acción. Otro de los actores que hemos
00:16:19
visto es la clase alumno. En la clase alumno podríamos coger e identificarla también dentro
00:16:26
de nuestro código. En este caso pondríamos aquí la clase alumno y aquí tendríamos las características
00:16:33
y atributos que tienen en este caso los alumnos, porque los estamos definiendo dentro del ámbito
00:16:39
de la clase alumno. Puede ser que el número de la seguridad social no sea relevante para el alumno,
00:16:43
pero sí el número de asignaturas en las que están matriculados. Este es un atributo que caracteriza
00:16:48
a los alumnos y no tiene nada que ver con los profesores. En cambio, el número de seguridad
00:16:56
social es un atributo que caracteriza a profesores y nada que ver con alumnos. En cambio, hay algunas
00:17:00
características que son comunes por el hecho de ser personas, tanto profesores como alumnos,
00:17:06
que es que tengan un nombre y una edad, pues bueno, pues puede aparecer en las dos clases.
00:17:11
De la igual forma que los parámetros, tenemos los métodos, que son las acciones que van a hacer los alumnos en nuestro programa.
00:17:16
Vamos a considerar que los alumnos también podrán saludar, y a lo mejor este código es diferente, vamos a ponerlo con máses,
00:17:23
cuando saluda un alumno, a lo mejor saluda de forma diferente a cuando saluda un profesor,
00:17:31
por eso aquí podemos poner el código Java diferente, cuando realice la acción de saludar al profesor,
00:17:34
a cuando la realice el alumno.
00:17:40
Y los alumnos, pues igual no tienen que poner tarea,
00:17:43
si tienen que hacer la acción de estudiar.
00:17:48
Pues aquí pondremos la acción de estudiar para el alumno
00:17:50
y el código que se ejecuta cada vez que solicitemos
00:17:53
que un alumno quiera estudiar.
00:17:56
Insisto en que las clases no identifican a un profesor en particular,
00:18:00
la de arriba, ni a diferentes alumnos,
00:18:06
sino que son los esquemas de características y acciones que van a realizar tanto profesores como alumnos cuando cobren vida.
00:18:08
En una puesta en marcha de nuestro programa en particular, podríamos suponer que hay un profesor que se llama José
00:18:16
y tres alumnos que se llaman Rubén, Sandra, Noah, vamos a poner un cuarto, y Valeria, estos cuatro alumnos.
00:18:22
El profesor José, cuando cobre vida, estos que son los que le van a cobrar vida, serán objetos,
00:18:33
que son todos los términos que aparecen en la programación
00:18:40
orientada a objetos, fijaros que lo lleva el propio nombre de la programación
00:18:43
son objetos de estas clases
00:18:46
es decir, son instancias que de verdad participan
00:18:49
que cobran vida de esas características
00:18:52
entonces cuando José, que lo vamos a considerar un profesor
00:18:54
queramos darlo de alta en nuestro programa, diremos
00:18:58
del tipo profesor hay uno que se llama José
00:19:00
es decir, José será un profesor
00:19:04
entonces a José le podremos poner una edad
00:19:07
de esta forma, poniendo ahí edad
00:19:10
y ¿por qué le podemos poner una edad
00:19:11
a José, que es un profesor?
00:19:13
porque dentro de la clase profesor
00:19:16
hemos definido una característica que es la edad
00:19:17
entonces podemos decir que tiene
00:19:19
30 años
00:19:23
a José le podemos poner un nombre
00:19:24
¿por qué? porque es una de las características
00:19:26
o de los parámetros que hemos definido
00:19:29
para la clase profesor
00:19:31
entonces cogemos y decimos que
00:19:33
JM
00:19:35
y José será capaz
00:19:37
de saludar, si ponemos aquí
00:19:39
jose saludar, decimos que jose, que es un profesor, realice la
00:19:41
acción de saludar. Y jose, como es un profesor, no venimos a
00:19:50
profesor, buscamos saludar y vemos que efectivamente es una
00:19:53
de las acciones que son capaces de hacer los profesores y
00:19:56
durante este proceso de saludo, lo que hará será las acciones
00:20:00
que hayamos identificado en el método de saludar aquí en este
00:20:04
código. Igual que hemos hecho para jose, bueno, esto tiene una
00:20:07
sintaxis Java regular
00:20:11
es muy parecida pero habría que hacer
00:20:14
más cosas
00:20:16
Rubén que es un alumno, pues podríamos definir
00:20:16
un alumno
00:20:20
que es Rubén
00:20:20
y ahora a Rubén podríamos darle
00:20:22
por ser un alumno, un nombre
00:20:25
una edad
00:20:27
podríamos decir que está matriculado
00:20:31
un número de asignaturas y podríamos ponerla
00:20:34
a estudiar, entonces Rubén haría estas acciones
00:20:36
cuando Rubén estudias
00:20:38
vamos a poner Rubén a estudiar
00:20:39
otro alumno que podría ser Valeria
00:20:40
lo identificamos en el programa como Valeria
00:20:48
y podríamos decir que Valeria tiene
00:20:54
tiene 10 años
00:20:58
o 15 años
00:21:05
fijaros como Rubén y Valeria
00:21:07
tienen un mismo esquema de características y de comportamiento
00:21:11
pero cada uno empieza a tener sus peculiaridades
00:21:15
en el momento en que a Rubén le podemos dar una edad
00:21:18
y a Valeria otra distinta
00:21:20
fijaros que nuestro programa empieza a cobrar vida
00:21:22
y empieza a hacer cosas en el momento que instanciamos
00:21:25
objetos de las clases para las cuales
00:21:28
hemos definido sus esqueletos
00:21:29
y toda esta interacción será la que
00:21:31
buscará, la que tendrá el objetivo
00:21:33
de dar respuesta al algoritmo
00:21:35
que implemente los requisitos
00:21:37
que nos habíamos planteado
00:21:40
para este problema, así como un esquema
00:21:42
general, haremos mil clases durante el curso
00:21:45
y bueno, pues ya
00:21:48
iréis viendo, esta es la diferencia
00:21:50
entre clases y objetos
00:21:53
dos elementos de los que
00:21:54
aparecen en la programación orientada a objetos
00:21:57
y tienen mucha presencia.
00:21:59
Mirad, lo siguiente de lo que hablábamos
00:22:04
era de, en la tutoría,
00:22:06
estoy como concentrándolo todo mucho,
00:22:09
pero intentando no dejarme ningún detalle.
00:22:11
Si luego falta alguno,
00:22:13
pues ya me preguntáis en los foros
00:22:14
y os comento.
00:22:15
Decíamos que los programas
00:22:18
los realizamos a través de entornos de desarrollo,
00:22:19
IDES.
00:22:22
IDES son las siglas
00:22:23
Integrated Development Environment,
00:22:25
entornos de desarrollo.
00:22:30
Cuando vamos a hacer un programa, pues primero tenemos que escribir su código.
00:22:30
Entonces lo hacemos en un ficherito que tenga extensión .java.
00:22:35
Como es un lenguaje Java interpretado, tendremos que compilarlo.
00:22:39
Compilar un programa en Java se realiza con un ejecutable que es Java, compilador de Java.
00:22:49
Y luego para de verdad ejecutarlo, tendremos que llamar el intérprete.
00:22:58
¿Os acordáis que os hablaba antes del intérprete? Pues el intérprete en Java se llama Java, que será diferente para cada plataforma hardware y el compilador será común en todas ellas.
00:23:03
Entonces, cuando nosotros trabajamos con un ordenador como clientes, que es lo más habitual, no como desarrolladores, que es el rol en el que estáis vosotros dentro de la asignatura, lo único que queremos es llamar al intérprete para programas ya desarrollados en Java, de los cuales nos habrán de alguna forma entregado el bytecode.
00:23:15
Igual va integrado dentro de otra aplicación, no lo vemos tal cual, pero sería el resultado de haber compilado a alguien, un programador, un programa, nos da el bytecode que probablemente esté en un fichero .class o en un fichero .hard porque de alguna forma han comprimido muchos .class para que hagan una función más global.
00:23:40
Y esto nosotros lo lanzaremos como usuarios normales con nuestro intérprete Java. Nosotros no somos en principio conscientes de que tenemos un intérprete en nuestra máquina, pero junto con el resto del software, sistema operativo, está ese intérprete que cuando lancemos nosotros la solicitud de ejecutar el bytecode, se pondrá en marcha y será capaz de interpretarlo y darnos el resultado que el programa tenga en marcha.
00:24:00
si nosotros queremos coger el rol de desarrolladores
00:24:27
entonces sí que tenemos que compilar el programa
00:24:32
y el compilador normalmente no está integrado en nuestros ordenadores
00:24:34
¿por qué? porque en nuestro día a día la gente no suele ser compilador
00:24:39
no suele ser programadora de Java
00:24:43
entonces lo que tenemos que hacer es instalar el JDK
00:24:44
JDK son las siglas de Java Development Kit
00:24:48
de desarrollo para realizar programas en Java y este JDK es el que incluye el compilador de Java
00:24:53
y el JDK también instala ya un JRE que está relacionado con JRE que es el Java Runtime Environment
00:25:03
en torno de ejecución de Java que digamos que es el que podría tener el intérprete.
00:25:13
En definitiva, para poder compilar nuestros programas hechos en C, necesitamos un compilador que viene integrado en este paquete y en vuestro ordenador. Si vosotros no queréis utilizar la máquina virtual que os proporciono yo en el aula, tendréis que instalar el JDK y si utilizáis la máquina virtual que os he proporcionado, pues ya me he preocupado yo de que esté integrada.
00:25:21
nosotros pasito a pasito podemos utilizar un editor
00:25:46
para hacer nuestro fichero .java, llamar
00:25:51
al compilador para obtener el bytecode
00:25:55
y luego llamar al intérprete que es java
00:25:58
para ver el resultado de nuestro programita, esto lo podemos hacer pasito
00:26:02
a pasito o podemos utilizar un IDE que integra todas estas aplicaciones
00:26:07
y además nos da muchísimos más servicios para que nos vaya resultando
00:26:11
cuando estemos haciendo grandes proyectos no vaya resultando más fácil que no tener que trabajar
00:26:15
con herramientas tan con herramientas tan simples como las que os comentaba las formas hoy vamos a
00:26:20
hacer un pequeño un mini programa típico programa hola mundo utilizando permitirme la expresión a
00:26:26
pelo estas herramientas e ignorando de momento el id vamos a ello la máquina no está no es la
00:26:32
máquina virtual la máquina virtual la tengo por aquí abrimos un terminal en la máquina virtual
00:26:45
que os he pasado y bueno la máquina virtual está basada en una versión de debian con el
00:26:50
jd que ha instalado tiene un y de que se clase instalado otro y de que no vamos a utilizar pero
00:26:57
el de uso muy didáctico por si alguien quiere investigar un poquito que es el blue jota y tiene
00:27:03
aquí instalado también PSINT que nos sirve para definición de pseudocódigo, que es algo que
00:27:09
trabajaréis más en entornos de desarrollo, aunque en este tema 1 de programación os hablo algo de
00:27:16
ello y no voy a entrar mucho en detalle porque en realidad se escapa un poco del ámbito de lo que
00:27:20
pedimos en programación y dedicaré más el tiempo a Java más que a PSINT, independientemente como os
00:27:28
decía ayer de que si tenéis alguna duda me la preguntéis en el foro e intento
00:27:35
echaros una mano. Ahora voy a hacer algunas cuantas cosas que son
00:27:39
comandos en terminal de linux que no tenéis por qué conocer y no os
00:27:46
preocupéis en exceso porque tampoco van a ser requisito para esta asignatura. Si
00:27:53
en la asignatura en sistemas informáticos trabajaréis con estos
00:27:57
comandos, ahí os los pedirán, yo no, pero bueno para enseñaros ciertas cosas es
00:28:00
imprescindible tener que utilizarlos y hacer comando which nos permite localizar un programa
00:28:05
ejecutable dentro del sistema archivo en linux entonces por ejemplo el intérprete java se pone
00:28:12
el wish java nos dice que se encuentra en esta ruta este sistema operativo linux organiza los
00:28:17
directorios y los archivos empezando en algo que es una barra que podría ser el equivalente en
00:28:25
windows para los que estén más familiarizados con una unidad de disco por ejemplo la unidad
00:28:31
de disco c o la unidad de disco de esa parte de ahí hay directorios de ahí cuelgan otros
00:28:36
directorios en algunos también hay archivos en linux es un poco la misma idea lo único que en
00:28:41
lugar de empezar con una unidad de disco empezamos con la barra y en particular el intérprete de java
00:28:47
se encuentra en esta ruta que si os fijáis por aquí dentro de la ruta aparece algo como jdk
00:28:54
que es ese Java Development Kit, ese entorno
00:28:59
de desarrollo, digamos, que he instalado yo en este Debian
00:29:04
para que podamos realizar programas con él. Aquí, ayer
00:29:07
había realizado, había creado un directorio
00:29:19
prueba que en Linux se puede crear con mkdir
00:29:23
vamos a poner un prueba2, pues ahora
00:29:26
si pongo un ls que nos lista la información que hay dentro de
00:29:31
dentro de un directorio en particular pues ya veremos que tenemos prueba y probados que acabo
00:29:35
de crear en el directorio prueba que hice ayer tenemos esta información voy a borrar los ficheros
00:29:40
que no me interesan voy a borrar todo si lo hago desde cero vamos a crear un fichero que vamos a
00:29:49
llamar prueba o hola y vamos a poner extensión punto java porque en punto en ficheros con
00:30:03
extensión punto java es donde ponemos nosotros nuestro código en este lenguaje y aquí vamos a
00:30:11
poner código que es código java definimos una clase que vendría a ser una clase del estilo de
00:30:17
la persona o alumno de las que os hablaba antes pues sería un actor que participaría en nuestro
00:30:24
programa y dentro de esta clase ponemos unas llaves que identifican el ámbito donde trabaja
00:30:29
esta clase. Vamos a poner pública aquí, ya os contaré estas etiquetas para qué sirven. Dentro de la clase
00:30:36
hola vamos a definir un método de los que hablábamos antes, algo que va a realizar una
00:30:45
acción. Entonces hay todo programa cuando proyecto en java cuando lo vamos a realizar tiene un punto
00:30:50
de inicio y este punto de inicio es un método que se llama main el método principal que tiene aquí
00:30:58
he puesto unas cuantas palabritas que iremos conociendo etiquetas main el nombre del método
00:31:09
como decía los métodos van entre llaves y a veces pueden tener cierta información aquí esto
00:31:15
probablemente el próximo día os lo cuente y si no algo más algo más adelante pero de momento
00:31:24
no os preocupéis demasiado. Simplemente sabéis que este método es el punto
00:31:29
de inicio desde el que igual se va a ejecutar nuestro programa.
00:31:33
¿Y qué vamos a hacer en este main? Vamos a utilizar
00:31:37
un método que es el método println
00:31:40
que está definido en una clase que es la clase
00:31:50
system.out. Y diremos, esta clase no la hemos definido.
00:31:55
Efectivamente, tenemos bastante suerte y es algo común
00:31:59
a muchos de los lenguajes y es que cuando se realiza un lenguaje aparte se crea un montón
00:32:02
de código para que se lleven a cabo ciertas acciones que típicamente vamos a utilizar
00:32:08
nuestros programas y de esta forma no tengamos en cada uno de nuestros programas que implementar
00:32:13
ese código. En particular System.out, hablaremos de ello, lo que hace es sacar por consola,
00:32:19
por la pantallita algo que imprime y en este caso va a ser hola dam sería un primer hola mundo
00:32:27
entonces el código java que tenemos entre manos es la clase hola el método main punto de inicio de
00:32:35
mi proyecto y lo único que hace este método es mostrar por pantalla con un println hola mundo
00:32:41
hola dam perdón este println está en realidad codificado en algún sitio que donde es en las
00:32:47
librería de Java y está disponible
00:32:59
porque se importa en nuestro proyecto
00:33:01
lo tenemos importado en nuestro proyecto
00:33:03
para poder utilizarlo
00:33:05
junto al resto del código Java
00:33:07
que sí que pongamos nosotros
00:33:09
y que intentará dar solución particular
00:33:10
a los requisitos que se nos piden
00:33:13
para nuestro programa. Bueno, una vez
00:33:15
hecho nuestro ficherito
00:33:18
Java con un editor
00:33:20
comando more en Linux nos permite
00:33:22
ver el contenido sin editarlo, fijaros
00:33:25
ahí lo tenemos
00:33:27
¿Qué es lo que tenemos que hacer? Hemos dicho
00:33:28
con un programa punto java pues lo primero que tenemos que hacer es compilar lo cual era el
00:33:31
compilador de java javas como podemos ver dónde se encuentra pues con el comando wii
00:33:35
entonces llamamos a este programa compilador de java que está en esta ruta digamos y decimos que
00:33:43
lo que queremos es compilar el código que hemos puesto nosotros el lenguaje java se toma un
00:33:52
momentito y ahora si hacemos un ls aquí vemos que junto con el o la punto java ya tenemos el
00:33:59
hola.class y este hola.class ya no está desarrollado en código java tal cual, sino que está en bytecode.
00:34:04
De hecho, si ponemos aquí un mor de hola.class, vemos que ya nos entiende el código con tanta facilidad
00:34:13
como el .java, aunque sí que vemos algunas palabras por ahí. Pero es ese bytecode que vas a ver el intérprete
00:34:21
de java leer para convertirlo al código máquina que es donde se está ejecutando el programa que
00:34:27
será dependiente de la plataforma hardware cuál es el intérprete de java hemos dicho java que
00:34:37
donde se encuentra pues se encuentra en la misma ruta que el compilador entonces para aquí es donde
00:34:46
tenemos el bytecode fijaros para ejecutar nuestro programa vamos al intérprete e indicamos
00:34:55
el bytecode que sería en principio punto clas pero el intérprete me gusta más que no se lo
00:35:07
pongamos el punto clase entonces vamos aquí y fijaros como el resultado de nuestro programa
00:35:13
es que nos muestra por pantalla hola damm que realmente lo que habíamos puesto nosotros que
00:35:17
sucediese cuando se ejecutase el método main que es el punto inicio el programa hacia una
00:35:25
salida por pantalla de hola dam y efectivamente si volvemos a lanzar la ejecución es el resultado
00:35:29
que obtenemos es decir hemos con el editor nano editado un fichero punto java hemos metido ahí
00:35:36
el código lo hemos compilado con el compilador java nos ha dado el base code con el fichero con
00:35:45
extensión punto clash y hemos llamado al intérprete java y nos ha lanzado la ejecución convirtiendo
00:35:51
ese bytecode al código máquina
00:35:59
que entiende la plataforma
00:36:01
donde está corriendo
00:36:03
la plataforma hardware y nos ha soltado
00:36:05
el holadam este
00:36:07
dicho esta, esta secuencia es la última
00:36:08
vez que vamos a utilizar ya, vamos a hacer
00:36:13
un programita, aunque este era muy sencillote
00:36:15
a través de un terminal, a partir
00:36:17
de ahora ya utilizaremos IDES
00:36:19
que nos resultan mucho más cómodos
00:36:21
para ir haciendo nuestros programas
00:36:23
entre los IDES
00:36:25
hay diferentes, está
00:36:27
de DIN, si está Eclipse, Intelij, bueno pues yo he elegido Eclipse. Si alguien quiere utilizar
00:36:29
algún otro, no es un inconveniente para la asignatura porque nos vamos a centrar en Java.
00:36:39
Bueno, si elegís otro y tenéis que hacer alguna cosa en la opción de menú en particular, pues yo
00:36:44
estaré menos familiarizado, igual os puede ayudar un poquito menos, pero si alguien
00:36:50
ya viene programando desde hace tiempo y le apetece utilizar otro, pues no es problema.
00:36:54
Bueno, ayer cuando abríamos no había nada. Hoy ya tenemos el ejercicio de ayer, el hola mundo desde Eclipse. Y os cuento un poquito lo que os decía, aunque no cogeis los programas desde cero, o si ya veremos.
00:37:02
Mirad, cuando Eclipse empieza a guardar toda la información de los trabajos, de los proyectos que hagamos en un espacio de trabajo que podemos nosotros seleccionar cuando instalamos por primera vez Eclipse.
00:37:21
¿Dónde dije yo que tuviese su espacio de trabajo la instalación de Eclipse que tenemos en nuestra máquina virtual?
00:37:36
Pues en el directorio pwd nos dice el directorio actual, barra home, barra devian, y cree un directorio que se llama Eclipse Workspace.
00:37:45
Si nos vamos a este directorio, veréis que existe dentro del espacio de trabajo Eclipse, existe un único directorio, que es el directorio hola,
00:37:54
Que coincide con el proyecto que habíamos creado ayer. Vamos a crear otro proyecto diferente. Vamos a poner el proyecto Hola2. Automáticamente se ha venido aquí y ha creado un directorio Hola para un primer proyecto, un directorio Hola2 para un segundo proyecto.
00:38:06
Os comentaba también ayer que a la hora de crearse un proyecto, de momento vacío, o la 2, se crea este ficherito que permite meter unas directrices para ver cómo luego diferentes clases en proyectos grandes son capaces de interactuar unas con otras.
00:38:29
Al menos de momento, para nuestros programas que van a ser muy pequeños, vamos a borrar esto. No vamos a querer considerarlo, que nos va a traer inicialmente más problemas que beneficios, aunque a la larga para proyectos grandes es algo que podría llegar a resultarnos útil.
00:38:48
tenemos nuestro proyecto y el proyecto si nos venimos aquí, fijaros se ha creado la 2, si pongo aquí o la 2, me voy a la 2, tenemos dos directorios, uno src y otro bin, en el src es donde se van a ir guardando
00:39:02
los ficheros que vayamos creando punto java es decir con el código fuente y una vez compilados
00:39:19
se irán guardando en el directorio bien es decir como una vez compilados se irán creando aquí los
00:39:25
ficheros punto clash que serán los que tengan el base code de aquellos ficheros punto java con
00:39:32
código fuente que tengamos en sr vamos a crear una clase para replicar el ejercicio que habíamos
00:39:37
dicho antes aquí desde terminal, en este proyecto, entonces cogemos
00:39:46
y decimos new class, y esta class
00:39:50
la vamos a llamar hola2. Fijaros, hola2, aquí
00:39:54
nos muestra el clase, un fichero con extensión .java, y si nos venimos aquí
00:40:01
ahora, cdsrc, nos ha metido
00:40:05
ese ficherito .java en la ruta del proyecto hola2
00:40:09
src. Si me voy a bin y pongo el s, ya
00:40:13
directamente el crearlo, aunque esté vacío, ya me he creado un bytecode que será respuesta de la
00:40:20
información que tenga el punto java en el que se encuentra en el directorio src. Y ahora vamos a
00:40:26
poner aquí el mismo código que me había puesto antes. public static void main string rs, entre
00:40:34
llaves para el método esto el método esto la clase el método main que es el
00:40:49
punto de inicio del programa y sacamos por pantalla
00:40:54
utilizando el método println que lo tenemos disponible de librerías en java
00:41:00
porque nosotros no lo hemos programado hola desde eclipse ponemos
00:41:06
Entonces salvamos aquí, en la ruta src del proyecto tenemos el ficherito .java, en la ruta bin tenemos el ficherito .class con el base code asociado a este código que hemos puesto.
00:41:16
es decir, Eclipse
00:41:39
automáticamente está llamando al compilador Java
00:41:42
y va creando según el código fuente
00:41:45
que pongamos aquí, según vayamos dando al botón
00:41:49
salvar también, va creando el bytecode
00:41:51
el punto class asociado
00:41:55
para ejecutarlo, que habíamos hecho desde el terminal
00:41:57
pues habíamos llamado al intérprete de Java
00:42:01
aquí que podemos hacer, pulsar el botón run
00:42:02
por ejemplo, o a través de la opción run
00:42:06
run aquí, entonces si pulsamos
00:42:08
fijaros como
00:42:11
nos inicia el proyecto
00:42:13
busca el punto de entrada
00:42:15
que es el main, ejecuta su
00:42:17
código y esta ejecución del código
00:42:19
nos saca por consola
00:42:20
igual que había pasado antes, uno la
00:42:22
desde Eclipse
00:42:24
directamente tiene ya también
00:42:25
una ventanita de consola para ir
00:42:28
nos dando este tipo de resultados
00:42:31
con el IDE hemos podido hacer todo mucho más
00:42:32
integrado y con mucha más
00:42:36
a través de botones que no como lo habíamos hecho a través de a través del terminal y bueno si no me
00:42:38
dejo nada yo creo que esto es todo lo que aunque dándole más tiempo y con más calma y atendiendo
00:42:48
vuestras posibles consultas estos fueron los conceptos que vimos ayer en la tutoría así que
00:42:53
aquí paro y si tenéis alguna cuestión me preguntéis en los foros y si no en la próxima tutoría nos
00:42:59
vemos. Un saludo.
00:43:06
- Autor/es:
- JM
- Subido por:
- Jose Manuel M.
- Licencia:
- Reconocimiento
- Visualizaciones:
- 155
- Fecha:
- 15 de octubre de 2024 - 10:13
- Visibilidad:
- Clave
- Centro:
- IES ALONSO DE AVELLANEDA
- Duración:
- 43′ 10″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 66.17 MBytes