Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 150

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Programación Orientada a Objetos


Ingeniería en Tecnologías de la Información y Comunicaciones

a) Competencia general de la asignatura

Aplica el paradigma orientado a objetos para el desarrollo de aplicaciones que solucionen


problemas del entorno.

b) Aportación de la asignatura al perfil profesional

Esta asignatura aporta al perfil del egresado habilidades para analizar, modelar desarrollar
e implementar sistemas de información para la gestión de procesos y apoyo en la toma de
decisiones que aumenten la productividad y competitividad de las organizaciones utilizando
metodologías basadas en estándares internacionales.

La asignatura incluye los conceptos y metodología orientada a objetos que permiten la


creación y optimización de aplicaciones basadas en clases y objetos, que propicien un
desarrollo ágil a través de la reutilización de código y aplicación de control de errores.

Para cursar esta asignatura se requiere de conocimientos básicos y lógicos de


programación como las reglas de diagramación, pseudocódigo, uso de expresiones de
declaración, asignación, condicionales y estructuras cíclicas que son adquiridos en la
asignatura de Fundamentos de Programación.

Se relaciona con todas asignaturas posteriores en donde se apliquen metodologías de


programación.

c) Relación de la asignatura con otras del plan de estudios

 Estructura y Organización de Datos


 Programación II
 Programación WEB
 Todas las asignaturas que involucren programación.

d) Competencias específicas a desarrollar en la asignatura

1. Conoce y aplica la estructura de proyectos en un entorno de desarrollo para la solución de


problemas.
2. Comprende y aplica la estructura de clases para la creación de objetos y utiliza clases
predefinidas para facilitar el desarrollo de aplicaciones.
3. Comprende y aplica los diferentes tipos de métodos, tomando en cuenta el ámbito y tiempo
de vida de los datos durante la ejecución de un programa.
4. Comprende y aplica los conceptos de herencia y polimorfismo en programas que utilicen
clases base, clases derivadas, clases abstractas e interfaces.
5. Conoce y aplica programas que implementen el uso de arreglos para reconocerlos como
una herramienta para agrupar datos y facilitar la solución de problema.
6. Comprende y aplica programas que manipulen archivos de texto y binarios en función de
una problemática dada.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

e) Temas (unidades) descritas en el programa de estudios


f) Actividades de aprendizaje a realizar y su respectiva bibliografía

Temas y subtemas para desarrollar Actividades de aprendizaje


1. Entorno de desarrollo  Reconocer la estructura de un proyecto de
1.1. Estructura de un proyecto programación en un entorno de desarrollo a
1.2. Proceso de desarrollo de aplicaciones través de la elaboración de un esquema
1.2.1.Compilación gráfico.
1.2.2.Archivos que crea el entorno de  Aplicar las fases del proceso de desarrollo de
desarrollo aplicaciones en la resolución de ejercicios
1.2.3.Depuración  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.
2. Clases y objetos  Crear aplicaciones que solucionen
2.1. Definición de una clase problemas planteados por el docente que
2.2. Declaración de clases incluyan todos los conceptos del tema de
2.3. Miembros de una clase estudio.
2.4. Ámbito referente a una clase  Identificar los componentes de una clase y
2.5. Especificadores de acceso elaborar un esquema gráfico donde se
2.6. Creación de objetos describan.
2.7. Clases predefinidas  Identificar y crear clases que ameriten su
2.8. Definición, creación y reutilización de reutilización y a partir de ellas definir
paquetes/librerías paquetes.
2.9. Manejo de excepciones  Realizar prácticas de Programación.
 Desarrollar proyecto de la unidad.
3. Métodos  Investigar el concepto de método y definir su
3.1. Definición de un método. estructura en un esquema gráfico.
3.2. Estructura de un método.  Construir clases que solucionen problemas
3.3. Valor de retorno. planteados por el docente utilizando métodos
3.4. Declaración de un método. de cualquier tipo, entregar reporte.
3.4.1.De clase  Crear aplicaciones en donde el alumno utilice
3.4.2.De Instancia diferentes tipos de variable, argumentos y
3.5. Ámbito y tiempo de vida de variables. paso de parámetros, así como diferentes
3.6. Argumentos y paso de parámetros métodos constructores y destructores para la
3.7. Puntero this. creación y eliminación de objetos en diversas
3.8. Sobrecarga de métodos. clases observando.
3.9. Constructores y destructores  Crear aplicaciones donde se involucren
clases que hagan uso de sobrecarga de
métodos y exponer su funcionamiento.
 Realizar prácticas de Programación.
 Desarrollar proyecto de la unidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Temas y subtemas para desarrollar Actividades de aprendizaje


4. Herencia y polimorfismo  Conocer y manejar el concepto de herencia
4.1. Concepto de herencia y polimorfismo. y polimorfismo mediante un esquema
4.2. Definición de una clase base. gráfico.
4.3. Definición de una clase derivada.  Conocer y manejar la declaración de la
4.4. Clases abstractas. herencia y polimorfismo en un entorno de
4.5. Interfaces. desarrollo.
4.5.1.Definición  Conocer y manejar las clases base, clase
4.5.2.Implementación. derivada y clase abstractas.
4.5.3.Variables polimórficas  Conocer y manejar las variables de clase, así
4.6. Reutilización de la definición de como la reutilización de librerías.
paquetes/librerías  Conocer y manejar la declaración de las
interfases.
 Realizar prácticas de Programación.
 Desarrollar proyecto de la unidad.
5. Arreglos  Conocer y manejar conceptos de arreglo
5.1. Unidimensional unidimensional y multidimensional.
5.2. Multidimensionales  Conocer y manejar declaración de arreglos
unidimensionales y multidimensionales con
diferentes tipos de datos.
 Crear aplicaciones que usen arreglos de
diferentes dimensiones.
 Realizar prácticas de Programación.
 Desarrollar proyecto de la unidad.
6. Archivos  Identificar y aplicar las características de los
6.1. Definición de Archivos de texto y archivos de texto y binarios, así como su
archivos binarios. aplicación.
6.2. Operaciones básicas en archivos texto y  Desarrollar aplicaciones que usen archivos
binario. binarios que validen excepciones para la
6.3. Manejo de excepciones en archivos. solución de problemas.
 Realizar prácticas de Programación.
 Desarrollar proyecto de la unidad.

Bibliografía

1. Ceballos J. (2007) Java 2 Lenguaje y aplicaciones. España: Alfaomega.


2. Ceballos J. (2012) Microsoft C# -Curso de Programación. España: Alfaomega.
3. Dean J. y Dean R. (2009) Introducción a la programación con Java: McGraw Hill
4. Doyle, B (2013) C# Programming: From Problem Analysis to Program Design. Cengage
Learning
5. Eckel, B. (2009) Piensa en Java. España: Prentice Hall.
6. Froufe, A. (2008) Java 2 Manual de usuario y tutorial. España: Alfaomega
7. Groussard, T. (2011) Recursos Informáticos C#4 Los fundamentos del lenguaje- desarrollar
con visual estudio 2010. España: Eni Ediciones
8. Joyanes, L. y Zahonero, I. (2011) Programación en Java 6. España: McGraw Hill
9. Sierra, K. (2008) SCJP Sun Certified Programmer for Java 6. USA: McGraw Hill.
10. Wu T. (2008) Programación en Java. Introducción a la Programación Orientada a Objetos.
España: McGrawHill
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

g) Por tema:
• Criterios de evaluación
• Instrumentos de evaluación-valoración
• Evidencias a entregar
h) Calendarización del trabajo semestral

Fechas de Productos de aprendizaje

Evidencia de aprendizaje Indicadores de Alcance


Unidad
A B C D E F
1 2 3
5 pts. 5 pts. 5 pts. 5 pts. 5 pts. 5 pts.
El cuadro Constancia de El cuadro
Exposición del
(70 pts.) comparativo tiene Curso en Línea comparativo tiene
funcionamiento
Cuadro Comparativo de IDE’s logosde los IDE’s a edX, Google, costos de IDE’s
1 de un IDE
01/Sep/2023 color. Cursera comerciales.
Guía de
Rúbrica Registro de Evidencia de Registro de
Observación
realización participación realización
(20 pts.)
Práctica de
2 programación (30 pts.) Constancia de
(20 pts.)
21/Sep/2023 Proyecto 2 y 3 Curso en Línea
Trabajo del proyecto
Rúbrica 10 al 13 de Oct edX, Google,
2 y3
(20 pts.) 2023 Cursera
12 de Oct 2023
Práctica de Guía de Evidencia de
Lista de Observación
3 programación Observación participación
09/Oct/2023
Rúbrica

(30 pts.) Constancia de Entregar los


(20 pts.) Participación en
Proyecto (20 pts.) Explica problemas Curso en Línea trabajos en
Práctica de clase
30 y 31 Oct y 01 y Trabajo del proyecto propuestos edX, Google, Resolución de tiempo y forma
4 programación Registro de
03 de Nov 2023 01 Nov 2023 Diseñar opciones Guía de Cursera problemas Registro de
30/Oct/2023 Participación
Guía de Lista de Observación adicionales al Observación Evidencia de adicionales en la Entrega
Rúbrica
Observación proyecto 2 participación práctica de
Registro de 3 programación
realización 4 Registro de
(20 pts.) 5 Realización
Práctica de 6
5 programación
23/Nov/2023 (30 pts.) Proyecto en
Rúbrica Proyecto (20 pts.) beneficio de su
04 al 07 de Dic Trabajo del proyecto comunidad.
2023 06 de Dic 2023 01/Dic/2023
(20 pts.) Guía de Lista de Observación Registro de
Práctica de Observación Realización
6 programación
04/Dic/2023
Rúbrica

OBLIGATORIAS OPCIONALES

Otras Observaciones:

1. Entrega de Evidencias de Aprendizaje (Manual IDE y Practicas de Programación):

1ª Oportunidad: Se entregan en las fechas y horas señaladas en la plataforma


de educación a distancia. Si no se entrega en la fecha y hora
señalada, tiene 24 horas para entregarlo, pero sin el indicador
de alcance F.

2ª. Oportunidad: Una vez que se entregue el resultado de la 1ª oportunidad y si


la calificación es menor a 70, deberá presentar 2ª oportunidad
y tendrá 7 días naturales para entregarla.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

 Proyecto y Trabajo del proyecto

1ª Oportunidad: La exposición y los proyectos se expondrán en las fechas y


horas programadas-acordadas, mientras que los trabajos de
los proyectos se entregan en las fechas y horas señaladas en
la plataforma de educación a distancia. Si no se expone algún
proyecto y no se entrega su respectivo trabajo, deberá
presentarlos en 2ª Oportunidad.

2ª. Oportunidad: Una vez que se entregue el resultado de la 1ª oportunidad y si


la calificación es menor a 70, deberá presentar 2ª
Oportunidad. El proyecto como la entrega del trabajo de
proyecto se efectuarán al final del semestre en las fechas
programadas por la unidad Directiva.

Las Exposiciones, Proyectos y Trabajos del Proyecto se realizarán en equipos de


cinco integrantes.

2. Solicitud de Amistad a la cuenta de Facebook Arturo López Ponce


3. Solicitar que los agregue al grupo POO Ago-Dic 2023

XIV Congreso Internacional sobre Aplicación de Tecnologías de la Información y


Comunicaciones Avanzadas (ATICA 2023)
https://atica.web.uah.es/Atica2023/

REGISTRAR en
-Apartado CORREO ELECTRÓNICO: Su correo institucional (@aguascalientes.tecnm.mx)
-Apartado INSTITUCIÓN: ITA
-Apartado ACTIVIDAD: Estudiante
-Apartado DESEA PARTICIPAR EN EL CONGRESO COMO: Asistente
-Apartado FORMA DE PARTICIPACIÓN: Presencial

https://docs.google.com/forms/d/e/1FAIpQLSeZSaZJ8zeM6qmktGPeyXvMKShdmgwnKY
XWcsvT8DSU4wdGlw/viewform?pli=1
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

1. Entorno de desarrollo

Existen diversos IDEs (Integrated Development Environment/Entorno de Desarrollo


Integrado) para Java, entre los que se encuentran:

a) Eclipse
b) NetBeans
c) BlueJ
d) JBuilder
e) JCreator

1.1. Estructura de un proyecto

Instalación de NetBeans (SDK + IDE):

Instalación del SDK


(Software Development Kit/Grupo de Herramientas de Desarrollo de Software):
https://www.oracle.com/mx/java/technologies/downloads/#jdk20-windows

Seleccionar la plataforma a instalar como lo puede ser Linix, macOS o Windows. Existen
diferentes alternativas para bajarlo (Empacado .zip, instalador .exe y instalador MSI -
Microsoft Windows Installer-).

Video de como instalar Java: https://www.youtube.com/watch?v=81WQ7oSwIgU

Posteriormente se debe de instalar el IDE:


https://netbeans.apache.org/download/nb18/index.html
https://www.apache.org/dyn/closer.cgi/netbeans/netbeans-installers/18/Apache-NetBeans-18-
bin-windows-x64.exe
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Seleccione el sitio donde quiere bajarlo.

Instalación de NetBean: https://www.youtube.com/watch?v=atLtWnDhI3k

Ejecutar el IDE NetBeans:


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Crear proyectos en el IDE NetBeans:

1. Haga clic en el icono o Active el menú File y posteriormente seleccione

2. Y le mostrará la siguiente ventana:

3. En la sección Categories seleccione Java with Ant, y en la sección Projects


seleccione Java Application, posteriormente haga clic en botón Next y le mostrará
la siguiente ventana:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

4. Ingrese el nombre del proyecto, el cual se almacenará en la Project Location, con


el nombre de Project Name y para terminar haga clic en el botón Finish.
Sino cambió la Project Location, el proyecto se almacena por defecto en
Documents\NetBeansProjects\.

En la sección de proyecto aparecerá el nuevo proyecto organizado con la estructura


necesaria.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

1.2. Proceso de desarrollo de aplicaciones

1.2.1. Compilación

 Ejecuta el programa principal o active el menú Run y seleccione

 Shift + F6 (ejecuta el programa activo, siempre y cuando tenga main).

1.2.2. Archivos que crea el entorno de desarrollo

Los proyectos en NetBeans se encuentran estructurados en carpetas y archivos, en la


carpeta del proyecto tendrá la siguiente estructura:

 nbproject, contiene archivos propios de la administración del proyecto de


NetBeans.
 La carpeta src contiene los archivos fuente (.java) que se han escrito o que forman
parte del proyecto.

1.2.3. Depuración

La depuración (debug) permite examinar las aplicaciones para buscar errores, ya que
posibilita observar las líneas que se van ejecutando, así como los valores que van tomando
las variables en cada paso.

En NetBeans se tiene que establecer un punto de ruptura (breakpoints), esto se realiza


mediante el icono o en la ficha Debug del menú principal

1. Debug/
También pulsando con el botón derecho sobre un proyecto en explorador de proyectos y
seleccionar Debug. El programa se ejecuta hasta llegar al primer breakpoint.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Continuar ejecución (F8) Ejecuta una línea de código. Si la instrucción es una llamada
a un método, ejecuta el método sin entrar dentro del código del método.

Paso a paso (F7) Ejecuta una línea de código. Si la instrucción es una llamada a un
método, salta al método y continúa la ejecución por la primera línea del método.

Entra en el siguiente método (Ctrl + F7) Ejecuta una línea de código. Si la línea de
código actual se encuentra dentro de un método, se ejecutarán todas las instrucciones
queden del método y se vuelve a la instrucción desde la que se llamó al método.

Ejecuta hasta el cursor (F4) Se ejecuta el programa hasta la instrucción donde se


encuentra el cursor.

Continuar (F5) La ejecución del programa continúa hasta el siguiente breakpoint. Si no


existe un breakpoint se ejecuta hasta el final.

Finaliza sesión del depurador (Mayúsculas + F5). Termina la depuración del programa.

Indicador de Alcance 1.B.- Participación en clase.

Indicador de Alcance 1.C.- Exposición del funcionamiento de un IDE


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación
Asignatura: Programación Orientada a Objetos
Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Guía de observación de Exposición del Manual IDE

Instrucciones para el llenado del instrumento:


Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con
una “X” en la columna “Si” cuando el candidato cumpla con el desempeño correspondiente
y en la columna “No” cuando no realice las actividades señaladas.

Unidad: 1. Entorno de desarrollo

Tema: Indicador de Alcance 1.C.- Exposición del Manual IDE

Cumple
No. Al Inicio de la sesión: Valor Puntos Retroalimentación
Si No
1 Realiza su presentación mencionando su 5
nombre completo.
2 Menciona el indicador de alcance y la 5
descripción del problema a resolver.
Durante la sesión:
3 Maneja términos, conceptos y 30
conocimientos en su exposición de forma
correcta.
4 Explica la resolución del problema de forma 30
coherente y clara.
5 Interactúa con el grupo manteniendo 5
contacto visual durante la exposición.
6 Emplea un tono de voz adecuado durante la 5
exposición y sin utilizar muletillas.
7 Organiza y planea su presentación de 5
manera ordenada y planificada.
Cierre de la sesión:
8 Responde a las preguntas de forma 5
coherente y clara.
9 Cumple con el tiempo planeado para la 10
sesión: 6 a 10 minutos.
Puntuación Total

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Evidencia de Aprendizaje.- Elaboración de Manual IDE.

1ª Oportunidad
Realizar un cuadro comparativo de IDE’s actuales.

2ª Oportunidad
Investigar el funcionamiento de un IDE y elaborar un manual de uso que contenga, Menús, Estructura del proyecto,
Proceso de desarrollo de aplicaciones (Compilación, Archivos que crea el entorno de desarrollo y Depuración).

Criterios Excelente Notable Bueno Suficiente Insuficiente Retroalimentación


Presenta un Manual Presenta un Manual Presenta un Manual Presenta un Manual Presenta un Manual
con: con: con: con la explicación desorganizado y
1. Menús 1. Menús 1. Menús en general del confuso.
2. Creación de 2. Creación de 2. Estructura del funcionamiento del
proyectos proyectos proyecto IDE
3. Estructura del 3. Estructura del Proceso de
Desarrollo proyecto proyecto desarrollo de
4. Proceso de 4. Proceso de aplicaciones
desarrollo de desarrollo de Compilación
aplicaciones aplicaciones
a. Compilación Compilación
Depuración
Pts. 60 pts. 54 pts. 48 pts. 42 pts. 0 pts.

Indicador de Alcance 1.A.- El cuadro comparativo tiene logosde los IDE’s a color.

Indicador de Alcance 1.E.- El cuadro comparativo tiene costos de IDE’s comerciales.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Semestre: Ene-Jun 2023 Fecha:

Rúbrica Cuadro Comparativo de la Unidad 1


Instrucciones: Indique con una “X” en la intersección fila - columna las características mínimas que cumple el
proyecto entregado como evidencia, anote los puntos en cada criterio y súmelos.

Criterios Excelente Notable Bueno Suficiente Insuficiente Retroalimentación


Presenta una portada con: Presenta una portada con Presenta una portada con Presenta una portada con Presenta una portada con
1. Logo del TecNM y del seis de los conceptos del cinco de los conceptos del cuatro de los conceptos del menos de cuatro de los
ITA en la parte apartado excelente y sin apartado excelente y sin apartado excelente y sin conceptos mostrados en
superior. errores ortográficos. errores ortográficos. errores ortográficos. el apartado excelente o
2. Nombre del Instituto. tiene errores ortográficos
3. Nombre de la carrera. o No presenta portada.
4. Nombre de la materia
y hora.
Portada 5. Número de Unidad,
descripción de la
unidad y descripción
de la actividad.
6. Nombre y número de
control del estudiante.
7. Fecha.
Y sin errores ortográficos.
Pts. 5 pts. 4.5 pts. 4 pts. 3.5 pts. 0 pts.
Presenta introducción con Presenta introducción con Presenta una introducción Presenta una introducción Presenta una introducción
una explicación del cuadro una explicación del cuadro con una explicación del con una explicación del con una explicación del
comparativo sin errores comparativo sin errores cuadro comparativo sin cuadro comparativo con cuadro comparativo con
Introducción ortográficos en más de ortográficos en media errores ortográficos en dos o menos errores más de dos errores
media cuartilla. cuartilla. menos de media cuartilla. ortográficos en menos de ortográficos o No
media cuartilla. presenta introducción.
Pts. 10 pts. 9 pts. 8 pts. 7 pts. 0 pts.
Presenta un cuadro Presenta un cuadro Presenta un cuadro Presenta un cuadro Presenta un cuadro
comparativo con más comparativo con cinco comparativo con comparativo con tres comparativo con
de cinco IDE’s y con IDE’s y con cinco cuatro IDE’s y con IDE’s y con tres menos de tres IDE’s
más de cinco características (de las cuatro características características (de las y con menos de tres
Cuadro
características (de las que se incluyen: (de las que se que se incluyen: características.
Comparativo que se incluyen: Características del incluyen: Características del
Características del IDE, Versiones y Características del IDE y Versiones).
IDE, Versiones y Ventajas/Desventajas). IDE y Versiones).
Ventajas/Desventajas).
Pts. 60 pts. 54 pts. 48 pts. 42 pts. 0 pts.
Presenta más de cinco Presenta cinco obras Presenta cuatro obras Presenta menos de cuatro No presenta obras de
obras consultadas de consultadas de referencia consultadas de referencia obras consultadas o consulta.
Bibliografía y/o referencia utilizando el utilizando el estilo de utilizando el estilo de presenta obras
estilo de referencias APA. referencias APA. referencias APA. consultadas sin utilizar
Linkografía (Apellido, Nombre (Año). (Apellido, Nombre (Año). (Apellido, Nombre (Año). estilo de referencia APA.
Titulo. Editorial/Link) Titulo. Editorial/Link) Titulo. Editorial/Link)
Ordenada alfabéticamente. Ordenada alfabéticamente. Ordenada alfabéticamente.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Indicador de alcance A El Cuadro Comparativo tiene Logos y a color.
Indicador de alcance E El Cuadro Comparativo tiene costos de IDE’s comerciales.
Indicador de alcance F Entrega el Cuadro Comparativo en la fecha y hora señalada

Calificación
Calificación mínima aceptable: 70 pts.

En caso de obtener una calificación menor a 70, deberá presentar 2ª Oportunidad y solo
deberá enviar los criterios donde obtuvo cero puntos. Si dentro de esos criterios se
encuentran Cuadro Comparativo, deberá elaborar el Manual IDE marcado como 2ª
oportunidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2. Clases y objetos

Antes de que un programa pueda crear objetos de cualquier clase, ésta debe ser definida.
La definición de una clase significa que se debe dar un nombre, definir los atributos que
manejará, así como describir los métodos que realizarán las acciones o tareas de la clase.

2.1. Definición de una clase

En el Lenguaje Unificado de Modelado (UML, Unifield Modeling Language), una clase es


representada por un rectángulo que posee tres divisiones:

Nombre de la clase

Atributos

Comportamiento

En donde:

 La parte superior: Contiene el nombre de la Clase


 La intermedia: Contiene los atributos (o variables de instancia) que
caracterizan a la Clase.
 La parte Inferior: Contiene los métodos u operaciones, los cuales son la forma
como interactúa el objeto con su entorno.

La representación gráfica de un objeto en UML:


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2.2. Declaración de clases

public class NombreClase {


Declaración de variables miembro
Constructor(es)
Get’s
Set’s
Otros métodos
}

En general, las declaraciones de clase pueden incluir estos componentes:

a) Modificadores de acceso para las clases public y por defecto.


b) El nombre de la clase debe de comenzar con la primera letra en mayúscula, por
convención CamelCase1.
c) El cuerpo de la clase, entre llaves, { }.

2.3. Miembros de una clase

Los miembros de una clase pueden ser:

 Variables: A las variables de una clase se les conoce también como


características, atributos, variables de instancia o variables de clase.
 Constantes: Otro miembro que se puede declarar dentro de una clase son las
constantes.
 Métodos: También conocidos como comportamiento o métodos de clase o
funciones.

2.4. Ámbito referente a una clase

El ámbito determina en qué partes del programa una entidad puede ser usada y es aplicable
principalmente a las variables declaradas en las clases.

Si una variable es declarada dentro de un bloque (método/función/procedimiento), ésta será


válida solo dentro de ese bloque y se destruirá al terminar el bloque. Adicionalmente, la
variable no podrá verse ni usarse fuera del bloque (en el exterior del bloque). La variable
dentro del bloque es una variable local y solo tiene alcance dentro del bloque que se creó,
una variable definida fuera de cualquier bloque es una variable global y cualquier bloque
puede acceder a ella y modificarla.

1
CamelCase es un estilo de escritura que se aplica a frases o palabras compuestas. El nombre se debe a que las mayúsculas a lo largo de una palabra en CamelCase
se asemejan a las jorobas de un camello. El nombre CamelCase se podría traducir como Mayúsculas/Minúsculas Camello.

Existen dos tipos de CamelCase:


 UpperCamelCase, cuando la primera letra de cada una de las palabras es mayúscula. Ejemplo: EjemploDeUpperCamelCase.
 lowerCamelCase, igual que la anterior con la excepción de que la primera letra es minúscula. Ejemplo: ejemploDeLowerCamelCase.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2.5. Especificadores de acceso

Atributos y Métodos:

Atributos:

Los atributos o características de una Clase pueden ser de tres tipos, los que definen el
grado de comunicación y visibilidad de ellos con el entorno, estos son:

 public (+): Indica que el atributo será visible tanto dentro como fuera de la clase,
