Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorios de computación
salas A y B
Dra. Rocío Alejandra Aldeco Pérez
Profesor:
Grupo: 6
No de Práctica(s): #2
No. de Equipo de
2
cómputo empleado:
Semestre: 2020-2
Observaciones: Ninguna
CALIFICACIÓN: __________
PROGRAMACIÓN ORIENTADA A OBJETOS 2020-2
Grupo: 6
Facultad de Ingeniería
Departamento de Computación
ACTIVIDADES:
ACTIVIDADES DE LA PRÁCTICA:
Realiza las siguientes actividades después de leer y revisar en clase la Práctica de Estudio
2: Fundamentos y sintaxis del lenguaje.
Y los métodos
[1] [2]
Las fechas pueden usar la clase Date y DateFormat . El RFC se calcula siguiendo el
procedimiento descrito en la referencia.
PROGRAMACIÓN ORIENTADA A OBJETOS 2020-2
El funcionamiento
de este método
se basa en primer
lugar pedir la
fecha de
nacimiento al
usuario la cual
deberá tener el
formato
“dd/mm/aaaa”
incluyendo las
diagonales.
Después de
recibir esta fecha, se almacenará en una arreglo de Strings, separandola por medio del indicador
“/”, al tener el dia, el mes y el año por separado (en diferentes índices el arreglo) fue más fácil el
poder obtener la fecha, puesto que solo se tenía que trabajar con el año. El año que se almaceno
es convertido a un entero, y por medio de la función “Calendar”, la cual obtiene la fecha actual del
sistema, pero solo se hizo uso del año actual, se realizó una resta entre el año actual y el año de
nacimiento que fue tomado de la fecha que ingreso el usuario, lo cual es un entero que va a
regresar el método.
Este código básicamente lo que realiza es calcular el RFC con valores ingresados por el usuario,
aunque no es solo un simple RFC ya que este método se codificó para que pudiera hacer
excepciones a la hora de manipular los datos para el RFC, por ejemplo se creó una condición la
cual si el usuario ingresa un apellido paterno compuesto, se tienen que desechar los compuestos
como De, La, entre muchos otros, lo mismo con el apellido materno y con el nombre. Lo que se
hizo básicamente fue declarar un contador e inicializarlo en 0, se creó un ciclo el cual recorre a la
cadena del apellido paterno, en cada iteración busca cuantos espacios vacíos encuentra, y
conforme vaya encontrando espacios va incrementado el contador, ya teniendo el contador con el
número de espacios que hubo en la cadena, se procedía a pasar el contador por varias
sentencias de tipo “IF”, las cuales verificaban que valor tenia el contador, la cadena de apellido
paterno se almaceno en un arreglo de Strings para así tener por separado el apellido y a los
compuestos del apellido. Los IFS básicamente revisaban cuantos espacios se encontraron en la
cadena, y según al número de espacios lo que hacían las sentencias IF es solo tomar lo que se
encontrará después del último espacio encontrado, esto se hacía para poder trabajar con el puro
apellido y hacer de lado los compuestos. Ya que se hacían de lado los compuestos del apellido y
solo nos quedaba el apellido, entonces se procedia a tomar la primera letra del apellido y además
con un ciclo for se recorre el arreglo en busca de alguna vocal y la primera vocal que encuentre
es la que iba a tomar.
La misma dinámica se siguió con el apellido materno y con el nombre, la unica diferencia es que
en estos no se utilizó un ciclo for para recorrer el arreglo, ya que no se necesitaba encontrar
alguna vocal de ambos.
Al final se realizó una concatenación de todas letras que iba tomando por cada apellido y el
nombre.
Por último se utilizó la fecha de nacimiento ingresada por el usuario la cual fue partida por la
PROGRAMACIÓN ORIENTADA A OBJETOS 2020-2
función SPLIT y se colocó en un arreglo de Strings, en esta ocasión sí se tenía que manipular a
toda la fecha por lo cual se realizó una concatenación del año (Solo los últimos dos
dígitos)-mes-día para así poder obtener los dígitos que se iban a imprimir en el RFC.
Al final en el método solo se colocó una concatenación de las letras con los dígitos numéricos, los
cuales fueron acomodados en la forma de un RFC original.
Cabe destacar que el programa no puede soportar muchas excepciones, ya que solo fue
codificado para que lograra pasar los test de Alphagrader, y desde mi punto de vista puede ser
mejorado en algunos aspectos pero cumple con lo básico solicitado en la práctica.
Recuerda subir esta práctica y tu archivo .java a Schoology y pasar todas las pruebas en
Alphagrader.
TIP.
https://geekytheory.com/tip-java-obtener-fecha-y-hora
https://cafelojano.wordpress.com/2007/11/21/transformando-string-a-date-uso-de-simpledateform
at/
[1]
https://docs.oracle.com/javase/8/docs/api/java/util/Date.html,
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
[2]
https://www.mi-rfc.com.mx/
PROGRAMACIÓN ORIENTADA A OBJETOS 2020-2
Conclusion
Se hizo uso de for e if, más que nada para poder adentrarnos a lo que son las estructuras de
control en Java, se hizo uso de “Calendar”, una clase que toma la fecha actual del sistema, se
hizo uso del método SPLIT, se utilizaron arreglos para almacenar cadenas, se hizo uso de
conocimientos sobre programas que ya se habían realizado antes, por ejemplo el convertir un
tipo de variable a un tipo diferente, entre otras muchas cosas.
La práctica en sí estuvo un poco complicada porque aun no me familiarizo bien con lo que es
Java, y se me complica un poco el hecho de poder interpretar y modelar algunas cosas, pero
poco a poco se realizó, pero gracias al intercambio de ideas con compañeros, la teoría que se vio
en clase y con mucha información que se encuentra en internet se logró resolver lo que se
esperaba en la práctica, tal vez no fue de la forma más “elegante” pero se logró.
Me llevo un buen conocimiento sobre lo que es Java, aunque me faltan muchas cosas por
aprender y poder tomarle sentido, pero paso a paso se va entendiendo lo que se requiere en la
materia, se cumplieron los objetivos de la práctica.