Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Introducción
En este primer tema veremos cómo podemos desarrollar una aplicación JAVA orientada objetos, así
como sus distintas clases y ejemplos prácticos de cada punto del tema.
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
1 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Objetivos
es
2.
ca
lifi
ua
l.c
ua
i rt
sv
pu
m
ca
campusvirtual.cualifica2.es
2 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Mapa Conceptual
[[[Elemento Multimedia]]]
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
3 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
es
objetos que realizan determinadas acciones a través de funciones.
2.
En un entorno más clásico de programación el problema o sistema que se está analizando se
ca
divide en funciones, cada función solo operaba con sus parámetros de entrada y no modificaba
lifi
Para llevar a cabo el análisis con la programación orientada a objetos hay que tener en cuenta
ua
que los programas se codifican pensando en objetos que interactúan.
l.c
Los objetos tendrán unas determinadas propiedades y serán capaces de hacer ciertas cosas
ua
mediante los métodos (funciones) que se les hayan definido en plantillas denominadas clases.
rt
Si se hace un buen diseño de los objetos y su interacción, se podrán usar en nuevos programas y
i
Un poco de historia
pu
JAVA fue creado como una herramienta de programación para ser usada en un proyecto de set-top-
m
box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991.
ca
El Green Team, el cual está compuesto por 13 personas contando con James Gosling a la cabeza,
El lenguaje fue denominado inicialmente como Oak (nombre que fue dado gracias a un roble que
había fuera de la oficina), después cambió su denominación a "Green" tras descubrir que Oak era
una marca comercial de adaptadores de tarjetas gráficas, así que posteriormente cambió su nombre
al de JAVA.
Es frecuentada por algunos de los miembros del equipo. Lo que no está claro es de si se trata de un
campusvirtual.cualifica2.es
4 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
acrónimo o no, aunque hay ciertas fuentes que hacen indicar que son las iniciales de sus
diseñadores: J ames Gosling, A rthur V an Hoff, y A ndy Bechtolsheim. Otros apuestan por el
siguiente acrónimo, J ust A nother V ague A cronym ("solo otro acrónimo ambiguo más"). La
hipótesis que suena con más fuerza es que el nombre de JAVA hace referencia a un tipo de café que
se servía en un bar cercano, de ahí que el icono sea una taza de café desprendiendo vapor. Otra
pista pueden ser los 4 primeros bytes de los archivos .class, bytes que en exadecimal nos dan lo
siguiente 0xCAFEBABE. Y a pesar de todas estas teorías, parece que el nombre fue sacado de una
lista aleatoria.
es
2.
Lo que Gosling pretendía hacer es implementar una máquina virtual (MV) con una estructura y
lenguaje que fuese similar a la de C++. Entre los meses de junio y julio del año 1994, tras una
ca
enorme sesión de varios días de John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric
lifi
Schmidt, el equipo reorientó la plataforma hacia el entorno web. Previeron que la llegada de Mosaic
(un navegador web) haría que internet se convirtiese en un medio interactivo. Naughton se puso
ua
manos a la obra y creo un prototipo de navegador web llamado "WebRunner", al que más tarde se le
l.c
Allá por el año 1994 a los altos cargos de Sun se les hizo una demostración de HotJAVA. La primera
versión de JAVA pudo descargarse por primera vez allá por el año 1994, pero no fue hasta el 23 de
rt
mayo del año siguiente cuando se vieron las versiones públicas de JAVA y HotJAVA, el navegador
i
sv
Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun Microsystems.
Además, el acto contó con una sorpresa, Marc Andreessen, vicepresidente ejecutivo de Netscape,
pu
anunció que su navegador soportaría JAVA El 9 de enero de 1996, SUN fundó el grupo JavaSoft
m
para encargarse de toda la parte del desarrollo tecnológico. Fue dos semanas más tarde cuando la
ca
campusvirtual.cualifica2.es
5 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
La promesa inicial, si recordamos era aquella que decía "Write Once, Run Anywhere", haciendo
virtual de ejecución para aquellas plataformas más populares logrando así que el código pudiese ser
El entorno de ejecución era algo relativamente seguro, así que los principales navegadores
empezaron a dar soporte a la ejecución de applets JAVA dentro de las propias páginas web.
es
Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un gran
2.
Desde la versión J2SE 1.4, todo cambio en el lenguaje ha sido regulada por la "JAVA Community
ca
Process" (JCP), la cual se basa en Java Specification Requests (JSRs) para proponer cambios futuros
lifi
a la plataforma. El lenguaje está especificado en la JLS (la "JAVA Language Specification). Los
JDK 1.0
ua
JDK 1.1
sv
JDK 1.1 (19 de febrero de 1997) — Principales adiciones incluidas: comunicado de prensa
pu
m
Toolkit)
JavaBeans
J2SE 1.2
J2SE 1.2 (8 de diciembre de 1998) — Nombre clave Playground. Tanto esta como las
campusvirtual.cualifica2.es
6 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
siguientes versiones fueron recogidas bajo la versión Java 2 y el nombre "J2SE" (Java 2
Platform, Standard Edition), reemplazó a JDK para diferenciar la plataforma base de J2EE
(Java 2 Platform, Enterprise Edition) y la J2ME (Java 2 Platform, Micro Edition). Otras
reflexión en la programación
una API gráfica denominada Swing, que fue integrada en las clases básicas
es
la máquina virtual (JVM) de Sun que fue equipada con un compilador JIT (Just in Time)
2.
por primera vez
ca
Java Plug-in
lifi
interoperabilidad con CORBA
ua
Colecciones (Collections)
l.c
J2SE 1.3
ua
J2SE 1.3 (8 de mayo de 2000) — Nombre clave Kestrel. Los cambios más destacables fueron:
i rt
la incorporación de la máquina virtual de HotSpot JVM (la cual fue lanzada inicialmente
sv
JavaSound
m
se insertó el Java Naming and Directory Interface (JNDI) en el paquete que contiene las
ca
extensión)
J2SE 1.4
J2SE 1.4 (6 de febrero de 2002) — Nombre en Clave Merlin. Fue el primer lanzamiento de la
plataforma JAVA desarrollado bajo el control de la comunidad JAVA como JSR 59. Los
campusvirtual.cualifica2.es
7 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
programación Perl
es
Logging API (Specified in JSR 47.)
2.
Una API I/O para lectura y escritura de imágenes en formatos JPEG o PNG
ca
Un "parser" de XML y un procesador XSLT especificado en JSR 5 y JSR 6
lifi
Java Web Start incluido (El primer lanzamiento se dio lugar en marzo de 2001 para
ua
J2SE 1.3) (Especificado en JSR 56.)
l.c
J2SE 5.0
ua
J2SE 5.0 (30 de septiembre de 2004) — Nombre clave: Tiger. (Originalmente numerado 1.5,
rt
esta notación aún es usada internamente.) Desarrollado bajo JSR 176, Tiger incorporó un
i
como puedan ser las clases o los métodos, ser etiquetados con algunos datos
valores (Dia.LUNES, Dia.Martes...). "Antiguamente", esto solo podía ser hecho por
campusvirtual.cualifica2.es
8 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
constantes de tipo int o por clases construidas de forma manual (enum pattern).
mediante el tipo de la variable y usar tres puntos para indicar el nombre de la variable
(p.e. void drawtext(String... lines)). Cuando el método sea llamado con un número
Bucle for mejorado — Se ha extendido la sintaxis para el bucle for, de manera que sea
posible iterar sobre cualquier clase que implemente Iterable, como la clase estándar
es
Collection de la siguiente forma:
2.
ca
Java SE 6
lifi
Java SE 6 (11 de diciembre de 2006) — Nombre clave Mustang. Estuvo en desarrollo bajo la
JSR 270. Para esta versión, SUN cambió el nombre "J2SE" por Java SE y eliminó el ".0" del
ua
número de la versión. Los cambios más destacables de esta versión son:
l.c
Incorpora un nuevo marco de trabajo y APIs que hacen posible la combinación de JAVA
ua
con otros lenguajes de programación como puedan ser PHP, Python, Ruby y JavaScript.
rt
dentro de Java.
sv
Incluye por completo un cliente de Servicios Wev y soporta las últimas especificaciones
pu
para los servicios web, como puedan ser JAX-WS 2.0, JAXB 2.0, STAX y JAXP.
Java SE 7
planificación allá por el año 2006. Su lanzamiento definitivo fue en julio de 2011.
campusvirtual.cualifica2.es
9 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
No oficiales:
NIO2.
Java Kernel.
Una nueva API para poder hacer usos de Días y Fechas, la cual es un reemplazo de las
es
antiguas clases Date y Calendar.
2.
Posibilidad de operar con clases BigDecimal usando operandos.
ca
lifi
Java SE 8
Mejoras en la concurrencia.
rt
Nuevas API para el manejo de las fechas y del tiempo (date - time).
pu
Java SE 9
m
ca
Modularización del JDK bajo Proyecto Jigsaw (Java Platform Module System)
Catálogos XML
jlink: El Java Linker: crea una herramienta que puede ensamblar y optimizar un
campusvirtual.cualifica2.es
10 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Cadenas compactas
es
Java SE 10
2.
ca
Java SE 10 se publicó el 20 de marzo de 2018.
lifi
Inferencia de tipo en variables locales
Thread-Local Handshakes
rt
Certificados raíz
m
JDK 11
JDK 11 fue lanzado el 25 de septiembre de 2018. Al escribir este manual (2021), la versión
está abierta para correcciones de errores. Ofrece LTS (Long Term Support), o soporte a
largo plazo. Entre otros, Java 11 incluye una serie de nuevas características, tales como:
campusvirtual.cualifica2.es
11 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Mejorar Aarch64
es
Claves para Curve25519 y Curve448
2.
Unicode 10
ca
Flight Recorder
lifi
Iniciar programas de código fuente de un solo archivo
ua
Perfilado de montón de baja sobrecarga
y Java Web Start ya no están disponibles. Los módulos JavaFX, Java EE y CORBA se han
pu
JDK 12
ca
JDK 12 fue lanzado el 19 de marzo de 2019. Entre otros, Java 12 incluye una serie de nuevas
Microbenchmark Suite
campusvirtual.cualifica2.es
12 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
JDK 13
es
características nuevas:
2.
Archivos CDS dinámicos
ca
ZGC: Memoria no comprometida
lifi
Nuevo desarrollo de Legacy Socket API
JDK 14
JDK 14 fue lanzado el 17 de marzo de 2020. Java 14 incluye las siguientes características
rt
nuevas, así como "cientos de mejoras más pequeñas y miles de correcciones de errores".
i
sv
Registros
Expresiones switch
ZGC en macOS
campusvirtual.cualifica2.es
13 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
ZGC en Windows
Bloques de texto
JDK 15
es
JDK 15fue lanzado el 15 de septiembre de 2020. Java 15 añade, por ejemplo, compatibilidad
2.
con literales de cadena de varias líneas (también conocidos como bloques de texto). Los
ca
recolectores de basura Shenandoah y Z ya están listos para su uso en producción (es decir,
lifi
operativo Solaris de Oracle (y las CPU SPARC) (mientras sigue estando disponible en Java
11, por ejemplo). Se elimina el motor JavaScript de Nashorn. También se han eliminado
ua
algunos certificados raíz de CA.
l.c
Clases selladas
rt
Clases ocultas
i
Bloques de texto
Registros
campusvirtual.cualifica2.es
14 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
JDK 16
JDK 16 fue lanzado el 16 de marzo de 2021. Java 16 elimina las opciones de compilación
partir de Java 16, se utiliza C++14 más reciente (aunque todavía no se utiliza C++17 o
fuente Mercurial).
es
API vectorial (Incubadora)
2.
Migrar de Mercurial a Git
ca
Migrar a GitHub
lifi
ZGC: Procesamiento simultáneo de pila de roscas
Metaespacio elástico
l.c
Puerto Windows/AArch64
ua
Packaging
i
sv
Registros
m
Clases selladas
diferente. Por lo tanto, Java 8 también se puede llamar 1.8, Java 5 se puede llamar 1.5, etc. Cuando
se lanza el comando "java -version" con estas versiones, obtenemos un resultado como el siguiente:
$java -version
campusvirtual.cualifica2.es
15 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Esto simplemente significa Java 8. Con el cambio a versiones basadas en el tiempo con Java 9, el
esquema de nomenclatura también cambió y las versiones Java ya no tienen prefijo 1.x. Ahora, el
$java -version
es
openjdk version "11.0.7" 2020-04-14
2.
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
ca
Diferencia entre JRE y JDK
lifi
ua
Hay que diferenciar entre un JRE (Java Runtime Environment) y un JDK (Java Development Kit).
l.c
Java. Un JRE incluye, entre otras cosas, la Máquina Virtual Java (JVM) y la herramienta de línea de
rt
comandos "java".
i
sv
Para desarrollar nuevos programas Java, es necesario descargar un JDK. Un JDK incluye todo lo que
pu
el JRE tiene, así como el compilador javac y un par de otras herramientas como javadoc (generador
Hasta Java 8, el sitio web de Oracle ofrecía JREs y JDKs como descargas separadas, aunque el JDK
ca
también siempre incluía un JRE en una carpeta independiente. Con Java 9 esa distinción desaparece,
y siempre se descarga un JDK. La estructura de directorios de los JDKs también cambió, ya que ya
Por lo tanto, a pesar de que algunas distribuciones todavía ofrecen una descarga JRE separada, la
tendencia es ofrecer sólo un JDK. Por lo tanto, vamos a utilizar Java y JDK indistintamente a partir de
ahora.
Distribuciones de Java
campusvirtual.cualifica2.es
16 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Las distribuciones de Java deben ser compatibles con Java SE (Standard Edition).
Hay una serie de proveedores que crean estas compilaciones, las certifican y después las
distribuyen. Aunque los proveedores no pueden, por ejemplo, eliminar un método de la clase String
antes de producir una nueva compilación java, pueden agregar personalización de marca o agregar
algunas otras utilidades (por ejemplo, CLI Command Line Interface) que consideren útiles. Pero
aparte de eso, el código fuente original es el mismo para todas las distribuciones Java.
es
OpenJDK y Oracle JDK
2.
Uno de los proveedores que crea Java desde el origen es Oracle. Esto implica dos
ca
distribuciones Java diferentes, que pueden ser muy confusas al principio.
lifi
OpenJDK es compilado por Oracle. Estas compilaciones son gratuitas y sin marca, pero
ua
Oracle no lanzará actualizaciones para versiones anteriores, por ejemplo para Java 15, tan
OracleJDK es una compilación comercial a partir del cambio de licencia en 2019. Lo que
ua
significa que se puede utilizar de forma gratuita durante el desarrollo, pero que deberemos
rt
Históricamente (anterior a Java 8) había diferencias de origen reales entre las compilaciones
pu
OpenJDK y las compilaciones oracleJDK, donde se podía decir que OracleJDK era "mejor". Pero
m
en la actualidad, ambas versiones son esencialmente las mismas, con diferencias menores.
ca
AdoptOpenJDK
más largas e incluso le ofrecen la elección de dos máquinas virtuales de Java diferentes:
HotSpot y OpenJ9.
campusvirtual.cualifica2.es
17 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Otras distribuciones
OpenJDK. Entre ellas se encuentran Azul Zulu, Amazon Corretto y SapMachine, entre otras.
es
Qué versión de Java instalar
2.
En la actualidad, Java saca versiones cada seis meses. En general, para asegurarnos de utilizar los
ca
IDEs (entornos de desarrollo integrados), frameworks y herramientas de compilación más recientes
lifi
e iniciar un proyecto completamente nuevo, podemos utilizar una de las últimas versiones.
ua
Sin embargo, muchas empresas siguen ancladas en la versión 8 (la LTS vigente), y aplicaciones
como el servidor web GlassFish trabajando de forma conjunta con el IDE NetBeans, no funcionará a
l.c
Por suerte no hay problema en que varias versiones de Java convivan en el mismo equipo, de forma
que en el caso anterior, podríamos por ejemplo tener Java 16 para lanzar nuestras aplicaciones y
rt
Una máquina imaginaria implementada mediante la emulación por software en una máquina real. El
código para la máquina virtual Java se almacena en archivos .class, cada uno de los cuales
m
para las que se compila toda la tecnología java. Esta especificación permite al software en java ser
independiente de la plataforma ya que la compilación se hace para una máquina genérica conocida
como la máquina virtual java (JVM). Esta puede ser emulada por software para poder ser ejecutada
A partir del código fuente el compilador genera bytecodes. Estos bytecodes son instrucciones de
código máquina para la JVM. Cada intérprete de java tiene una implementación de la JVM.
campusvirtual.cualifica2.es
18 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Pila.
Garbage-collected heap.
Área de memoria.
es
2.
Características de java
ca
Robusto:
lifi
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo de
ua
ejecución. En tiempo de compilación no tiene ningún misterio porque todos los lenguajes realizan
esas verificaciones, sin embargo, en tiempo de ejecución, la JVM, que realiza la interpretación de los
l.c
bytecodes, detecta cuando existe algún problema en la ejecución del programa, y lanza excepciones
ua
que pueden ser recogidas por el programador con el propósito de recuperarse de dichos errores.
rt
máquina (bytecodes), tan solo necesitamos utilizar el intérprete adecuado para que nuestro
pu
programa funcione sobre cualquier plataforma. El lema de Sun es "escribir una vez, ejecutar en
m
cualquier parte".
ca
Seguro:
Como toda la ejecución la realiza la JVM, los programas Java pueden ser sometidos a muchas
fragmentos de código y detecta fragmentos de código ilegal (código que falsea punteros, viola
El cargador de clases separa el espacio de nombres del sistema de ficheros local del de los
campusvirtual.cualifica2.es
19 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
recursos procedentes de la red. Esto limita cualquier aplicación del tipo Caballo de Troya, ya
que las clases se buscan primero entre las locales y luego entre las procedentes del exterior.
ByteCodes, que hace que cualquier programa pueda ser convertido a código fuente a partir de
sus bytecodes. Utilizando javap no se obtiene el código fuente original, aunque si desmonta el
programa mostrando su estructura. Este problema de seguridad del código fuente es algo
es
Portable:
2.
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros
ca
estándares de portabilidad para facilitar el desarrollo.
lifi
Los enteros son de 32 bits en complemento a 2.
ua
Java construye sus interfaces de usuario a través de un sistema abstracto de ventanas de forma que
l.c
Para poder desarrollar software con Java necesitamos una serie de herramientas que nos
i
Al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o por
escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben
m
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar cualidades de
Las reglas sintácticas (estructura) y semánticas (significado) permiten el entendimiento entre las
En los lenguajes de programación también encontramos unas reglas sintácticas que debemos
campusvirtual.cualifica2.es
20 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Aunque todos los conceptos que aprenderemos a continuación aparecen en todos los lenguajes de
es
posible lo que significa cada una de las órdenes que forman parte del programa, con el propósito de
2.
poder recordar en un futuro la función que realiza cada una de ellas, y facilitar su estudio a personas
ajenas al programa.
ca
lifi
Identificadores:
ua
En todo lenguaje de programación surge la necesidad de utilizar una serie de elementos que
ELEMENTO DESCRIPCIÓN
ua
Funciones
del programa.
i
Objetos que resulta más sencillo modelar los problemas que queremos resolver simplificando
el diseño de programas complejos.
pu
A la hora de asignar nombre a todos estos elementos hay que seguir unas reglas.
ca
El modelo mental más sencillo que se puede tener de una aplicación informática es el de una caja
negra que recibe unos datos de entrada, los procesa y entrega unos datos de salida representados de
alguna manera.
Estos datos de entrada, los cuales deben ser albergados en memoria y referenciados mediante
Cada lenguaje de programación dispone de unos tipos de datos básicos a los cuáles nos tenemos que
campusvirtual.cualifica2.es
21 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
amoldar a la hora de realizar el análisis de los datos que necesitamos en nuestra aplicación.
Variables:
Este elemento juega un papel muy importante en el programa porque es el mecanismo que pone a
nuestra disposición el lenguaje de programación para gestionar de una manera sencilla los datos de
la aplicación.
Al declarar una variable en el programa estamos reservando una zona de memoria para
es
posteriormente albergar un dato. Existen lenguajes que necesitan que especifiquemos el tipo de dato
2.
que se va a albergar (java) y otros que no lo necesitan (javascript).
ca
Al asignar un valor a la variable lo que estamos haciendo es almacenar el dato en la posición de
lifi
memoria que se reservó para dicha variable.
ua
En todo momento tenemos que tener presente que al usar la variable realmente estamos usando el
Operadores:
ua
Una de las primeras aplicaciones de los ordenadores fue el cálculo de matemático y, aunque ahora
rt
ha pasado a un segundo plano, los lenguajes de programación ofrecen una serie de elementos que
i
sv
Sentencias de control:
ca
Aunque esto nos pueda asustar, el tipo de procesamiento que puede realizar es muy básico,
limitándose a:
una o varias condiciones (sentencias de decisión). En dichas condiciones siempre estarán implicados
campusvirtual.cualifica2.es
22 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Alterar el flujo de ejecución normal del código del programa (sentencias de salto o bucles). También
La combinación adecuada de este tipo de sentencias es la que definirá la estructura que resuelve un
determinado problema.
es
Hemos visto el uso de variables como mecanismo básico para almacenar y acceder a datos en
2.
memoria. Sin embargo, en la mayoría de aplicaciones este tipo de almacenamiento de información se
ca
queda corto por ser demasiado simple y necesitamos a sistemas de almacenamiento más complejos
lifi
pero también más potentes.
ua
Uno de estos sistemas, que aparece en todos los lenguajes de programación, es el de los Arrays.
Excepciones:
l.c
ua
Todos los lenguajes de programación avisan de los errores que cometamos en tiempo de
compilación, pero pocos son los que han sido diseñados para seguir avisando de posibles errores en
rt
tiempo de ejecución. Las aplicaciones Java, gracias a que se ejecutan bajo la supervisión de la
i
sv
máquina virtual (JVM), están siendo controladas constantemente. En caso de que ocurra algún error
de ejecución, se lanza una excepción que puede ser recogida y tratada por el programador en su
pu
aplicación. De esta manera, lo que antes solía terminar en una ejecución anormal del programa, con
Objetos:
Java es un lenguaje de programación orientado a objetos. La importancia de este tema es tal que le
campusvirtual.cualifica2.es
23 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Clases.
A la hora de plantear el análisis del problema que se quiere resolver por software, todas las
tecnologías han optado por dividir dicho problema en parte más pequeñas. La estrategia a seguir es
conseguir una estructura en la que cada una de esas partes realice una tarea única e indivisible,
es
coordinadas por una parte principal que obtiene la información de lo que hay que hacer de su
interacción con el usuario. En la actualidad esta interacción se realiza a través de un entorno gráfico
2.
y las órdenes se generan mediante eventos.
ca
En los lenguajes procedimentales, orientados a funciones, la estructura se realiza tomando como
lifi
referencia el código. Cada una de las partes se denomina subrutina, procedimiento o función
ua
dependiendo del lenguaje en el que nos encontremos, cada una se ejecuta teniendo solo en cuenta
En los lenguajes imperativos, orientados a objetos, la estructura se realiza tomando como referencia
ua
los datos. Los datos se agrupan en función de su naturaleza en componentes denominados objetos.
rt
Para definir qué datos puede contener un objeto y sus acciones utilizamos plantilla que
i
Un objeto, como en la vida real, posee una serie de propiedades. Por ejemplo digamos que
pu
queremos crear un sistema para almacenar y organizar expedientes urbanísticos de obra. En papel
m
un expediente contiene los datos de la persona e información relativa a su solicitud. Dicha persona
ca
Nombre
Apellidos
DNI
Dirección
Teléfono
.....
campusvirtual.cualifica2.es
24 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Persona solicitante
Fecha presentacion
Fecha notificacion
Motivo
Tipo de obra
Dirección inmueble
es
Identificación catastral
2.
Aceptado/Denegado
ca
.....
lifi
Ademas se pueden realizar ciertas acciones que modifican dichos datos:
ua
Establecer fecha presentacion
l.c
Aceptar
Denegar
ua
......
i rt
sv
Para el diseño de un sistema debemos identificar los datos y agruparlos en objetos, también
pu
necesitamos identificar que acciones puede realizar un objeto y como afectan a otros. En este
ejemplo hemos partido de un conjunto de datos de un formulario para dividirlos en dos objetos cada
m
uno responsable de gestionar dichos datos. Como hemos comentado una clase define un objeto, en
ca
esta se indican el nombre de cada propiedad y de que tipo son como por ejemplo texto, numérico u
otro objeto como en este caso la persona solicitante. También se definen que acciones realiza y estas
Comenzar Actividad
campusvirtual.cualifica2.es
25 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
arrastra...
arrastra...
Se diferencian en la manera que ofrecen de estructurar los datos y el código que forman una
aplicación.
es
arrastra...
2.
ca
lifi
Los lenguajes imperativos
ua
Las diferentes tecnologías de programación
l.c
ofrecen de estructurar los datos y el código que forman una aplicación. En los
lenguajes procedimentales, orientados a funciones, la estructura se realiza
tomando como referencia el código. Cada una de las partes se denomina
pu
campusvirtual.cualifica2.es
26 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
es
private int propiedadPrivada; //<- Solo puede la clase
protected int propiedadProtegida; //<- La clase y las que hereden de ella
2.
static int propiedadProtegida; //<- Propiedad estatica accesible por cualquiera
// Definición de los métodos --> Comportamiento y funcionalidades del elemento.
ca
public void hacerAlgo(){//<-funcion publica que devuelve nada
//codigo de la funcion
lifi
}
public int devuelveAlgo(){//<-funcion publica que devuelve un entero
return this.propiedadPrivada;//Devolvemos una propiedad
ua
}
}
l.c
Como se puede ver en Java las clases se definen con la palabra class seguido del nombre por la que
ua
queremos identificarla. Vamos a explicar una serie de palabras usadas junto a las propiedades y
public: indica que la propiedad es accesible desde fuera, por ejemplo podemos acceder a
propiedades de un objeto desde los métodos de clase pero también desde fuera de la clase
pu
protected: esta está relacionada con la herencia de objetos, una clase que herede de otra
ca
private: las propiedades con private solo son accesibles desde la clase en la que se define, no
static: es una propiedad compartida entre todos los objetos creados a partir de la clase,
además es accesible a través de la propia clase sin requerir un objeto. Se puede usar junto a
final: la propiedad no puede ser alterada, en el caso de un tipo primitivo el valor no puede
cambiar, en cambio si posee una referencia a un objeto este sí puede ser alterado pero no se
campusvirtual.cualifica2.es
27 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
permitirá que cambie la referencia a otro objeto. Se puede utilizar junto con public, protected y
private.
Un método o también llamado función se define de manera similar a las propiedades, tiene
limitaciones en el acceso e incluso puede ser static, según el valor u objeto que devuelvan se indica
con un nombre anterior al de la función, en caso de que no devuelvan nada se indica con void.
Hay que tener en cuenta de que la variable de un objeto no es el objeto en sí, sino una referencia, en
caso de que una función devuelva una propiedad privada con referencia a un objeto nos arriesgamos
de que más adelante el objeto pueda ser modificado y dichas modificaciones afecten de manera
es
inesperada al funcionamiento de otros componentes. Para evitar la modificación de un objeto
2.
referenciado por una propiedad privada se debe realizar una copia de dicho objeto y devolverlo, de
ca
esta manera cualquier modificación realizada fuera de la clase no interferirá.
lifi
ua
Indica si la siguiente afirmación es verdadera o falsa: "Un método o también
l.c
Verdadero.
rt
Falso.
i
sv
pu
En la anterior página hemos hecho uso de datos primitivos y de tipos, en Java toda variable tiene
m
definido un tipo. Un tipo se puede entender como una identificación de que dato tiene la variable,
una variable puede hacer referencia a un objeto por lo que su tipo es el nombre de dicha clase. Sin
ca
embargo no hay solo objetos en Java, una variable también puede contener un valor de un tipo
concreto, a estos tipos los denominamos primitivos. Java incluye ocho tipos primitivos:
byte: es un número entero que en memoria ocupa 8 bits. Sus valores van de -128 a 127.
(inclusive). Es el tipo más usado para números enteros a menos que haya una razón para usar
campusvirtual.cualifica2.es
28 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
requiere.
float: es un dato en coma flotante y precisión simple. No entraremos en detalle sobre cómo
funciona pero se utiliza para almacenar valores decimales que no requieran gran precisión ya
double: dato en coma flotante de 64 bits y precisión doble. Similar a float pero admite un
es
boolean: solo tiene dos valores posibles true (verdadero) y false (falso).
2.
char: contiene un solo carácter Unicode de 16 bits.
ca
A Java se le considera un lenguaje fuertemente tipado ya que obliga a indicar el tipo de cada
lifi
variable, en el caso de otros lenguajes como PHP se pueden usar tipos pero no es obligatorio.
ua
Aunque puede suponer una carga de trabajo adicional según la situación el uso de tipos ayuda a la
prevención de errores.
l.c
En el siguiente ejemplo podemos ver un fichero en java completo que contiene la definición de una
ua
import java.io.BufferedReader;
i
sv
import java.io.InputStreamReader;
import java.io.IOException;
pu
campusvirtual.cualifica2.es
29 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
} else {
System.out.println("Ya estabas arriba, no intentes subir otra vez.");
}
menu();
}
} else {
es
++velocidad;
System.out.println("Velocidad actual= " + velocidad);
}
2.
menu();
}
ca
public void parar() {
lifi
if (velocidad == ) {
System.out.println("Si estás parado porque frenas");
} else {
ua
System.out.println("El frenado se realiza de golpe");
velocidad = ;
}
l.c
menu();
}
ua
} else {
System.out.println("Acabas de bajar del coche.");
pu
}
menu();
}
m
return this.velocidad;
}
Como se puede observar hay una propiedad llamada VMAXIMA establecida como pública, estática y
final esto quiere decir que puede ser accedida desde fuera de la clase, está compartida entre todas
campusvirtual.cualifica2.es
30 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
las instancias y que su valor es final, es decir no podrá ser modificado. Entendemos que la velocidad
máxima es el tope de velocidad que todas las instancias de Coche soportan. No nos interesa que se
supere la velocidad máxima establecida en el vehículo por lo que la declaramos privada y para
modificarla por cualquiera fuera de nuestra clase es necesario pasar por la función setVelocidad.
En la página anterior se ha hecho uso de la declaración import. Antes de nada expliquemos que es
un paquete en Java:
es
En Java un paquete se le conoce como un conjunto de clases y otros paquetes, estos siguen una
2.
llamado "ssh_tunnel" que a su vez contiene un paquete denominado "utils". Normalmente en un
ca
paquete se agrupan las clases de una misma aplicación, organización, sistema o que comparten una
lifi
ua
l.c
ua
i rt
sv
pu
m
Para hacer uso de clases en paquetes externos tenemos que hacer uso de su nombre en una
sentencia import o si es un uso puntual podemos usar el nombre del paquete seguido de la clase
ca
Tera.
campusvirtual.cualifica2.es
31 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Strong.
Byte.
Int.
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
32 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Objetos.
Robert C. Martin a principios de la década de los 2000 que representan cinco principios básicos de
la programación orientada a objetos y el diseño. Cuando estos principios son aplicados como un
conjunto, es más probable que un desarrollador cree un sistema que a lo largo del tiempo sea fácil
de mantener y de ampliar.
es
Los principios SOLID son guías que podemos usar en el desarrollo de un software, que nos ayudará
2.
a eliminar el código sucio provocando que el programador tenga que refactorizar el código fuente
ca
hasta que sea legible. Debería de ser utilizado en el desarrollo guiado por pruebas o TDD, y además
lifi
forma parte de la estrategia global del desarrollo ágil de software y desarrollo adaptativo de
software.
ua
l.c
El principio de responsabilidad única indica que cada módulo o clase de contar con una
ua
responsabilidad sobre una sola parte de la funcionalidad por el software y esta responsabilidad debe
rt
estar encapsulada en su totalidad por la clase. Todos sus servicios deben estar estrechamente
i
alineados con esa responsabilidad. Robert C. Martin expresa dicho principio de la siguiente forma:
sv
El principio de abierto/cerrado establece que «una entidad de software (clase, módulo, función, etc.)
m
debe quedarse abierta para su extensión, pero cerrada para su modificación». En otras palabras, se
ca
debe de poder ampliar el comportamiento de la entidad sin tener que modificar su código fuente.
abierto/cerrado es utilizado de dos maneras: las dos se basan en la herencia para poder resolver el
aparente dilema, pero tanto como sus objetos, técnicas y sus resultados son diferentes.
definirse como: Es posible usar como su padre cada clase que hereda de otra sin la necesidad de
campusvirtual.cualifica2.es
33 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
programa podrán ser sustituidos por objetos de tipo S (en otras palabras, los objetos de tipo S
pueden sustituir a los de tipo T), sin cambiar ninguna de las propiedades deseables del programa
De una manera más formal, el Principio de Sustitución de Liskov (LSP), define de manera particular
una relación de subtipificación, conocida como tipificación del comportamiento, la cual fue
introducida inicialmente por Barbara Liskov en una conferencia allá por el año 1987 llamada "LA
es
Abstracción de Datos y Jerarquía".
2.
ca
lifi
Está más referida a una relación de tipo semántico que a una de tipo sintáctico, ya que tan solo
ua
tiene la intención de garantizar la interoperabilidad semántica de tipos dentro de una jerarquía, los
tipos de objeto en particular. Jeannette Wing y Liskov crearon el principio de manera conjunta en un
l.c
El principio de segregación de la interfaz (ISP, por sus siglas en inglés) establece que los clientes de
un programa dado solo deberían conocer de éste aquellos métodos que realmente usan, y no
m
aquellos que no necesitan usar. El ISP es aplicado a una interfaz amplia y compleja para así
ca
seccionarse en otras más pequeñas y específicas, de tal forma que el cliente use tan solo la que
necesite, pudiendo así ignorar al resto. A este tipo de interfaces reducidas se les llama "interfaces de
rol".
El ISP fue concebido para mantener a un sistema desacoplado de los otros sistemas de los que
depende, y que así resulte más fácil una refactorización, modificarlo y redesplegarlo. El ISP es uno
de los cinco principios S.O.L.I.D. del Diseño Orientado a Objetos, similar al Principio de Alta
Cohesión de GRASP.
campusvirtual.cualifica2.es
34 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
El principio de inversión de dependencias está compuesto por los siguientes dos puntos:
A: Los módulos de alto nivel no deberían depender de los de bajo nivel. Los dos deberían de
B: Ninguna abstracción debería depender de ningún detalle. Son los propios detalles los que
es
definida, porque los objetos de más alto nivel son los que suelen incluir a los de bajo nivel.
2.
Un bosque contiene árboles, que a su vez contienen hojas, que contienen células…
ca
Por eso se eligió la palabra “inversión”, porque rompe con esta dinámica.
lifi
Los que en principio se pretende es que no exista una necesidad de dependencia entre unos módulos
ua
y otros, sino que dependan de abstracciones. De esta forma, nuestros módulos pueden ser más
l.c
fácilmente reutilizables.
ua
Como ya hemos visto un objeto es una representación abstracta compuesto por propiedades
también llamados atributos y una serie de métodos o funciones para manipular dichas propiedades.
i rt
Podemos considerar las Clases como plantillas de objetos, definen que propiedades tienen y sus
sv
métodos, instancia una clase da como resultado un nuevo objeto. En Java las propiedades de un
pu
objeto pueden ser de tipo primitivo o referencias a otros objetos, en cuanto a esto último
entendemos que un objeto puede estar compuesto por otros, por ejemplo una bicicleta está
m
compuesta por un pedal, manillar, ruedas etc. Cada objeto de una clase puede tener un valor propio
ca
en cada propiedad aunque comparten la misma funcionalidad, cada silla puede ser de un color
Declaramos un variable con el nombre de la clase como tipo y la instancia con new. Al hacer esto
se reserva memoria para el objeto y la variable hace referencia a este, en el caso de realizar:
campusvirtual.cualifica2.es
35 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Lo que hacemos es asignar el mismo objeto a las variables miCoche y miPropioCoche, cualquier
modificación como miCoche.setColor("azul") afectara a ambos. Si lo que queremos es una copia hay
algunas soluciones en bibliotecas de terceros pero lo más seguro es que el desarrollador implemente
su propia función para crear duplicados. Por ejemplo a través del método clone o un constructor
con un objeto de la misma clase como parámetro y copiar las primitivas, para propiedades que son
es
referencias a objetos también habría que duplicarlos:
2.
public class Coche{
//.....
ca
public Coche(Coche original){
this.color = original.color;
lifi
this.plazas = original.plazas;
//......
}
ua
public Coche clone(){
//Ya he creado un constructor de copia, me puedo ahorrar repetir el codigo
Coche nuevo = new Coche(this);
l.c
return nuevo;
}
ua
rt
A lo largo del módulo veremos el uso de objetos definidos por la clase String, esta es una clase
i
definida en Java y que permite almacenar y trabajar con cadenas de texto. La peculiaridad de esta
sv
clase es que no permite la modificación del texto que almacena, métodos como split crean un array
pu
con dos nuevas instancias de String cada una con una copia de un fragmento del texto original. Por
ello no hay porque preocuparse de generar copias de propiedades privadas de este objeto ya que por
m
diseño impide su alteración. El texto englobado por comillas dobles es considerado por el compilador
ca
almacena un número fijo de objetos de un tipo concreto. Su capacidad se define al ser creado:
Coche[] referenciaArray;
campusvirtual.cualifica2.es
36 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Comenzar Actividad
Representación abstracta compuesto por propiedades también llamados atributos y una serie de
métodos o funciones.
arrastra...
es
Plantillas de objetos, definen que propiedades tienen y sus métodos, instancia una clase da como
resultado un nuevo objeto.
2.
arrastra...
ca
lifi
Es una clase definida en Java y que permite almacenar y trabajar con cadenas de texto.
arrastra...
ua
l.c
ua
Objeto
rt
Clase string
i
sv
Clases
pu
m
campusvirtual.cualifica2.es
37 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
necesario tener instalado algún kit de desarrollo de java, puede encontrarlo introduciendo en
cualquier buscador la palabra JDK (Java Development Kit). El JDK contiene las herramientas
necesarias para la compilación del código fuente y su ejecución. El compilador incluido esta
desarrollado para usarlo a través de una terminal, en este caso usaremos la consola de comandos de
es
Asegúrese de descargar la versión apropiada del JDK para su procesador y sistema operativo,
2.
previamente aceptando los términos de la licencia. Una vez descargado la instalación se sigue como
ca
cualquier otro instalador.
lifi
ua
l.c
ua
irt
sv
pu
Como se ha explicado para la creación de un objeto necesitamos de una plantilla denominada clase.
m
Cada clase define que propiedades puede tener un objeto y sus métodos.
ca
A cada clase se le asigna un nombre para identificarla y utilizarla durante el desarrollo de una
aplicación, en el siguiente ejemplo tenemos la clase Factura, la creación de un objeto a partir de una
clase lo denominamos instanciación, todo objeto creado a partir de Factura lo llamaríamos instancia
de Factura.
Vamos a mostrar un ejemplo de clase y su utilización. Crearemos una nueva clase llamada Factura.
Una factura está compuesta por un nombre de titular, un concepto, un precio, el iva y el total de la
factura.
campusvirtual.cualifica2.es
38 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Acabamos de crearnos una clase en la que podemos almacenar una serie de datos primitivos en su
conjunto. Dicha clase contiene una serie de miembros que almacenará cada objeto creado a partir de
es
la clase Factura. En el ejemplo podemos observar variables de tipo String, String es una clase
incluida en Java para representar una cadena de texto, dicho texto es inmutable, es decir no se
2.
puede alterar, por ello la clase String implementa una serie de métodos para operaciones como la
ca
concatenación y división de texto que devuelven nuevas instancias.
lifi
ua
Indica si la siguiente afirmación es verdadera o falsa: "Para la creación de un
objeto necesitamos de una plantilla denominada clase. Cada clase define que
propiedades puede tener un objeto y sus métodos.".
l.c
Falso.
ua
Verdadero.
i rt
sv
Cada objeto Factura, es decir cada instancia de la clase, tiene su propia copia de las variables
pu
miembro. Como hemos mencionado las variables propias de una clase (propiedades) pueden ser de
tipos primitivos (boolean, int, long, double...) o referencias a objetos de otra clase (composición).
m
ca
En nuestro ejemplo, hemos creado cinco variables miembro de la clase factura, dichas variables
miembro son elementos que pertenecen a la clase Factura y solo pueden ser utilizadas por objetos
de la clase Factura. Cada Factura que creemos tendrá unos valores diferentes para cada miembro.
campusvirtual.cualifica2.es
39 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
f1.Total = 570
es
f2.ConceptoFactura = "PSP";
f2.Precio = 169;
f2.Iva = 15;
2.
f2.Total = 184;
ca
System.out.println("Datos de la factura numero 2");
System.out.println("Nombre Titular: " + f2.NombreTitular);
lifi
System.out.println("Concepto Factura: " + f2.ConceptoFactura);
System.out.println("Precio: " + f2.Precio);
System.out.println("Iva: " + f2.Iva);
ua
System.out.println("Total: " + f2.Total);
}
}
l.c
En este ejemplo mostramos otra clase denominada UtilizacionFactura, esta clase no se ha creado
ua
con el fin de crear objetos sino para la ejecución de código, que está contenido en el método main.
rt
Como podemos comprobar, cada objeto referenciado de la clase factura contiene unos datos
i
diferentes para cada elemento. Es decir, cada miembro de la instancia de Factura almacena unos
sv
Para compilar el programa partimos de dos ficheros con extensión .java, es importante utilizar un
m
editor de texto plano como el Bloc de Notas o Notepad++. Cada fichero debe tener el nombre de la
ca
clase, en este ejemplo deben resultar como: Factura.java y UtilizacionFactura.java. Para mayor
facilidad las hemos creado en una carpeta en la unidad C:\, para compilar nuestro programa usamos
el comando javac:
campusvirtual.cualifica2.es
40 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Si lo has compilado te habrás dado cuenta de una pequeña errata en nuestro código, para ser
coma al final:
es
En el comando mostrado compilamos todos los ficheros *.java de la carpeta dando como resultado
2.
ficheros .class que contienes el bytecode de cada clase, para ejecutar nuestro programa debemos
ca
utilizar el nombre de la clase que contiene la función main:
lifi
ua
l.c
ua
irt
sv
Como mencionamos cada objeto Factura tenía un contenido propio y este se ha imprimido
pu
Ejecutar un objeto.
Método byte.
Método main.
Ejecutar un código.
campusvirtual.cualifica2.es
41 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Para hacer referencia a los objetos que pertenecen a la clase sobre la que estamos escribiendo se
utiliza la palabra clave this. Dicha palabra hace referencia a cualquier elemento declarado en la
clase.
es
public String ConceptoFactura;
public double Precio;
public double Total;
2.
public double Iva;
ca
//CONSTRUCTOR DE FACTURA
public Factura()
lifi
{
//VAMOS A INICIALIZAR LOS MIEMBROS DE LA CLASE
this.NombreTitular = "sin titular";
ua
this.ConceptoFactura = "sin concepto";
this.Precio = 0.0;
this.Iva = 0.0;
l.c
this.Total = 0.0;
}
}
ua
Podemos observar un método con el mismo nombre que la clase Factura. Este método lo
rt
denominamos constructor y será llamado cada vez que se cree (instanciar) un objeto, su principal
i
función es asignar un valor a cada variable, eso puede incluir nuevas instancias de otras clases.
sv
pu
Si ahora utilizamos un objeto de la clase Factura, solamente instanciando un objeto, los valores
campusvirtual.cualifica2.es
42 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Como se puede observar la instanciación se realiza mediante la instrucción new seguido del nombre
de la clase y unos parámetros. En este caso el constructor no recibe ninguno. Como resultado de la
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
43 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Los objetos intervienen en el comportamiento del sistema interaccionando con otros, por ejemplo en
un coche un objeto pedal interacciona con el objeto freno, esto se produce llamando a un método
público que ofrece el objeto pedal para llevar a cabo dicha acción, como resultado se produce una
reducción de velocidad en el objeto coche. A parte de definir objetos también estamos definiendo sus
relaciones, un objeto delega un trabajo a otro que puede ser parte suya u otro del sistema.
es
Como hemos visto en un objeto se pueden definir una serie de propiedades o métodos de acceso
público, ese conjunto lo denominamos parte publica o interfaz del objeto. Otros objetos no
2.
necesitan saber cómo los demás llevan a cabo sus operaciones, solo que la llamada a un método
ca
público produce un resultado.
lifi
ua
l.c
ua
irt
sv
pu
m
ca
Para el desarrollo de una aplicación que interaccione con el usuario la estrategia básica a seguir es
conseguir una estructura en la que cada una de las partes realice una tarea única e indivisible. Cada
componente estaría coordinado por uno principal que obtiene información a través de su interacción
con el usuario. En la actualidad esta interacción se realiza a través de un entorno gráfico y las
Para el desarrollo de un sistema es importante decidir de antemano como interaccionan los objetos
además de sus datos y responsabilidades. Es buena idea tener en cuenta que para muchos casos ya
se han realizado soluciones que se consideran óptimas o las más apropiadas. Por ello nació el
campusvirtual.cualifica2.es
44 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
su solución, un patrón no tiene por qué ser una solución fija pero ayuda a comprender como
organizar un sistema para que sus partes interaccionen de la mejor manera posible.
Como ejemplo tenemos en la siguiente imagen una representación el patrón de diseño Modelo-
Vista-Controlador o MVC, este patrón surge por la necesidad de separar los datos y la lógica de
negocio de interfaz del usuario. La clase que ocupa el rol de controlador recibe notificaciones de la
vista sobre su interacción con el usuario, como por ejemplo pulsar un botón determinado o la
es
introducción de texto. Cuando el controlador es notificado sobre una acción realiza cambios sobre el
2.
modelo, este se responsabiliza de guardar los datos y los cambios son enviados a la vista.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
Por ejemplo podemos tener una pantalla con los datos de una persona y botones de Siguiente,
ca
Anterior y Guardar. La representación de los datos y la interacción con el usuario es llevado a cabo
por la vista. El usuario pulsa el botón siguiente y el controlador es avisado, entonces hace que la
siguiente bicicleta sea la seleccionada en el modelo y por tanto la vista es notificada con la nueva
campusvirtual.cualifica2.es
45 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Verdadero.
Falso.
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
46 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Debemos recordar que Java es un lenguaje de programación "Case Sensitive", es decir, diferencia
A continuación vamos a guardar cada fichero con nuestro bloc de notas con el nombre de la clase
es
seguido por la extensión ".java" en la ubicación que vayamos a probar nuestros ejemplos. Es
recomendable crearnos una carpeta para poder ubicar todas nuestras prácticas. Podemos utilizar
2.
cualquier otro editor de texto, pero es imprescindible que solo almacene texto plano, no nos valdrían
ca
editores de texto del estilo Word o WordPad, ya que almacenan más información además del texto
lifi
escrito, un ejemplo de estos editores puede ser UltraEdit o algún bloc de notas "free" que se
encuentran en internet y que tienen más características que el bloc de notas tradiciones de
ua
Windows.
l.c
Escritor.java:
ua
//Parte privada
private String parteTexto1;
i
//La clase String tiene un metodo estatico para producir un string a partir de otros tipos
String vecesString = String.valueOf(veces);
return parteTexto1 + veces + parteTexto2;
m
}
ca
Lector.java:
campusvirtual.cualifica2.es
47 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Main.java:
es
2.
public class Main{
public static void main(String[] args){
ca
Lector lector1 = new Lector();
Lector lector2 = new Lector();
lifi
lector1.num = 1;
lector2.num = 2;
ua
Escritor cervantes = new Escritor();
lector1.pedirAlEscritor(cervantes);
l.c
lector2.pedirAlEscritor(cervantes);
lector1.pedirAlEscritor(cervantes);
ua
}
}
i rt
sv
Debemos asegurarnos que el nombre de nuestro fichero "java" debe tener el mismo nombre que
pu
Voy a crear una carpeta en la unidad C:\Ejemplo2 y almacenaré las prácticas en dicha ubicación.
ca
En el bloc de notas seleccionaremos como Tipo: "Todos los archivos" y escribiremos la extensión
Hemos compilado los ficheros con el comando "javac *.java", y a continuación lo ejecutamos con el
comando "java -cp . Main", ten en cuenta el nombre de la clase que contiene la función main
campusvirtual.cualifica2.es
48 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Como podemos ver el objeto Escritor en su parte privada guarda el estado de cuantas veces le han
es
solicitado un texto y este responde en la respuesta mencionando que es la 1ª, 2ª y 3ª vez. El objeto
lector no conoce dicha parte privada y solo interesa la petición de texto que ofrece en su parte
2.
publica. En este caso el objeto escritor también conoce al lector, no usamos una función que
ca
devuelva el texto sino que llama a una función del objeto lector para responder.
lifi
Debido a la simplicidad de este ejemplo hemos usado un editor de texto simple, si se desea también
es posible utilizar un IDE (Integrated Development Environment), que aporta funciones como la
ua
corrección de sintaxis y la compilación y ejecución desde una interfaz gráfica. Ejemplos de IDEs
l.c
NOTA: Podremos guardar las prácticas en cualquier ubicación, pero es conveniente guardarlas en
alguna "ruta" fácilmente accesible ya que posteriormente tendremos que escribir dicha ruta en
rt
campusvirtual.cualifica2.es
49 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
1Interfaces II.
Herencia
Antes de hablar de interfaces debemos hablar sobre el concepto de herencia en el paradigma de
orientación a objetos.
Imaginemos que tenemos las instrucciones para construir una silla concreta con unas características
es
y usos concretos, ahora supongamos que queremos crear una silla basada en el diseño original pero
2.
con algunos cambios, como por ejemplo unos reposa muñecas. Como no cobramos por horas no
vamos a escribir unas instrucciones desde cero ya que tenemos los de la silla original, simplemente
ca
copiamos las partes en común de las instrucciones originales y añadimos nuestra parte. Este es un
lifi
ejemplo sobre el concepto de herencia de objetos, tenemos definida una clase y queremos crear una
public por la clase padre. Desde fuera los objetos creados a partir de la clase hija tendrán serán
ua
En este ejemplo consideramos que una "Silla de escritorio" es hija de "Silla común".
campusvirtual.cualifica2.es
50 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Ademas de heredar de una clase normal tenemos el concepto de clase abstracta, esto sería análogo
al concepto abstracto que tenemos de una silla. Las clases abstractas no pueden ser instanciadas
pero poseen una serie de propiedades y métodos comunes a clases que la usan como padre. También
es posible definir métodos abstractos, se escriben como cualquier otro método pero sin el bloque
de código englobado en corchetes. Toda clase que herede de otra con métodos abstractos debe
implementarlos.
Interfaces
es
2.
Ahora que conocemos sobre la herencia podemos hablar del concepto de interfaces.
ca
Un interface o interfaz en español es un conjunto de métodos abstractos y de propiedades finales
lifi
con la finalidad de definir el comportamiento de una clase. Podemos considerar una interfaz como
implementar y propiedades constantes mientras que una clase abstracta puede implementar
métodos o definirlos abstractos, la similitud que tienen es que ambas no pueden instanciarse.
ua
Una clase solamente puede derivar/heredar mediante extend de una clase base, pero puede
rt
implementar varias interfaces. Los nombres de las interfaces se indican separados por coma después
i
sv
de la palabra implements.
pu
En Java una interfaz se define con la palabra interface seguido del nombre, también es posible que
una interfaz herede de otra o varias como lo haría una clase mediante extends:
m
ca
En este ejemplo creamos una interface con los métodos que queremos que se implementen.
campusvirtual.cualifica2.es
51 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Como se puede ver solo utilizamos el modificador public en una de las funciones, en una interfaz
todo método es implícitamente público, de manera que se puede omitir. Además todas las
Implementación de la interfaz
Si una clase quiere implementar una interfaz debe usar la palabra clave implements. Si queremos
es
heredar e implementar al mismo tiempo, debemos colocar primero extends seguido del nombre de la
2.
clase y a continuación implements seguido del nombre de la interfaz.
ca
Sintaxis:
lifi
public class Macarrones extends Pasta implements Alimento, Desechable,... {
ua
//Cuerpo de la clase
}
l.c
Si una clase implementa una interfaz podemos usar dicha interfaz como tipo en la variable de los
rt
objetos. Por ejemplo un objeto de Naranja que heredaría de Fruta (código anterior), puede ser
i
asignado a una variable con el tipo Alimento, dicha variable estaría limitada por las funciones y
sv
constantes definidas en la interfaz Alimento. Por ejemplo podemos tener una clase CestaCompra que
pu
contenga una lista del tipo Alimento, de esta manera podemos almacenar y usar objetos en base a
campusvirtual.cualifica2.es
52 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
es
2.
ca
Comenzar Actividad
lifi
Arrastra las palabras de la columna Derecha en la columna Izquierda
ua
Se escriben igual que los otros pero sin el bloque de código englobado en corchetes.
l.c
arrastra...
ua
No pueden ser instanciadas pero poseen una serie de propiedades y métodos comunes a otras que
la usan como padre.
rt
arrastra...
i
sv
pu
arrastra...
ca
Métodos abstractos
Interfaces
Clases abstractas
campusvirtual.cualifica2.es
53 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Métodos abstractos: se escriben como cualquier otro método pero sin el bloque
de código englobado en corchetes. Toda clase que herede de otra con métodos
abstractos debe implementarlos.Las clases abstractas no pueden ser instanciadas
pero poseen una serie de propiedades y métodos comunes a clases que la usan
como padre. Un interface o interfaz en español es un conjunto de métodos
abstractos y de propiedades finales con la finalidad de definir el comportamiento
de una clase. Podemos considerar una interfaz como un "contrato" que debe
seguir una clase.
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
54 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Peculiaridades de Java.
Como hemos visto Java sigue el paradigma de programación orientado a objetos, pero eso no
significa que pueda tener características de otros paradigmas como la programación funcional. Por
ofrecer mejores soluciones a la hora de tratar con grandes volúmenes de datos. Hay que tener en
cuenta que las nuevas características en el lenguaje son incompatibles con versiones anteriores de
la JVM.
es
2.
//Por ejemplo una función que suma uno a cada valor de una lista de enteros
public List<Integer> addOne(List<Integer> numbers) {
ca
return numbers
.stream()
.map(number -> number + 1)
lifi
.collect(Collectors.toList());
}
ua
l.c
Por otra parte antes de explicar el proceso de creación de un programa, conviene explicar que en
Aplicación en modo texto: En este tipo de aplicaciones la interacción con el usuario (entrada de
i
datos y presentación de resultados) se realiza en modo texto (no existirán cajas de texto,
sv
botones,...). El ratón no tendrá uso en estas aplicaciones. Son las aplicaciones que realizaremos
pu
en el primer bloque donde nuestro objetivo será aprender los conceptos básicos de Java.
También es interesante cuando realizamos los prototipos de nuestros programas debido a que
m
Aplicación en modo gráfico: En este tipo de aplicaciones la interacción con el usuario se realiza
en modo gráfico. Estas aplicaciones pueden ser de todo tipo y no hay que pensar sólo en
Internet:
gráficos...
campusvirtual.cualifica2.es
55 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
independiente sino que necesitan el soporte de un navegador. Estos programas están pensados
para que sean invocados desde una página HTML, viajen a través de la red y se ejecuten en la
es
2.
ca
lifi
ua
l.c
ua
i rt
sv
pu
m
ca
campusvirtual.cualifica2.es
56 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Recuerda
[[[Elemento Multimedia]]]
es
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
57 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Autoevaluación
Falso
es
Verdadero
2.
ca
Indica si el siguiente enunciado es verdadero o falso: Para llevar a cabo el
análisis con la programación orientada a objetos hay que tener en cuenta que los
lifi
programas se codifican pensando en funciones que interactúan.
ua
Falso
l.c
ua
Verdadero
rt
conseguir una estructura en la que cada una de esas partes realice una tarea
única e indivisible.
pu
m
Falso
ca
Verdadero
Falso
campusvirtual.cualifica2.es
58 / 59
[AFO022366] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA (SECTOR: EMPRESAS DE CONSULTORÍA Y ESTUDIOS
DE ME(...)
[MOD016525] IFCT034PO DESARROLLO DE APLICACIONES CON JAVA
[UDI096114] PROGRAMACIÓN ORIENTADA A OBJETOS.
Verdadero
SI
es
NO
2.
ca
lifi
ua
l.c
ua
irt
sv
pu
m
ca
campusvirtual.cualifica2.es
59 / 59