es decir, es accesible desde todos lados.
 private (-): Indica que el atributo sólo será accesible desde dentro de la clase (sólo
sus métodos lo pueden accesar).
 protected (#): Indica que el atributo no será accesible desde fuera de la clase, pero si
podrá ser accesado por métodos de la clase además de las subclases
que se deriven (herencia).
 defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por defecto,
esto significa que la variable es accesible a todas las clases contenidas
en el mismo paquete.

Métodos:

Cada método tiene asociado un tipo que se utiliza para controlar el acceso al método. Entre
estos se encuentra:

 public (+): Indica que el método será visible tanto dentro como fuera de la clase,
es decir, es accesible desde todos lados.
 private (-): Indica que el método sólo será accesible desde dentro de la clase (sólo
otros métodos de la clase lo pueden accesar).
 protected (#): Indica que el método no será accesible desde fuera de la clase, pero si
podrá ser accesado por métodos de la clase además de métodos de
las subclases que se deriven (herencia).
 defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por defecto,
esto significa que el método es accesible a todas las clases contenidas
en el mismo paquete.
Modificador Clase Package Subclase Todos

public Sí Sí Sí Sí
private Sí No No No
protected Sí Sí Sí No
por defecto Sí Sí No No
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

En la siguiente tabla presentamos los 8 tipos de dato primitivos de Java, el número de bits
que ocupan y el rango de valores que pueden tomar.

Tipo Tamaño en bits Rango de valores


true o false Nota: El No. de bits puede variar según la
boolean 1 plataforma
char 16 ‘\u0000’ hasta ‘\uFFFF' Conjunto Unicode de ISO
–128 a +127
byte 8
–27 a 27 – 1
–32,768 a +32,767
short 16
–215 a 215 – 1
–2,147,483,648 a +2,147,483,647
int 32
–231 a 231 – 1
–9,223,372,036,854,775,808 a
long 64 +9,223,372,036,854,775,807
–263 a 263 – 1
±3.4028234663852886E+38 hasta
float 32
±1.40129846432481707E-45
±1.797693134862157E+308 hasta
double 64
±4.94065645841246544E-324

2.6. Creación de objetos

Al proceso de crear objetos se le llama instanciación. Y se puede realizar en dos


instrucciones o en una sola:

1ª.- Primero se declara la referencia al objeto:

NombreDeClase identificadorObjeto;

Posteriormente se instancia el objeto:

identificadorObjeto = new NombreDeClase(Lista de Argumentos);

2ª.- Declarar la referencia y realizar la instanciación en una sola línea:

NombreDeClase identificadorObjeto = new NombreDeClase(Lista de Argumentos);

Ejercicio 2.1: Elabore una clase llamada Fecha, con tres variables miembro tipo int, que
representan el día, el mes y el año, el constructor por defecto inicializa las variables con 1
para el día, 1 para el mes y 1900 para el año, el constructor alternativo contara con tres
parámetros, Set’s y Get’s, además se sobre carga el método toString el cual regresa la
fecha bajo el formato dd/mm/aaaa (para lograr esto utilice la clase DecimalFormat que se
encuentra en el paquete java.text).

La clase principal Ejemplo_Fecha se deben de instanciar dos objetos (fechaInicial y


fechaNacimiento), al crear el objeto fechaInicial invoca al constructor por defecto, mientras
que el objeto fechaNacimiento capture de los datos desde teclado e instáncielo mediante el
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

constructor alternativo con los valores: 23 para el día, 1 para el mes y 2023 para el año y
muestre en pantalla los dos objetos. Posteriormente modifique los varores del primer objeto
por medio de sus set’s capturando los datos desde el teclado. Y finalmente, despliege los
valores de forma individual utilizando sus correspondientes get’s.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clase Principal
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 2.2: Elabore una clase llamada Árbol, con dos variables miembro, la primera se
llamará “Tipo” que representa el tipo de Árbol (Naranjo, Manzano, Pino, etc.) y Fruto
(Naranja, Manzana, Sin Fruto, etc.). Con dos constructores, el por defecto le pondrá los
valores de “Sin Tipo” a la variable Tipo y “Sin Fruto” a la variable Fruto, el constructor
alternativo se le mandaran dos parámetros que serán asignados a Tipo y Fruto, además
deberá tener los métodos Set’s y Get’s; la clase principal se debe de llamar Ejemplo_Arbol,
instancie dos objetos, el primero con el constructor por defecto, el segundo con el
constructor alternativa, los valores tendrán que ser capturados y finalmente despliegue
contenido en pantalla de cada objeto.

Ejercicio 2.3: Elabore una clase llamada Hora, con tres variables miembro, Horas, Minutos
y Segundos. Contará con cuatro constructores, el constructor por defecto le pondrá los
valores cero a las tres variables, el primer constructor alternativo recibirá un valor y se lo
asignará a las horas, mientras que a minutos y segundo le asignara cero, el siguiente
constructor alternativo recibirá dos parámetros los cuales se asignarán a las variables hora
y minutos; mientras que a segundos le podrá cero, al tercer constructor alternativo recibirá
tres parámetros los cuales se asignarán a horas, minutos y segundos, también debe de
tener los métodos Set’s y Get’s. Además, debe sobrecargara el método toString el cual
regresara los valores almacenados bajo el formato HH:MM:SS. La clase principal se debe
de llamar Ejemplo_Hora y deben instanciar cuatro objetos (cada uno creado con un
constructor diferente) y desplegando el contenido de los objetos en pantalla.

Ejercicio 2.4: Elabore una clase llamada Libro.

Ejercicio 2.5: Elabore una clase llamada Alumno.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2.7. Clases predefinidas

Clases contenedoras o wrappers

En Java existen una serie de clases predefinidas equivalentes a los tipos primitivos
denominadas wrappers, clases contenedoras o envoltorios. El identificador de cada una de
estas clases es el mismo que el del tipo primitivo correspondiente, pero con la letra inicial
en mayúsculas (salvo int - Integer y char - Character). Cada una de estas clases declaran
un conjunto de métodos de gran utilidad.

Tipo primitivo Clase contenedora

boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

Boolean.- La clase booleana ajusta un valor del booleano de tipo primitivo en un objeto. Un
objeto de tipo Boolean contiene un único campo cuyo tipo es booleano. Además, esta clase
proporciona muchos métodos para convertir un valor booleano en un String y un String en
un booleano, así como otras constantes y métodos útiles cuando se trata de un booleano.

Campos Descripción

El objeto Boolean correspondiente al valor


static Boolean FALSE
falso.

El objeto Boolean correspondiente al valor


static Boolean TRUE
verdadero.

Métodos Descripción

Boolean(boolean b) Crea un objeto Boolean con el valor


determinado por el parámetro b.

Boolean(String s) Crea un objeto Booleano con el valor


determinado por la cadena s, si es “true” será
verdadero, en cualquier otro caso será “falso”.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

boolean booleanValue() Devuelve el valor de este objeto booleano


como un valor primitivo.

static int compare(boolean x, boolean y) Compara dos valores booleanos x y y


 0 si x == y
 < 0 si x <y
 > 0 si x > y

int compareTo(Boolean otroBoolean) Compara esta instancia Boolean con


otroBoolean y regresa un entero tal que:
 0 si instancia == otroBoolean
 < 0 si instancia < otroBoolean
 > 0 si instancia > otroBolean

boolean equals(Object obj) Devuelve verdadero si y solo si el parámetro


no es nulo y es un objeto tipo Boolean que
contiene el mismo valor almacenado en la
instancia.

static boolean parseBoolean(String s) Convierte el parámetro s en un valor primitivo


booleano, si es “true” será verdadero, en
cualquier otro caso será “falso”.

String toString() Devuelve un objeto String que representa el


valor almacenado del tipo Boolean.

static String toString(boolean b) Devuelve un objeto String que representa el


valor especificado por b.

static Boolean valueOf(boolean b) Devuelve una instancia Boolean que


representa el valor booleano especificado por
b.

static Boolean valueOf(String s) Devuelve un Boolean con un valor


representado por la cadena especificada por s,
si es “true” será verdadero, el cualquier otro
caso será “falso”.

Character.- La clase Character envuelve un valor del tipo primitivo char en un objeto. Un
objeto de tipo Carácter contiene un solo valor cuyo tipo es char. Además, esta clase
proporciona varios métodos para determinar las características del carácter según varias
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

categorías (letra mayúscula, minúscula, dígito, etc.) o para convertir el carácter en de


mayúscula a minúscula y viceversa.

Métodos Descripción

Crea un objeto Character con el valor


Character(char ch)
determinado por el parámetro ch.

Regresa el valor almacenado en el objeto


char charValue()
Character.

Compara los caracteres x y y


 0 si x == y
static int compare(char x, char y)
 < 0 si x <y
 > 0 si x > y

Compara esta instancia Character con


otroCharacter y regresa un entero tal que:
int compareTo(Character otroCharacter)  0 si instancia == otroCharacter
 < 0 si instancia < otroCharacter
 > 0 si instancia > otroBolean

Devuelve verdadero si y solo si el parámetro


no es nulo y es un objeto tipo Character que
boolean equals(Object obj)
contiene el mismo valor almacenado en la
instancia.

Devuelve verdadero si el parámetro ch es un


static boolean isDigit(char ch)
dígito, falso en caso contrario.

Devuelve verdadero si el parámetro ch es una


static boolean isLetter(char ch)
letra, falso en caso contrario.

Devuelve verdadero si el parámetro ch es una


static boolean isLowerCase(char ch)
letra minúscula, falso en caso contrario.

Devuelve verdadero si el parámetro ch es una


static boolean isUpperCase(char ch)
letra mayúscula, falso en caso contrario.

Devuelve verdadero si el parámetro ch es un


static boolean isWhitespace(char ch)
espacio en blanco, falso en caso contrario.

static char toLowerCase(char ch) Devuelve el parámetro ch en minúscula.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

static char toUpperCase(char ch) Devuelve el parámetro ch en mayúscula.

Devuelve la instancia almacenada como un


String toString()
string.

static String toString(char ch) Devuelve el parámetro ch como un string.

Devuelve un objeto tipo Character con el valor


static Character valueOf(char ch)
especificado en el parámetro ch.

Byte/Short/Integer/Long.- La clase Byte/Short/Integer/Long envuelve un valor del tipo


primitivo byte/short/int/long en un objeto. Un objeto de tipo Byte/Short/Integer/Long contiene
un solo valor cuyo tipo es byte/short/int/long. Además, esta clase proporciona varios
métodos convertir un byte/short/int/long en un String y un String en un byte/short/int/long,
así como otras constantes y métodos útiles cuando se trata de un byte/short/int/long.

Campos Descripción

Constante que contiene el valor máximo que


static int MAX_VALUE
puede tener byte 27-1, short 215-1, int, 231-1

Constante que contiene el valor máximo que


static long MAX_VALUE
puede tener long 263-1

Constante que contiene el valor mínimo que


static int MIN_VALUE
puede tener byte -27, short -215, int, -231

Constante que contiene el valor mínimo que


static long MIN_VALUE
puede tener long -263

La cantidad de bits utilizados para representar


static int SIZE un valor byte/short/int/long en la forma
binaria.

Métodos Descripción

Byte(byte valor)
Crea un objeto Byte/Short/Integer/Long con el
Short (short valor)
valor determinado por el parámetro valor.
Integer(int valor)
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

Long(long valor)

Byte(String s)
Short (String s) Crea un objeto Byte/Short/Integer/Long con el
Integer(String s) valor determinado por el parámetro string s.
Long(String s)

byte byteValue()
Devuelve el valor almacenado en el objeto
short shortValue()
Byte/Short/Integer/Long como un dato
int intValue()
primitivo tipo byte/short/int/long.
long longValue()

static int compare(byte x, byte y) Compara los números x y y


static int compare(short x, short y)  0 si x == y
static int compare(int x, int y)  < 0 si x <y
static int compare(long x, long y)  > 0 si x > y

Compara la instancia Byte/Short/Integer/Long


int compareTo(Byte otro) con otro Byte/Short/Integer/Long y regresa un
int compareTo(Short otro) entero tal que:
int compareTo(Integer otro)  0 si instancia == otro
int compareTo(Long otro)  < 0 si instancia < otro
 > 0 si instancia > otro

static byte parseByte(String s)


Convierte el parámetro string s en un valor
static short parseShort(Srtring s)
numérico del tipo primitivo
static int parseInt(Srtring s)
byte/short/integer/long.
static long parseLong(Srtring s)

Devuelve la instancia almacenada como un


String toString()
string.

static String toString(byte valor)


static String toString(short valor) Devuelve el parámetro valor como dato tipo
static String toString(int valor) string.
static String toString(long valor)

static Byte valueOf(byte valor)


Devuelve un objeto tipo
static Short valueOf(short valor)
Byte/Short/Integer/Long con el valor
static Integer valueOf(int valor)
especificado en el parámetro valor.
static Long valueOf(long valor)
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Float/Double.- La clase Float/Double envuelve un valor del tipo primitivo float/double en un


objeto. Un objeto de tipo Float/Double contiene un solo valor cuyo tipo es float/double.
Además, esta clase proporciona varios métodos convertir un float/double en un String y un
String en un float/double, así como otras constantes y métodos útiles cuando se trata de un
float/double.

Campos Descripción

Exponente máximo que puede tener una


static int MAX_EXPONENT
variable tipo float/double.

Exponente mínimo que puede tener una


static int MIN_EXPONENT
variable tipo float/double.

Constante que contiene el valor máximo que


static float MAX_VALUE puede almacenar un dato tipo float (2-2-
23
)·2127.

Constante que contiene el valor máximo que


static double MAX_VALUE puede almacenar un dato tipo double
(2-2-52)·21023.

Constante que contiene el valor mínimo que


static float MIN_VALUE
puede almacenar un dato tipo float 2-149.

Constante que contiene el valor mínimo que


static double MIN_VALUE
puede almacenar un dato tipo double 2-1074.

La cantidad de bits utilizados para representar


static int Size
un valor float/double en la forma binaria.

Métodos Descripción

Float(float valor)
Crea un objeto Float/Double con el valor
Float(double valor)
determinado por el parámetro valor.
Double(double valor)

Float(String s) Crea un objeto Float/Double con el valor


Double(String s) determinado por el parámetro string s.

Devuelve el valor almacenado en el objeto


float floatValue()
Float/Double como un dato primitivo tipo
double doubleValue()
float/double.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

Compara los números x y y


static int compare(float x, float y)  0 si x == y
static int compare(double x, double y)  < 0 si x <y
 > 0 si x > y

Compara la instancia Float/Double con otro


Float/Double y regresa un entero tal que:
int compareTo(Float otro)
 0 si instancia == otro
int compareTo(Double otro)
 < 0 si instancia < otro
 > 0 si instancia > otro

static float parseFloat(String s) Convierte el parámetro string s en un valor


static double parseDouble(Srtring s) numérico del tipo primitivo float/double.

Devuelve la instancia almacenada como un


String toString()
string.

static String toString(float valor) Devuelve el parámetro valor como dato tipo
static String toString(double valor) string.

static Float valueOf(float valor) Devuelve un objeto tipo Float/Double con el


static Double valueOf(double valor) valor especificado en el parámetro valor.

Ejercicio 2.6: Elabore un programa que lea de teclado datos tipo: boolean, char, byte, int,
long, float y double y cree con el su correspondiente objeto tipo envoltorio Boolean,
Character, Byte, Short, Integer, Long, Float y Double; y los imprima de la siguiente forma:

Boolean = Verdadero/Falso
Character = Letra/Digito/Espacio en blanco/Otro, si es una letra indicar si es:
Mayúscula o Minúscula (en la misma línea anterior).
Byte MIN_VALUE <= valorByte <= MAX_VALUE, Bits = SIZE.
Short MIN_VALUE <= valorShort <= MAX_VALUE, Bits = SIZE.
Integer MIN_VALUE <= valorInt <= MAX_VALUE, Bits = SIZE.
Long MIN_VALUE <= valorLong <= MAX_VALUE, Bits = SIZE.
Float MIN_VALUE <= valorFloat <= MAX_VALUE, Bits = SIZE.
Double MIN_VALUE <= valorDouble <= MAX_VALUE, Bits = SIZE.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clase Math

La Clase Math proporciona una gran variedad de métodos matemáticos al igual que algunas
constantes útiles.

Campos Descripción

Constante e: 2.7182818284590452354 del


final static double E
logaritmo natural.

final static double PI Constante pi: 3.14159265358979323846

Métodos Descripción

static double abs(double d)


static float abs(float f)
Regresa el valor absoluto especificado.
static long abs(long l)
static int abs(int i)

Regresa el inverso del coseno del ángulo


static double acos(double d)
especificado en radianes.

Regresa el inverso del seno del ángulo


static double asin(double d)
especificado en radianes.

Regresa el inverso de la tangente del


static double atan(double d)
número especificado.

Regresa el ángulo definido por las


static double atan2(double d1, double d2)
coordenadas rectangulares (d1, d2)
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

Regresa el coseno del ángulo especificado en


radianes.
static double cos(double d) double angulo = 45.0 * Math.PI/180.0;
System.out.println("cos(" + angulo + ") es " +
Math.cos(angulo));

Regresa el seno del ángulo especificado en


radianes.
static double sin(double d) double angulo = 45.0 * Math.PI/180.0;
System.out.println("sen(" + angulo + ") es " +
Math.sen(angulo));

Regresa la tangente del ángulo especificado


en radianes.
static double tan(double d) double angulo = 45.0 * Math.PI/180.0;
System.out.println("tan(" + angulo + ") es " +
Math.tan(angulo));

Regresa ed. Ejemplo:


System.out.println("exp(1.0) es " +
Math.exp(1.0));
static double exp(double d) System.out.println("exp(10.0) es " +
Math.exp(10.0));
System.out.println("exp(0.0) es " +
Math.exp(0.0));

Regresa el logaritmo natural de d (base e).


Ejemplo:
System.out.println("log(1.0) es " +
static double log(double d) Math.log(1.0));
System.out.println("log(10.0) es " +
Math.log(10.0));
System.out.println("log(Math.E) es " +
Math.log(Math.E));

static double max(double d1, double d2) Regresa el valor más grande. Ejemplo:
static float max(float f1, float f2)
Math.max(2.3,12.7) 12.7
static long max(long l1, long l2)
static int max(int i1, int i2) Math.max(-2.3,-12.7) -2.3

static double min(double d1, double d2) Regresa el valor más pequeño. Ejemplo:
static float min(float f1, float f2)
static long min(long l1, long l2)
Math.min(2.3,12.7) 2.3
static int min(int i1, int i2) Math.min(-2.3,-12.7) -12.7

Regresa la raíz cuadrada del valor r


static double sqrt(double r)
especificado. Math.sqrt(25) 5.0

static double pow(double base, double exp) Regresa baseexp. Ejemplo:


System.out.println("pow(10.0, 3.5) es " +
throws AritmeticException Math.pow(10.0,3.5));
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción
Regresa el argumento de a redondeado al
static long round(double a) valor más cercano.
System.out.println("round(4.4) es " +
static int round(float a) Math.round(4.4));
System.out.println("round(4.4) es " +
Math.round(5.5f));

Regresa un número aleatorio comprendido


entre 0.0 y 1.0. 0.0 <= Math.random() <= 1.0
static double random() System.out.println("Número aleatorio: " +
Math.random());
System.out.println("Otro número aleatorio: " +
Math.random());

Función
Significado Ejemplo de uso Resultado
matemática
abs Valor absoluto double x = Math.abs(-2.3); x = 2.3;
atan Arcotangente double x = Math.atan(1); x = 0.78539816339744;
sin Seno double x = Math.sin(0.5); x = 0.4794255386042;
cos Coseno double x = Math.cos(0.5); x = 0.87758256189037;
tan Tangente double x = Math.tan(0.5); x = 0.54630248984379;
exp Exponenciación double x = Math.exp(1); x = 2.71828182845904;
neperiana
log Logaritmo neperiano double x = x = 0.99960193833500;
Math.log(2.7172);
pow Potencia double x = Math.pow(2,3); x = 8.0;
round Redondeo double x = Math.round(2.5); x = 3;
random Número aleatorio double x = Math.ramdom(); x = 0.20614522323378;
max Número máximo double x = max(12.5, 3.3); x = 12.5;
min Número mínimo double x = min(12.5, 3.3); x = 3.3

Ejercicio 2.7: El siguiente programa genera 10 números aleatorios, además cada valor
generado lo transforma en un número entre 100 y 999 por medio de cálculos; y
posteriormente los imprime.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clase Random Instancia que generar una secuencia de números pseudoaleatorios. Utiliza
una semilla de 48 bits, que se modifica usando una fórmula congruente
lineal.

Métodos Descripción

Crea una instancia generadora de


Random()
números aleatorios.

Crea una instancia generadora de


Random(long semilla)
números aleatorios utilizando la semilla.

Devuelve el siguiente valor aleatorio tipo


boolean nextBoolean()
booleano.

Genera números aleatorios tipo bytes y los


void nextBytes(byte[] bytes) coloca en un arreglo de bytes
proporcionado por el usuario.

Devuelve el siguiente valor aleatorio tipo


float nextFloat()
float/double que se encontrará entre 0.0 y
double nextDouble()
1.0.

int nextInt() Devuelve el siguiente valor aleatorio tipo


long nextLong() int/long.

Devuelve un valor aleatorio tipo int cuyo


int nextInt(int n)
valor esta entre 0 y n-1.

Ejercicio 2.8: El siguiente programa genera 10 números aleatorios mediante un objeto tipo
Random, además cada valor generado lo transforma en un número entre 100 y 999 por
medio de cálculos; y posteriormente los imprime.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clase String La Clase String proporciona los mecanismos para el manejo de cadenas.
Ya que no se puede cambiar el valor de un String una vez que se ha
creado, esta clase se usa principalmente para analizar, manipular y
obtener los valores de las cadenas. Aunque hay métodos que permiten
modificar y añadir al valor de la cadena, estos métodos no modifican el
String en sí, sino que regresan un nuevo String con los valores deseado.

Métodos Descripción

String() Crea un Objeto String.

Crea un Objeto String basado en el


String(char ch[])
arreglo ch[].

Crea un Objeto String con el valor s


String(String s)
especificado como parámetro.

Regresa el carácter que se encuentra en


char charAt(int pos)
la posición pos. Indexación cero.

Regresa la concatenación del String y el


String concat(String s)
valor s especificado como parámetro.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

Regresa un int donde:


 0 si String == otroString
int compareTo(String otroString)
 < 0 si String < otroString
 > 0 si String > otroString

Regresa true si otroObjeto es String y


boolean equals(Object otroObjeto)
tiene el mismo valor que el del objeto.

Compara el String con otroString sin


boolean equalsIgnoreCase(String OtroString)
importar las mayúsculas y minúsculas.

int length() Regresa la longitud del String

Regresa la posición donde se encuentra


int indexOf(String str) str en el String, en caso de no encontrarlo
regresa -1.

Regresa la posición donde se encuentra str en


int indexOf(String str, int ini) el String comenzando en la posición ini.

Regresa la primera posición donde se


int indexOf(char ch)
encuentra ch en el String.

Regresa la primera posición donde se


int indexOf(char ch, int ini) encuentra ch en el String comenzando en
la posición ini.

Regresa la última posición donde se


int lastIndexOf(String str)
encuentra str en el String.

Regresa la última posición donde se


int lastIndexOf(String str, int ini) encuentra str en el String que se
encuentre antes de la posición ini.

Remplaza todos los caracteres viejoch por


String replace(char viejoch, char nuevoch)
el carácter nuevoch.

Regresa una subcadena desde inicio


String substring(int inicio, int fin)
hasta fin.

Regresa una subcadena desde inicio


String substring(int inicio)
hasta final de la cadena.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

String toLowerCase() Regresa el valor del String en minúsculas

String toString() Regresa el valor del String.

String toUpperCase() Regresa el valor del String en mayúsculas.

Regresa la String sin los espacios a la izq


String trim()
y der.

static String valueOf(double d)


static String valueOf(float f)
static String valueOf(long l) Regresa un String que contiene el valor
static String valueOf(int i) del tipo de dato especificado.
static String valueOf(char ch)
static String valueOf(boolean b)

Regresa un String que representa una


Static String valueOf(Object obj)
cadena del Object.

Ejercicio 2.9: Elabore un programa que lea su nombre y lo despliegue por palabra.

Indicador de Alcance 2.C.- Explica problemas propuestos

Ejercicio 2.10: Elabore un programa que lea una oración y después una palabra e indique
si la palabra está contenida en la oración.

Ejercicio 2.11: Elabore un programa que lea su nombre, ponga una letra mayúscula en
cada palabra y las demás en minúsculas.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación
Asignatura: Programación Orientada a Objetos
Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Guía de observación de explicación de problemas propuestos

Instrucciones para el llenado del instrumento:


Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con
una “X” en la columna “Si” cuando el candidato cumpla con el desempeño correspondiente
y en la columna “No” cuando no realice las actividades señaladas.

Unidad: 2. Clases y objetos

Tema: Indicador de Alcance 2.C.- Explica problemas propuestos

Cumple
No. Al Inicio de la sesión: Valor Puntos Retroalimentación
Si No
1 Realiza su presentación mencionando su 5
nombre completo.
2 Menciona el indicador de alcance y la 5
descripción del problema a resolver.
Durante la sesión:
3 Maneja términos, conceptos y 30
conocimientos en su exposición de forma
correcta.
4 Explica la resolución del problema de forma 30
coherente y clara.
5 Interactúa con el grupo manteniendo 5
contacto visual durante la exposición.
6 Emplea un tono de voz adecuado durante la 5
exposición y sin utilizar muletillas.
7 Organiza y planea su presentación de 5
manera ordenada y planificada.
Cierre de la sesión:
8 Responde a las preguntas de forma 5
coherente y clara.
9 Cumple con el tiempo planeado para la 10
sesión: 6 a 10 minutos.
Puntuación Total

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2.8. Definición, creación y reutilización de paquetes/librerías

Un paquete en Java es lo que su nombre lo indica, un paquete o conjunto de clases,


lógicamente, que tienen cosas en común. Lógicamente un programado puede agruparlas
con o sin criterio, pero lo ideal es que se dediquen a funciones específicas. También los
paquetes definen una jerarquía de directorios, que permiten igualmente agrupas las clases,
cosa de desplegar los archivos más ordenadamente.

Cuando necesitamos librerías de java, estamos llamando a una clase específica o a todo
un paquete. Por ejemplo, cuando ponemos esto:

import System.io.*;

Estamos importando todas las clases del paquete System.io.

Por medio de la sentencia package se pueden establecer paquetes. Para poder hacer esto,
se tiene que poner dentro de los programas .java esta sentencia y el nombre del paquete
que pertenece la clase.

Por ejemplo, supongamos que las clases Lapiz.java, Goma.java y Boligrafo.java, se van a
organizar para formar el paquete Escritorio.

Ejercicio 2.12:

1. Cree un proyecto llamado Ejemplo_Escritorio


2. Cree un nuevo paquete llamado Escritorio
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

3. Dentro del paquete Escritorio, cree las tres siguientes clases:


package ejemplo_escritorio.Escritorio; package package ejemplo_escritorio.Escritorio;
ejemplo_escritorio.Escritorio;
public class Lapiz { public class Boligrafo {
public Lapiz () { public class Goma { public Boligrafo() {
System.out.println("Lápiz"); public Goma() { System.out.println("Bolígrafo");
} System.out.println("Goma"); }
} } }
}

Ahora para implementar estas clases debemos tener un programa que las utilice, por
ejemplo:

package ejemplo_escritorio;

import ejemplo_escritorio.Escritorio.*;

public class Ejemplo_Escritorio {


public static void main(String[] args) {
Lapiz l = new Lapiz();
Boligrafo b = new Boligrafo();
Goma g = new Goma();
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2.9. Manejo de excepciones

Una excepción en términos de lenguaje de programación es la indicación de un problema


que ocurre durante la ejecución de un programa. Sin embargo, la palabra excepción se
refiere que este problema ocurre con poca frecuencia generalmente cuando existe algún
dato o instrucción que no se apega al funcionamiento del programa por lo que se produce
un error. El manejo de excepciones permite al usuario crear aplicaciones tolerantes a fallas
y robustos (resistentes a errores) para controlar estas excepciones y que pueda seguir
ejecutando el programa sin verse afectado por el problema. En lenguaje Java estas
excepciones pueden manejarse con las clases que extienden el paquete Throwable de
manera directa o indirecta, pero existen diversos tipos de excepciones y formas para
manejarlas.

El término excepción es una forma corta da la frase “suceso excepcional” y puede definirse
de la siguiente forma:

Definición: Una excepción es un evento que ocurre durante la ejecución del programa
que interrumpe el flujo normal de las sentencias.

Las excepciones permiten definir un bloque de código que se “tratará” de ejecutar, y un


segundo bloque alternativo que se ejecuta si dentro del bloque anterior se “dispara” una
excepción.

Estos bloques se conocen como bloques try y catch. Las excepciones se manejan mediante
un bloque try-catch de la siguiente forma:

try {
// Código que puede generar una excepción


}

catch (TipoDeExcepcion excepcion) {


// Código que maneja el error


}

Ejercicio 2.13: El siguiente programa captura dos valores tipo entero (mediante la clase
JOptionPane), posteriormente calcula la división primer número (numerador) entre el
segundo número (denominador) y finalmente se despliega en pantalla los valores.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Al ejecutar el programa tenemos:

Qué pasaría si el valor del denominador es cero:

Ocurre una Excepción Aritmética división por cero.

También puede ocurrir un error al convertir el dato a entero por medio del método parseInt
de la clase envoltorio Integer.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ocurre un Excepcion de Formato Numérico.

Ejercicio 2.14: Para subsanar el problema del ejercicio 2.13, se utilizará Excepciones. En
el siguiente programa se utiliza el bloque try-catch, en la sección try se ponen las sentencias
que podría generar una excepción y tiene dos secciones catch, la primera que captura o
cacha la excepción de formato numérico (NumberFormatException) y la segunda es una
excepción aritmética o de división por cero (ArithmeticException). Donde utiliza un ciclo en
do-while, que en caso de que ocurra una excepción regrese a solicitar los datos hasta que
la variable Continuar sea igual a false.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clases de excepciones, excepciones predefinidas por el lenguaje.

En la siguiente figura se muestra una extracción de la jerarquía de herencia de la clase


Throwable:
Throwable

Exception Error …

RuntimeException IOException AWTError

ArithmeticException EOFException ThreadDeath

ArrayStoreException FileNotFoundException OutOfMemoryError

ClassCastException MalformedURLException …

… …
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

La clase Error está relacionada con errores de la máquina virtual de Java y no el código,
generalmente estos errores no dependen del programador por lo que no debe preocuparse
por tratarlos.

En la clase Exception se encuentran las excepciones RuntimeException, producidas por


errores de programación. El compilador de Java obliga a corregirlas.

En resumen, las excepciones son generadas de tres formas diferentes.

1. La máquina Virtual de Java puede generar una excepción como producto de un


error interno que está fuera de su control. Estas excepciones generalmente no
pueden ser manejadas por el programa.

2. Excepciones estándar: Son excepciones que deben ser manipuladas, se producen


cuando se ejecuta una división por cero o se trata de acceder a un arreglo con un
índice fuera de límites son generadas por errores en el código del programa.

3. El programador puede generar una excepción manualmente utilizando la


estructura Throw. Sin importar cómo se produjo la excepción, se maneja de la
misma forma.

Descripción de algunas excepciones:

ArithmeticException: Se produce cuando una condición aritmética excepcional, se


ha producido. Por ejemplo, un número entero "división por
cero" genera una instancia de esta clase.

ArrayStoreException: Lanzada para indicar que se ha intentado hacer para


almacenar el tipo equivocado de objeto en una matriz de
objetos. Por ejemplo, el código siguiente genera un
ArrayStoreException:

Objeto x [] = new String [3];


x [0] = new Integer (0);

ClassCastException: Lanzada para indicar que el código ha tratado de convertir un


objeto a una subclase de la cual no es una instancia. Por
ejemplo, el siguiente código genera una ClassCastException:

Objeto x = new Integer (0);


System.out.println ((String) x);

NegativeArraySizeException: Se produce si una aplicación intenta crear una matriz


con el tamaño del negativo.

IllegalMonitorStateException: Lanzada para indicar que un hilo ha intentado que


esperar en el monitor de un objeto o para notificar a otros
subprocesos que esperan en el monitor de un objeto sin
tener que poseer el monitor especificado.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

NullPointerException: Se produce cuando una aplicación intenta utilizar nulo en el


caso de que se requiere un objeto. Estos incluyen:

 Llamar al método de instancia de un objeto nulo.


 El acceso o modificar el campo de un objeto nulo.
 Tomando la longitud de nulo como si se tratara de una matriz.
 El acceso o la modificación de las ranuras de cero como si se tratara de una matriz.
 Lanzar nulo como si se tratara de un valor Throwable.
 Las solicitudes deben generar instancias de esta clase para indicar otros usos
ilegales del objeto nulo.

SecurityException: Lanzado por el gerente de seguridad para indicar una


violación de seguridad.

StringIndexOutOfBoundsException: Producidas por los métodos de cadena para


indicar que un índice es negativo o mayor que el
tamaño de la cadena. Para algunos métodos tales
como el método charAt, esta excepción también
se produce cuando el índice es igual al tamaño de
la cadena.

ArrayIndexOutOfBoundsException: Lanzada para indicar que una serie ha sido


visitada con un índice ilegal. El índice es negativo
o mayor que o igual al tamaño de la matriz.

NumberFormatException: Producida para indicar que la aplicación ha intentado para


convertir una cadena a uno de los tipos numéricos, pero
que la cadena no tiene el formato adecuado.

IllegalThreadStateException: Producida para indicar que un hilo no está en un estado


apropiado para la operación solicitada. Véase, por ejemplo,
la suspensión y reanudación métodos en la clase Thread.

Propagación:

Consideremos el siguiente caso:

 main() llama al método primero()


 primero() llama al método segundo()
 En segundo() se produce una excepción

main()⇒primero()⇒segundo()

Si segundo() no captura la excepción con un catch, se propaga a primero(); si éste tampoco


la trata, se propaga a main(). Por último, si en main() tampoco se gestiona, se termina el
programa con un error de ejecución.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clausula finally

try{
// Código protegido que puede provocar excepciones

}
catch (TipoDeExcepcion excepcion) {
// Código que maneja el error

}

finally{
// Código que se ejecuta siempre al final

}

 La cláusula finally define un bloque que se ejecuta siempre independientemente de


que se haya capturado, o no, la excepción.

 Si dentro de try hay alguna sentencia return, se ejecuta final y antes de devolver el
valor

Ejemplo de bloque try-catch-finally

try {
abrirGrifo();
regarCesped();
}
catch (MangueraRotaException e) {
darAlarma();
avisarFontanero();
}
finally{
cerrarGrifo();
}

En el ejemplo anterior en el caso de que ocurra una excepción de manguera rota se


invocara darAlarma() y posteriormente avisarFontanero(), al final se ejecutará el finally en
donde se cerraraGrifo() dado que en el try se abrió. En caso de que no ocurra ningún error,
de todos modos se ejecutará finally cerrando el grifo.

Ejercicio 2.15: Elabore un programa que solicite su nombre y posteriormente solicite por
teclado un valor numérico, a continuación, imprima el carácter que este en esa posición, en
caso de que no exista esa posición, cachar la excepción
StringIndexOutOfBoundsException y mandar un mensaje de error.

Excepciones definidas por el usuario.

Si desea que los usuarios puedan distinguir, mediante programación, ciertas condiciones
de error de otras, puede crear sus propias excepciones, a esto se le llama excepciones
definidas por el usuario. Para lograr esto a una clase derivada extiéndala de la clase base
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Exception. Cada una de estas clases define una excepción específica, por lo que en muchos
casos sólo hay que detectar la excepción.

Todas las excepciones tienen como clase base la clase Throwable, que está incluida en el
paquete java.lang.

Creación de una clase derivada del tipo excepción.

Podemos hacer que un método nuestro lance excepciones y lo especificaremos así:

public void writeList() throws IOException,


ArrayIndexOutOfBoundsException {

}

Todos los métodos Java utilizan la sentencia throw para lanzar una excepción. Esta
sentencia requiere un sólo parámetro, un objeto Throwable. En el sistema Java, los objetos
lanzables son ejemplares de la clase Throwable definida en el paquete java.lang, como por
ejemplo:

throw new EmptyStackException();

Cuando se crea una nueva excepción, derivando de una clase Exception ya existente, se
puede cambiar el mensaje que lleva asociado. La cadena de texto puede ser recuperada a
través de un método.

Normalmente, el texto del mensaje proporcionará información para resolver el problema o


sugerirá una acción alternativa.

Ejercicio 2.16: En el siguiente ejemplo declara una clase llamada EdadFueradeRango que
se extiende de la clase Exception. Contiene dos constructores, el primero es el de por
defecto el cual invoca al súper constructor sin parámetros, el segundo (constructor
alternativo) recibe como parámetro un String el cual es invocado al súper constructor.

Manejo excepciones definidas por el usuario

Continuando con el ejemplo de la excepción fueran de rango, se declara una clase Persona
con el atributo edad del tipo entero, además cuenta con un constructor por defecto que le
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

asigna cero a Edad y un constructor alternativo que recibe un parámetro entero y el cual
utiliza un bloque try-catch, en la sección try invoca el método cambiaEdad enviando como
parámetro el valor entero edad, en caso de ocurrir un error lo cachara mediante la
instrucción catch y desplegará un mensaje de error donde indicará que la edad está fuera
de rango.

El método setEdad valida si la edad está entre 0 y 120 año si es así se la asigna a la variable
edad, en caso contrario lanza una excepción de EdadFueraDeRango.

Mediante la clase principal Ejemplo_Excepciones se instancia un objeto Persona


mandándole una edad negativa que al validarse marcara un error de edad fuera de rango.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance 2.B.- Participación en clase.

Indicador de Alcance 2.C.- Explica problemas propuestos

Elabore una clase llamada estudiante, que contenga un campo llamado Calificación y que
mediante excepciones verifique que la Calificación este en el rango de 0 a 100. Y Mediante
una clase principal la ejemplifique.

Evidencia de Aprendizaje.- Práctica de programación de la Unidad 2:

1ª Oportunidad

Realice los siguientes ejercicios:

1. Elabore una clase llamada Persona, con las siguientes variables miembro:

 Nombre (Nombre de la Persona)


 Domicilio (Domicilio fiscal)
 MpioDele (Municipio o Delegación)
 Entidad (Entidad Federativa)
 CP (Código postal)
 eCorreo (Correo Electrónico)
 TelParticula (Teléfono Particular de casa)
 TelCelular (Teléfono Celular)

Métodos:

 Constructores (por defecto y alternativo)


 Set’s y Get’s
 Sobrecargar toString

La clase principal (Ejemplo_Persona), instancie dos objetos tipo Persona, el primero


objeto deberá ser creado con el constructor por defecto y el segundo objeto deberá ser
instanciado con el constructor alternativo, cuyos datos deben ser capturados desde
teclado y al final despliegue el contenido de los objetos en pantalla. Después modifique
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

las variables de clase para el primero objeto (empleando sus correspondientes set’s)
capturando los datos desde el teclado y finalmente, muestre el contenido de cada variable
del objeto en forma individual (empleando su correspondiente get’s).

2. Elabore una clase llamada Estudiante, que maneje la siguiente información:

 NoC (Número de Control)


 Nombre (Nombre del Estudiante)
 Carrera (Carrera)
 Semestre (Número de semestre)
 Promedio (Promedio General)

Métodos:

 Constructores (por defecto y alternativo)


 Set’s y Get’s
 Sobrecargar toString

Para la clase principal (Ejemplo_Estudiante), instancie cinco objetos tipo Estudiante con
los datos capturados desde teclado y al final despliege en pantalla la siguiente
información:

 El Estudiante con mayor promedio.


 El Estudiante con el nombre más corto.
 El Estudiante del semestre más alto.

3. Implemente un programa donde ejemplifique la utilización de la excepción


NullPointerException.

2ª Oportunidad

Realice los siguientes ejercicios:

1. Elabore una clase llamada Obrero, con las siguientes variables miembro:

 NO (Número de Obrero)
 Nombre (Nombre del Obrero)
 Domicilio (Domicilio)
 NSS (Número de Seguro Social)
 Salario (Salario del Obrero)
 Departamento (Nombre del departamento)

Métodos:

 Constructores (por defecto y alternativo)


 Set’s y Get’s
 Sobrecargar toString

La clase principal (Ejemplo_Obrero), instancie dos objetos tipo Obrero, el primero objeto
deberá ser creado con el constructor por defecto y el segundo objeto deberá ser
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

instanciado con el constructor alternativo, cuyos datos deben ser capturados desde
teclado y al final despliegue el contenido de los objetos en pantalla. Después modifique
las variables de clase para el primero objeto (empleando sus correspondientes set’s)
capturando los datos desde el teclado y finalmente, muestre el contenido de cada variable
del objeto en forma individual (empleando su correspondiente get’s).

2. Elabore una clase llamada Empleado, que maneje la siguiente información:

 RFC
 Nombre
 Domicilio
 Edad
 Sueldo
 Departamento

Métodos:

 Constructores (por defecto y alternativo)


 Set’s y Get’s
 Sobrecargar toString

Para la clase principal (Ejemplo_Empleado), instancie cinco objetos tipo Empleado con
los datos capturados desde teclado y al final despliegue en pantalla la siguiente
información:

 Cuantos Empleados son menores a 30 años y cuantos son mayores o iguales.


 El Empleado con el mayor Sueldo.
 El Empleado con el nombre de longitud más grande.

3. Implemente un programa donde ejemplifique la utilización de la excepción


StringIndexOutOfBoundsException

Indicador de Alcance .E.- Resolución de problemas adicionales en la


práctica de programación

Elabore una clase llamada Vehículo con las siguientes variables de clase:

 Placas
 Marca
 Modelo
 Tipo
 Color
 Número de cilindros
 Número de pasajeros

Implemente este programa mediante clases, instancia 10 objetos tipo vehículo con
diferentes datos, al final imprima la siguiente información:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

 Indicar cuantos vehículos son:


o Cuatro cilindros
o Seis cilindros
o Ocho cilindros
 Indicar cuantos vehículos son:
o Cinco pasajeros o menos
o Más de cinco pasajeros
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Semestre: Ene-Jun 2023 Fecha:

Rúbrica de la Práctica de Programación de la Unidad 2

Instrucciones: Indique con una “X” en la intersección fila - columna las características mínimas que cumple el
proyecto entregado como evidencia, anote los puntos en cada criterio y súmelos.

Criterios de
Excelente Notable Bueno Suficiente Insuficiente Retroalimentación
desempeño
Presenta una portada con: Presenta una portada con Presenta una portada con Presenta una portada con Presenta una portada con
1. Logo del TecNM y del seis de los conceptos del cinco de los conceptos del cuatro de los conceptos del menos de cuatro de los
ITA en la parte superior. apartado excelente y sin apartado excelente y sin apartado excelente y sin conceptos mostrados en
2. Nombre del Instituto. errores ortográficos. errores ortográficos. errores ortográficos. el apartado excelente o
3. Nombre de la carrera. tiene errores ortográficos
4. Nombre de la materia y o No presenta portada.
hora.
5. Número de Unidad,
Portada descripción de la unidad
y redacción completa de
la Evidencia de
Aprendizaje.
6. Nombre y número de
control del estudiante.
7. Fecha.
Y sin errores ortográficos.
Pts. 5 pts. 4.5 pts. 4 pts. 3.5 pts. 0 pts.
Presenta la solución del problema Presenta la solución del problema Presenta la solución del problema Presenta la solución del problema El programa que presenta es
con los siguientes puntos: con los siguientes puntos: con los siguientes puntos: con los siguientes puntos: menora al 70% o no presenta la
 Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema. solución del problema.
Desarrollo  Diseño de la clase.  Diseño de la clase.  Diseño de la clase.  Diseño de la clase.
 Implementación de la clase.  Implementación de la clase.  Implementación de la clase.  Implementación de la clase.
Problema 1  Clase principal.  Clase principal.  Clase principal.  Clase principal.
 Imágenes que muestran el  Imágenes que muestran el  Imágenes que muestran el  Imágenes que muestran el
funcionamiento al 100%. funcionamiento al 90%. funcionamiento al 80%. funcionamiento al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la solución del problema Presenta la solución del problema Presenta la solución del problema Presenta la solución del problema El programa que presenta es
con los siguientes puntos: con los siguientes puntos: con los siguientes puntos: con los siguientes puntos: menora al 70% o no presenta la
 Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema. solución del problema.
Desarrollo  Diseño de la clase.  Diseño de la clase.  Diseño de la clase.  Diseño de la clase.
 Implementación de la clase.  Implementación de la clase.  Implementación de la clase.  Implementación de la clase.
Problema 2  Clase principal.  Clase principal.  Clase principal.  Clase principal.
 Imágenes que muestran el  Imágenes que muestran el  Imágenes que muestran el  Imágenes que muestran el
funcionamiento al 100%. funcionamiento al 90%. funcionamiento al 80%. funcionamiento al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la solución del problema Presenta la solución del problema Presenta la solución del problema Presenta la solución del problema El programa que presenta es
con los siguientes puntos: con los siguientes puntos: con los siguientes puntos: con los siguientes puntos: menora al 70% o no presenta la
Desarrollo  Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema. solución del problema.
 Todo el código  Todo el código  Todo el código  Todo el código
Problema 3 Imágenes que muestran el  Imágenes que muestran el  Imágenes que muestran el  Imágenes que muestran el
funcionamiento al 100%. funcionamiento al 90%. funcionamiento al 80%. funcionamiento al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta una opinión coherente con Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión no
el trabajo y sin errores ortográficos con el trabajo y sin errores con el trabajo y sin errores con el trabajo y con a lo menos coherente con el trabajo o Con
Conclusiones en más de media cuartilla con ortográficos en media cuartilla con ortográficos en menos de media dos errores ortográficos en menos más de dos errores ortográficos
formato justificado. formato justificado. cuartilla. de media cuartilla. o No presenta aportaciones
personales.
Pts. 20 pts. 18 pts. 16 pts. 14 pts. 0 pts.
Indicador de alcance E Entrega resolución de problemas adicionales en la práctica de programación
Indicador de alcance F Entrega la Práctica de programación en la fecha y hora señalada

Calificación
Calificación mínima aceptable: 70 pts.

En caso de obtener una calificación menor a 70, tendrá que presentar 2ª Oportunidad y
solo deberá de enviar los criterios donde obtuvo cero puntos. Si dentro de esos criterios
se encuentra los Problemas 1, 2 o 3, deberá elaborar los problemas marcados como 2ª
oportunidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

3. Métodos

3.1. Definición de un método.

Un método es un conjunto de instrucciones a las que se les da un determinado nombre de


tal manera que sea posible ejecutarlas en cualquier momento sin tenerlas que reescribir
sino usando sólo su nombre. A estas instrucciones se les denomina cuerpo del método, y
a su ejecución a través de su nombre se le denomina llamada al método.

La ejecución de las instrucciones de un método puede producir como resultado un objeto


de cualquier tipo. A este objeto se le llama valor de retorno del método y es completamente
opcional, pudiéndose escribir métodos que no devuelvan ninguno.

La ejecución de las instrucciones de un método puede depender del valor de unas variables
especiales denominadas parámetros del método, de manera que en función del valor que
se dé a estas variables en cada llamada la ejecución del método se pueda realizar de una
u otra forma y podrá producir uno u otro valor de retorno.

Al conjunto formado por el nombre de un método y el número y tipo de sus parámetros se


le conoce como firma del método. La firma de un método es lo que verdaderamente lo
identifica, de modo que es posible definir en un mismo tipo varios métodos con idéntico
nombre siempre y cuando tengan distintos parámetros. Cuando esto ocurre se dice que el
método está sobrecargado.

3.2. Estructura de un método.

La sintaxis es:

acceso [static] tipo NombreDelMétodo ([Lista de Parámetros]) {


Declaración de variables del método
Sentencias del método
[return tipo;]
}

Dónde:

acceso Cada método tiene asociado un tipo que se utiliza para controlar el acceso al
método. Entre estos se encuentran:

public Este método público se puede llamar de cualquier código que tenga
acceso a la clase.

private Este método privado solo puede ser llamado desde otros métodos
dentro de la clase en que se definió el método privado.

protected Este método protegido se puede llamar desde otros métodos de la


clase en que el método está definido y por cualquier otro método de
las clases que heredan de la clase en que está definido el método.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

También está disponible en cualquier objeto de las clases


pertenecientes al mismo paquete en donde está definida la clase.

defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por


defecto, esto significa que el método es accesible a todas las clases
contenidas en el mismo paquete, pero no está accesible fuera de
ese paquete.

static Declara el método como método de la clase y no como método del objeto (no
hereda el método).

Nota: Un método declarado como static solo puede ser llamado por otro método static
y hacer referencia a variables static.

tipo Es el tipo de datos que regresara el método. Si se estipula un tipo de dato void
indica el método no regresa ningún valor (void indica ausencia de valor). Dentro
del método para retornar el valor se utiliza la palabra reservada return y
posteriormente el valor, si el tipo de dato del método se declara void no es
necesario utilizar la sentencia return.

NombreDelMétodo Es el nombre que distingue al método y debe estar formado por un


identificador.
Lista de Parámetros Son los valores que se pasarán al método para que realice su
tarea. Para cada parámetro se tiene que declarar su tipo de dato.
Por ejemplo, el siguiente método se llama suma2Numeros, recibe
como parámetro dos valores tipo long y regresa un valor long con
la suma de los valores que recibe como parámetro.

public static long suma2Numeros( long a, long b ) {


return (a + b);
}

3.3. Valor de retorno.

En Java es imprescindible que, a la hora de la declaración de un método, se indique el tipo


de dato que ha de devolver. Si no devuelve ningún valor, se indicará el tipo void como
retorno.

Los métodos pueden devolver un valor o un objeto. Todos los tipos primitivos en Java se
devuelven por valor y todos los objetos se devuelven por referencia. El retorno de la
referencia a un objeto en Java es similar a devolver un puntero a un objeto situado en
memoria dinámica en C++, excepto que la sintaxis es mucho más simple en Java, en donde
el item que se devuelve es la dirección de la posición en memoria dinámica donde se
encuentra almacenado el objeto.

Para devolver un valor se utiliza la palabra clave return. La palabra clave return va seguida
de una expresión que será evaluada para saber el valor de retorno. Esta expresión puede
ser compleja o puede ser simplemente el nombre de un objeto, una variable de tipo primitivo
o una constante.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public static long suma2Numeros(long a, long b ) {


return (a + b);
}

public static long suma2Numeros(long a, long b ) {


int c;
c = a + b;
return c;
}

3.4. Declaración de un método.

3.4.1. De clase

Métodos de clase

Un método de clase es aquel que puede ser invocado sin existir una instancia. Para declarar
un método como “Método de la clase” se utiliza la palabra reservada static:

acceso static tipo nombreMetodoClase (Lista de Parámetros) {


Declaración de variables del método
Sentencias del método
[return tipo;]
}

Ejercicio 3.1: El siguiente programa lee un valor en grados Celsius y por medio de un
método llamado convierteAFahrenheit convierte los grados Celsius a grados Fahrenheit.

9
Fahrenheit = C + 32
5
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Para acceder a las variables o métodos de clase se utiliza el operador punto (.). Primero se
pone el nombre de la clase, un punto (.) y posteriormente el nombre de la variable de clase
o nombre del método de clase.

nombreClase.nombreVarClase;
nombreClase.nombreMetodoClase();

Suponga que desea realizar el cálculo de intereses anuales que percibirá por depositar
$10,000.00 pesos en el banco durante en 5 años percibiendo un interés del 6% anual.

Año Depósito Inicial Interés Saldo Final


1 $10,000.00 ($10,000.00x6%)=600 $10,600.00
2 $10,600.00 ($10,600.00x6%)=636 $11,236.00
3 $11,236.00 ($11,236.00x6%)=674.16 $11,910.16
4 $11,910.16 ($11,910.16x6%)=714.61 $12,624.77
5 $12,624.77 ($12,624.77x6%)=757.49 $13,382.26

La fórmula para calcular los intereses compuestos es:

𝐶𝑓 = 𝐶(1 + 𝑖)𝑡

Dónde: Cf es el Capital Final


C es el capital inicial
i es el interés
t es el tiempo

Cf= 10000*(1+0.06)5= 13382.255776

Ejercicio 3.2: El siguiente programa declara una clase llamada Calculo, donde tiene un
método estático llamado interesCompuesto, que recibe como parámetros el Capital Inicial
(C), el interés (i) y el tiempo (t); y regresa el cálculo del Capital final (Cf). Posteriormente en
una clase principal se utiliza el método interesCompuesto.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Nota: Si al método interesCompuesto de la clase Calculo, le quitamos la palabra reservada


static, se convierte en un método de instancia, que es el siguiente punto que veremos a
continuación.

3.4.2. De Instancia

Métodos de instancia

Un método de instancia es el que se invoca siempre sobre una instancia (objeto) de una
clase. Para declarar un método de instancia se declara sin la palabra reservada static:

acceso tipo nombreMetodoInstancia (Lista de Parámetros) {


Declaración de variables del método
Sentencias del método
[return tipo;]
}

Para acceder a las variables o métodos de instancia se utiliza el operador punto (.). Primero
se pone el nombre del objeto, un punto (.) y posteriormente el nombre de la variable de
instancia (solo para cuando se declara como public o tipo de acceso amigable) o nombre
del método de instancia.

Objeto.nombreVarInstancia;
Objeto.nombreMetodoInstancia();

Los métodos set’s y get’s de una clase, son métodos de instancia, porque para utilizarlos
se tiene que instanciar un objeto e invocar los métodos correspondientes.

Ejercicio 3.3: Diseñe e implemente en el lenguaje java una clase de Lápiz Labial. Y
mediante una clase principal instancie dos objetos.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 3.4: Una tonelada métrica equivale a 35,273.92 onzas. Elabore un programa que
lea desde teclado el peso que le cabe a una caja en onzas y mediante el método
calculaCajas determine cuantas cajas se pueden llenar con una tonelada métrica de cereal.

Si recibimos un préstamo de $10,000.00 pesos pagaderos a 5 años y nos indican que


tenemos que hacer abonos mensualmente por $407.2 pesos por 60 meses.

¿Cuál sería el interés que estaríamos pagando por dicho préstamo?

Primero debemos de despegar el interés de la fórmula de interés compuesto:

𝐶𝑓 = 𝐶(1 + 𝑖)𝑡

𝐶𝑓
= (1 + 𝑖)𝑡
𝐶

𝑡 𝐶
√ 𝑓 =1+𝑖
𝐶

𝑡 𝐶
𝑓
1+𝑖 = √
𝐶

𝑡 𝐶
𝑓
𝑖 = √ −1
𝐶

En el problema definido anteriormente tendremos que:

Cf es el Capital Final = 407.2 * 60 = 24,432


C es el capital inicial = 10,000
i es el interés = ?
t es el tiempo = 60 meses

60 24,432 60
𝑖= √ − 1 = √2.4432 − 1 = 1.0149998 − 1 ≈ 0.015 = 1.5% 𝑚𝑒𝑛𝑠𝑢𝑎𝑙 18% 𝑎𝑛𝑢𝑎𝑙
10,000

Ejercicio 3.5: Implemente el cálculo del interés en la clase Calculo y muestre los resultados
en pantalla.

3.5. Ámbito y tiempo de vida de variables.

El ámbito de una variable define su alcance de uso, o lo que es lo mismo, en que secciones
de código una variable estará disponible. Fuera de este ámbito, una variable no podrá ser
accedida (no existe).
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Tipos de ámbito

En Java tenemos tres tipos de ámbito que pueden aplicar a una variable:

 Local
 Global
 Estático

Variables de ámbito local.- Las variables de ámbito local, o de bloque, son aquellas que
sólo pueden ser accedidas desde el bloque de código en el que han sido declaradas.

Variables de ámbito global.- Las variables de ámbito global, o de instancia, son aquellas
que pertenecen a cada instancia concreta de la clase donde han sido declaradas, y
dependiendo del modificador de visibilidad usado podrían ser sólo accedidas desde la
propia instancia a la que pertenecen:

Variables estáticas.- Las variables estáticas, o de clase, son aquellas que pertenecen a la
propia clase donde han sido declaradas, y dependiendo del modificador de visibilidad usado
podrían ser sólo accedidas desde la propia clase en la que han sido declaradas:

3.6. Argumentos y paso de parámetros

Los argumentos son los valores que se pasan al método para que realice un proceso o
tarea y el método recibe estos argumentos en los parámetros designados (variables).

En el paso de parámetros a funciones hay dos aproximaciones clásicas: el paso por valor
y paso por referencia.

 Por valor: En el paso por valor se realiza una copia de los valores que se
pasan, trabajando dentro del método con la copia. Es por ello que cualquier cambio
que sufran dentro, no repercute fuera del método.

 Por referencia: En el paso por referencia no se realiza dicha copia, por lo que las
modificaciones dentro de los métodos afectan a los parámetros y esos cambios son
permanentes al finalizar el método.

En Java el paso por parámetro por valor (ocho tipos básicos de Java), se realiza una copia
en el método y cualquier cambio a dicho parámetro no afecta a la variable original.

En el caso de los objetos es distinto, debido a que se pasa la referencia del objeto como
parámetro y cualquier cambio al objeto, se estará realizado la modificación al dato original.

La única excepción es la clase String, cuyos objetos no son modificables. Cualquier


modificación de un objeto String lleva aparejada la creación de una nueva instancia del
objeto. Si deseamos el mismo comportamiento para el paso de parámetros del resto de
objetos, tenemos que recurrir al objeto StringBuffer.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 3.5: En el siguiente programa se instancia un objeto tipo Persona (vista en el tema
2.9) con los valores “José Pérez” para el nombre y 25 para la edad, la segunda variable
declarada es tipo int. Dentro del método main se despliegan los datos antes de enviar las
variables como parámetros al método Cambia. En el método Cambia, se modifica el objeto
en el campo nombre con “Luz Jiménez” y se multiplica el valor de la variable int por 4.
Cuando termina de ejecutar el método Cambia se vuelven a desplegar las variables y se
puede observar que el objeto cambió en el campo nombre, debido a que fue enviado por
referencia, sin embargo, la variable tipo int no sufrió cambios, porque se mandó por valor.

3.7. Puntero this.

Fundamentalmente this tiene dos usos:

 Hacer referencia a la variable de clase en lugar de la variable local cuando existe


colisión de nombres.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public class Fecha {


private int dia;
private int mes;
private int año;

public Fecha(int dia, int mes, int año) {


this.dia = dia;
this.mes = mes;
this.año = año;
}
class Triangulo {
private double base;
private doble altura;

public void datosTriangulo (double base, double altura) {


this.base = base;
this.altura = altura;
}

 Qué un método devuelva el mismo objeto que le llamó. De esta manera se puede
hacer llamadas en cascada a métodos de la misma clase.

class Figura {
Triangulo t;
int radio;
. . .
public Triangulo MayorBase(Triangulo t) {
if (this.t.base > t.base)
return this;
else
return t;
}
}

3.8. Sobrecarga de métodos.

En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos


o más métodos con el mismo nombre, pero funcionalidad diferente. Es decir, dos o más
métodos con el mismo nombre, pero que realiza acciones diferentes. El compilador usará
un método u otro dependiendo de los parámetros recibidos. Esto es lo que se llama
sobrecarga de métodos.

La firma de un método está compuesta por valor de retorno, nombre del método, en cuanto
a los parámetros: tipo de dato, el número de parámetros y orden de cada parámetro. Sin
embargo, para la sobrecarga solo se toma en cuenta tipo de dato, el número de parámetros
y orden de cada parámetro.

La sobrecarga de métodos es la creación de dos o más métodos con el mismo nombre,


pero con diferentes firmas. Java utiliza el tipo, número, orden de argumentos para
seleccionar el método a ejecutar.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Java diferencia los métodos sobrecargados con base en el tipo, número y orden de
argumentos que tiene el método y no por el tipo del valor de retorno.

La sobrecarga es uno de los procedimientos mediante el cual se implementa el


polimorfismo.

Nota: La declaración de los métodos sobrecargados no deben ser ambigua, de modo


que el compilador pueda decidir inequívocamente cuál método ejecutar.
Y la sobre carga se puede realizar tanto en métodos de clase como métodos de
instancia.

Ejercicio 3.6: El siguiente programa declara una clase principal llamada Ejemplo_Area, con
cuatro métodos llamados “Area” que se encuentran sobrecargados. El primer y segundo
método calcula el área de un cuadrado y reciben un parámetro cada uno, el primer de ellos
recibe un tipo int y el segundo lo recibe tipo float. El tercer y cuarto método calcula en área
de un rectángulo, reciben dos parámetros, los parámetros del tercer método son de tipo int
y el cuarto método sus parámetros son de tipo float. Regresan un valor tipo long (primer y
tercer método) y un valor tipo double (el segundo y cuarto método). Además, se utiliza la
clase DecimalFormat para formatear los datos de salida.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance 3.C.- Explica problemas propuestos

Ejercicio 3.7: Elabore una clase principal que tenga 6 métodos sobrecargados llamado
areaTriangulo, que realizaran el cálculo del área de un triángulo en base a lo siguiente:

 Con un parámetro, se asume que es un triángulo Equilátero y el área se


calcula:

√3 ∙ 𝑎2
Á𝑟𝑒𝑎 =
4

Donde a es el lado del triangulo

 Con dos parámetros, el área se calcula:

𝑏∙𝑎
Á𝑟𝑒𝑎 =
2

Donde b es la base y a es la altura del triangulo


 Con tres parámetros, el área se calcula:

Á𝑟𝑒𝑎 = √𝑝 ∙ (𝑝 − 𝑎) ∙ (𝑝 − 𝑏) ∙ (𝑝 − 𝑐)

Donde a, b y c son los valores de las longitudes de los lados del triángulo y
p se calcula así:

(𝑎 + 𝑏 + 𝑐)
𝑝=
2

Los primeros 3 métodos sobrecargados recibirán datos tipo int y los restantes 3,
datos tipo double. El valor de retorno de todos los métodos será double.

Mande a imprimir a pantalla los resultados de todos los métodos.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación
Asignatura: Programación Orientada a Objetos
Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Guía de observación de explicación de problemas propuestos

Instrucciones para el llenado del instrumento:


Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con
una “X” en la columna “Si” cuando el candidato cumpla con el desempeño correspondiente
y en la columna “No” cuando no realice las actividades señaladas.

Unidad: 3. Métodos

Tema: Indicador de Alcance 3.C.- Explica problemas propuestos

Cumple
No. Al Inicio de la sesión: Valor Puntos Retroalimentación
Si No
1 Realiza su presentación mencionando su 5
nombre completo.
2 Menciona el indicador de alcance y la 5
descripción del problema a resolver.
Durante la sesión:
3 Maneja términos, conceptos y 30
conocimientos en su exposición de forma
correcta.
4 Explica la resolución del problema de forma 30
coherente y clara.
5 Interactúa con el grupo manteniendo 5
contacto visual durante la exposición.
6 Emplea un tono de voz adecuado durante la 5
exposición y sin utilizar muletillas.
7 Organiza y planea su presentación de 5
manera ordenada y planificada.
Cierre de la sesión:
8 Responde a las preguntas de forma 5
coherente y clara.
9 Cumple con el tiempo planeado para la 10
sesión: 6 a 10 minutos.
Puntuación Total

Calificación mínima aceptable: 70 pts.

NOMBRE Y FIRMA DE CONFORMIDAD DEL ALUMNO:


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

3.9. Constructores y destructores

Un constructor es un método miembro de propósito específico que se ejecuta


automáticamente cuando se crea un objeto de una clase. Un constructor sirve para
inicializar las variables de la clase.

Constructores

Los constructores tienen el mismo nombre que la clase, además no tienen valor de retorno
(ni incluso void) y están clasificados en constructores por defecto y
alternativos/sobrecargados.

Constructor por defecto

Un constructor que no tiene parámetros se le llama constructor por defecto. Normalmente


el constructor por defecto inicializa las variables de clase con un valor por defecto, por
ejemplo: En el siguiente código se declara la clase Punto, con dos variables de clase tipo
int, el constructor por defecto inicializa las variables x y y con cero, esto ocurrirá cuando se
instancie un objeto tipo Punto.

Regla: Java crea automáticamente un constructor por defecto cuando no existe otro
constructor. Tal constructor inicializa las variables tipo byte, short, int, float, double,
long (numéricas) con cero, las booleanas con false y las referencias con null.

Constructor alternativo/sobrecargado

A un constructor con parámetros se le denomina constructor alternativo y su función es


modificar las variables de la clase, con los valores que recibe como parámetros.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Precaución: Tenga cuidado con la declaración de una clase que sólo tenga un
constructor con parámetros. En ese caso si se omite un constructor sin
parámetros no será posible utilizar el constructor por defecto.

Ejemplo: El código que se muestra a continuación declara una clase llamada Punto
con dos variables miembro tipo int (x y y), además tiene un constructor
alternativo (debido a que tiene parámetros), el cual asigna los valores que
se le envían como parámetros a las variables x y y, dado que no tiene un
constructor por defecto (sin parámetros), al querer instanciar un objeto del
tipo punto (que en este ejemplo lo llamamos primerPunto) marcará error,
debido a que dicho método constructor no existe.

Al instanciar un objeto tipo Punto, marcará un error debido a que se está invocando al
constructor por defecto, sin embargo, este método no existe.

Punto primerPunto = new Punto(); // no es posible utilizar este


constructor
Destructores

Los destructores se utilizan para destruir una instancia de una clase y liberar memoria. En
Java no hay destructores, ya que la liberación de memoria es llevada a cabo por el Garbage
Collector GC (Recolector de Basura) cuando las instancias de los objetos quedan
desreferenciadas o fuera de alcance.

Cuando el GC se ejecuta, su propósito es buscar y borrar los objetos que no pueden ser
alcanzados. Cuando se ejecuta, busca todos esos objetos descartados y lo borra de la
memoria para que el ciclo de uso de memoria y liberándose pueda continuar.

Una forma de hacer elegible un objeto para que el GC lo detecte es desrefenciarlo, es decir,
asignarle el valor null a la variable que donde esta instanciado y con esto el GC lo detectará
y por consiguiente liberar espacio que ocupa.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Forzar la Recolección de Basura o el Garbage Collection

Java provee algunos métodos que permiten solicitar a la JVM a ejecute el GC. Sin embargo,
no hay seguridad que JVM ejecute inmediatamente el GC o que libere todos los objetos
que son elegibles en ese momento.

La instrucción para hace el llamado al GC es System.gc(), pero es tan avanzado el GC que


no es recomendable su invocación y debemos dejar su administración a la JVM.

Los métodos del GC que Java provee son miembros de la clase Runtime. La clase Runtime
es una clase especial que tiene un objeto para cada programa main. El objeto Runtime
provee de un mecanismo para comunicarse directamente con la máquina virtual. Para
obtener la instancia de Runtime, podemos usar el método Runtime.getRuntime(), el cual
nos retorna la instancia única del main en ejecución.

Ahora veamos un ejemplo para ver el funcionamiento del GC. El siguiente programa nos
permite saber el total de memoria dispone la JVM y así como cuanta memoria libre tiene.
Entonces se instanciarán 100,000 objetos tipo Date. Después de esto, se desplegará
cuanta memoria libre queda y entonces se invoca a el método del GC (el cual, decidirá si
se ejecuta o no). La memoria libre final resultante debería indicar cuando se ha ejecutado.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance 3.B.- Participación en clase.

Evidencia de Aprendizaje.- Práctica de Programación de la Unidad 3:

1ª Oportunidad

Elabore los siguientes ejercicios utilizando métodos.

1. Escriba un programa que mediante un método de instancia regrese cuantas cifras


tiene un número entero positivo el cual recibirá como parámetro.

2. Escriba un programa que mediante un método de instancia determine cada letra


de una cadena que reciba como parámetro, indicando si es: “Letra”, “Dígito”,
“Espacio” o “Carácter Especial”.

3. Elabore una clase principal que tenga 6 métodos sobrecargados llamado


areaCuadrilatero, que realizaran el cálculo del área de un cuadrilátero en base a
lo siguiente:

 Dos parámetros, área de un romboide y se calcula:

Á𝑟𝑒𝑎 = 𝑏 ∙ 𝑎

Donde b es la base y a es la altura del romboide

 Tres parámetros, área de un trapezoide o cualquier cuadrilátero y se


calcula así:

̅̅̅̅ ̅̅̅̅ ∙ 𝑠𝑒𝑛 𝜃


𝐴𝐶 ∙ 𝐵𝐷
Á𝑟𝑒𝑎 =
2

Donde ̅̅̅̅
𝐴𝐶 y ̅̅̅̅
𝐵𝐷 son las diagonales y 𝜃 es el ángulo que lo conforma (Ver figura).
 O seis parámetros y se calcula así:

𝑎 ∙ 𝑑 ∙ 𝑠𝑒𝑛 𝛼 + 𝑏 ∙ 𝑐 ∙ 𝑠𝑒𝑛 𝛾
Á𝑟𝑒𝑎 =
2
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Siendo:

𝛼 ángulo comprendido entre los lados 𝑎 𝑦 𝑑.


𝛾 ángulo comprendido entre los lados 𝑏 𝑦 𝑐

Los primeros 3 métodos sobrecargados recibirán datos tipo long y los restantes
3, datos tipo double. El valor de retorno de todos los métodos será double. En la
clase principal imprima en pantalla los resultados de todos los métodos.

2ª Oportunidad

Elabore los siguientes ejercicios utilizando métodos.

1. Escriba un programa que mediante un método de instancia regrese cuantas


palabras tiene una frase que se le mande como parámetro.

2. Escriba un programa que mediante un método de clase que determine cuantas


“Letra”, “Dígito”, “Espacio” o “Carácter Especial” tiene una frase que se le mande
como parámetro.

3. Elabore una clase principal que tenga 6 métodos sobrecargados llamado


volumenPrisma, que realizaran el cálculo del volumen de un prisma en base a lo
siguiente:

 Un parámetro, volumen de un prisma cuadrangular y se calcula:

𝑉𝑜𝑙𝑢𝑚𝑒𝑛 = 𝐿3

Donde L es el lado del prisma

 Dos parámetros, volumen de un prisma rectangular y se calcula así:

𝑉𝑜𝑙𝑢𝑚𝑒𝑛 = 𝐿2 ∙ ℎ

Donde L es el lado del prisma y h es la altura


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

 Cuatro parámetros, volumen del prisma Pentagonal o Hexagonal y se


calcula así:

𝐿𝑎𝑑𝑜𝑠 ∙ 𝐿 ∙ 𝑎𝑝
𝑉𝑜𝑙𝑢𝑚𝑒𝑛 = ∙ℎ
2
Donde:
Lados: Número de lados del prisma.
L: Lado del prisma.
ap: Apotema del prisma.
h: Altura del prisma.

Los primeros 3 métodos sobrecargados recibirán datos tipo long y los restantes
3, datos tipo double. El valor de retorno de todos los métodos será double. En la
clase principal imprima en pantalla los resultados de todos los métodos.

Indicador de Alcance .E.- Resolución de problemas adicionales en la


práctica de programación

Escriba un programa que mediante un método determine si una cadena es palíndromo (un
palíndromo es una palabra que se lee igual en sentido directo como inverso, por ejemplo,
radar, reconocer, rotomotor, sometemos, AnitaPatina, AnitaLavaLaTina,
EvaUsabaRimelYLeMirabaSuave, SeEsONoSeEs, SomosONoSomos.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Semestre: Ene-Jun 2023 Fecha:

Rúbrica de la Práctica de Programación de la Unidad 3

Instrucciones: Indique con una “X” en la intersección fila - columna las características mínimas que cumple el
proyecto entregado como evidencia, anote los puntos en cada criterio y súmelos.

Criterios de
Excelente Notable Bueno Suficiente Insuficiente Retroalimentación
desempeño
Presenta una portada con: Presenta una portada con seis Presenta una portada con Presenta una portada con Presenta una portada con
1. Logo del TecNM y del de los conceptos del apartado cinco de los conceptos del cuatro de los conceptos del menos de cuatro de los
ITA en la parte superior. excelente y sin errores apartado excelente y sin apartado excelente y sin conceptos mostrados en el
2. Nombre del Instituto. ortográficos. errores ortográficos. errores ortográficos. apartado excelente o tiene
3. Nombre de la carrera. errores ortográficos o No
4. Nombre de la materia y presenta portada.
hora.
5. Número de Unidad,
Portada descripción de la unidad
y redacción completa de
la Evidencia de
Aprendizaje.
6. Nombre y número de
control del estudiante.
7. Fecha.
Y sin errores ortográficos.
Pts. 5 pts. 4.5 pts. 4 pts. 3.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El funcionamiento del
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes programa que presenta es
rubros: rubros: rubros: rubros: menor al 70% o no presenta
 Descripción del  Descripción del  Descripción del  Descripción del la solución del problema.
problema. problema. problema. problema.
Desarrollo  Todo el código  Todo el código  Todo el código  Todo el código
Problema 1  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el muestre el muestre el muestre el
funcionamiento correcto funcionamiento correcto funcionamiento correcto funcionamiento correcto
del programa al 100%. del programa al 90%. del programa al 80%. del programa al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El funcionamiento del
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes programa que presenta es
rubros: rubros: rubros: rubros: menor al 70% o no presenta
 Descripción del  Descripción del  Descripción del  Descripción del la solución del problema.
problema. problema. problema. problema.
Desarrollo  Todo el código  Todo el código  Todo el código  Todo el código
Problema 2  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el muestre el muestre el muestre el
funcionamiento correcto funcionamiento correcto funcionamiento correcto funcionamiento correcto
del programa al 100%. del programa al 90%. del programa al 80%. del programa al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El funcionamiento del
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes programa que presenta es
rubros: rubros: rubros: rubros: menor al 70% o no presenta
 Descripción del  Descripción del  Descripción del  Descripción del la solución del problema.
problema. problema. problema. problema.
Desarrollo  Todo el código  Todo el código  Todo el código  Todo el código
Problema 3  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el muestre el muestre el muestre el
funcionamiento correcto funcionamiento correcto funcionamiento correcto funcionamiento correcto
del programa al 100%. del programa al 90%. del programa al 80%. del programa al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta una opinión Presenta una opinión Presenta una opinión Presenta una opinión Presenta una opinión no
coherente con el trabajo y sin coherente con el trabajo y sin coherente con el trabajo y sin coherente con el trabajo y con coherente con el trabajo o
Conclusiones errores ortográficos en más de errores ortográficos en media errores ortográficos en menos a lo menos dos errores Con más de dos errores
media cuartilla con formato cuartilla con formato de media cuartilla. ortográficos en menos de ortográficos o No presenta
justificado. justificado. media cuartilla. aportaciones personales.
Pts. 20 pts. 18 pts. 16 pts. 14 pts. 0 pts.
Indicador de alcance E Entrega resolución de problemas adicionales en la práctica de programación
Indicador de alcance F Entrega la Práctica de programación en la fecha y hora señalada

Calificación
Calificación mínima aceptable: 70 pts.

En caso de obtener una calificación menor a 70, tendrá que presentar 2ª Oportunidad y solo
deberá de enviar los criterios donde obtuvo cero puntos. Si dentro de esos criterios se
encuentra los Problemas 1, 2 o 3, deberá elaborar los problemas marcados como 2ª
oportunidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Evidencia de Aprendizaje.- Proyecto de las Unidades 2 y 3

PESO NETO (net): Es el peso del producto.

PESO TARA (tara): Es el peso del vehículo contenedor


(vacío).

PESO BRUTO (gross): Es el peso del producto más


el Peso del vehículo
contenedor (net + tara).

Cree una clase llamada Vehículo de Carga, que contenga las variables de clase Número de Vehículo, Tipo
(Camioneta, Torton, Trailer, Otro), Placas, Capacidad Máxima Bruta (CapMax), Peso del producto (net), Peso
Tara (tara) y que mediante excepciones validar que el peso bruto no exceda la capacidad máxima bruta
(CapMax < (net + tara)) y que el Tipo sea Camioneta, Torton, Trailer u Otro. Tendrá dos constructores (por
defecto y alternativo). Incluya los métodos Set’s y Get’s, además redefina el método toString para que
despliegue el objeto de la siguiente forma:

Número de vehículo: 999999


Tipo: xxxxxxxxxxxxxxxxxxxx
Placas: 999-XXX-9
Capacidad Máxima Bruta: 9999999999
Peso Neto (net): 9999999999
Peso Tara (tare): 9999999999
Peso Bruto: 9999999999

Y crear una clase con seis métodos de clase sobrecargados llamado Volumen, que realizaran el cálculo del
volumen de tres figuras geométricas, bajo las siguientes bases:

 Con un parámetro, un Cubo y el volumen Donde r es el radio y h es la altura


se calcula: Con tres parámetros, un elipsoide y el
a volumen se calcula:

𝑉𝑜𝑙𝑢𝑚𝑒𝑛 = 𝑎3 a 4
𝑉𝑜𝑙𝑢𝑚𝑒𝑛 = ∙ 𝜋 ∙ 𝑟1 ∙ 𝑟2 ∙ 𝑟3
3
a
Donde a es el lado del cubo
r2 r1
 Con dos parámetros, un cilindro y el r3
volumen se calcula:
r
h Donde r1, r2 y r3 son las longitudes de los
𝑉𝑜𝑙𝑢𝑚𝑒𝑛 = 𝜋 ∙ 𝑟 2 ∙ ℎ semiejes.

Los primeros 3 métodos sobrecargados recibirán datos tipo float y los restantes 3, datos tipo double. El valor de
retorno de todos los métodos será double.

Desarrolle un proyecto que mediante un menú principal despliegue: Instanciar, Desplegar, Calcular o Salir. Si
selecciona Instanciar: Instancie dos objetos tipo Vehículo de Carga, el primero mediante el constructor por
defecto y el segundo mediante el constructor alternativo (capture los datos desde teclado). Si seleccionar
Desplegar, muestre en pantalla los objetos instanciados. Si selecciona Calcular, capture los datos para los
métodos sobrecargados y muestre los resultados en pantalla. Solo puede terminar el programa, cuando en el
menú principal seleccione Salir.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance . A.- Agregar una opción más al menú que sea Reportes, que
despliegue los objetos instanciados y el cálculo de cada
uno de los métodos. Solo se podrá seleccionar esta
opción si están instanciados y capturados los objetos.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del Equipo: Fecha:

Guía de Observación del Proyecto de las Unidades 2 y 3


Instrucciones para el llenado del instrumento:
Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con una “X” en la columna
“Si” cuando el equipo cumpla con el desempeño correspondiente al 100% o porcentaje de cumplimiento y en la
columna “No” cuando no realice las actividades señaladas.

Cumple
No. Exposición del proyecto y entrega del trabajo Valor Puntos Retroalimentación
Si No
Al Inicio de la sesión:
Realizan la presentación de cada integrante mencionando su
1 5
nombre completo. (AG)
Mencionan la unidad y la descripción del proyecto a resolver.
2 5
(AG)
Durante la sesión:
Demuestra, Describe y Explica el funcionamiento del
proyecto en cuanto a:
 Excepciones
 Clase principal
 Clase Vehículo de Carga
3 o Constructores 30
o Set's
o Get's
o toString
 Seis métodos sobrecargados
De una forma coherente y clara (CI).
Expresa y Maneja el sistema del proyecto de forma correcta.
4 15
(PI).
Aplican y Resuelven correctamente la resolución del
5 15
proyecto. (PG)
Interactúa con el grupo manteniendo contacto visual durante
6 5
la exposición. (AI)
Emplea un tono de voz adecuado durante la exposición y sin
7 5
emplear muletillas. (AI)
Organiza y planea su presentación de manera ordenada y
8 5
planificada. (AG)
Cierre de la sesión:
9 Responde a las preguntas de forma correcta.(CPAI) 10
Cumplen con el tiempo planeado para la sesión de 16 a 20
10 5
minutos. (AG)
Diseñar opciones adicionales al proyecto: Indicador de
11 El proyecto permite despliegue los objetos instanciados y el cálculo de Alcance A
cada uno de los métodos.
Puntuación Total

A-Actitudinal C-Conceptual P-Procedimental G-Grupal I-Individual

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del Equipo: Fecha:

Lista de Cotejo Trabajo del Proyecto de las Unidades 2 y 3


Instrucciones para el llenado del instrumento:
Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con una “X” en la columna
“Si” cuando el equipo cumpla con el desempeño correspondiente al 100% o porcentaje de cumplimiento y en la
columna “No” cuando no realice las actividades señaladas.

Cumple
No. Exposición del proyecto Valor Puntos Retroalimentación
Si No

La portada contiene:

1. Logo del TecNM y del ITA en la parte superior.


2. Nombre del Instituto
1 3. Nombre de la carrera 5
4. Nombre de la materia y hora
5. Número de unidad y descripción del proyecto.
6. Nombre y número de control de los estudiantes.
7. Fecha

El desarrollo contiene la resolución del proyecto con los siguientes rubros:

 Excepciones
 Clase principal
 Clase Vehículo de Carga
o Constructores
2 60
o Set's
o Get's
o toString
 Seis métodos sobrecargados
 Ejecución del programa mediante imágenes muestre el buen
funcionamiento del programa 100%.

La conclusión, tiene con una opinión coherente con el trabajo por cada
3 15
integrante del equipo.

4 El trabajo tiene texto justificado, maneja títulos y subtítulos 10

5 El trabajo está libre de errores ortográficos. 10

Puntuación Total

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

4. Herencia y polimorfismo

4.1. Concepto de herencia y polimorfismo.

La idea de la herencia es permitir la creación de nuevas clases basadas en clases


existentes. Cuando heredamos de una clase existente, reusamos o heredamos, métodos y
variables, además agregamos nuevas variables y métodos para especializar la nueva clase.

4.2. Definición de una clase base.

Al crear una clase, en vez de declarar variables y métodos completamente nuevos, el


programador puede designar que la nueva clase herede los miembros de una clase
existente. Esta clase existente se conoce como superclase, y la nueva clase se conoce
como subclase.

4.3. Definición de una clase derivada.

En otros lenguajes de programación, como C++ se refieren a la superclase como clase base
y a la subclase como clase derivada. Una vez creada, cada subclase se puede convertir en
superclase de futuras subclases. Una subclase generalmente agrega sus propias variables
y métodos, por lo tanto, una subclase es más específica que una superclase y representa
un grupo más concreto de objetos.

Superclase
Préstamo

Hipotecario Personal Prendario

Subclases

Empleado

Directivo Administrativo Obrero


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

A veces es difícil decidir cuál es la relación de herencia óptima entre el diseño de clases.
Consideremos por ejemplo el caso de empleados de una empresa, existen diferentes tipos
de clasificación según sea el criterio de discriminación, por ejemplo, por tipo de empleado:
Por tipo de percepción:

Empleado

Confianza Comisión Asalariado

Por tiempo de dedicación laboral:

Empleado

Discontinuo TiempoFijo Horas

Por tipo de contratación:

Empleado

Base Anual Mensual

Como se darán cuenta es difícil establecer cuál de estos modelos es el más adecuado, lo
mejor es decidirse hasta que tenga la aplicación real y el usuario le diga cuál es la mejor
forma de organización de su empresa y así trasladarla al diseño jerárquico de clases.

Declaración.

Una clase derivada (o subclase) es una clase que hereda los atributos y comportamiento
de una clase base (o superclase). Sintaxis:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public class Subclase extends Superclase {


acceso nuevaVariable
...
public tipo NuevoMétodo (Lista de Parámetros)

}

Herencia-Redefinición.- Es cuando un método de una súper clase se redefine en las


subclases. En el siguiente ejemplo se asume que todos los animales duermen (súper clase
Animal), pero al heredar a una clase León el método (dormir) se redefine indicando que el
León duerme sombre el vientre, mientras que en el Oso duerme sobre la espalda y el tigre
duerme sobre un árbol, a esto se le conoce como redefinición de métodos.

Animal dormir (){


System.out.println(“Zzzzz”);
}
dormir()

León Oso Tigre


dormir() dormir() dormir()

dormir (){ dormir (){


System.out.println(“Sobre el vientre”); System.out.println(“En un árbol”);
} dormir (){ }
System.out.println(“Sobre la espalda”);
}

Ejercicio 4.1:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

En el siguiente ejemplo tenemos la súper clase Préstamo, que contiene las variables
miembro Monto e Interés que son del tipo float con tipo de acceso privado (-), además
cuenta con los siguientes métodos los cuales todos son públicos (+):

 Constructores (por defecto y alternativo)


 Set’s y Get’s de cada variable
 toString():
Monto: 99999999.99
Interés: 999.99
Cálculo de Intereses: 99999999.99
 calculaIntereses() que calcula los intereses multiplicando el Monto por el Interés y
regresando el cálculo.

La flecha indica que la clase Hipotecario hereda las características y comportamiento de


Préstamo, además define las variables miembro Inmueble del tipo String que representa el
bien inmueble que se hipotecara para obtener el préstamo y la variable AñosHipo del tipo
entera (int) que representa los años de hipoteca. Estas dos variables tienen el tipo de
acceso privado (por el signo negativo que las precede). Además, cuenta con los siguientes
métodos públicos (+):

 Constructores (por defecto y alternativo)


 Set’s y Get’s de cada variable
 toString():
Crédito Hipotecario
Bien Inmueble: XXXXXXXXXXXXXXXXXXXXXXX
Años de hipoteca: 99
Monto: 99999999.99
Interés: 999.99
Cálculo de Intereses: 99999999.99

También la clase Personal hereda las características y comportamiento de Préstamo,


además define las variables miembro TipoDocumento del tipo String que representa el
documento que se firma (pagare, letra de cambio, etc.) para obtener el préstamo y la
variable FechaVen del String que representa la fecha de vencimiento del documento. Estas
dos variables tienen el tipo de acceso privado (por el signo negativo que las precede).
Además, cuenta con los siguientes métodos públicos (+):

 Constructores (por defecto y alternativo)


 Set’s y Get’s de cada variable
 toString():
Crédito Personal
Tipo de documento: XXXXXXXXXXXXXXXXXXXXXXX
Fecha de vencimiento: XXXXXXXXXXXXXXXXXXXXX
Monto: 99999999.99
Interés: 999.99
Cálculo de Intereses: 99999999.99

La clase Prendario hereda las características y comportamiento de Préstamo, además


define las variables miembro Prenda del tipo String que representa la prenda que se deja
en garantía (Joyas, Pinturas, etc.) para obtener el préstamo y la variable ValorPrenda del
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

tipo entera (int) que representa el valor de la prenda. Estas dos variables tienen el tipo de
acceso privado (por el signo negativo que las precede). Además, cuenta con los siguientes
métodos públicos (+):

 Constructores (por defecto y alternativo)


 Set’s y Get’s de cada variable
 toString():
Crédito Prendario
Prenda: XXXXXXXXXXXXXXXXXXXXXXX
Valor de la prenda: XXXXXXXXXXXXXXXXXXXXX
Monto: 99999999.99
Interés: 999.99
Cálculo de Intereses: 99999999.99

Implemente en java las clases Prestamo, Hipotecario,


Personal y Prendarios, así como también elabore la
clase principal Ejemplo_Prestamo para que obtenga
el siguiente resultado:

4.4. Clases abstractas.

Cuando pensamos en un tipo de clase, suponemos que los programas crearán objetos de
ese tipo, sin embargo, existen casos en los que es conveniente declarar clases para las
cuales el programador no pretende instanciar objetos. Dichas clases se denominan clases
abstractas, debido a que estas solo se utilizan como superclases en la jerarquía de
herencias, nos referiremos a ellas como superclases abstractas. Estas clases no pueden
utilizarse para instanciar objetos, porque las clases abstractas se declaran incompletas, las
subclases deben declarar las partes faltantes.

El propósito de una clase abstracta es proporcionar una superclase apropiada, a partir de


la cual se puedan heredar otras clases. Las clases que pueden usarse para instanciar
objetos se conocen como clases concretas, dichas clases proporcionan implementaciones
de todos los métodos que declaran. Podríamos tener una superclase llamada Bidimensional
y derivar a partir de ella clases concretas como Cuadrado, Circulo y Triangulo. También
podríamos tener una superclase abstracta llamada Tridimensional y derivar de ella clases
concretas como Cubo, Esfera y Tetraedro. Las clases abstractas son demasiado genéricas
como para crear objetos reales; sólo especifican lo que las subclases tienen en común.
Necesitamos ser más específicos antes de poder crear objetos. Por ejemplo, si alguien le
dice “dibuje una figura”, ¿Qué figura dibujaría? Las clases específicas proporcionan los
aspectos específicos que hacen que sea razonable el crear instancias de objetos.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Una jerarquía de clases no necesita contener clases abstractas, sin embargo, comúnmente
se utilizan jerarquías de clases encabezadas por superclases abstractas para reducir las
dependencias de código cliente en un tipo de subclases específicas. Por ejemplos
considere la siguiente jerarquía de clases:

Figura

Bidimensional Tridimensional

Circulo Cuadrado Triangulo Esfera Cubo Tetraedro

En esta jerarquía de clases la superclase abstracta Figura, en el siguiente nivel tenemos


otras dos clases abstractas Bidimensional y Tridimensional y en el último nivel se declaran
clases concretas las cuales son para las figuras bidimensionales Circulo, Cuadrado y
Triangulo, mientras que las figuras tridimensionales son Esfera, Cubo y Tetraedro.

Definición

Para que una clase sea abstracta se debe declarar con la palabra reservada abstract. Una
clase abstracta por lo general tiene uno o más métodos abstractos (los métodos static no
pueden ser abstractos). Un método abstracto es un método con la palabra reservada
abstract en su declaración.

public abstract class NombreDeClase {


public abstract tipo Método ();

}
Los métodos abstractos no proporcionan implementaciones. Una clase que contiene
métodos abstractos debe declararse como clase abstracta. Cada subclase concreta de una
clase abstracta debe proporcionar implementaciones concretas de los métodos abstractos
de la superclase. Los constructores no se heredan, por los que no pueden declararse como
abstractos.

Aunque no podemos crear instancias de objetos de superclases abstractas, podemos


utilizar superclases abstractas para crear variables que puedan guardar referencias de
subclases concretas derivadas de la superclase.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Redefinición

Considere la siguiente jerarquía de clases:

Figura

Punto

Circulo

Cilindro

Comenzaremos con la superclase abstracta Figura, la cual declara la interfaz para la


jerarquía (es decir, el conjunto de métodos que puede invocar un programa en todos los
objetos Figura), observe también que, en el diagrama de clases, el nombre de la clase
abstracta Figura aparece en cursivas.

Clase Variables getArea() getVolumen() getNombre() toString()


Predeterminado
Figura 0.0 0.0 abstract de Object
int x
Punto 0.0 0.0 “Punto” [x,y]
int y
Circulo double radio  r2 0.0 “Circulo” [x,y]; Radio = radio
2rh+2 [x,y]; Radio = radio;
Cilindro double altura  r2 h “Cilindro”
r2 Altura = altura

La clase Figura proporciona los métodos getArea(), getVolumen() y getNombre(), además


como es una extensión de la clase Object, hereda los 11 métodos, entre ellos se encuentran
toString(), por lo que tendrá que ser redefinido.

Ejercicio 4.2: Implemente en el lenguaje Java las clases Figura, Punto, Circulo, Cilindro y
Ejemplo_ClaseAbstracta.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

La clase Punto se extiende de Figura heredando todos los métodos públicos. Dentro de la
clase Punto se declaran dos variables miembro tipo int llamada x y y, las cuales tienen tipo
de acceso es privado, contiene dos constructores (uno por defecto y otro alternativo),
además tiene los métodos getX(), getY() que regresan el valor de su correspondiente
variable, setX(int x) y setY(int y) que cambian los valores de sus correspondientes variables,
también se redefine el método abstracto getNombre(), el cual regresa el nombre de la figura
“Punto”, con esto deja de ser abstracta y se vuelve concreta. Finalmente se redefina el
método toString().

La clase Circulo se extiende de Punto heredando todos los métodos públicos. Dentro de la
clase Circulo se declara la variable miembro radio del tipo double donde el tipo de acceso
es privado. Contiene dos constructores, uno por defecto y otro alternativo, los cuales al
utilizar el método super() el cual invocan al súper constructor de la súper clase Punto,
además tiene los métodos getRadio() y setRadio() que regresan y cambian el valor del
radio, en este último método se utiliza la selección simple lineal (?), en donde si la condición
es verdadera regresa el primer valor después del signo de interrogación, en caso de ser
falso regresa el valor que se encuentra después de los dos puntos, esto se realiza para
asegurarse que no existan radios negativos. El método getDiametro() devuelve el doble del
radio. Y Finalmente se redefine el método getNombre(), el cual regresa el nombre de la
figura “Círculo”, se redefine el método getArea() con su respectivo cálculo y así también se
redefine el método toString().
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

La clase Cilindro se extiende de Círculo heredando todos los métodos públicos. Dentro de
la clase Cilindro se declara la variable miembro altura del tipo double y tipo de acceso
privado. Contiene dos constructores, uno por defecto y otro alternativo, los cuales también
utilizan el método super(), que invocan al súper constructor de la súper clase Circulo,
además tiene los métodos getAltura() y setAltura() que regresan y cambian el valor de la
altura. Y se redefinen los métodos getNombre(), getArea(), getVolumen() y toString().
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

En la clase principal Ejemplo_ClaseAbstracta se instancias tres objetos, uno tipo Punto,


otro tipo Circulo y un tercero tipo Cilindro asignando los valores a las variables miembro por
medio de los constructores alternativos. Se declara una variable tipo String llamada salida
en la cual se acumulan los datos que se mostrarán como resultados, además se declara un
arreglo de tipo Figuras que es ahí donde se realiza el polimorfismo, debido a que soporta
los métodos de cada uno de los objetos mostrando la ejecución de cada método toString,
getArea() y getVolumen().
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

4.5. Interfaces.

4.5.1. Definición

El concepto de Interface lleva un paso más adelante la idea de las clases abstractas. En
Java una interface es una clase abstracta pura, es decir una clase donde todos los métodos
son abstractos (no se implementa ninguno). Permite al diseñador de clases establecer la
forma de una clase (nombres de métodos, listas de parámetros y tipos de retorno, pero no
el cuerpo del método). Una interface puede también contener datos miembro, pero estos
son siempre static y final (aunque no se declaren así, se considerarán static y final). Una
interface sirve para establecer un 'protocolo' entre clases.

Para crear una interface, se utiliza la palabra clave interface en lugar de class. La interface
puede definirse public o sin modificador de acceso, y tiene el mismo significado que para
las clases. Todos los métodos que declara una interface son siempre public.

Para indicar que una clase implementa los métodos de una interface se utiliza la palabra
clave implements. El compilador se encargará de verificar que la clase efectivamente
declare e implemente todos los métodos de la interface. Una clase puede implementar más
de una interface.

4.5.2. Implementación.

Una interface se declara:

interface nombre_interface {
tipo_retorno nombre_metodo ( lista_parámetros ) ;
...
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Por ejemplo:

interface InstrumentoMusical {
void tocar();
void afinar();
String tipoInstrumento();
}

Y una clase que implementa la interface:

class InstrumentoViento extends Object implements InstrumentoMusical {


void tocar() { . . . };
void afinar() { . . .};
String tipoInstrumento() { . . .}
}

class Guitarra extends InstrumentoViento {


String tipoInstrumento() {
return "Guitarra";
}
}
La clase InstrumentoViento implementa la interface, declarando los métodos y escribiendo
el código correspondiente. Una clase derivada puede también redefinir si es necesario
alguno de los métodos de la interface.

Es posible crear referencias a interfaces, pero las interfaces no pueden ser instanciadas.
Una referencia a una interface puede ser asignada a cualquier objeto que implemente la
interface. Por ejemplo:

InstrumentoMusical instrumento = new Guitarra();


instrumento.play();
System.out.println(instrumento.tipoInstrumento());

InstrumentoMusical i2 = new InstrumentoMusical(); //error.No se puede instanciar

Extensión de interfaces

Las interfaces pueden extender otras interfaces y, a diferencia de las clases, una interface
puede extender más de una interface. La sintaxis es:

interface nombre_interface extends nombre_interface1, nombre_interface2,… {


tipo_retorno nombre_metodo ( lista_parámetros ) ;

}

Agrupaciones de constantes

Dado que, por definición, todos los datos miembros que se definen en una interface son
static y final, y debido a que las interfaces no pueden instanciarse resulta una buena
herramienta para implantar grupos de constantes.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Por ejemplo:

public interface Meses {


int ENERO = 1 , FEBRERO = 2 . . . ;
String [ ] NOMBRES_MESES = { " " , "Enero" , "Febrero" , . . . };
}

Esto puede usarse simplemente:

System.out.println(Meses.NOMBRES_MESES[ABRIL]);

Ejercicio 4.3: Modifique el ejercicio 4.2 declarando como interface clase Figura e
impleméntelas las clases Punto, Circulo y Cilindro, finalmente defina la clase principal
Ejemplo_Interface donde instancie tres objetos (Punto, Circulo y Cilindro) similar al
Ejemplo_ClaseAbstracta.

En la literatura computacional existe el término Interfaz, el cual se maneja de manera similar


a Interface, sin embargo, le daremos una connotación diferente para aprender otros
conceptos de programación que son importantes.

Definición:

Interfaz: Conjunto de elementos de la pantalla (Ventanas, Botones, Etiquetas,


Campos de Texto, Casillas de activación, Botones de opción, Listas
desplegables, etc.) que permiten al usuario interactuar con un programa o
software.

Ejercicio 4.4: Diseñe una interfaz que realice las operaciones básicas de una calculadora
(suma (+), resta (-), multiplicación (*) y división (/)), capturando dos números desde el
teclado.

Analizando el diseño anterior, tendremos que, por cada elemento se emplearán los
siguientes componentes de Java:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

4.5.3. Variables polimórficas

En Java, las variables que contienen objetos son variables polimórficas. El término
polimórfico (literalmente: muchas formas) se refiere al hecho de que una misma variable
puede contener objetos de diferentes tipos (del tipo declarado o de cualquier subtipo del
tipo declarado). El polimorfismo aparece en los lenguajes orientados a objetos en
numerosos contextos, las variables polimórficas constituyen justamente un primer ejemplo.

public class CD {
private String titulo;
private String artista;
private String comentario;

public CD() {
titulo = "Sin Titulo";
artista = "Sin Artista";
comentario = "";
}

public CD(String titulo, String artista, String comentario) {


this.titulo = titulo;
this.artista = artista;
this.comentario = comentario;
}

public String regresaTitulo() {


return titulo;
}

public void asignaTitulo(String titulo) {


this.titulo = titulo;
}

public String regresaArtista() {


return artista;
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public void asignaArtista(String artista) {


this.artista = artista;
}

public String regresaComentario() {


return comentario;
}

public void asignaComentario(String comentario) {


this.comentario = comentario;
}

public String toString() {


return "CD" + "\ntitulo=" + titulo +
"\nartista=" + artista +
"\ncomentario=" + comentario;
}
}

public class DVD {


private String titulo;
private String director;
private String comentario;

public DVD() {
titulo = "Sin Titulo";
director = "Sin Director";
comentario = "";
}

public DVD(String titulo, String director, String comentario) {


this.titulo = titulo;
this.director = director;
this.comentario = comentario;
}

public String regresaTitulo() {


return titulo;
}

public void asignaTitulo(String titulo) {


this.titulo = titulo;
}

public String regresaDirector() {


return director;
}

public void asignaArtista(String director) {


this.director = director;
}

public String regresaComentario() {


return comentario;
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public void asignaComentario(String comentario) {


this.comentario = comentario;
}

public String toString() {


return "DVD" + "\ntitulo=" + titulo +
"\ndirector=" + director +
"\ncomentario=" + comentario;
}
}

public class Ejemplo_Opticos {


public static void main(String[] args) {
CD ObjetoCD =
new CD("Def Jam Recordings", "Justin Bieber", "Bueno");
DVD ObjetoDVD =
new DVD("The Revenant", "Alejandro González Iñárritu", "Excelente");

Object ObjetoX;

ObjetoX = ObjetoCD;
System.out.println(ObjetoX);
ObjetoX = ObjetoDVD;
System.out.println(ObjetoX);

}
}

4.6. Reutilización de la definición de paquetes/librerías

Un paquete en Java es lo que su nombre lo indica, un paquete o conjunto de clases,


lógicamente, que tienen cosas en común. Lógicamente un programado puede agruparlas
con o sin criterio, pero lo ideal es que se dediquen a funciones específicas. También los
paquetes definen una jerarquía de directorios, que permiten igualmente agrupas las clases,
cosa de desplegar los archivos más ordenadamente. También, cuando necesitamos
librerías de java, igualmente estamos llamando a una clase específica o a todo un paquete.
Por ejemplo, cuando ponemos esto:

import System.io.*;

Estamos importando todas las clases del paquete System.io. Ahora, si hacemos esto:

import javax.swing.JOptionPane;

Estamos importando la clase JOptionPane del paquete javax.swing.

Para definir un paquete solo tenemos que incluir antes que los paquetes a importar, la
definición del paquete al que pertenece la clase, de la forma siguiente:

package org.ruta.del.paquete;
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance 4.B.- Participación en clase.

Indicador de Alcance 4.C.- Explica problemas propuestos

Empleado
- String Nombre
- String Domicilio
- byte Edad
- String Telelefono
- String Puesto

+ Personal()
+ Persona (String N, String D,
byte E, String T, String P)
Set’s
Get’s
+ String toString()

Base Anual Mensual


- int AniosAntiguedad - int AniosContratacion - String InicioContrato
- float Salario - float Sueldo - String FinContrato
- float Sueldo
+ Base() + Anual()
+ Base(String N, String D, byte E, + Anual(String N, String D, byte + Mensual()
String T, String P, int A, float S) E, String T, String P, int C, float S) + Mensual(String N, String D,
Set’s Set’s byte E, String T, String P, String
Get’s Get’s IC, String FC)
+ String toString() + String toString() Set’s
Get’s
+ String toString()

Elabore la clase Empleado en Java, así como una de las clases entre: Base, Anual o
Mensual. Posteriormente elabore una clase principal llamada Ejemplo_Empleado, donde
se instancian un objeto de cada clase (Empleado, Base, Anual y Mensual) y finalmente los
mande a imprimir a pantalla, cada objeto.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación
Asignatura: Programación Orientada a Objetos
Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Guía de observación de explicación de problemas propuestos

Instrucciones para el llenado del instrumento:


Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con
una “X” en la columna “Si” cuando el candidato cumpla con el desempeño correspondiente
y en la columna “No” cuando no realice las actividades señaladas.

Unidad: 4. Herencia y polimorfismo

Tema: Indicador de Alcance 4.C.- Explica problemas propuestos

Cumple
No. Al Inicio de la sesión: Valor Puntos Retroalimentación
Si No
1 Realiza su presentación mencionando su 5
nombre completo.
2 Menciona el indicador de alcance y la 5
descripción del problema a resolver.
Durante la sesión:
3 Maneja términos, conceptos y 30
conocimientos en su exposición de forma
correcta.
4 Explica la resolución del problema de forma 30
coherente y clara.
5 Interactúa con el grupo manteniendo 5
contacto visual durante la exposición.
6 Emplea un tono de voz adecuado durante la 5
exposición y sin utilizar muletillas.
7 Organiza y planea su presentación de 5
manera ordenada y planificada.
Cierre de la sesión:
8 Responde a las preguntas de forma 5
coherente y clara.
9 Cumple con el tiempo planeado para la 10
sesión: 6 a 10 minutos.
Puntuación Total

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Evidencia de Aprendizaje.- Práctica de Programación de la Unidad 4:

1ª Oportunidad

1. El Instituto tecnológico de Aguascalientes desea un programa que controle


a sus Estudiantes de Licenciatura, Maestría y Doctorado. Los estudiantes
de Licenciatura tienen los Atributos: Nombre, Domicilio, Teléfono, Edad,
Especialidad y No. de créditos, mientras que los estudiantes de Maestría
tienen las siguientes variables miembro: Nombre, Domicilio, Teléfono, Edad,
Investigación Maestría y Promedio. Los estudiantes de Doctorado tienen las
siguientes variables: Nombre, Domicilio, Teléfono, Edad, Proyecto de
Doctorado y Monto de la Investigación. Modele las clases empleando
herencia e incluya una interface Categoría, con el método tipo Categoría(),
que al implementarla indique si el estudiante de Licenciatura es si “Ninguno”
(No. de créditos menor 230), “Servicio social” (No. de créditos entre 230 a
260) y “Residencias profesionales” (No. de créditos mayor a 260); estudiante
de Maestría indique si es “Bueno” (promedio entre 80 y 89), “Muy Bueno”
(promedio entre 90 a 95) y “Excelente” (promedio entre 96 a 100) y
finalmente estudiante de Doctorado debe de indicar si “Bajo” (monto de
investigación entre 5,000 a 10,000), “Medio” (monto de investigación entre
10,001 a 250,000) y “Alto” (monto de investigación mayor a 250,000).
Además, elabore un programa en Java que implemente las clases e
instancie un objeto de cada una, capturando los datos desde teclado
ejemplificado las variables polimórficas.

2. Modifique el ejercicio 4.4 agregando las operaciones de seno, coseno,


tangente, √x, x 𝑛 , 1⁄𝑛, x! y CE; y darle el nombre de Calculadora Científica 2
𝑛

2ª Oportunidad

1. La Secretaría de Transporte desea un programa que controle los


Vehículos de transporte que se registran en el estado. Estos los clasifica
en tres tipos: Particular, Pasajeros y Carga. Los vehículos particulares
tienen los Atributos: Marca, Tipo, Modelo, Color, Tipo de Combustible,
Número de Pasajeros y Cilindros, mientras que los vehículos de
Pasajeros tienen las siguientes variables miembro: Marca, Tipo, Modelo,
Color, Tipo de Combustible, Número de Pasajeros, Origen, Destino y
Costo. Los vehículos de Carga tienen las siguientes variables: Marca,
Tipo, Modelo, Color, Tipo de Combustible, Dimenciones (Largo, Ancho y
Alto), Peso y Carga máxima. Modele las clases empleando herencia e
incluya una interface Categoría, con el método tipo Categoría(), que al
implementarla indique si el vehículo Particular es “Chico” (1 a 4 cilindros),
“Mediano” (6 cilindros) y “Grande” (8 o más cilindros); el vehículo de
Pasajeros: “Microbus” (de 1 a 19 pasajeros), “Buseta” (20 a 30 pasajeros)
y “Autobús” (más de 30 pasajeros) y finalmente el vehículo de Carga:
“Camión chico” (peso entre 1 a 15 ton.), “Camión grande o semi
remolque” (peso entre 16 a 35 ton.) y “Semi remolque o doble o triple
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

remolque” (peso mayor a 35 ton.). Además, elabore un programa en Java


que implemente las clases e instancie un objeto de cada una, capturando
los datos desde teclado ejemplificado las variables polimórficas.

2. Modifique el ejercicio 4.4 agregando las operaciones de inverso del seno,


inverso de coseno, inverso de la tangente, log, a𝑏/𝑐 , ln, random y CE; y darle
el nombre de Calculadora Científica 2.

Indicador de Alcance .E.- Resolución de problemas adicionales en la


práctica de programación

Proporcione un ejemplo donde se utilice una variable polimórfica.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Rúbrica de la Práctica de Programación de la Unidad 4

Instrucciones: Indique con una “X” en la intersección fila - columna las características mínimas que cumple el
proyecto entregado como evidencia, anote los puntos en cada criterio y súmelos.

Criterios de
Excelente Notable Bueno Suficiente Insuficiente Retroalimentación
desempeño
Presenta una portada con: Presenta una portada con seis de Presenta una portada con cinco de Presenta una portada con cuatro Presenta una portada con menos
1. Logo del TecNM y del ITA en los conceptos del apartado los conceptos del apartado de los conceptos del apartado de cuatro de los conceptos
la parte superior. excelente y sin errores excelente y sin errores excelente y sin errores mostrados en el apartado
2. Nombre del Instituto. ortográficos. ortográficos. ortográficos. excelente o tiene errores
ortográficos o No presenta
3. Nombre de la carrera. portada.
4. Nombre de la materia y hora.
Portada 5. Número de Unidad,
descripción de la unidad y
redacción completa de la
Evidencia de Aprendizaje.
6. Nombre y número de control
del estudiante.
7. Fecha.
Y sin errores ortográficos.
Pts. 5 pts. 4.5 pts. 4 pts. 3.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema.
 Código de las super clases  Código de las super clases  Código de las super clases  Código de las super clases
Desarrollo  Código de las subclases  Código de las subclases  Código de las subclases  Código de las subclases
 Código Clase principal  Código Clase principal  Código Clase principal  Código Clase principal
Problema 1  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre la instanciación de muestre la instanciación de muestre la instanciación de muestre la instanciación de
los tres objetos y el los tres objetos y el los tres objetos y el los tres objetos y el
programa funciona al 100%. programa funciona al 90%. programa funciona al 80%. programa funciona al 70%.
Pts. 35 pts. 31.5 pts. 28 pts. 24.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes
rubros: rubros: rubros: rubros:
tiene menos de cinco
 Descripción del problema.  Descripción del problema.  Código con las  Código con las operaciones: funciones implementadas o
 Código con las  Código con las operaciones: o Inv. Seno no presente solución del
operaciones: operaciones: o Inv. Seno o Inv. Coseno problema.
o Inv. Seno o Inv. Seno o Inv. Coseno o Inv. Tangente
o Inv. Coseno o Inv. Coseno o Inv. Tangente o log
Desarrollo o Inv. Tangente o Inv. Tangente o log o 𝑎𝑏/𝑐
o log o log o 𝑎𝑏/𝑐 o ln
Problema 2 o 𝑎𝑏/𝑐 o 𝑎𝑏/𝑐 o ln o random
o ln o ln o random o CE
o random o random o CE  Ejecución del programa
o CE o CE  Ejecución del programa mediante imágenes que
 Ejecución del programa  Ejecución del programa mediante imágenes que muestre el funcionamiento
mediante imágenes que mediante imágenes que muestre el funcionamiento de cinco funciones.
muestre el funcionamiento muestre el funcionamiento de seis funciones.
de las ocho funciones. de siete funciones.
Pts. 35 pts. 31.5 pts. 28 pts. 24.5 pts. 0 pts.
Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión no
con el trabajo y sin errores con el trabajo y sin errores con el trabajo y sin errores con el trabajo y con a lo menos coherente con el trabajo o Con
Conclusiones ortográficos en más de media ortográficos en media cuartilla con ortográficos en menos de media dos errores ortográficos en menos más de dos errores ortográficos o
cuartilla con formato justificado. formato justificado. cuartilla. de media cuartilla. No presenta aportaciones
personales.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Indicador de alcance E Entrega resolución de problemas adicionales en la práctica de programación
Indicador de alcance F Entrega la Práctica de programación en la fecha y hora señalada

Calificación
Calificación mínima aceptable: 70 pts.

En caso de obtener una calificación menor a 70, tendrá que presentar 2ª Oportunidad y solo
deberá de enviar los criterios donde obtuvo cero puntos. Si dentro de esos criterios se
encuentra los Problemas 1 o 2, deberá elaborar los problemas marcados como 2ª
oportunidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Evidencia de Aprendizaje.- Proyecto de la Unidad 4

La empresa Todo Para el Hogar S.A. tiene el siguiente diseño de jerarquía de clases:

Desarrolle en Java la Interface Gama y las clases Electrodoméstico, Lavadora, Refrigerador y Microondas con
su respectiva relación de herencia e implementación. Posteriormente elabore una clase principal llamada
Ejemplo_Electrodoméstico y demuestre el polimorfismo mediante una variable tipo Electrodoméstico e instancie
un objeto de cada subclase (por medio del constructor alternativo, capturando los datos desde teclado) y
utilizando la variable polimórfica, imprima los objetos en pantalla.

Indicador de Alcance. A.- Agregar un menú al proyecto que diga Instanciar y


Desplegar, si seleccionar Instanciar, realice lo que dice el
punto anterior, si selecciona Desplegar, Despliegue los
objetos en pantalla.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del Equipo: Fecha:

Guía de Observación del Proyecto de las Unidad 4


Instrucciones para el llenado del instrumento:
Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con una “X” en la columna
“Si” cuando el equipo cumpla con el desempeño correspondiente al 100% o porcentaje de cumplimiento y en la
columna “No” cuando no realice las actividades señaladas.

Cumple
No. Exposición del proyecto y entrega del trabajo Valor Puntos Retroalimentación
Si No
Al Inicio de la sesión:
Realizan la presentación de cada integrante mencionando su nombre
1 completo. (AG)
5
2 Mencionan la unidad y la descripción del proyecto a resolver. (AG) 5
Durante la sesión:
Demuestra, Describe y Explica el funcionamiento del
proyecto en cuanto a:
 Interface Gama
 Clases: Electrodoméstico, Lavadora, Refrigerador
3 30
y Microondas
 Clase principal
 Ejecución
De una forma coherente y clara (CI).
Expresa y Maneja el sistema del proyecto de forma correcta.
4 15
(PI).
Aplican y Resuelven correctamente la resolución del
5 15
proyecto. (PG)
Interactúa con el grupo manteniendo contacto visual durante
6 5
la exposición. (AI)
Emplea un tono de voz adecuado durante la exposición y sin
7 5
emplear muletillas. (AI)
Organiza y planea su presentación de manera ordenada y
8 5
planificada. (AG)
Cierre de la sesión:
9 Responde a las preguntas de forma correcta.(CPAI) 10
Cumplen con el tiempo planeado para la sesión de 16 a 20
10 5
minutos. (AG)
Diseñar opciones adicionales al proyecto: Indicador de
11 Alcance A
El proyecto tenga un menú que diga Instanciar y Desplegar.
Puntuación Total

A-Actitudinal C-Conceptual P-Procedimental G-Grupal I-Individual

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del Equipo: Fecha:

Lista de Cotejo Trabajo del Proyecto de la Unidad 4


Instrucciones para el llenado del instrumento:
Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con una “X” en la columna
“Si” cuando el equipo cumpla con el desempeño correspondiente al 100% o porcentaje de cumplimiento y en la
columna “No” cuando no realice las actividades señaladas.

Cumple
No. Exposición del proyecto Valor Puntos Retroalimentación
Si No

La portada contiene:

1. Logo del TecNM y del ITA en la parte superior.


2. Nombre del Instituto
1 3. Nombre de la carrera 5
4. Nombre de la materia y hora
5. Número de unidad y descripción del proyecto.
6. Nombre y número de control de los estudiantes.
7. Fecha

El desarrollo contiene la resolución del proyecto con los siguientes rubros:

 Interface Ingreso
2  Clases Electrodoméstico, Lavadora, Refrigerador y Microondas 60
 Clase principal
 Ejecución del programa mediante imágenes muestre el buen
funcionamiento del programa 100%.

La conclusión, tiene con una opinión coherente con el trabajo por cada
3 15
integrante del equipo.

4 El trabajo tiene texto justificado, maneja títulos y subtítulos 10

5 El trabajo está libre de errores ortográficos. 10

Puntuación Total

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

5. Arreglos

Los arreglos se pueden definir como objetos en los que podemos guardar más de un valor,
es decir, al tener una estructura organizada en un arreglo se puede guardar múltiples
valores de acuerdo a su tamaño o capacidad, es importante recordar que los valores a
guardar deben ser del mismo tipo, por ejemplo: Si tenemos un arreglo de tipo Numérico que
puede almacenar 10 valores, solo podrá almacenar 10 números diferentes, no otros tipos
de valores como podrían ser datos tipo String, char, boolean, etc.

5.1. Unidimensional

Los arreglos unidimensionales (también llamados vectores o tablas), son estructuras de


datos de una sola dimensión (de ahí viene su nombre). Un arreglo unidimensional está
constituido por una secuencia de objetos del mismo tipo. A los objetos se les llama
elementos del arreglo y se enumeran del 0 al n-1.
Numero
En la siguiente figura se muestra un arreglo llamado Numero, que contiene 0 10
5 elementos (longitud igual a 5), enumerados del 0 a 4. 1 15
Operaciones. 2 25
3 50
Las operaciones básicas sobre un arreglo unidimensional son: 4 21

 Declaración del arreglo,


 Creación del arreglo,
 Inicialización de los elementos del arreglo, y
 Acceso a los elementos del arreglo.

Declaración del arreglo

La declaración de un arreglo unidimensional consiste en establecer las características del


arreglo y sus elementos, por medio de la siguiente sintaxis:

Tipo [ ] identificador ;

Tipo identificador [ ] ;

,
Al igual que con cualquier variable en Java, los arreglos se deben declarar antes de ser
utilizados.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Donde el Tipo, corresponde al tipo de dato del arreglo, el cual pude ser cualquiera de los 8
básicos de Java o de alguna clase.

Los corchetes pueden colocarse de dos formas:

o Los corchetes colocados después del tipo de dato, esto indica que todos los
identificadores son arreglos.
o Los corchetes colocados después del identificador, indica que solo el
identificador que tenga los corchetes es un arreglo.

Identificador: Es el nombre del Arreglo.

Ejemplo:

int enteros[ ], x, y; enteros en un arreglo unidimensional de tipo int, x y y


son variables tipo int.
float [ ] cal1, cal2, cal3, prom; cal1, cal2, cal3 y prom son arreglos
unidimensionales.

char [ ] letra1, letra2[ ], letra3; letra1 y letra3 son arreglos de una dimensión del tipo
char y mientras que letra2 es una arreglo de arreglos
de tipo char (es decir una matriz).

Creación del arreglo

Esto solo está declarando el nombre del arreglo y el tipo de datos que se van a almacenar
(a esto se le llama también referencia), para declarar el número de elementos del arreglo,
se realiza por medio del operador new.
Ejemplo:

float [ ] CalificacionFinal;
CalificacionFinal = new float [45];

La primera sentencia declara un arreglo unidimensional llamado CalificacionFinal que


maneja datos tipo float. La segunda sentencia declara que tendrá 45 elementos (enumerado
del 0 al 44).

Otra forma de hacer la declaración del arreglo, así como de sus elementos es:

float [ ] CalificacionFinal = new float [45];

Acceso a los elementos del arreglo

Para almacenar datos en un arreglo basta con poner el nombre del arreglo, el subíndice
(encerredo entre corchetes), el símbolo igual, la expresión que se quiere almacenar y
finalmente punto y coma.

CalificacionFinal[5] = 70;
System.out.println(“La Calificación Final 6 es: “ + CalificacionFinal[5]);
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 5.1: El siguiente programa declara un arreglo de 6 elementos llamado Nombres.


Posteriormente por medio de una instrucción for captura la cadena y asigna los datos
capturados a cada elemento del arreglo y finalmente por medio una instrucción while
despliega el contenido del arreglo.

Ejercicio 5.2: El siguiente programa declara un arreglo de 10 elementos llamado Valores.


Posteriormente por medio del método random() de la clase Math y utilizando una instrucción
for carga de manera automática cada elemento del arreglo. Finalmente despliega el
contenido del arreglo por medio de una instrucción do while.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 5.3: Elabore un programa que lea de teclado 10 calificaciones numéricas entre 0
a 100, posteriormente imprima cada calificación con su correspondiente Nota en base a la
siguiente tabla:

Límite
Nota
Inferior Superior
93 100 A+
90 92 A-
87 89 B+
83 86 B-
80 82 C+
77 79 C-
73 76 D+
70 72 D-
0 69 F
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance 5.C.- Explica problemas propuestos

Ejercicio 5.4: Elabore un programa que declare y cargue un arreglo de 100 elementos de
forma aleatoria (el rango de valores estará entre 100 a 999), imprima los números en 4
grupos de 25, calcule e imprime su media aritmética.

1 26 51 76
2 27 52 77
3 28 53 78
.. .. .. ..
.. .. .. ..
24 49 74 99
25 50 75 100
Media aritmética: 999

Ejercicio 5.5: Elabore un programa que declare y cargue un arreglo de 100 elementos de
forma aleatoria (el rango de valores estará entre 100 a 999), imprima los números en 4
grupos de 25 e imprima la mediana.

1 26 51 76
2 27 52 77
3 28 53 78
.. .. .. ..
.. .. .. ..
24 49 74 99
25 50 75 100
Mediana: 999

Ejercicio 5.6: Elabore un programa que declare y cargue un arreglo de 100 elementos de
forma aleatoria (el rango de valores estará entre 100 a 999), imprima los números en 4
grupos de 25 e imprima la moda.
1 26 51 76
2 27 52 77
3 28 53 78
.. .. .. ..
.. .. .. ..
24 49 74 99
25 50 75 100
Moda: 999
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación
Asignatura: Programación Orientada a Objetos
Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Guía de observación de explicación de problemas propuestos

Instrucciones para el llenado del instrumento:


Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con
una “X” en la columna “Si” cuando el candidato cumpla con el desempeño correspondiente
y en la columna “No” cuando no realice las actividades señaladas.

Unidad: 5. Arreglos

Tema: Indicador de Alcance 5.C.- Explica problemas propuestos

Cumple
No. Al Inicio de la sesión: Valor Puntos Retroalimentación
Si No
1 Realiza su presentación mencionando su 5
nombre completo.
2 Menciona el indicador de alcance y la 5
descripción del problema a resolver.
Durante la sesión:
3 Maneja términos, conceptos y 30
conocimientos en su exposición de forma
correcta.
4 Explica la resolución del problema de forma 30
coherente y clara.
5 Interactúa con el grupo manteniendo 5
contacto visual durante la exposición.
6 Emplea un tono de voz adecuado durante la 5
exposición y sin utilizar muletillas.
7 Organiza y planea su presentación de 5
manera ordenada y planificada.
Cierre de la sesión:
8 Responde a las preguntas de forma 5
coherente y clara.
9 Cumple con el tiempo planeado para la 10
sesión: 6 a 10 minutos.
Puntuación Total

Calificación mínima aceptable: 70 pts.

NOMBRE Y FIRMA DE CONFORMIDAD DEL ALUMNO:


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Inicialización de los elementos del arreglo

Otra forma de introducir datos en un arreglo es inicializándolo desde la declaración.


Numero
0 10
1 15
int Numero[] = {10, 15, 25, 50, 21};
2 25
3 50
4 21
Tamaño de los arreglos (length)

Java considera cada arreglo un objeto, debido a ello se pude conocer el número de
elementos de un arreglo por medio del campo length.

Por ejemplo, con la siguiente instrucción imprime “La longitud es 5”.

System.out.println(“La longitud es “ + Numero.length);

Ejercicio 5.7: El siguiente ejemplo declara un arreglo de 10 elementos llamado enteros, y


le asigna datos desde la declaración. Posteriormente por medio de un ciclo for recorre los
elementos del arreglo y determina el elemento menor y mayor; al final los imprime.

Ejercicio 5.8: Como se ha venido diciendo los arreglos son referencias, y podemos tener
dos variables apuntando a un mismo arreglo.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instrucción for mejorada

En los ejemplos anteriores demostramos cómo las instrucciones for controladas por un
contador intera a través de los elementos del arreglo. Ahora veremos la instrucción for
mejorada, la cual itera a través de los elementos de un arreglo o colección sin utilizar un
contador.

Sintaxis de la instrucción for mejorada:

for(parámetro: nombreArreglo)
Instrucción;

Donde parámetro tiene dos partes: un tipo y un identificador (por ejemplo, int valor), y
nombreArreglo es el arreglo a través del cual se iterará. El tipo del parámetro debe
concordar con el tipo de los elementos en el arreglo.

Ejercicio 5.9: Muestra el contenido el arreglo numero utilizando el for mejorado.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Método de ordenamiento por Burbuja:

La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento.


Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente,
intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias
veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista
está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista
los elementos durante los intercambios, como si fueran pequeñas "burbujas". También es
conocido como el método del intercambio directo. Dado que solo usa comparaciones para
operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de
implementar.

Algoritmo:

Realiza
Movimientos = 0
Para i=0; i < Arreglo.longitud – 1; i ++
Si Arreglo[i+1] < Arreglo[i]
Arreglo[i] <-> Arreglo[i+1] // Intercambiar
Movimientos++
Fin_Si
Fin_para
Mientras (Movimientos != 0)

Dónde:

El símbolo <-> Significa intercambio, es decir el valor que se encuentra en Arreglo[i] se


intercambia a Arreglo[i+1] y el valor que está en Arreglo[i+1] se intercambia e la posición
Arreglo[i].

Ejemplo: Se tiene el siguiente arreglo cargado con los datos:


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 5.10: Elabore un programa en Java que genere 10 números aleatorios (entre 100
y 999), ordénelos en forma ascendente mediante el método de la burbuja y presente los
datos como se muestra en la siguiente figura.

Método de ordenamiento por Selección

Los métodos de ordenación por selección se basan en dos principios básicos:

Seleccionar el elemento más pequeño (o más grande) del arreglo. Colocarlo en la posición
más baja (o más alta) del arreglo. A diferencia del método de la burbuja, en este método el
elemento más pequeño (o más grande) es el que se coloca en la posición final que le
corresponde.

Algoritmo:

Para i=0; i < Arreglo.longitud – 1; i++


Para j= i+1, j < Arreglo.longitud; j++
Si Arreglo[j] < Arreglo[i]
Arreglo[i] <-> Arreglo[j] // Intercambiar
Fin_Si
Fin_para
Fin_para

Ejercicio 5.11: Elabore un programa en Java que genere 10 números aleatorios (entre 100
y 999), ordénelos en forma ascendente mediante el método selección y presente los datos
como se muestra en la siguiente figura.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

5.2. Multidimensionales

Los arreglos vistos anteriormente se conocen como arreglos unidimensionales y se


caracterizan por tener un solo subíndice. Los arreglos multidimensionales son aquellos que
tienen más de una dimensión y, en consecuencia, más de un índice (o subíndice). Los
arreglos más usuales son los de dos dimensiones, conocidos como matrices.

Un arreglo de dos dimensiones equivale a una tabla con filas y columnas:


n 0 1 2 3
0
1
2
3
4

Operaciones.

Las operaciones básicas sobre un arreglo bidimensional son:

 Declaración del arreglo,


 Creación del arreglo,
 Inicialización de los elementos del arreglo, y
 Acceso a los elementos del arreglo.

Declaración de arreglos bidimensionales (matriz)

Tipo [ ] [ ] identificador ;

Tipo identificador [ ] [ ] ;

,
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejemplo:

int puestos[ ][ ], x, y; puestos en un arreglos de dos dimensiones del tipo


int, x y y son variables tipo int.

float [ ][ ] cal1, cal2, cal3, prom; cal1, cal2, cal3 y prom son arreglos bidimensionales.

Creación del arreglo

Como ya se mencionó estas declaraciones son simplemente referencias, para declarar el


número de elementos del arreglo se hace por medio del operador new.
Ejemplo:

float [ ][ ] Calificaciones;
Calificaciones = new float [45][4];

La primera sentencia declara un arreglo Calificaciones que manejara tipos de datos float.
La segunda sentencia crea el arreglo e indica que manejara 45 filas (del 0 al 44) y 4
columnas (del 0 al 3). Otra forma de hacer la declaración y creación del arreglo es:

float [ ][ ] Calificaciones = new float [45][3];

Inicialización de los elementos del arreglo

Al igual que los arreglos unidimensionales, los arreglos multidimensionales se pueden


inicializar desde la declaración.
Ejemplo:

int tabla1[ ][ ] = { {51, 24, 33}, {32, 23, 45} };

Se define una matriz de 2 filas por 3 columnas

También se puede utilizar otros formatos como los siguientes:

int tabla1[ ][ ] = { {51, 24, 33},


{32, 23, 45} }

tabla1[ ][ ]
int tabla1[ ][ ] = { 0 1 2
{51, 24, 33},
{32, 23, 45} 0 51 24 33
};
1 32 23 45

tabla2[ ][ ]
int tabla2[ ][ ] = { 0 1 2 3
{ 1, 2, 3, 4},
{ 5, 6, 7, 8}, 0 1 2 3 4
{ 9, 10, 11, 12}
}; 1 5 6 7 8
2 9 10 11 12
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Java trata los arreglos de dos o más dimensiones como un arreglo de arreglos, por tanto,
puede crear arreglos no proporcionales.

Por ejemplo:

a) double datos[ ][ ] = { {1.5, -2.5}, {5.0, 0.0, 1.5} };

Se ha creado un arreglo con dos filas, la 1ª con dos columnas y la 2ª. con 3.

b) int [ ] a = { 1, 3, 5 }, b = { 2, 4, 6, 8, 10 };
int z[ ][ ] = { a, b };

Primero se definió el arreglo a con 3 elementos y después el arreglo b con 5 elementos,


posteriormente se define la matriz z con dos filas, la primera con 3 elementos (los del arreglo
a) y la segunda con 5 elementos (los del arreglo b).

Método length con los arreglos bidimensionales

Para saber la longitud de la última dimensión se debe especificar los subíndices


precedentes,

Ejercicio 5.12: Para el siguiente ejemplo se declara una matriz f no proporcional, donde el
primer subíndice tiene 4 elementos, el segundo 2 y el último 6.

Acceso a los elementos del arreglo bidimensional

Por ejemplo, si tenemos la siguiente matriz:

int [ ][ ] a = new int [3][4];


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

a
Columna 0 Columna 1 Columna 2 Columna 3
Fila 0 a[0][0] a[0][1] a[0][2] a[0][3]
Fila 1 a[1][0] a[1][1] a[1][2] a[1][3]
Fila 2 a[2][0] a[2][1] a[2][2] a[2][3]
Índice de la columna
Índice de la fila
Nombre del arreglo

Para almacenar datos en una matriz basta con poner el nombre del arreglo, el subíndice de
las filas y el subíndice de las columnas, el símbolo igual y la expresión que se quiere
almacenar y finalmente después punto y coma. Por ejemplo:

a[1][3] = Expresión;

Ejercicio 5.13: El siguiente programa lee una matriz de enteros de n renglones y m


columnas y calcule la suma de los elementos de cada renglón.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 5.14: Elabore un programa que declare y cargue en forma aleatoria una matriz
de 5 por 5 y obtenga la suma los elementos de la diagonal principal e
imprime el resultado.

x
x
x
x
x

Indicador de Alcance 5.C.- Explica problemas propuestos

Ejercicio 5.15: Elabore un programa que declare y carga en forma aleatoria una matriz
de 6 por 6 y obtenga el producto de la diagonal invertida e imprime el
resultado.

O
O
O
O
O
O

Ejercicio 5.16: Elabore un programa que lea una matriz de n X m y la escriba poniendo
las columnas como renglones y los renglones como columnas.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Por ejemplo, si la matriz que da el usuario es:

4 7 1 3 5
2 0 6 9 7
3 1 2 6 4

Entonces el programa debe escribir la matriz transpuesta:

4 2 3
7 0 1
1 6 2
3 9 6
5 7 4

Multidimensionales.

Java proporciona la probabilidad de almacenar varias dimensiones, aunque raramente los


problemas del mundo real se manejan más tres dimensiones, esto porque para los seres
humanos es difícil representar gráficamente arreglos con más de tres dimensiones. Para
representar un arreglo de tres dimensiones lo haremos por medio de un cubo.

int cubo [ ][ ][ ] = new int [4][5][3];

Operaciones.

Las operaciones básicas sobre un arreglo multidimensional son:

 Declaración del arreglo,


 Creación del arreglo,
 Inicialización de los elementos del arreglo, y
 Acceso a los elementos del arreglo.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Declaración de arreglos multidimensional

Para el siguiente ejemplo se tomará un arreglo de tres dimensiones

Tipo [ ] [ ] [ ] identificador ;

Tipo identificador [ ] [ ] [ ] ;

Ejemplo:

int cubo[ ][ ] [ ]; cubo en un arreglo de tres dimensiones del tipo int.

String [ ][ ][ ] Edificio1, Edificio2; Edificio1 y Edificio2 son arreglos multidimensionales


de 3 dimensiones.

Creación del arreglo

Como ya se mencionó estas declaraciones son simplemente referencias, para declarar el


número de elementos del arreglo se hace por medio del operador new.

Ejemplo:

int cubo [ ][ ][ ];
cubo = new int [4][5][3];

La primera sentencia declara la referencia al arreglo cubo (de tres dimensiones) que
manejara datos tipos int. La segunda sentencia crea el arreglo e indica que manejara 4 filas,
con 5 columnas y 3 de profundidad.
Otra forma de hacer la declaración y creación del arreglo es:

int [ ][ ] [ ] cubo = new int [4][5][3];

Almacenar datos en el arreglo multidimensional:

Al igual que en los anteriores arreglos, se deben poner los subíndices al cual se quiere
acceder y posteriormente la expresión a asignar.

cubo[2][3][2] = 15;
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Clases para el manejo de arreglos.

La clase Arrays proporciona métodos estáticos para manipular arreglos. Esta clase maneja
arreglos a alto nivel, como los métodos: sort para ordenar arreglos, binarySearch para
buscar en un arreglo ordenado, equals para comparar arreglos y fill guardar valores en
todos los elementos de un arreglo.

Métodos Descripción

static int binarySearch(char[ ] a, char bus)


Busca en el arreglo a el elemento bus y regresa la
static int binarySearch(double[ ] a, double bus)
posición donde lo encuentra, en caso de no
static int binarySearch(float[ ] a, float bus)
localizarlo regresa -1.
static int binarySearch(int[ ] a, int bus)
Nota.- El arreglo debe estar ordenado.
static int binarySearch(Object[ ] a, Object bus)

static boolean equals(char[ ] a, char[ ] a2)


static boolean equals(double[ ] a, double[ ] a2) Regresa true si los dos arreglos son iguales
static boolean equals(float[ ] a, float[ ] a2 (elementa a elemento) y regresa false en caso
static boolean equals(int[ ] a, int[ ] a2) contrario.
static boolean equals(Object[ ] a, Object[ ] a2)

static void fill(boolean[ ] a, boolean val)


static void fill(char[ ] a, char val)
static void fill(double[ ] a, double val) A cada elemento del arreglo le asigna el valor
static void fill(float[ ] a, float val) determinado por el parámetro val.
static void fill(int[ ] a, int val)
static void fill(Object[ ] a, Object val)

static void sort(char[ ] a)


static void sort(double[ ] a)
static void sort(float[ ] a) Ordena ascendentemente el arreglo especificado.
static void sort(int[ ] a)
static void sort(Object[ ] a)

static void sort(char[ ] a, int inicio, int fin)


static void sort(double[ ] a, int inicio, int fin) Ordena ascendentemente el arreglo especificado
static void sort(float[ ] a, int inicio, int fin) desde el elemento en la posición inicio hasta el
static void sort(int[ ] a, int inicio, int fin) elemento en la posición fin.
static void sort(Object[ ] a, int inicio, int fin)

Indicador de Alcance 5.B.- Participación en clase.

Evidencia de Aprendizaje.- Práctica de Programación de la Unidad 5:

1ª Oportunidad

1. Elabore un programa en Java que declare y cargue un arreglo con 50,000


elementos enteros de forma aleatoria (los valores deben de estar entre 100,000 y
999,999), ordénelo ascendentemente mediante el método de la burbuja, burbuja
mejorado, selección y selección mejorado, contabilizando el número de
movimientos por cada método, presente los resultados en pantalla y determine que
método de ordenamiento es mejor en base al menor número de movimientos.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Método de la Burbuja: 99999 movimientos


Método de la Burbuja Mejorado: 99999 movimientos
Método Selección: 99999 movimientos
Método Selección mejorado: 99999 movimientos

El mejor método de ordenación fue XXXXXX debido a que tuvo menor número de
movimientos con 9999.

2. Elabore un programa que lea los nombres y las calificaciones de tres materias de
los alumnos de la carrera de Ing. en TIC (el número de alumnos máximo serán 20).
Calcule los promedios por: Alumno, Materia y el General. Finalmente, despliegue
en pantalla los datos, como se muestra a continuación:

No. Nombre Materia 1 Materia 2 Materia 3 Promedio


1 xxxxxxxx 99 99 99 99
2 xxxxxxxx 99 99 99 66
3 xxxxxxxx 99 99 99 77
4 xxxxxxxx 99 99 99 88
.. .. .. .. .. ..
.. .. .. .. .. ..
20 xxxxxxxx 99 99 99 55

Promedios: 99 99 99 44

3. Elabore un programa para controlar los asientos de un teatro el cual consta de tres
niveles (Luneta, 1er Balcón y 2º Balcón). El nivel de Luneta tiene etiquetadas las
filas de la: “A” a la “Z” (27 filas), cada fila tiene 35 butacas, mientras que el 1er
Balcón las etiquetas de las filas van desde la “A” hasta la “J” (10 filas) y 32 butacas
por fila y en el 2º. Balcón las etiquetas de las filas van desde la “A” hasta las “H” (8
filas) y cada fila tiene 30 butacas. El programa debe de capturar nivel (Luneta, 1er
Balcón y 2º. Balcón) y el número de butaca, si está disponible marcarla como
ocupada, en caso de estar ocupada, solicitar nuevamente la información. Realizar
este proceso hasta seleccionar la opción salir.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

2ª Oportunidad

1. Elabore un programa en Java que declare y cargue un arreglo con 50,000


elementos enteros de forma aleatoria (los valores deben de estar entre 100,000 y
999,999), ordénelo descendentemente mediante el método de la burbuja, burbuja
mejorado, selección y selección mejorado, determinando el tiempo utilizando por
cada método, presente los resultados en pantalla y determine que método de
ordenamiento es mejor en base al menor tiempo.

Método de la Burbuja: 99999 tiempo


Método de la Burbuja Mejorado: 99999 tiempo
Método Selección: 99999 tiempo
Método Selección mejorado: 99999 tiempo

El mejor método de ordenación fue XXXXXX debido a que tuvo menor tiempo que
fue 9999 milisegundos.

2. Elabore un programa que lea los nombres y tres calificaciones de los alumnos de
la materia Programación Orientada a Objetos (20 Alumnos). Para cada alumno
calcule el promedio, determine la calificación máxima y la calificación mínima,
además calcule el porcentaje de aprobados y reprobados, así como el promedio
general de la materia e imprima en pantalla el nombre, calificaciones, promedio de
todos los alumnos, calificación máxima y mínima; y al final despliegue el porcentaje
que aprobaron y reprobaron, así como el promedio general.

Nombre Cal 1 Cal 2 Cal 3 Promedio Max Min


xxxxxxxx 99 99 99 99 99 99
xxxxxxxx 99 99 99 66 99 99
xxxxxxxx 99 99 99 77 99 99
xxxxxxxx 99 99 99 88 99 99
xxxxxxxx 99 99 99 55 99 99

Aprobados: 99%
Reprobados: 99%
Promedio general: 99

3. Elabore un programa para controlar los asientos de un estadio de futbol, el cual


tiene las siguientes zonas, niveles y números de asientos:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Indicador de Alcance .E.- Resolución de problemas adicionales en la


práctica de programación

El “cuadro mágico”.

Un cuadrado mágico es una matriz cuadrada con un número impar de renglones y


columnas. En dicha matriz, los números de cada renglón, de cada columna y de
cada una de las diagonales, suman el mismo valor. Por ejemplo:

6 1 8
7 5 3
2 9 4

Note que los números de todos los renglones, columnas y diagonales suman 15.
Una técnica a través de la cual se puede generar un cuadrado mágico es la
siguiente:

a) Se comienza asignando un valor de 1 al elemento central de la primera fila.


b) A continuación, se escriben los valores sucesivos (2,3, etc.) desplazándose
desde la posición actual una fila hacia arriba y una columna hacia la
izquierda. Estos cambios se realizan tratando a la matriz como si fuera
circular, de forma que moverse una posición hacia arriba desde la fila
superior lleva a la inferior, y moverse una posición hacia la izquierda desde
la primera columna conduce a la última.
c) Si la nueva posición ya está ocupada, en lugar de desplazarse hacia arriba
y a la izquierda, se moverá sólo una posición hacia abajo.

Escriba un programa que muestre un cuadro mágico de dimensión n, donde n puede


estar entre los valores 3, 5, 7 y 9.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Rúbrica de la Práctica de Programación de la Unidad 5

Instrucciones: Indique con una “X” en la intersección fila - columna las características mínimas que cumple el
proyecto entregado como evidencia, anote los puntos en cada criterio y súmelos.

Criterios de
Excelente Notable Bueno Suficiente Insuficiente Retroalimentación
desempeño
Presenta una portada con: Presenta una portada con seis de Presenta una portada con cinco de Presenta una portada con cuatro Presenta una portada con menos
1. Logo del TecNM y del ITA en los conceptos del apartado los conceptos del apartado de los conceptos del apartado de cuatro de los conceptos
la parte superior. excelente y sin errores excelente y sin errores excelente y sin errores mostrados en el apartado
2. Nombre del Instituto. ortográficos. ortográficos. ortográficos. excelente o tiene errores
ortográficos o No presenta
3. Nombre de la carrera. portada.
4. Nombre de la materia y hora.
Portada 5. Número de Unidad,
descripción de la unidad y
redacción completa de la
Evidencia de Aprendizaje.
6. Nombre y número de control
del estudiante.
7. Fecha.
Y sin errores ortográficos.
Pts. 5 pts. 4.5 pts. 4 pts. 3.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema.
 Código de los métodos de  Código de los métodos de  Código de los métodos de  Código de los métodos de
ordenamiento (Burbuja, ordenamiento (Burbuja, ordenamiento (Burbuja, ordenamiento (Burbuja,
Desarrollo Burbuja Mejorado,
Selección y Selección
Burbuja Mejorado,
Selección y Selección
Burbuja Mejorado,
Selección y Selección
Burbuja Mejorado,
Selección y Selección
Problema 1 mejorado). mejorado). mejorado). mejorado).
 Código Clase principal  Código Clase principal  Código Clase principal  Código Clase principal
 Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el buen muestre el buen muestre el buen muestre el buen
funcionamiento del funcionamiento del funcionamiento del funcionamiento del
programa 100%. programa 90%. programa 80%. programa 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema.
Desarrollo  Todo el Código.  Todo el Código.  Todo el Código.  Todo el Código.
 Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
Problema 2 mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el buen muestre el buen muestre el buen muestre el buen
funcionamiento del funcionamiento del funcionamiento del funcionamiento del
programa 100%. programa 90%. programa 80%. programa 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del problema.  Descripción del problema.  Descripción del problema.  Descripción del problema.
Desarrollo  Todo el Código.  Todo el Código.  Todo el Código.  Todo el Código.
Problema 3  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el buen muestre el buen muestre el buen muestre el buen
funcionamiento del funcionamiento del funcionamiento del funcionamiento del
programa 100%. programa 90%. programa 80%. programa 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión coherente Presenta una opinión no
con el trabajo y sin errores con el trabajo y sin errores con el trabajo y sin errores con el trabajo y con a lo menos coherente con el trabajo o Con
Conclusiones ortográficos en más de media ortográficos en media cuartilla con ortográficos en menos de media dos errores ortográficos en menos más de dos errores ortográficos
cuartilla con formato justificado. formato justificado. cuartilla. de media cuartilla. o No presenta aportaciones
personales.
Pts. 20 pts. 18 pts. 16 pts. 14 pts. 0 pts.
Indicador de alcance E Entrega resolución de problemas adicionales en la práctica de programación
Indicador de alcance F Entrega la Práctica de programación en la fecha y hora señalada

Calificación
Calificación mínima aceptable: 70 pts.

En caso de obtener una calificación menor a 70, tendrá que presentar 2ª Oportunidad y solo
deberá de enviar los criterios donde obtuvo cero puntos. Si dentro de esos criterios se
encuentra los Problemas 1, 2 o 3, deberá elaborar los problemas marcados como 2ª
oportunidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

6. Archivos

El almacenar datos en variables o arreglos es temporal; los datos se pierden cuando una
variable local queda fuera de alance o cuando el programa termina su ejecución. Los
archivos son utilizados para la retención a largo plazo de grandes cantidades de datos. Los
datos almacenados en archivo existen más allá de la duración de un programa. Los archivos
se almacenan en memoria secundaria (discos magnéticos, discos ópticos, USB, etc.).

Un flujo (stream) es una abstracción que se refiere a un flujo o corriente de datos que fluye
entre un origen o fuente hacia un destino. Entre el origen y el destino debe de existir una
conexión o canal por donde circulen los datos. Al abrir un archivo se crean automáticamente
tres objetos flujo o canales. Estos objetos están definidos en la clase System y son:

System.in Objeto de entrada estándar; permite la entrada desde teclado.


System.out Objeto de salida estándar, permite la salida de datos a pantalla.
System.err Objeto de salida a errores estándar, envía los errores a pantalla.

Estos tres objetos se crean al comenzar la ejecución de un programa y sirven para


administrar la secuencia de caracteres en modo texto.

En Java, un archivo es, un flujo externo o secuencia de bytes almacenada en un dispositivo


externo (generalmente disco). Si el archivo se abre de lectura o escritura el flujo será de
entrada o salida, respectivamente. El paquete java.io agrupa el conjunto de clases para el
manejo de entrada y salida; siempre que vaya a procesar un archivo se tiene que utilizar
este paquete, por lo que debe importarlo.

Los flujos de datos se clasificar en flujos de entrada (InputStream) y flujos de salida


(OutputStream). Por ello Java declara dos clases que derivan directamente de la clase
Object: InputStream y OutputStream. Ambas son clases abstractas que declaran métodos
que deben redefinirse en sus clases derivadas. Además, InputStream es la clase base de
todas las clases definidas para stream de entrada, y OutputStream es la clase base de
todas las clases de stream de salida.

InputStream OutputStream
FileInputStream FileOutputStream
ByteArrayInputStream ByteArrayOutputStream
PipeInputStream PipeOutputStream
SequenceInputStream FilterOutputStream
StringBufferInputStream
FilterInputStream

6.1. Definición de Archivos de texto y archivos binarios.

El elemento más pequeño de almacenamiento es un bit (binary digit/dígito binario), que


está representado por un 0 (cero) o un 1 (uno). Las computadoras procesan los datos en
forma binaria y al formar conjunto de bit representa un carácter, los caracteres de Java son
caracteres Unicode, compuestos por dos bytes, cada byte está compuesto por ocho bits.
Así como los caracteres están formados por bits, los campos están formados por un
conjunto de caracteres y por lo general un conjunto de campos forman un registro.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Sandra Ruíz Roma # 100


Tomas Pérez Sol # 120
Archivo
Julia Ramos Nayarit # 320
Ramiro Esparza Pera # 240

Julia Ramos Nayarit # 320 Registro

Julia Campo

01001010 Byte (Carácter ASCII de la J)

1 Bit

Ejemplo: Establezca el registro de una empresa para sus empleados.

Archivo de texto: Un archivo de texto o archivo de texto simple es un archivo


informático compuesto únicamente por texto sin formato, sólo caracteres, lo que lo hace
también legible por humanos. En texto que contienen estos archivos carecen de
propiedades es decir no tienen negritas, subrayado, cursiva, tamaño, tipo de letra, etc.,
también es llamada archivo de texto plano, este término proviene de la traducción literal en
ingles de Plain Text.

Archivo binario: Un archivo binario es un archivo informático que contiene


información de cualquier tipo codificada en binario para el propósito de almacenamiento y
procesamiento mediante una computadora. Por ejemplo, los archivos informáticos que
almacenan texto formateado o fotografías, así como los archivos ejecutables que contienen
programas.

Operaciones básicas en archivos texto y binario.

Las operaciones básicas con archivos son:


 Creación
 Apertura
 Lectura
 Escritura
 Recorrido
 Cierre
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Con la clase FileOutputStream se pueden escribir bytes en un flujo de salida asociado a un


archivo.

Métodos Descripción

Crea un Objeto FileOutputStream que


FileOutputStream(String nombre) throws
escribe el archivo con el nombre
IOException
especificado.

Crea un Objeto FileOutputStream que


FileOutputStream(File nombre) throws
escribe el archivo administrado por el
IOException
Objeto File especificado.

Crea un Objeto FileOutputStream que


FileOutputStream(String nombre, boolean escribe el archivo con el nombre
sw) throws IOException especificado. En caso de que sw = true
los bytes se agregan al final del archivo.

Crea un Objeto FileOutputStream que


escribe el archivo administrado por el
FileOutputStream(File nombre, boolean
Objeto File especificado. En caso de que
sw) throws IOException
sw = true los bytes se agregan al final del
archivo.

Crea un Objeto FileOutputStream que


FileOutputStream(FileDescriptor nombre)
escribe el archivo referido por el objeto
throws IOException
FileDescriptor especificado.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

void close() throws IOException Cierra el archivo.

Escribe un solo byte en el flujo del


void write() throws IOException
archivo.

Escribe todos los bytes de b en el flujo del


void write(byte b[]) throws IOException
archivo.

Escribe len bytes en el flujo del archivo


void write(byte b[], int pos, int len) throws
comenzando de la posición pos dentro de
IOException
b.

Ejercicio 6.1: El siguiente programa solicita el nombre de un archivo, posteriormente se


teclean varias líneas, las cuales se agregan al archivo y hasta que se teclea la palabra “fin”
termina la ejecución.

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_TextoEscritura {


public static void main( String args[] ) {
String nombreArchivo, linea;
nombreArchivo = JOptionPane.showInputDialog(
"Dame el nombre del archivo:" );
try {
FileOutputStream archivoSalida =
new FileOutputStream(nombreArchivo);
linea = JOptionPane.showInputDialog(
"Teclea una Linea o \"fin\" para salir" );
while (!linea.equals("fin")) {
archivoSalida.write(linea.getBytes());
archivoSalida.write( (byte) '\r');
archivoSalida.write( (byte) '\n');
linea = JOptionPane.showInputDialog(
"Teclea una Linea o \"fin\" para salir" );
}
archivoSalida.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( null,"Error en el flujo" + e );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Abrir.

La clase FileInputStream se utiliza para leer bytes desde un archivo. Proporciona


operaciones básicas para leer un byte o una secuencia de bytes.

Métodos Descripción

FileInputStream(String nombre) throws Crea un Objeto FileInputStream que lee el


FileNotFoundException archivo con el nombre especificado.

Métodos Descripción

Crea un Objeto FileInputStream que lee el


FileInputStream(File nombre) throws
archivo físico administrado por el objeto
FileNotFoundException
File especificado.

Crea un Objeto FileInputStream que lee el


FileInputStream(FileDescriptor nombre)
archivo referido por el objeto
throws FileNotFoundException
FileDescriptor especificado.

Regresa el número de bytes que pueden


int available() throws IOException
ser leídos en el archivo.

void close() throws IOException Cierra el archivo.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Métodos Descripción

Lee y regresa un solo byte del flujo.


int read() throws IOException Regresa el valor -1 si llega al final del
archivo.

Lee una secuencia de bytes y los


int read(byte b[]) throws IOException almacena en el arreglo b. Regresa -1 si
llega al final del archivo.

Lee como máximo len bytes y los coloca


int read(byte b[], int pos, int len) throws
en la posición pos dentro de b. Regresa -1
IOException
si llega al final del archivo.

long skip(long n) throws IOException Salta n bytes del flujo.

Ejercicio 6.2: El siguiente programa solicita el nombre de un archivo texto y despliega en


pantalla su contenido.

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_TextoLectura {


public static void main( String args[]) {
int c;
String nombreArchivo, salida = "";
nombreArchivo = JOptionPane.showInputDialog(
"Dame el nombre del archivo:");
try {
FileInputStream archivoEntrada =
new FileInputStream(nombreArchivo);
while ((c = archivoEntrada.read()) != -1)
salida += (char) c;
JOptionPane.showMessageDialog(null, salida,
"Contenido del archivo:" +
nombreArchivo, JOptionPane.PLAIN_MESSAGE);
archivoEntrada.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog(null,"Error en el flujo" + e );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Cerrar.

Cada vez que habrá un archivo tendrá que cerrarlo por medio del método close() de la
siguiente forma:
nombreDeArchivo.close();

Lectura y escritura.

Ejercicio 6.3: Ahora modificaremos el Ejercicio 6.1 para que añada texto al final del archivo
y muestre su contenido.

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_TextoAgregar {


public static void main( String args[]) {
String nombreArchivo, linea, salida = "";
int c;
nombreArchivo = JOptionPane.showInputDialog(
"Dame el nombre del archivo:");
try {
FileOutputStream archivoSalida =
new FileOutputStream(nombreArchivo, true);
linea = JOptionPane.showInputDialog(
"Teclea una Linea o \"fin\" para salir");
while (!linea.equals("fin")) {
linea += "\r\n ";
archivoSalida.write(linea.getBytes());
linea = JOptionPane.showInputDialog(
"Teclea una Linea o \"fin\" para salir");
}
archivoSalida.close();
FileInputStream archivoEntrada =
new FileInputStream(nombreArchivo);
while ((c = archivoEntrada.read()) != -1)
salida += (char) c;
JOptionPane.showMessageDialog( null, salida,
"Contenido del archivo:" + nombreArchivo,
JOptionPane.PLAIN_MESSAGE);
archivoEntrada.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( null,"Error en el flujo" + e );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 6.4: Ahora utilizaremos la clase File para leer información de un archivo texto
llamado Alumnos.txt mediante un objeto tipo Scanner.

import java.io.File;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Ejemplo_ArchivoFileyScanner {


public static void main(String[] args) {
String salida="", nombreArchivo;
nombreArchivo = JOptionPane.showInputDialog(
"Dame el nombre del archivo:");
try {
File f = new File(nombreArchivo);
Scanner Leer = new Scanner(f);
while (Leer.hasNextLine()) {
salida += Leer.nextLine();
salida += "\r\n";
}
JOptionPane.showMessageDialog(null, salida);
Leer.close();
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error en el archivo"
+ nombreArchivo );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 6.5: Modificaremos el ejercicio 6.4 para que lea cada token que se encuentra
separado por una coma.

package archivostexto;

import java.io.File;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Ejemplo_ArchivoFileyScannerConDelimitador {


public static void main(String[] args) {
String salida="", nombreArchivo;
nombreArchivo = JOptionPane.showInputDialog(
"Dame el nombre del archivo:");
try {
File f = new File(nombreArchivo);
Scanner Leer = new Scanner(f).useDelimiter(",");
while (Leer.hasNext()) {
salida += Leer.next();
salida += "\r\n";
}
JOptionPane.showMessageDialog(null, salida);
Leer.close();
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error en el archivo"
+ nombreArchivo );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

6.2. Operaciones básicas en archivos texto y binario.

Archivo binario

Ejercicio 6.6: El siguiente programa creará un archivo binario, el cual almacenara registros
de Estudiantes, para ello se declara una clase llamada Registro la cual contiene los campos
de Número de control, Nombre del estudiante, tres calificaciones y el promedio. En la clase
principal solicita el nombre del archivo, instanciando una variable tipo FileOutputStream y
posteriormente instancia un objeto tipo DataOutputStream para crear un flujo de salida de
datos. Utiliza dos métodos uno para leer los datos y otro para escribir los datos en el archivo.

class Registro {
private String nControl;
private String nombre;
private byte cal1;
private byte cal2;
private byte cal3;
private byte promedio;

public Registro() {
this.nControl = "Sin No. de Control";
this.nombre = "Sin Nombre";
this.cal1 = 0;
this.cal2 = 0;
this.cal3 = 0;
this.promedio = 0;
}

public Registro(String nControl, String nombre, byte cal1, byte cal2, byte cal3) {
this.nControl = nControl;
this.nombre = nombre;
this.cal1 = cal1;
this.cal2 = cal2;
this.cal3 = cal3;
this.setPromedio();
}

public String getnControl() {


return nControl;
}

public void setnControl(String nControl) {


this.nControl = nControl;
}

public String getNombre() {


return nombre;
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public void setNombre(String nombre) {


this.nombre = nombre;
}

public byte getCal1() {


return cal1;
}

public void setCal1(byte cal1) {


this.cal1 = cal1;
setPromedio();
}

public byte getCal2() {


return cal2;
}

public void setCal2(byte cal2) {


this.cal2 = cal2;
setPromedio();
}

public byte getCal3() {


return cal3;
}

public void setCal3(byte cal3) {


this.cal3 = cal3;
setPromedio();
}

public byte getPromedio() {


return promedio;
}

public void setPromedio() {


this.promedio = (byte)((this.cal1 + this.cal2 + this.cal3) / 3);
}

@Override
public String toString() {
return nControl=" + nControl + "
+ " Nombre = " + nombre +
" Cal1 = " + cal1 +
" Cal2 = " + cal2 +
" Cal3 = " + cal3 +
" Promedio = " + promedio;
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_BinarioEscritura {


public static void main( String args[] ) {
int opcion = 0;
Object[] options = { "Si", "No" };
Registro reg = new Registro();
String nombreArchivo;
nombreArchivo = JOptionPane.showInputDialog
("Dame el nombre del archivo:");

try {
FileOutputStream archivo =
new FileOutputStream(nombreArchivo);
DataOutputStream salida = new DataOutputStream(archivo);
while (opcion == 0) {
leerDatos(reg);
escribirDatos(salida, reg);
opcion = JOptionPane.showOptionDialog(null,
"Dar de alta otro Alumno", "Otra alta",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, options, options[0]);
}
archivo.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( null,"Error en el flujo" + e );
}
}
static void leerDatos(Registro r) {
r.setnControl(JOptionPane.showInputDialog("No. de control:"));
r.setNombre(JOptionPane.showInputDialog("Nombre:"));
r.setCal1(Byte.parseByte(JOptionPane.showInputDialog("Calificación 1:")));
r.setCal2(Byte.parseByte(JOptionPane.showInputDialog("Calificación 2:")));
r.setCal3(Byte.parseByte(JOptionPane.showInputDialog("Calificación 3:")));
}

static void escribirDatos(DataOutputStream f, Registro r) {


try {
f.writeUTF(r.getnControl());
f.writeUTF(r.getNombre());
f.writeByte(r.getCal1());
f.writeByte(r.getCal2());
f.writeByte(r.getCal3());
}
catch (IOException io) {
JOptionPane.showMessageDialog( null,"Error de escritura" + io );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Recorrer.

Al recorrer un archivo tipo texto, la salida se establece cuando se lee un dato -1. En el caso
de los archivos binarios se establece por medio de una excepción, al ocurrir la excepción
se establece un falso para dejar de realizar el recorrido, como se muestra en el siguiente
ejercicio.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 6.7: El siguiente programa muestra el contenido del archivo binario creado por
medio del Ejercicio 6.6. Dado que el archivo es binario, se tiene que declarar la estructura
del Registro. En la clase principal solicita el nombre del archivo, instanciando una variable
tipo FileInputStream y posteriormente instancia un objeto tipo DataInputStream para crear
un flujo de entrada de datos.

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_BinarioLectura {


public static void main( String args[] ) {
String salida = "";
String nombreArchivo;
boolean otro = true;
nombreArchivo = JOptionPane.showInputDialog
("Dame el nombre del archivo:");
try {
FileInputStream archivo =
new FileInputStream(nombreArchivo);
DataInputStream entrada = new DataInputStream(archivo);
while (otro) {
Registro reg = new Registro();
try {
reg.setnControl(entrada.readUTF());
reg.setNombre(entrada.readUTF());
reg.setCal1(entrada.readByte());
reg.setCal2(entrada.readByte());
reg.setCal3(entrada.readByte());
salida += reg + "\n";
}
catch (IOException io) {
JOptionPane.showMessageDialog( null,salida );
otro = false;
}
}
archivo.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( null,"Error al abrir el
archivo: "
+ nombreArchivo );
}
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 6.8: Ahora modificaremos el programa del Ejercicio 6.6 para que almacene
objetos mediante la clase ObjectOutputStream.

import java.io.Serializable;

class Registro implements Serializable {


private String nControl;
private String nombre;
private byte cal1;
private byte cal2;
private byte cal3;
private byte promedio;

public Registro() {
this.nControl = "Sin No. de Control";
this.nombre = "Sin Nombre";
this.cal1 = 0;
this.cal2 = 0;
this.cal3 = 0;
this.promedio = 0;
}
public Registro(String nControl, String nombre, byte cal1, byte cal2, byte cal3, byte promedio) {
this.nControl = nControl;
this.nombre = nombre;
this.cal1 = cal1;
this.cal2 = cal2;
this.cal3 = cal3;
this.setPromedio();
}

public String getnControl() {


return nControl;
}

public void setnControl(String nControl) {


this.nControl = nControl;
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}

public byte getCal1() {


return cal1;
}

public void setCal1(byte cal1) {


this.cal1 = cal1;
setPromedio();
}

public byte getCal2() {


return cal2;
}

public void setCal2(byte cal2) {


this.cal2 = cal2;
setPromedio();
}

public byte getCal3() {


return cal3;
}

public void setCal3(byte cal3) {


this.cal3 = cal3;
setPromedio();
}

public byte getPromedio() {


return promedio;
}

public void setPromedio() {


this.promedio = (byte)((this.cal1 + this.cal2 + this.cal3) / 3);
}

@Override
public String toString() {
return "No. Control: " + nControl +
" Nombre: " + nombre +
" Cal1: " + cal1 +
" Cal2: " + cal2 +
" Cal3: " + cal3 +
" Promedio: " + promedio;
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_BinarioEscrituraObjeto {


public static void main( String args[] ) {
int opcion = 0;
Object[] options = { "Si", "No" };

String nombreArchivo;
nombreArchivo = JOptionPane.showInputDialog
("Dame el nombre del archivo:");

try {
FileOutputStream archivo =
new FileOutputStream(nombreArchivo);
ObjectOutputStream salida = new ObjectOutputStream(archivo);
while (opcion == 0) {
Registro reg = new Registro();
leerDatos(reg);
salida.writeObject(reg);
opcion = JOptionPane.showOptionDialog(null,
"Dar de alta otro Alumno", "Otra alta",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, options, options[0]);
}
archivo.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( null,"Error en el flujo" + e );
}
}

static void leerDatos(Registro r) {


r.setnControl(JOptionPane.showInputDialog("No. de control:"));
r.setNombre(JOptionPane.showInputDialog("Nombre:"));
r.setCal1(Byte.parseByte(JOptionPane.showInputDialog("Calificación 1:")));
r.setCal2(Byte.parseByte(JOptionPane.showInputDialog("Calificación 2:")));
r.setCal3(Byte.parseByte(JOptionPane.showInputDialog("Calificación 3:")));
}
}
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Ejercicio 6.9: Tendremos que hacer ahora el programa que lea el archivo binario de objetos
del Ejercicio 6.8, empleando la clase ObjectInputStream.

import java.io.*;
import javax.swing.JOptionPane;

public class Ejemplo_BinarioLecturaObjetos {


public static void main( String args[] ) throws ClassNotFoundException {
String salida = "";
String nombreArchivo;
boolean otro = true;
nombreArchivo = JOptionPane.showInputDialog
("Dame el nombre del archivo:");
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

try {
FileInputStream archivo =
new FileInputStream(nombreArchivo);
ObjectInputStream entrada = new ObjectInputStream(archivo);
while (otro) {
Registro reg = new Registro();
try {
reg = (Registro) entrada.readObject();
salida += reg + "\n";
}
catch (IOException io) {
JOptionPane.showMessageDialog( null,salida );
otro = false;
}
}
archivo.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( null,"Error al abrir el archivo: "
+ nombreArchivo );
}
}
}

Aplicaciones

Encriptación/Cifrado.- Una manera de codificar la información de un Archivo.

El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo


mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que
cuente con la clave de cifrado adecuada para descodificarlo.

Métodos y Técnicas de Cifrado.

Cifrado de sustitución

El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras)


de un mensaje por una o más entidades diferentes.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Por ejemplo: Existe un juego llamado encriptación del murciélago. La palabra murciélago
es una palabra que contiene las 5 vocales y la técnica de encriptación consiste en enumerar
las vocales de esta palabra por lo que la vocal “u” le corresponde el número 1, la vocal “i”
el 2, la vocal “e” el 3, la letra “a” el 4 y la vocal “o” el 5. Para encriptar el texto o archivo se
sustituye cada vocal por el valor numérico que le corresponde:

Ejemplo de encriptación del murciélago.


3j3mpl5 d3 3ncr2pt4c25n d3l m1rc23l4g5.

Otra técnica de encriptación se llama Sucesor, la cual consiste en cambiar cada letra del
texto o archivo por la letra que le sucede, es decir si se tiene la letra “a” se cambiará por la
letra “b” que es la que le sigue, así sucesivamente hasta que se termine el texto:

Este es un ejemplo de encriptación en base a sucesor.


Ftuf!ft!vo!fkfnqmp!ef!fodsjqubdjôo!fo!cbtf!b!tvdftps/

Existen también su contraparte llamada técnica de encriptado predecesor, la cual consiste


en cambiar cada letra del texto o archivo por la letra que le precede, es decir si se tiene la
letra “b” se cambia por la letra “a”, así sucesivamente hasta que se termina el texto:

Este es un ejemplo de encriptación en base a predecesor.


Drsddrtmdidlokncddmbqhos`bhòmdma`rd`oqdcdbdrnq-

De estas dos últimas técnicas se puede hacer una combinación, la cual es llamada
sucesor/predecesor, la cual consiste en cambiar la primer letra en base a sucesor y la
siguiente cambiarle por su predecesor, así sucesivamente hasta que se termine el texto:

Este es un ejemplo de encriptación en base a sucesor/predecesor.


Dtsffr!tofiflqkped!dobshqsbbjòofm!abrfbttddtns.qqfcfbfrpq/

6.3. Manejo de excepciones en archivos.

Indicador de Alcance 6.B.- Participación en clase.

Indicador de Alcance 6.D.- Proyecto en beneficio de su comunidad.

Elabore un proyecto de beneficio a la comunidad que exponga su planeación, desarrollo y


conclusión mediante un video que tenga un tiempo de 6 a 10 minutos.

Indicador de Alcance 6.C.- Explica problemas propuestos

1. Elabore un programa que permita registrar una bitácora en un archivo texto, que cada
ves que se añada texto, agregue la fecha del sistema. El nombre del archivo será
Bitacora.txt.

2. Elabora un programa que permita guardar y visualizar en un archivo tipo


ObjectOutputStream de los empleados de una empresa.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación
Asignatura: Programación Orientada a Objetos
Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Guía de observación de explicación de problemas propuestos

Instrucciones para el llenado del instrumento:


Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con
una “X” en la columna “Si” cuando el candidato cumpla con el desempeño correspondiente
y en la columna “No” cuando no realice las actividades señaladas.

Unidad: 6. Archivos

Tema: Indicador de Alcance 6.C.- Explica problemas propuestos

Cumple
No. Al Inicio de la sesión: Valor Puntos Retroalimentación
Si No
1 Realiza su presentación mencionando su 5
nombre completo.
2 Menciona el indicador de alcance y la 5
descripción del problema a resolver.
Durante la sesión:
3 Maneja términos, conceptos y 30
conocimientos en su exposición de forma
correcta.
4 Explica la resolución del problema de forma 30
coherente y clara.
5 Interactúa con el grupo manteniendo 5
contacto visual durante la exposición.
6 Emplea un tono de voz adecuado durante la 5
exposición y sin utilizar muletillas.
7 Organiza y planea su presentación de 5
manera ordenada y planificada.
Cierre de la sesión:
8 Responde a las preguntas de forma 5
coherente y clara.
9 Cumple con el tiempo planeado para la 10
sesión: 6 a 10 minutos.
Puntuación Total

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Evidencia de Aprendizaje.- Práctica de Programación de la Unidad 6:

1ª Oportunidad

1. Se tiene un archivo texto llamado Vendedores.txt con la siguiente información:

José Luis Martínez Ramírez,4500.0,4250.0


Luz María Pérez Romo,3500.0,3750.0
Manuel García Jiménez,5000.0,4000.0
Karina Calderón Gutiérrez,3000.0,3570.0
Ricardo Medina Mendoza,5000.0,6800.0
…, …, …

Donde el primer campo es el Nombre del Vendedor, el segundo son las ventas mínimas y el
tercero son las ventas mensuales.

Elabore un programa en Java, que tome como entrada el archivo Vendedores.txt y muestre en
pantalla los nombres de los vendedores que las ventas mensuales sean mayores a las ventas
mínimas.

2. Se tiene un archivo texto llamado Vendedores.txt con la siguiente información:

José Luis Martínez Ramírez,4500.0,4250.0


Luz María Pérez Romo,3500.0,3750.0
Manuel García Jiménez,5000.0,4000.0
Karina Calderón Gutiérrez,3000.0,3570.0
Ricardo Medina Mendoza,5000.0,6800.0
…, …, …

Donde el primer campo es el Nombre del Vendedor, el segundo son las ventas mínimas y el
tercero son las ventas mensuales.

Elabore un programa en Java, que tome como entrada el archivo Vendedores.txt y genere un
archivo texto con los nombres de vendedores, ventas mínimas, ventas mensuales e Incremento
(Ventas mensuales menos ventas mínimas) de aquellos vendedores que sus ventas mensuales
es mayor a las ventas mínimas.

Ejemplo:

Nombre vtaMínima vtasMensuales Incremento


Luz María Pérez Romo 3500.0 3750.0 250.0
Karina Calderón Gutiérrez 3000.0 3570.0 570.0
Ricardo Medina Mendoza 5000.0 6800.0 1800.0

3. Elabore un programa que se le manden dos nombres de archivo tipo texto y el contenido del
primero archivo lo agregue al final del segundo archivo.

2ª Oportunidad

1. Elabore un programa que lea de teclado oraciones las encripte en base a


sucesor/predecesor y las guarde en un archivo.

2. Elabore un programa que lea de un archivo las oraciones encriptadas en base a


sucesor/predecesor y las muestre en pantalla desencriptadas.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

3. Elabore un programa que dado dos archivos tipo texto, genere otro archivo tipo
texto con el intercalamiento de los registros del primer archivo con el segundo
archivo. Por ejemplo, se tiene el archivo Números.txt y Nombres.txt y mediante el
programa se genera Combinación.txt, con intercalamiento de cada registro, como
se muestra a continuación:

Indicador de Alcance .E.- Resolución de problemas adicionales en la


práctica de programación

Tomando el archivo que se generó en el Ejercicio 6.8, elabore un programa en java que
solicite el No de Control y busque el registro en el archivo indicado y si lo encuentra
despliegue la información en caso contrario mostrar “Registro no localizado”.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del alumno:

No. Control: Fecha:

Rúbrica de la Práctica de Programación de la Unidad 6


Instrucciones: Indique con una “X” en la intersección fila - columna las características mínimas que cumple el
proyecto entregado como evidencia, anote los puntos en cada criterio y súmelos.

Criterios de
Excelente Notable Bueno Suficiente Insuficiente Retroalimentación
desempeño
Presenta una portada con: Presenta una portada con seis Presenta una portada con Presenta una portada con Presenta una portada con
1. Logo del TecNM y del ITA de los conceptos del apartado cinco de los conceptos del cuatro de los conceptos del menos de cuatro de los
en la parte superior. excelente y sin errores apartado excelente y sin apartado excelente y sin conceptos mostrados en el
2. Nombre del Instituto. ortográficos. errores ortográficos. errores ortográficos. apartado excelente o tiene
3. Nombre de la carrera. errores ortográficos o No
4. Nombre de la materia y presenta portada.
hora.
Portada 5. Número de Unidad,
descripción de la unidad y
redacción completa de la
Evidencia de Aprendizaje.
6. Nombre y número de
control del estudiante.
7. Fecha.
Y sin errores ortográficos.
Pts. 5 pts. 4.5 pts. 4 pts. 3.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del  Descripción del  Descripción del  Descripción del
Desarrollo problema. problema. problema. problema.
 Todo el código.  Todo el código.  Todo el código.  Todo el código.
Problema 1  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el buen muestre el buen muestre el buen muestre el buen
funcionamiento del funcionamiento del funcionamiento del funcionamiento del
programa al 100%. programa al 90%. programa al 80%. programa al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del  Descripción del  Descripción del  Descripción del
problema. problema. problema. problema.
Desarrollo  Todo el código.  Todo el código.  Todo el código.  Todo el código.
Problema 2  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el buen muestre el buen muestre el buen muestre el buen
funcionamiento del funcionamiento del funcionamiento del funcionamiento del
programa al 100%. programa al 90%. programa al 80%. programa al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta la resolución del Presenta la resolución del Presenta la resolución del Presenta la resolución del El programa que presenta es
problema con los siguientes problema con los siguientes problema con los siguientes problema con los siguientes menor al 70% o no presenta la
rubros: rubros: rubros: rubros: solución del problema.
 Descripción del  Descripción del  Descripción del  Descripción del
Desarrollo problema. problema. problema. problema.
 Todo el código.  Todo el código.  Todo el código.  Todo el código.
Problema 3  Ejecución del programa  Ejecución del programa  Ejecución del programa  Ejecución del programa
mediante imágenes que mediante imágenes que mediante imágenes que mediante imágenes que
muestre el buen muestre el buen muestre el buen muestre el buen
funcionamiento del funcionamiento del funcionamiento del funcionamiento del
programa al 100%. programa al 90%. programa al 80%. programa al 70%.
Pts. 25 pts. 22.5 pts. 20 pts. 17.5 pts. 0 pts.
Presenta una opinión Presenta una opinión Presenta una opinión Presenta una opinión Presenta una opinión no
coherente con el trabajo y sin coherente con el trabajo y sin coherente con el trabajo y sin coherente con el trabajo y con coherente con el trabajo o Con
Conclusiones errores ortográficos en más de errores ortográficos en media errores ortográficos en menos a lo menos dos errores más de dos errores
media cuartilla con formato cuartilla con formato de media cuartilla. ortográficos en menos de ortográficos o No presenta
justificado. justificado. media cuartilla. aportaciones personales.
Pts. 20 pts. 18 pts. 16 pts. 14 pts. 0 pts.
Indicador de alcance E Entrega resolución de problemas adicionales en la práctica de programación
Indicador de alcance F Entrega la Práctica de programación en la fecha y hora señalada

Calificación
Calificación mínima aceptable: 70 pts.

En caso de obtener una calificación menor a 70, tendrá que presentar 2ª Oportunidad y solo
deberá de enviar los criterios donde obtuvo cero puntos. Si dentro de esos criterios se
encuentra los Problemas 1, 2 o 3, deberá elaborar los problemas marcados como 2ª
oportunidad.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Evidencia de Aprendizaje.- Proyecto de las Unidades 5 y 6

Elabore un proyecto en Java que mediante un menú despliegue si se quiere Cargar,


Calcular, Estadísticas, Guardar, Mostrar, Excelencia o Salir. Si selecciona Cargar, cargue
en arreglos un archivo texto separado por comas, con la siguiente estructura:
No. de Calculo Fundamentos de Matemáticas Introducción a Fundamentos de
Nombre Taller de Ética
Control Diferencial Programación Discretas I las TIC's Investigación
21150985 ALONSO CONTRERAS SANTIAGO 75 70 100 70 75 100
21151015 CAMPOS SANCHEZ JESUS ALEJANDRO 75 75 NA NA 90 80
21151074 CASTRO MONTANTE OLIVER MOISÉS 90 80 90 NA NA 85
21151055 CERVANTES SALINAS PABLO SAID 95 90 100 NA 90 85
21151068 DE LA TORRE CARREÓN ANAHÍ NA 95 80 90 100 100
21151067 DE LIRA GONZALEZ NURIA XILEIMI 90 95 90 95 90 95
21151089 DIAZ DE LEON DELGADILLO NATALY DOLORES NA 100 75 75 85 75
21151005 GONZALEZ ESPARZA SOFIA MIROSLAVA 70 95 80 NA 90 100
21151002 GONZÁLEZ GONZÁLEZ CRISTIAN 90 NA 90 75 80 75
21151063 GÁMEZ AGUILAR JUAN IRAM 75 NA NA 100 90 95
21151071 LOPEZ NUÑO FERNANDO ISMAEL 90 85 90 90 90 100
21151097 LOZANO DE LIRA ABRAHAM JAFET 95 75 80 75 NA 85
21151087 NEGRETE DEMETRIO ANGEL OMAR 85 95 80 NA 75 90
21151086 NIEVES QUEZADA DAIÁN DE JESÚS NA 100 100 100 100 100
21151061 REYES MARTÍNEZ ARMANDO 80 70 80 85 NA 95
21151025 RUIZ MENDOZA MARLON MANUEL 85 75 80 100 80 70
21151082 SALADO MUÑOZ ESTEBAN FABIAN 85 95 95 80 75 75
21150388 SOTO OCAMPO SAMUEL ALEJANDRO 95 95 100 85 NA NA
21151091 VALDÉS MORA ALONDRA RUBÍ 95 90 100 100 95 85
21150993 VALLEJO HERNANDEZ JUAN ARMANDO 90 90 85 100 95 85

Si selecciona Calcular los promedios por: Alumno, Materia y el General.

Si selecciona Estadísticas, muestre en pantalla lo siguiente:

Materia Promedio
Calculo
99
Diferencial

Fundamentos de
99
Programación

Matemáticas
99
Discretas I
Introducción a
99
las TIC's
Taller de Ética 99
Fundamentos de
99
Investigación
Promedio
99
General

Si selecciona Guardar, almacene en un archivo binario “Estudiantes.bin” la información con


la siguiente estructura de clase:
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Si selecciona Mostrar, muestre en pantalla el contenido del archivo binario.


No. de Calculo Fundamentos de Matemáticas Introducción a Fundamentos de
Nombre Taller de Ética Promedio
Control Diferencial Programación Discretas I las TIC's Investigación
21150985 ALONSO CONTRERAS SANTIAGO 75 70 100 70 75 100 99
21151015 CAMPOS SANCHEZ JESUS ALEJANDRO 75 75 NA NA 90 80 99
21151074 CASTRO MONTANTE OLIVER MOISÉS 90 80 90 NA NA 85 99
21151055 CERVANTES SALINAS PABLO SAID 95 90 100 NA 90 85 99
21151068 DE LA TORRE CARREÓN ANAHÍ NA 95 80 90 100 100 99
21151067 DE LIRA GONZALEZ NURIA XILEIMI 90 95 90 95 90 95 99
21151089 DIAZ DE LEON DELGADILLO NATALY DOLORES NA 100 75 75 85 75 99
21151005 GONZALEZ ESPARZA SOFIA MIROSLAVA 70 95 80 NA 90 100 99
21151002 GONZÁLEZ GONZÁLEZ CRISTIAN 90 NA 90 75 80 75 99
21151063 GÁMEZ AGUILAR JUAN IRAM 75 NA NA 100 90 95 99
21151071 LOPEZ NUÑO FERNANDO ISMAEL 90 85 90 90 90 100 99
21151097 LOZANO DE LIRA ABRAHAM JAFET 95 75 80 75 NA 85 99
21151087 NEGRETE DEMETRIO ANGEL OMAR 85 95 80 NA 75 90 99
21151086 NIEVES QUEZADA DAIÁN DE JESÚS NA 100 100 100 100 100 99
21151061 REYES MARTÍNEZ ARMANDO 80 70 80 85 NA 95 99
21151025 RUIZ MENDOZA MARLON MANUEL 85 75 80 100 80 70 99
21151082 SALADO MUÑOZ ESTEBAN FABIAN 85 95 95 80 75 75 99
21150388 SOTO OCAMPO SAMUEL ALEJANDRO 95 95 100 85 NA NA 99
21151091 VALDÉS MORA ALONDRA RUBÍ 95 90 100 100 95 85 99
21150993 VALLEJO HERNANDEZ JUAN ARMANDO 90 90 85 100 95 85 99
Promedios 99 99 99 99 99 99 99

Si selecciona Excelecia, muestre en pantalla el No de Control, Nombre y Promedio de los


estudiantes de Excelecia Académica (No tienen ninguna materia reprobada y su promedio
es mayor o igual a 90).
No. de
Nombre Promedio
Control
21151091 VALDÉS MORA ALONDRA RUBÍ 99

21151067 DE LIRA GONZALEZ NURIA XILEIMI 99

21151071 LOPEZ NUÑO FERNANDO ISMAEL 99

21150993 VALLEJO HERNANDEZ JUAN ARMANDO 99

Información adicional:

 Los nombres de los archivos deben de solicitarlos para cargarlo o guardarlo.


 El sistema debe de validad cualquier contingencia.
 Solo puede terminar cuando en el menú principal seleccione Salir.

Indicador de Alcance . A.- Agregar una opción más al menú que sea Reportes, que
despliegue todos los resultados de las opciones
anteriores. Solo se podrá seleccionar esta opción si las
anteriores fueron activadas.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del Equipo: Fecha:

Guía de Observación del Proyecto de las Unidades 5 y 6


Instrucciones para el llenado del instrumento:
Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con una “X” en la columna
“Si” cuando el equipo cumpla con el desempeño correspondiente al 100% o porcentaje de cumplimiento y en la
columna “No” cuando no realice las actividades señaladas.

Cumple
No. Exposición del proyecto y entrega del trabajo Valor Puntos Retroalimentación
Si No
Al Inicio de la sesión:
Realizan la presentación de cada integrante mencionando su
1 5
nombre completo. (AG)
Mencionan la unidad y la descripción del proyecto a resolver.
2 5
(AG)
Durante la sesión:
Demuestra, Describe y Explica el funcionamiento del
proyecto en cuanto a:
 Cargar
 Calcular
3  Estadísticas 30
 Guardar
 Mostrar
 Excelencia
De una forma coherente y clara (CI).
Expresa y Maneja el sistema del proyecto de forma correcta.
4 15
(PI).
Aplican y Resuelven correctamente la resolución del
5 15
proyecto. (PG)
Interactúa con el grupo manteniendo contacto visual durante
6 5
la exposición. (AI)
Emplea un tono de voz adecuado durante la exposición y sin
7 5
emplear muletillas. (AI)
Organiza y planea su presentación de manera ordenada y
8 5
planificada. (AG)
Cierre de la sesión:
9 Responde a las preguntas de forma correcta. (CPAI) 10
Cumplen con el tiempo planeado para la sesión de 16 a 20
10 5
minutos. (AG)
Diseñar opciones adicionales al proyecto: Indicador de
11 Agregar una opción más al menú que sea Reportes, que despliegue Alcance A
todos los resultados de las opciones anteriores.
Puntuación Total

A-Actitudinal C-Conceptual P-Procedimental G-Grupal I-Individual

Calificación mínima aceptable: 70 pts.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES

Instituto Tecnológico de Aguascalientes


Departamento de Sistemas y Computación

Asignatura: Programación Orientada a Objetos


Carrera: Ingeniería en Tecnológicas de la Información y Comunicaciones
Grupo: Hora:

Nombre del Equipo: Fecha:

Lista de Cotejo Trabajo del Proyecto de la Unidades 5 y 6


Instrucciones para el llenado del instrumento:
Observe cuidadosamente la ejecución de las actividades que se enuncian y marque con una “X” en la columna
“Si” cuando el equipo cumpla con el desempeño correspondiente al 100% o porcentaje de cumplimiento y en la
columna “No” cuando no realice las actividades señaladas.

Cumple
No. Exposición del proyecto Valor Puntos Retroalimentación
Si No

La portada contiene:

1. Logo del TecNM y del ITA en la parte superior.


2. Nombre del Instituto
1 3. Nombre de la carrera 5
4. Nombre de la materia y hora
5. Número de unidad y descripción del proyecto.
6. Nombre y número de control de los estudiantes.
7. Fecha

El desarrollo contiene la resolución del proyecto con los siguientes rubros:

 Cargar
 Calcular
 Estadísticas
2 60
 Guardar
 Mostrar
 Excelencia
 Ejecución del programa mediante imágenes muestre el buen
funcionamiento del programa 100%.

La conclusión, tiene con una opinión coherente con el trabajo por cada
3 15
integrante del equipo.

4 El trabajo tiene texto justificado, maneja títulos y subtítulos 10

5 El trabajo está libre de errores ortográficos. 10

Puntuación Total

Calificación mínima aceptable: 70 pts.

También podría gustarte