Professional Documents
Culture Documents
PROGRAMA EDUCATIVO:
INGENIERIA INFORMATICA
ÍNDICE
PRESENTACIÓN.................................................................................................................................... 3
SEGURIDAD ......................................................................................................................................... 5
PRACTICA 8. POLIMORFISMO............................................................................................................ 50
PRACTICA 9. ARREGLOS..................................................................................................................... 55
PRESENTACIÓN
Para desarrollar las destrezas se requiere de conocimientos bien cimentados sobre los
temas básicos de ésta área. La destreza de temas de programación a través de prácticas
permite que los participantes se involucren, vivan y ejerciten las competencias adquiridas;
generando resultados que serán evaluados y enriquecidos.
Las prácticas que se presentan en este manual han sido desarrolladas tomando en
cuenta las competencias previas: Analizar, diseñar y desarrollar soluciones de problemas
reales utilizando algoritmos computacionales para implementarlos en un lenguaje de
programación orientado a objetos y el objetivo general de la Asignatura: Diseñar e
implementar objetos de programación que permitan resolver situaciones reales y de
ingeniería.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
El presente manual presenta las prácticas necesarias para que el alumno adquiera las
habilidades del desarrollo orientado a objetos empleando los conocimientos teóricos
adquiridos en el aula.
OBJETIVO GENERAL
Las prácticas que corresponden a la primera unidad ayudan a cubrir las competencias de
instalar y conocer la sintaxis de un lenguaje de programación orientado a objetos,
conociendo los identificadores, palabras reservadas, tipos de datos, operadores del
lenguaje, tipos de datos y estructuras de control.
Las prácticas que corresponden a la segunda unidad permiten al alumno aprender utilizar
arreglos para solucionar problemas.
Las unidades tres y cuatro ayudan al alumno a codificar clases y métodos; constructores,
destructores y a sobrecargar métodos. Estos conceptos en especial, potencializan la
modularidad como característica importante de la programación orientada a objetos,
manejar los métodos dentro de las clases como parte de la funcionalidad.
Las prácticas relacionadas a flujos y archivos tienen como objetivo que el alumno aprenda
como lograr la persistencia de datos a través del almacenamiento permanente de datos
en un archivo y las diferentes fuentes de donde puede provenir la información.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
SEGURIDAD
Para la utilización del Centro de Cómputo el alumno deberá leer el reglamento para el uso
de las salas del centro de cómputo publicado en el portal (www.itescam.edu.mx).
El personal que labora en la Sala de Computo así como los usuarios, deberán abstenerse
de fumar.
Se prohíbe realizar trabajos con fines de lucro o propaganda política, así como la
utilización de cualquier tipo de juego, consultar páginas Pornográficas por Internet y el uso
de los programas Chat.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
Java es un lenguaje de programación creado por Sun Microsystems para poder funcionar en
distintos tipos de procesadores. Su sintaxis es muy parecida a la de C o C++, e incorpora como
propias algunas características que en otros lenguajes son extensiones: gestión de hilos, ejecución
remota, etc.
El código Java, una vez compilado, puede llevarse sin modificación alguna sobre cualquier
máquina, y ejecutarlo. Esto se debe a que el código se ejecuta sobre una máquina hipotética o
virtual, la Java Virtual Machine, que se encarga de interpretar el código (ficheros compilados .class)
y convertirlo a código particular de la CPU que se esté utilizando (siempre que se soporte dicha
máquina virtual).
Variables de entorno
Para su correcto funcionamiento, Java necesita tener establecidas algunas variables de entorno:
las variables PATH y CLASSPATH.
La variable de entorno del sistema PATH deberá contener la ruta donde se encuentren los
programas para compilar y ejecutar (comandos javac y java de la distribución JDK
Por ejemplo:
set PATH=%PATH%;C:\jdk<version>\bin
(Windows)
export PATH=$PATH:/jdk<versión>/bin
(Linux)
Con la variable CLASSPATH indicamos dónde están las clases externas a las de la API que
necesitemos para compilar o ejecutar nuestro programa. Cualquier clase necesaria que no
pertenezca a la API debe estar incluida en el CLASSPATH para poder compilar o ejecutar (aunque
se encuentre en el mismo directorio que la que compilamos). Podemos incluir todas las clases que
hay en un directorio (sin contar los subdirectorios) poniendo la ruta (absoluta o relativa al directorio
actual) del directorio. Por ejemplo, si están en \misclases :
set CLASSPATH=%CLASSPATH%;C:\misclases
(Windows)
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
export CLASSPATH=$CLASSPATH:/misclases
(Linux)
Compilar clases
Si queremos compilar una clase, se compila con el comando javac (deberemos asegurarnos de
que dicho comando está accesible en el PATH), seguido del nombre de fichero a compilar:
javac NombreFichero.java
Tras haber compilado el ejemplo se tendrá un fichero NombreFichero.class, y se habrán compilado
y actualizado (si no lo estaban ya) todas las clases que necesitara la clase compilada.
Una vez compilada la clase, para ejecutarla utilizamos el comando java seguido del nombre de la
clase (sin extensión):
java NombreClase
Si se quisieran pasar parámetros al programa, se pasan después de la clase:
java NombreClase param1 param2 param3
A la hora de compilar y ejecutar, es importante respetar las mayúsculas y minúsculas de los
nombres de archivos y clases, y asegurarnos antes de compilar o ejecutar que el CLASSPATH
está correctamente establecido para encontrar todas las clases necesarias
-OBJETIVO
Instalar el compilador de JAVA en dos sistemas operativos (windows y Linux) y probar con un
programa de ejemplo su funcionalidad.
-LUGAR
Aula
-SEMANA DE EJECUCIÓN
Semana 1
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
- MATERIAL Y EQUIPO
Computadora
- DESARROLLO DE LA PRÁCTICA
- EVALUACIÓN Y RESULTADOS
El alumno entregara un informe con la instalación del JDK y del IDE de acuerdo a los lineamientos
de informe técnico y sobre este se evaluará:
Indica los pasos que siguió para la instalación del JDK así como 2
los errores que tuvo y como los solucionó (esto aplica en caso
de que hubiera tenido errores la instalación)
Indica los pasos que siguió para la instalación del IDE así como 2
los errores que tuvo y como los solucionó (esto aplica en caso
de que hubiera tenido errores la instalación)
TOTAL 10
El puntaje será divido de cada criterio equivale a la realización en ambos sistemas operativos
(LINUX y WINDOWS), en caso de solo presentar evidencia en un solo sistema operativo éste será
dividido entre dos. El alumno deberá presentar los códigos escritos.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-REFERENCIAS
Bonaparte, U. J. (2012). Proyectos UML Diagramas de clases y aplicaciones JAV en NetBeans 6.9.1.
Tucumán Argentina: Editorial de la Universidad Tecnológica Nacional.
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
Un proyecto Java podemos considerarlo como una serie de carpetas ordenadas y organizadas de
acuerdo con una lógica para mantener organizado el código. Un proyecto suele constar de
archivos .java, archivos .class y documentación.
Los archivos .java contienen el código fuente (entendible por humanos) que en un momento dado
podemos modificar con un editor de textos y suelen encontrarse en carpetas de nombre src
(source). Los archivos .class contienen el bytecode (no entendible por humanos pero sí por la
máquina virtual Java) y suelen encontrarse en carpetas de nombre bin (binary).
La organización del proyecto será por tanto similar a la organización de archivos: en un paquete
podremos tener por ejemplo clases de tipo A, en otras clases de tipo B y así sucesivamente. A su
vez, un paquete puede contener subpaquetes: por ejemplo el paquete A puede contener a los
subpaquetes A.1, A.2 y A.3. Un package es una agrupación de clases afines. Recuerda el
concepto de librería existente en otros lenguajes o sistemas. Una clase puede definirse como
perteneciente a un package y puede usar otras clases definidas en ese o en otros packages.
Los packages delimitan el espacio de nombres (space name). El nombre de una clase debe ser
único dentro del package donde se define. Dos clases con el mismo nombre en dos packages
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
distintos pueden coexistir e incluso pueden ser usadas en el mismo programa. Una clase se
declara perteneciente a un package con la cláusula package incluida como una línea de código,
cuya sintaxis es: package nombrePackage;. La cláusula package debe ser la primera sentencia del
código fuente. Por ejemplo, una clase puede comenzar así:
package miPackage;
Este código implica que la clase miClase pertenece al package miPackage. La cláusula package
es opcional. Si no se utiliza, las clases declaradas en el archivo fuente no pertenecen a ningún
package concreto, sino que pertenecen a un package por defecto (sin nombre). La agrupación de
clases en packages es conveniente desde el punto de vista organizativo, para mantener bajo una
ubicación común clases relacionadas que cooperan desde algún punto de vista. También resulta
importante por la implicación que los packages tienen en la visibilidad y acceso del código entre
distintas partes de un programa.
Específica(s):
Genéricas:
-OBJETIVO
Identificar los archivos que se generan en los proyectos creados y presentar un cuadro sinóptico.
Utilizar la herramienta de depuración del entorno de programación para identificar y corregir errores
lógicos y registrarlo en una bitácora.
-LUGAR
Aula
-SEMANA DE EJECUCIÓN
Semana 2
- MATERIAL Y EQUIPO
Computadora
- DESARROLLO DE LA PRÁCTICA
Planteamiento de la problemática.
Un turista Mexicano que viaja al menos 20 veces al año siempre tiene el problema de saber el
valor del dinero que tiene actualmente en la moneda del país que visita. Normalmente el visita
Estados Unidos, países de la región europea, Brasil y china. Te pide que le desarrolles una
solución para que dados la cantidad de pesos mexicanos que posee realice la conversión
correspondiente y le indique su valor en la moneda de cambio.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Paso 2. Diseña una solución identificando variables y constantes y especifica el algoritmo para su
solución.
Paso 3. Crea la carpeta donde se va a almacenar el proyecto de solución con el nombre practicas
Paso 4. Crea un nuevo proyecto en el IDE instalado en la práctica 1 y selecciona la carpeta que
creaste.
Paso 6. Crea el método main e incluye dentro del mismo la solución planteada y una instrucción
para mostrar el resultado de acuerdo a lo siguiente:
- EVALUACIÓN Y RESULTADOS
El alumno realizará la práctica de manera individual y entregará un informe con los pasos para la
solución de la problemática, el código correspondiente, la bitácora de errores y su solución de
acuerdo al formato de informe publicado en el portal de calidad del Itescam.
TOTAL 10
-REFERENCIAS
Bonaparte, U. J. (2012). Proyectos UML Diagramas de clases y aplicaciones JAV en NetBeans 6.9.1.
Tucumán Argentina: Editorial de la Universidad Tecnológica Nacional.
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
UML está compuesto por diversos elementos gráficas que se combinan para formar diagramas.
Éstos ayudan a presentar diversas perspectivas de un sistema a los cuales se les conoce como
modelo. Uno de los elementos gráficos son los diagramas de clase los cuales son categorías de
objetos o grupos de cosas que tienen atributos y acciones similares (Schemuller).
Para la diagramación UML una clase es representada con un rectángulo, donde el nombre de la
clase es, por convención, una Palabra escrita con la primera letra en Mayúscula, si consta de dos
palabras cada palabra inicia con la primera letra en Mayúscula, este normalmente se coloca en la
parte superior de rectángulo.
Una clase contiene atributos que corresponden a una propiedad o característica de ésta y describe
un rango de valores que la propiedad podrá contener en los objetos (esto es llamado instancia de
la clase), por convención los atributos constan de una o más palabras escritas en minúsculas, se
puede especificar el tipo de dato que contendrá el atributo (int, doublé,float,String, char, etc).
Los objetos realizan acciones u operaciones que describen sus comportamientos, normamente son
verbos, se escriben con minúsculas y si son más de dos palabras cada una de ellas iniciará con
mayúsculas exceptuando la primera.
-OBJETIVO
Diseñar diagramas de clases aplicando los conocimientos del paradigma orientado a objetos para
resolver una situación de la vida real.
-LUGAR
Centro de Cómputo
-SEMANA DE EJECUCIÓN
Semana 6
- MATERIAL Y EQUIPO
Computadora
- DESARROLLO DE LA PRÁCTICA
Descripción de la problemática.
su cartilla cuando la carta anunciada coincide con alguna de las que posee. El ganador es el
primero que llene su tabla de manera completa y que grite lotería.
Paso 1.
Termine de rellenar la tabla con las clases de objetos, sus atributos y las acciones que pueden
realizar de acuerdo a la situación planteada como se muestra.
4.
5.
Paso 2. Realiza los diagramas de clase correspondientes cada clase de objetos indicando el
nombre de la clase, sus atributos y los métodos de cada una como se muestra para la primera
clase
class System
Carta Mazo
Carta Mazo
Paso 4. Por último se debe generar el código del diagrama correspondiente en la opción del menú
Project / source code engineering / Generate source code y almacenar los códigos
correspondientes.
- EVALUACIÓN Y RESULTADOS
TOTAL 10
El alumno deberá presentar el modelo de clases realizado en el programa, así como los códigos
generados por el programa, éstos deben corresponder a lo presentado en el paso 5 y los códigos
deben acordes con lo diagramado.
-REFERENCIAS
Bonaparte, U. J. (2012). Proyectos UML Diagramas de clases y aplicaciones JAV en NetBeans 6.9.1.
Tucumán Argentina: Editorial de la Universidad Tecnológica Nacional.
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
Normalmente en el mundo real existen varios objetos de un mismo tipo, o como diremos
enseguida, de una misma clase. Una clase es una plantilla que define las variables y los métodos
que son comunes para todos los objetos de un cierto tipo.
Normalmente un único objeto por sí solo no es muy útil. En general, un objeto aparece como un
componente más de un programa o una aplicación que contiene otros muchos objetos. Es
precisamente haciendo uso de esta interacción como los programadores consiguen una
funcionalidad de mayor orden y modelar comportamientos mucho más complejos.
Cada clase requiere especificar la forma en como los objetos serán construidos y los valores por
default que tendrán. El objetivo de un constructor es el de inicializar un objeto cuando éste es
creado. En java es un método especial dentro de una clase, que se llama automáticamente cada
vez que se crea un objeto de esa clase.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Posee el mismo nombre de la clase a la cual pertenece y no puede regresar ningún valor (ni
siquiera se puede especificar la palabra reservada void).
Existen 2 tipos de constructores, los constructores por defecto es un constructor que hace nada y
que es invocado cada vez que se construye un objeto sin especificar ningún argumento asignando
valores predefinidos para los atributos; el constructor con parámetros debe especificar algún
argumento que servirán para iniciar los atributos con los valores especificados por el usuario y
realizará las acciones preestablecidas al ejecutarse.
En java no existen los destructores, esto se realiza de manera automática cada vez que los objetos
se dejan de usar.
Un método sobrecargado se utiliza para reutilizar el nombre de un método pero con diferentes
argumentos. Las reglas para sobrecargar un método son las siguientes:
-OBJETIVO
Programar clases con atributos y métodos que utilicen distintos modificadores de acceso
empleando constructores y métodos sobrecargados con la finalidad comprender la
-LUGAR
Sala de Cómputo
-SEMANA DE EJECUCIÓN
Semana 7.
- MATERIAL Y EQUIPO
Equipo de cómputo
Software Enterprise Architect o software libre para diagramas UML (BoUML, ArgoUML u otra)
-DESARROLLO DE LA PRÁCTICA
Descripción de la problemática
Un termómetro es un instrumento utilizado para medir la temperatura con un alto nivel de exactitud,
son capaces de medir medidas extremas (frio o calor). Las temperaturas son medidas en una
escala siendo las más usadas a nivel internacional los Grados Celsius (°C) o los Grados
Fahrenheit (°F) y Grados Kelvin (°K). Los termómetros actuales permiten mostrar en un
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
visualizador la temperatura medida, almacenando de manera temporal para poder identificar las
temperaturas extremas (máxima y mínima) registradas y el promedio, igualmente el termómetro es
capaz de convertir las temperaturas de una escala a otra permitiendo su uso en cualquier lugar.
1. 1.
2. 2.
3. 3.
4. 4.
5. 5.
b) Definir los atributos para la clase indicados en el diagrama por ejemplo: marca, color, valor,
botonOnOff, etc; de acuerdo a lo siguiente:
tipo nombre;
Ejemplo: String marca;
d) Escribir los métodos set y get para asignar y devolver los valores a los atributos declarados
en las variables.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
El alumno debe cuidar las tabulaciones del programa para marcar con claridad el ámbito de cada
segmento en la clase.
Paso 2. Escribir los métodos para dar funcionalidad al termométro (comportamientos descritos en
el diagrama) por ejemplo: prender o Apagar, medirTemperatura.
Nota: en el caso de la medición de la temperatura esta se realizará utilizando valores aleatorios
entre un rango definido.
Paso 4. Escribir la funcionalidad de los métodos para que pueda implementar los comportamientos
establecidos.
Paso 5. Escribir el método main para crear una instancia de la clase y probar el acceso desde ella
a los atributos y métodos. Mínimo debe probar el cambio de las unidades de medida del
termómetro.
Paso 8. Realizar los pasos del 1 al 7 para dos clases de objetos concretos (puerta, elevador,
televisor) y abstractos (CuentaBancaria, Prestamo, Viaje, etc.)
Paso 9.
- EVALUACIÓN Y RESULTADOS
TOTAL 10
El alumno deberá presentar el modelo de clases realizado en el programa, así como los códigos
generados por el programa.
-REFERENCIAS
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
En Java una excepción es un error o una condición anormal que se ha producido durante la
ejecución de un programa. Java tiene diferentes tipos de excepciones: excepciones de I/O, las
excepciones en tiempo de ejecución y las de su propia creación. Durante la compilación solamente
se detectan los errores de sintaxis, pero el manejo de excepciones de Java permite el manipular
los errores que ocurren en tiempo de ejecución, entre estas podemos mencionar las excepciones
aritméticas (división entre cero), excepciones de puntero (acceso a punteros NULL) y excepciones
de indexación (acceso por encima o debajo de los límites de un vector). Algunas excepciones son
fatales y causan el fin de la ejecución del programa. En este caso conviene terminar
ordenadamente y enviar un mensaje explicando el tipo de error que se ha producido. En otras
situaciones, por ejemplo cuando no se encuentra un archivo sobre el que se desea realizar una
operación, el programa puede dar al usuario la oportunidad de corregir el error. Un buen
programa debe manejar correctamente la mayoría de los errores que se puedan producir, Java
proporciona las siguientes herramientas para el manejo de excepciones: try, catch, throw, throws
y finally.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Thrownable
Clase base que representa todo lo que se puede “lanzar” en java, contiene una el estado de la pila
en el momento en que se genera la excepción (stack trace o call chain), almacena un mensaje de
tipo String que se puede utilizar para detallar que excepción se generó.
Error
Subclase de Thrownable que indica problemas graves de los cuales una aplicación no se puede
recuperar por ejemplo: Memoria Agotada, error de la máquina virtual.
Exception
Situaciones más o menos habituales que impiden completar la ejecución correcta del código.
Generalmente el programador debe proporcionar el código que las trate o gestione.
Predefinidas en el sistema
Se lanzan automáticamente cuando se realiza alguna operación no valida
- Acceso a un objeto que no existe,
- Acceso a una posición de un array que no existe,
- División por cero
Generadas por el programador
El programa explícitamente genera una excepción al detectar una situación de error que no se
puede resolver en ese contexto, útil en situaciones de prueba y depuración.
throws
- Indica que el código producirá una excepción, que no se tratará dentro de él y se pasará al
método superior, utilizando la cláusula throws.
public void ejemploExcep () throws IOException
- A continuación de la palabra reservada throws aparece una lista de todas las excepciones
que se pueden dar dentro del método que serán lanzadas y no serán gestionadas.
-OBJETIVO
Identificar, manejar, gestionar y crear las condiciones de error que interrumpan el flujo normal de
ejecución de un programa.
-LUGAR
Sala de Cómputo
-SEMANA DE EJECUCIÓN
Semana 8
- MATERIAL Y EQUIPO
Equipo de cómputo
Eclipse
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-DESARROLLO DE LA PRÁCTICA
Paso 1. Crear la clase para realizar las operaciones de división, almacenamiento y visualización de
los datos.
Paso 2. Utilizar las excepciones para tratar desde el método dividir la excepción AritmeticException
try{
} catch(ArithmeticException excepcion){
Paso 2. Genere una excepción propia para controlar que los números no sean mayores de 100
De acuerdo a lo siguiente:
a) Declare una clase que herede de Exception para crear la excepción propia con el
nombre ValorFueraDeRango e incluya código para enviar un mensaje al usuario.
b) Cree la instrucción para validar el valor proporcionado por el usuario y que se genere la
excepción utilizando la siguiente línea de instrucción.
throw ValorFueraDeRango;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
c) Lanza la excepción fuera del método para que sea capturada desde el lugar que fue
invocada utilizando la sentencia throws ValorFueraDeRango al final del nombre del
método
- EVALUACIÓN Y RESULTADOS
TOTAL 10
El alumno deberá presentar los códigos fuente generados para solucionar el problema y las
pantallas de resultado en un informe.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-REFERENCIAS
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
PRACTICA 6. HERENCIA
-INTRODUCCIÓN
La herencia ofrece una ventaja importante, permite la reutilización del código. Una vez que una
clase ha sido depurada y probada, el código fuente de dicha clase no necesita modificarse. Su
funcionalidad se puede cambiar derivando una nueva clase que herede la funcionalidad de la clase
base y le añada otros comportamientos. Reutilizando el código existente, el programador ahorra
tiempo y dinero, ya que solamente tiene que verificar la nueva conducta que proporciona la clase
derivada.
1. Cuando se dan cuenta que diversos tipos tienen algo en común, por ejemplo en el juego del
ajedrez peones, alfiles, rey, reina, caballos y torres, son piezas del juego. Creamos, por tanto, una
clase base y derivamos cada pieza individual a partir de dicha clase base.
2. Cuando se precisa ampliar la funcionalidad de un programa sin tener que modificar el código
existente.
3. Cuando las clases que se tienen responden a una tercera clase con la frase ES UN. Por ejemplo
un carro ES UN Vehículo, un camión ES UN vehículo, etc.
Clase Base
Vamos a poner un ejemplo del segundo tipo, que simule la utilización de librerías de clases para
crear una interfaz gráfico de usuario
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Supongamos que tenemos una clase que describe la conducta de una ventana muy simple,
aquella que no dispone de título en la parte superior, por tanto no puede desplazarse, pero si
cambiar de tamaño actuando con el ratón en los bordes derecho e inferior.
protected int x;
protected int y;
this.x=x;
this.y=y;
this.ancho=ancho;
this.alto=alto;
Las funciones miembros, además del constructor serán las siguientes: la función mostrar que
simula una ventana en un entorno gráfico, aquí solamente nos muestra la posición y las
dimensiones de la ventana.
ancho+=dw;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
alto+=dh;
package ventana;
protected int x;
protected int y;
this.x=x;
this.y=y;
this.ancho=ancho;
this.alto=alto;
ancho+=dw;
alto+=dh;
}
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
La clase derivada
La clase derivada heredará los miembros dato de la clase base y las funciones miembro, y tendrá
un miembro dato más, el título de la ventana.
super(x, y, w, h);
titulo=nombre;
extends es la palabra reservada que indica que la clase VentanaTitulo deriva, o es una subclase,
de la clase Ventana.
La primera sentencia del constructor de la clase derivada es una llamada al constructor de la clase
base mediante la palabra reservada super. La llamada
super(x, y, w, h);
Inicializa los cuatro miembros dato de la clase base Ventana: x, y, ancho, alto.
A continuación, se inicializa los miembros dato de la clase derivada, y se realizan las tareas de
inicialización que sean necesarias. Si no se llama explícitamente al constructor de la clase base
Java lo realiza por nosotros, llamando al constructor por defecto si existe.
x+=dx;
y+=dy;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Redefine la función miembro mostrar para mostrar una ventana con un título.
super.mostrar();
System.out.println("titulo : "+titulo);
En la clase derivada se define una función que tiene el mismo nombre y los mismos parámetros
que la de la clase base. Se dice que redefinimos la función mostrar en la clase derivada. La función
miembro mostrar de la clase derivada VentanaTitulo hace una llamada a la función mostrar de la
clase base Ventana, mediante
super.mostrar();
De este modo aprovechamos el código ya escrito, y le añadimos el código que describe la nueva
funcionalidad de la ventana por ejemplo, que muestre el título.
Si nos olvidamos de poner la palabra reservada super llamando a la función mostrar, tendríamos
una función recursiva. La función mostrar llamaría a mostrar indefinidamente.
System.out.println("titulo : "+titulo);
mostrar();
package ventana;
super(x, y, w, h);
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
titulo=nombre;
super.mostrar();
System.out.println("titulo : "+titulo);
x+=dx;
y+=dy;
package ventana;
ventana.mostrar();
ventana.cambiarDimensiones(10, -5);
ventana.desplazar(4, 3);
System.out.println("************************");
ventana.mostrar();
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
try {
System.in.read();
}catch (Exception e) { }
Mostramos la ventana con su título, llamando a la función mostrar, redefinida en la clase derivada
ventana.mostrar();
Desde el objeto ventana de la clase derivada llamamos a las funciones miembro definidas en dicha
clase
ventana.desplazar(4, 3);
Desde el objeto ventana de la clase derivada podemos llamar a las funciones miembro definidas en
la clase base.
ventana.cambiarDimensiones(10, -5);
ventana.mostrar();
-OBJETIVO
Implementar la herencia en clases derivadas para reutilizar los miembros de una clase base.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-LUGAR
Sala de Cómputo
-SEMANA DE EJECUCIÓN
Semana 11
- MATERIAL Y EQUIPO
Equipo de cómputo
Eclipse
Software Enterprise Architect o software libre para diagramas UML (BoUML, ArgoUML u otra)
-DESARROLLO DE LA PRÁCTICA
Descripción de la problemática
Atributos Comportamientos
1. 1.
2. 2.
3. 3.
4. 4.
5. 5.
Paso 2. Identifique los atributos y métodos para las clases derivadas (Triangulo, Circulo,
Rectángulo, Trapecio, Cuadrado) y llene una tabla similar a la anterior para cada clase derivada.
Paso 3. El alumno escribirá las clases de acuerdo al diagrama considerando los siguientes puntos:
a) La clase base deberá contener métodos para calcularArea, calcularPerímetro y un
método visible
b) La clase base tendrá al menos un constructor con parámetros
c) Cada clase derivada deberá extender de la clase base y escribir la implementación
propia de los métodos calcularArea, calcularPerimetro
d) Cada clase derivada deberá llamar al constructor de la clase base utilizando la palabra
reservada super
Paso 4. Crear una clase principal que instancie un objeto de la clase base, uno de la clase
derivada y llame a los métodos calcularArea y calcularPerimetro de la clase Base y Derivadas.
- EVALUACIÓN Y RESULTADOS
TOTAL 10
El alumno deberá presentar los códigos generados por el programa y las pantallas con los
resultados en un informe.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-REFERENCIAS
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
Constructores en clases derivadas. Al instanciar objetos de clases derivadas se inicia una cadena
de invocaciones a constructores en las cuales el constructor de la clase derivada, antes de realizar
sus propias tareas, invoca (ya sea implícita o explícitamente) al constructor de su clase base.
Similarmente, si la clase base fue derivada de otra clase, el constructor de la clase base debe
invocar al constructor de la clase ubicada en el siguiente nivel superior de la jerarquía, y así
sucesivamente. El último constructor invocado en la cadena es el constructor de la clase Object,
cuyo cuerpo se ejecuta primero. El cuerpo del constructor de la clase derivada se ejecuta al final.
El constructor de cada clase base inicializa las variables de instancia que el objeto de la clase
derivada hereda.
Cuando remueve de la memoria un objeto de una clase derivada, el recolector de basura invoca al
destructor del objeto. Esto inicia una cadena de invocaciones a destructores, en donde el
destructor de la clase derivada y los destructores de las clases bases directas e indirectas se
ejecutan en orden inverso al que se ejecutaron los constructores, esto es, primero se ejecuta el
destructor de la clase derivada y al final se ejecuta el destructor de la clase base ubicada en el
nivel superior de la jerarquía. La ejecución de los destructores debe liberar todos los recursos que
el objeto adquirió, antes de que el recolector de basura reclame la memoria de ese objeto. Cuando
el recolector de basura invoca al destructor de un objeto de una clase derivada, ese destructor
realiza su tarea y después invoca al destructor de la clase base. El proceso se repite hasta que se
invoca al destructor de la clase Object.
-OBJETIVO
-LUGAR
Sala de Cómputo
-SEMANA DE EJECUCIÓN
Semana 12
- MATERIAL Y EQUIPO
Equipo de cómputo
Eclipse
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-DESARROLLO DE LA PRÁCTICA
Descripción de la problemática
Existen distintos instrumentos de medición que ayudan a tener de menar más precisa las mediadas
de la velocidad, las revoluciones por minuto de un motor, la temperatura, cada uno de estos
instrumentos son mostrados en un vehículo y sirven para que el conductor pueda operar de mejor
manera un vehículo. Utilizando la clase termómetro de la práctica 2 cree las clases restantes para
simular el funcionamiento de un tacómetro y un velocímetro, así mismo cree la clase Instrumento
de medición y utilice constructores en clase Base y Derivadas.
- EVALUACIÓN Y RESULTADOS
TOTAL 10
El alumno deberá los códigos fuente generados para solucionar el problema planteado.
-REFERENCIAS
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
PRACTICA 8. POLIMORFISMO
-INTRODUCCIÓN
Hay ocasiones, cuando se desarrolla una jerarquía de clases en que algún comportamiento
está presente en todas ellas pero se materializa de forma distinta para cada una. Por ejemplo,
pensemos en una estructura de clases para manipular figuras geométricas. Podríamos pensar en
tener una clase genérica, que podría llamarse FiguraGeometrica y una serie de clases que
extienden a la anterior que podrían ser Circulo, Poligono, etc. Podría haber un método dibujar dado
que sobre todas las figuras puede llevarse a cabo esta acción, pero las operaciones concretas para
llevarla a cabo dependen del tipo de figura en concreto (de su clase). Por otra parte la acción
dibujar no tiene sentido para la clase genérica FiguraGeometrica, porque esta clase representa una
abstracción del conjunto de figuras posibles.
Para resolver esta problemática Java proporciona las clases y métodos abstractos. Un método
abstracto es un método declarado en una clase para el cual esa clase no proporciona la
implementación (el código). Una clase abstracta es una clase que tiene al menos un método
abstracto. Una clase que extiende a una clase abstracta debe implementar los métodos abstractos
(escribir el código) o bien volverlos a declarar como abstractos, con lo que ella misma se convierte
también en clase abstracta.
Clases Abstractas.
Al ser utilizado Herencias ("Inheritance") y/o Polimorfismo es muy común que en la Clase Base
existan métodos diseñados únicamente con el propósito de ofrecer una guia para las Clases
heredadas, en Java existe un vocablo que permite prohibir el uso de métodos en Clases Base, este
calificativo es :abstract.Al ser definido un método como abstract se restringe que éste sea llamado
directamente, cuando una Clase contiene un método de este tipo a ésta se le llama: Clase
Abstracta.
Al ser definida una Clase, además de ser declarados los métodos/campos como abstract también
es necesario utilizar el vocablo abstract en la definición de cada Clase.
Clases Abstractas.
Una de las características de las Clases que Heredan("Inherit") de una Clase abstracta, es que
éstas deben definir los mismos métodos definidos en la Clase Base; en Java existe otro
mecanismo que permite llevar acabo diseños donde se parte de una Estructura o Cápsula.
• Los métodos definidos como abstract no contienen ningún tipo de código dentro de ellos,
inclusive no declaran ni llaves ({ }).
• Cuando es definido más de un método como abstract, es necesario que la Clase como tal sea
definida también como abstract.
La característica de hacer una Clase/Método abstract reside en que no puede ser generada una
instancia de la misma, este comportamiento se demuestra en el método principal (main)
• Aunque dentro del método sea generado un Arreglo de esta Clase abstracta, recuerde que un
arreglo es únicamente un contenedor de Objetos, esto permite que sea generado sin ningún error.
• Dentro de comentarios se encuentra la generación de una instancia del tipo Instrumento la cual
generaría un error al ser compilada la Clase.
-OBJETIVO
Crear una clase abstracta así como sus métodos e implementar sus clases derivadas con su propio
comportamiento.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-LUGAR
Sala de Cómputo
-SEMANA DE EJECUCIÓN
Semana 13
- MATERIAL Y EQUIPO
Equipo de cómputo
Eclipse
-DESARROLLO DE LA PRÁCTICA
Problemática.
Emplee las clases desarrolladas para la solución de la práctica 3 para realizar los ajustes
requeridos para ésta práctica.
Paso 1. Realice los siguientes cambios a la clase Base para declarar e implementar métodos
abstractos
a) Transforme la clase Figura Geométrica colocando la palabra reservada abstrac a la clase y
el método.
}
Void calcularPerimetro(){
// código para calcular el área correspondiente a la figura
}
}
Paso 3. Cree una clase Main que contenga el método principal main().
Paso 6. Genere un menú para que se puedan crear los tipos de figura de acuerdo a las solicitudes
del usuario, así mismo que se puedan asignar datos de acuerdo a lo que el usuario asigne, todo
esto se debe hacer manejando la entrada y salida estándar.
- EVALUACIÓN Y RESULTADOS
TOTAL 10
El alumno deberá presentar los códigos fuente generados para solucionar el problema y las
pantallas de resultado en un informe.
-REFERENCIAS
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
PRACTICA 9. ARREGLOS
-INTRODUCCIÓN
Los arreglos se pueden definir como objetos en los que podemos guardar más de una variable, es
decir, al tener un único arreglo, este puede guardar múltiples variables de acuerdo a su tamaño o
capacidad, es importante recordar que las variables guardadas deben ser del mismo tipo, por
ejemplo: Si tenemos un arreglo de tipo Numérico que puede almacenar 10 variables, solo podrá
almacenar 10 números diferentes, no otras variables como caracteres o Strings.
Un arreglo (array) es una colección de elementos del mismo tipo, que se almacenan en posiciones
consecutivas de memoria y reciben un nombre común. Para referirse a un determinado elemento
de un array se deberá utilizar un índice, que especifique su posición relativa en el array.
• Finita: Todo arreglo tiene un límite; es decir, debe determinarse cuál será el número máximo
de elementos que podrán formar parte del arreglo.
• Homogénea: Todos los elementos del arreglo deben ser del mismo tipo.
• Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el tercero,.... y el n-
ésimo elmento.
Declaración:
La estructura de declaración de un arreglo es la siguiente:
tipo_dedato [] nombre_variable;
tipo_dato [][] nombre_variable2;
• Lectura: este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno
de sus componentes
• Escritura: Consiste en asignarle un valor a cada elemento del arreglo.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Existen muchos algoritmos para la ordenación de elementos en arreglos, algunos de ellos son:
Selección directa
Este método consiste en seleccionar el elemento más pequeño de nuestra lista para colocarlo al
inicio y así excluirlo de la lista. Para ahorrar espacio, siempre que vayamos a colocar un elemento
en su posición correcta lo intercambiaremos por aquel que la esté ocupando en ese momento.
Este algoritmo consiste en partir el arreglo por la mitad, ordenar la mitad izquierda, ordenar la mitad
derecha y mezclar las dos mitades ordenadas en un array ordenado. Este último paso consiste en
ir comparando pares sucesivos de elementos (uno de cada mitad) y poniendo el valor más
pequeño en el siguiente hueco.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Específica(s):
Conoce y aplica programas que implementen el uso de arreglos para reconocerlos como una
herramienta para agrupar datos y facilitar la solución de problemas.
Genéricas:
• Capacidad de análisis y síntesis
• Habilidad para buscar y analizar información proveniente de fuentes diversas
• Solución de problemas
• Capacidad de aplicar los conocimientos en la práctica
• Capacidad de aprender.
-OBJETIVO
Crear aplicaciones que usen arreglos de diferentes dimensiones en la solución de problemas
entregando los códigos.
-LUGAR
Sala de cómputo.
-SEMANA DE EJECUCIÓN
Semana 13
- MATERIAL Y EQUIPO
Equipo de cómputo
Eclipse
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
- DESARROLLO DE LA PRÁCTICA
b) Realizar una calculadora de Arreglos que permita realizar las siguientes operaciones
1. Dado un arreglo de valores enteros ordenarlo utilizando dos métodos de ordenamiento
(burbuja, quicksort, etc).
2. Dada una matriz permita calcular el determinante
3. Dada una matriz obtener la matriz traspuesta.
4. Dada una matriz y un escalar realizar la multiplicación de ambos
Secuencia de la práctica
Paso 1. Crear la clase Practica9 con los atributos, constructores y métodos necesarios para
resolver la problemática planteada.
Paso 2. Declarar los arreglos y/o pasarlos como parámetros para los métodos que lo requieran
De la siguiente forma:
Declaración del arreglo de la problemática 1.
String caricaturas[][];
}
}
Para la problemática a escribir lo métodos contar y mostrar. El método mostrar debe desplegar el
nombre de la caricatura seguido de sus personajes como se muestra a continuación.
Para la problemática b escribir un método para cada acción solicitada con los parámetros
establecidos.
Paso 7. Escribir el método main que cree una instancia de la clase, llame los métodos escritos y
desplegarlos en pantalla, solicitar los valores al usuario y mandárselo a los métodos.
- EVALUACIÓN Y RESULTADOS
El alumno entregara un informe con la instalación del JDK y del IDE de acuerdo a los lineamientos
de informe técnico y sobre este se evaluará:
TOTAL 10
El puntaje será divido de cada criterio equivale a la realización en ambos sistemas operativos
(LINUX y WINDOWS), en caso de solo presentar evidencia en un solo sistema operativo éste será
dividido entre dos. El alumno deberá presentar los códigos escritos.
-REFERENCIAS
Bonaparte, U. J. (2012). Proyectos UML Diagramas de clases y aplicaciones JAV en NetBeans 6.9.1.
Tucumán Argentina: Editorial de la Universidad Tecnológica Nacional.
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-INTRODUCCIÓN
Un Flujo de E/S representa una fuente de entrada y un destino de salida. Un flujo puede
representar muchos tipos diferentes de fuentes y destinos, incluyendo archivos de disco,
dispositivos, otros programas y arreglos de memoria.
Los flujos soportan muchos tipos diferentes de datos, incluyendo bytes simples, tipos primitivos de
datos, caracteres localizados, y objetos. Algunos flujos simplemente pasan datos, otros manipulan
y transforman datos en formas útiles.
No importa cómo trabajan internamente; todos los flujos presentan el mismo modelo simple a los
programas que los usan: un flujo es una secuencia de datos. Un programa usa un flujo de entrada
para leer datos desde una fuente, o artículo a la vez:
Un programa usa un flujo de salida para escribir datos a su destino, o artículo a la vez: Escribiendo
información desde un programa.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
La fuente y el destino de datos retratado arriba puede ser cualquier cosa que mantenga, genere o
consuma datos. Obviamente esto incluye archivos en disco, pero una fuente o destino puede
también ser otro programa, un dispositivo periférico, un socket de red, o un arreglo.
Normalmente, cuando se codifica un programa, se hace con la intención de que ese programa
pueda interactuar con los usuarios del mismo, es decir, que el usuario pueda pedirle que realice
cosas y pueda suministrarle datos con los que se quiere que haga algo. Una vez introducidos los
datos y las órdenes, se espera que el programa manipule de alguna forma esos datos para
proporcionarnos una respuesta a lo solicitado.
Además, en muchas ocasiones interesa que el programa guarde los datos que se le han
introducido, de forma que si el programa termina los datos no se pierdan y puedan ser recuperados
en una sesión posterior. La forma más normal de hacer esto es mediante la utilización de ficheros
que se guardarán en un dispositivo de memoria no volátil (normalmente un disco).
A todas estas operaciones, que constituyen un flujo de información del programa con el exterior, se
les conoce como Entrada/Salida (E/S).
Existen dos tipos de E/S; la E/S estándar que se realiza con el terminal del usuario y la E/S a
través de fichero, en la que se trabaja con ficheros de disco.
Todas las operaciones de E/S en Java vienen proporcionadas por el paquete estándar de la API de
Java denominado java.io que incorpora interfaces, clases y excepciones para acceder a todo tipo
de ficheros. En este tutorial sólo se van a dar algunas pinceladas de la potencia de este paquete.
B. Entrada/Salida estándar
Aquí sólo trataremos la entrada/salida que se comunica con el usuario a través de la pantalla o de
la ventana del terminal.
Si creamos una applet no se utilizarán normalmente estas funciones, ya que su resultado se
mostrará en la ventana del terminal y no en la ventana de la applet. La ventana de la applet es una
ventana gráfica y para poder realizar una entrada o salida a través de ella será necesario utilizar el
AWT.
El acceso a la entrada y salida estándar es controlado por tres objetos que se crean
automáticamente al iniciar la aplicación: System.in, System.out y System.err
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
a.) System.in
Este objeto implementa la entrada estándar (normalmente el teclado). Los métodos que nos
proporciona para controlar la entrada son:
• read(): Devuelve el carácter que se ha introducido por el teclado leyéndolo del buffer de
entrada y lo elimina del buffer para que en la siguiente lectura sea leído el siguiente
carácter. Si no se ha introducido ningún carácter por el teclado devuelve el valor -1.
• skip(n): Ignora losn caracteres siguientes de la entrada.
b.) System.out
Este objeto implementa la salida estándar. Los métodos que nos proporciona para controlar la
salida son:
• print(a): Imprime a en la salida, donde a puede ser cualquier tipo básico Java ya que Java
hace su conversión automática a cadena.
• println(a): Es idéntico a print(a) salvo que con println() se imprime un salto de línea al final de
la impresión de a.
c.) System.err
Este objeto implementa la salida en caso de error. Normalmente esta salida es la pantalla o la
ventana del terminal como con System.out, pero puede ser interesante redirigirlo, por ejemplo
hacia un fichero, para diferenciar claramente ambos tipos de salidas.
Las funciones que ofrece este objeto son idénticas a las proporcionadas por System.out.
d.) Ejemplo
A continuación vemos un ejemplo del uso de estas funciones que acepta texto hasta que se pulsa
el retorno de carro e informa del número de caracteres introducidos.
import java.io.*;
class CuentaCaracteres {
int contador=0;
while(System.in.read()!='\n')
contador++;
c.) Generalidades
Para tratar con un fichero siempre hay que actuar de la misma manera:
1. Se abre el fichero.
Para ello hay que crear un objeto de la clase correspondiente al tipo de fichero que vamos a
manejar, y el tipo de acceso que vamos a utilizar:
TipoDeFichero obj = new TipoDeFichero( ruta );
Donde ruta es la ruta de disco en que se encuentra el fichero o un descriptor de fichero válido.
Este formato es válido, excepto para los objetos de la clase RandomAccessFile (acceso aleatorio),
para los que se ha de instanciar de la siguiente forma:
RandomAccessFile obj = new RandomAccessFile( ruta, modo );
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Donde modo es una cadena de texto que indica el modo en que se desea abrir el fichero; "r" para
sólo lectura o "rw" para lectura y escritura.
2. Se utiliza el fichero.
Para ello cada clase presenta diferentes métodos de acceso para escribir o leer en el fichero.
3. Gestión de excepciones (opcional, pero recomendada)
Se puede observar que todos los métodos que utilicen clases de este paquete deben tener en su
definición una cláusula throws IOException. Los métodos de estas clases pueden lanzar
excepciones de esta clase (o sus hijas) en el transcurso de su ejecución, y dichas excepciones
deben de ser capturadas y debidamente gestionadas para evitar problemas.
4. Se cierra el fichero y se destruye el objeto.
Para cerrar un fichero lo que hay que hacer es destruir el objeto. Esto se puede realizar de dos
formas, dejando que sea el recolector de basura de Java el que lo destruya cuando no lo necesite
(no se recomienda) o destruyendo el objeto explícitamente mediante el uso del procedimiento
close() del objeto:
obj.close()
class CreaCarta {
int c;
while( ( c=System.in.read() ) != -1 )
f.write( (char)c );
f.close();
}
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
import java.io.*;
class MuestraCarta {
int c;
while( ( c=f.read() ) != -1 )
System.out.print( (char)c );
f.close();
• void seek( long l ); Coloca el puntero del fichero en la posición indicada por l. Un fichero
siempre empieza en la posición 0.
• int skipBytes( int n ); Intenta saltar n bytes desde la posición actual.
• long length(); Devuelve la longitud del fichero.
• void setLength( long l); Establece a l el tamaño de este fichero.
• FileDescriptor getFD(); Devuelve el descriptor de este fichero.
Métodos de escritura
La escritura del fichero se realiza con una función que depende el tipo de datos que se desee
escribir.
• void write( byte b[], int ini, int len ); Escribe len caracteres del vector b.
• void write( int i ); Escribe la parte baja de i (un byte) en el flujo.
• void writeBoolean( boolean b ); Escribe el boolean b como un byte.
• void writeByte( int i ); Escribe i como un byte.
• void writeBytes( String s ); Escribe la cadena s tratada como bytes, no caracteres.
• void writeChar( int i ); Escribe i como 1 byte.
• void writeChars( String s ); Escribe la cadena s.
• void writeDouble( double d ); Convierte d a long y le escribe como 8 bytes.
• void writeFloat( float f ); Convierte f a entero y le escribe como 4 bytes.
• void writeInt( int i ); Escribe i como 4 bytes.
• void writeLong( long v ); Escribe v como 8 bytes.
• void writeShort( int i ); Escribe i como 2 bytes.
• void writeUTF( String s ); Escribe la cadena s utilizando la codificación UTF-8.
Los métodos que escriben números de más de un byte escriben el primero su parte alta.
Métodos de lectura
La lectura del fichero se realiza con una función que depende del tipo de datos que queremos leer.
• boolean readBoolean(); Lee un byte y devuelve false si vale 0 o true sino.
• byte readByte(); Lee y devuelve un byte.
• char readChar(); Lee y devuelve un caracter.
• double readDouble(); Lee 8 bytes, y devuelve un double.
• float readFloat(); Lee 4 bytes, y devuelve un float.
• void readFully( byte b[] ); Lee bytes del fichero y los almacena en un vector b.
• void readFully( byte b[], int ini, int len ); Lee len bytes del fichero y los almacena en un vector
b.
• int readInt(); Lee 4 bytes, y devuelve un int.
• long readLong(); Lee 8 bytes, y devuelve un long.
• short readShort(); Lee 2 bytes, y devuelve un short.
• int readUnsignedByte(); Lee 1 byte, y devuelve un valor de 0 a 255.
• int readUnsignedShort(); Lee 2 bytes, y devuelve un valor de 0 a 65535.
• String readUTF(); Lee una cadena codificada con el formato UTF-8.
• int skipBytes(int n); Salta n bytes del fichero.
Si no es posible la lectura devuelven –1.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
-OBJETIVO
Implementar aplicaciones orientadas a objetos que creen y manipulen archivos para guardar y
recuperar información
-LUGAR
Sala de Cómputo
-SEMANA DE EJECUCIÓN
Semana 12 y 13
- MATERIAL Y EQUIPO
Equipo de cómputo
Eclipse
-DESARROLLO DE LA PRÁCTICA
Problemáticas.
Caso 1.
Se sabe que a las 9 de la mañana la temperatura es de 12 grados, y durante la tarde desciende 15
grados hasta las 8 de la noche.
Tu trabajo es realizar un programa para que dados estos 4 valores indiques la temperatura
después de haber descendido.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Entrada:
EL programa recibirá n líneas que contendrán 4 valores enteros A, B, C, D, donde A es la hora
inicial, B es la temperatura inicial,
C es la temperatura de descenso y D es la hora final el programa terminará con 0.
Ejemplo
9 12 15 8
0
Salida:
La salida contendrá el valor de la temperatura al descenso en una línea que diga:
Ejemplo
La temperatura a las 8 de la noche es de -3 grados.
Caso 2.
Pedro es un niño muy inteligente y le gusta adivinar las edades de las personas, pero para poder
tener un margen de éxito pide a dos personas que le digan sus edades y cuál es la diferencia entre
ellas y con esto puede en menos de un minuto acertar la edad de cada uno.
Para hacer una prueba Juan y a Víctor le dicen que sus edades sumadas dan 84 y la diferencia de
edades entre ambos es de 8 inmediatamente Pedro les responde que uno tiene 46 y el otro 38,
asombrados ellos quieren tu ayuda para hacer un programa que permita realizar esto.
Entrada:
Como dato de entrada se proporcionará n líneas, cada una contendrá 2 valores P y Q, p
corresponde a la cantidad en años de dos personas y Q la diferencia en años, y un cero para
terminar el programa.
Ejemplo
45 3
24 2
0
Salida:
A la salida se espera por cada línea de entrada una línea que contenga las edades de las dos
personas.
Ejemplo
21 24
11 13
Ejercicio 3
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
Realizar un programa para que dado un número, lo divida en tres partes A, B, C que cumplan que
B es el tripe de A y 40 unidades mayor que C.
Entrada:
EL programa recibirá n líneas que contendrán valores enteros, la entrada finalizará con 0.
Ejemplo
65
352
198
0
La salida contendrá los valores de A, B y C separados por espacios en blanco.
Ejemplo
15 45 5
56 168 128
34 102 62
Paso 2. Escriba el método main y abra un flujo de entrada para leer de un archivo llamado
entrada.in las líneas de prueba.
Paso 3. Escriba un ciclo para invocar al método readCase, solveCase, print
Paso 4. Escriba el código para hacer funcional el método readCase
Paso 5. Escriba el código para hacer funcional el método solveCase
Paso 6. Escriba el código para hacer funcional el método print almacenando la información en un
archivo llamado “salida.out”
Paso 7. Escriba el código para manejar las excepciones derivadas del manejo de archivos
Paso 8. Compile y pruebe el código.
Paso 9. Realice los mismos pasos para los casos 2 y 3.
- EVALUACIÓN Y RESULTADOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1
TOTAL 10
El alumno deberá presentar los códigos fuente generados para solucionar el problema y las
pantallas de resultado en un informe.
-REFERENCIAS
-ANEXOS
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1