Você está na página 1de 5

Didáctica y patrón de diseño orientado a objetos para

la generación de series y sucesiones


Ricardo Botero Tabares


Fecha de recepción: 05 de Junio de 2009 I. INTRODUCCIÓN
Fecha de aprobación: 02 de Julio de 2009 EL proceso de aprendizaje de la programación orientada a
objetos conlleva con seguridad el tratamiento de problemas
RESUMEN comerciales (emisión de facturas por la compra-venta de
La abstracción de clases y sus objetos asociados para la generación de productos, cálculo de una nómina, cálculos estadísticos de una
sucesiones y series aritméticas y geométricas, puede presentar ciertas empresa de transporte, entre otros incontables casos
dificultades para los aprendices de ciencias de la computación. Por cotidianos), estadísticos (cálculo de las medidas de tendencia
esto se propone un patrón o modelo para la generación de algunas
series y sucesiones utilizando el método propuesto en el proyecto central, permutaciones y combinaciones de un grupo de
MIPSOO (Método Integrado de Programación Secuencial y elementos), aritméticos (hallazgo de las raíces de un sistema de
programación Orientada a Objetos para el análisis, diseño y ecuaciones, funciones trigonométricas para un ángulo dado,
elaboración de algoritmos) para el aprendizaje y la enseñanza de la factoriales, series y sucesiones) y geométricos (cálculo de áreas
programación orientada a objetos, en el cual se aplican cuatro fases y volúmenes, trisecado de un ángulo, cuadratura de un círculo).
par la solución de un problema: elaboración de la tabla de requisitos,
Problemas asociados a la inteligencia artificial, a la teoría de
diseño del diagrama de clases, especificación de las responsabilidades
de las clases y escritura del seudocódigo orientado a objetos. juegos o al diseño de interfaces gráficas de usuario final, que
podrían ser útiles en procesos de aprendizaje de la
Palabras Clave—Patrón de diseño, serie, sucesión, objeto, clase. programación de computadores, no son tratados en este
artículo.En particular, se presenta un patrón de diseño
ABSTRACT orientado a objetos para la generación de algunas series y
The abstraction of classes and their associated objects for the sucesiones aritméticas y geométricas que pueden presentar
generation of sequences and arithmetic and geometric series, can cierto nivel de dificultad a un aprendiz de programación. Pero
present some difficulties for learners Computer Science. For this we ¿cuál es el grado de dificultad aludido? Para identificarlo
propose a pattern or model for the generation of some series and véanse dos ejemplos:
sequences using the method proposed in the draft MIPSOO
(Integrated Method and Sequential Programming Object Oriented
Programming for the analysis, design and development of algorithms) A. Problema sobre una pyme
for learning and teaching object-oriented programming, in which four
Una pyme hogareña maneja la siguiente información sobre sus
phases are applied par la solution to a problem: developing the table
of requirements, design class diagram, specifying the responsibilities empleados: número del documento de identidad, nombre, fecha
of writing classes and object-oriented pseudocode. de nacimiento, número de hijos (comprobados) y cargo (1:
administrativo, 2. operario). Con esta información realiza las
Keywords— design pattern, series, succession, object , class. siguientes actividades:
 Otorga un pequeño obsequio a cada trabajador el día
NOMENCLATURA de su cumpleaños.
En la elaboración de la tabla de requisitos:  Entrega el aguinaldo navideño a todos los empleados
I. R.: Identificación del Requisito. y a sus hijos.
En la especificación de responsabilidades de las clases:  Paga del salario mensual dependiendo del cargo del
R. A.: Requisito Asociado.
empleado. Si es operario devenga un salario mínimo;
si se trata de un administrativo devengará dos salarios
mínimos legales vigentes.

Realizando una abstracción de la clase potencial para este


Ricardo Botero Tabares: rbotero@tdea.edu.co, Ingeniero de sistemas, problema, resulta claro definir la clase Trabajador o Empleado
especialista en didáctica universitaria, aspirante a magíster en ingeniería. Ha de la siguiente manera, donde adrede se omiten los detalles de
sido acreedor a reconocimientos docentes como el Premio a la investigación
2007, otorgado por el Tecnológico de Antioquia, y ha una mención especial
las operaciones de la clase. Como se observa en la Fig. 1, los
en los Premios ACOFI 2007 por su trabajo con la orientación a objetos en la nombres de los atributos de la clase son autodocumentados y
educación superior. los tipos de datos de los atributos, escritos en negrita,

Revista Generación Digital Vol. 8 No. 1. Edición 15. Octubre de 2009. ISSN 1909-9223 11
corresponden a palabras reservadas del seudolenguaje se establecen públicos (signo más precediendo cada método)
planteado en MIPSOO [1]. El nivel de dificultad que puede para permitir la comunicación con los objetos de la clase
ofrecer la definición de la abstracción de atributos, puede ser mediante el paso de mensajes. Este estándar de diseño se ha
bajo en comparación con el siguiente ejemplo. conservado en la definición de la clase PatrónSucesiónSerie.

Empleado PatrónSucesiónSerie

- docIdentidad: cadena - termino: real


- nombre: cadena - n: entero
- fechaNac: cadena - cantTer: entero
- numHijos: entero
- cargo: entero + PatrónSucesiónSerie( )
+ asignarTermino(real)
+ asignarN(entero)
+ asignarCantTer(entero)
Fig. 1. La clase Empleado con cinco atributos de visibilidad privada. + obtenerTermino( ): real
+ obtenerN( ): entero
B. Serie alterna + obtenerCantTer( ): entero
+ generarSucesión( )
Mostrar los primeros nt términos de la serie infinita + hallarValorSerie( ): real

Fig. 2. Diseño de la clase PatrónSucesiónSerie

El valor de la variable nt lo debe aportar el usuario. TABLA I DEFINICIÓN DE LOS ATRIBUTOS Y MÉTODOS DE LA
La representación por comprensión de la serie anterior está CLASE SUCESIÓNSERIEGENÉRICA
dada por: Atributo / Método Significado
termino Atributo de tipo real que
almacena el valor de un
Una abstracción de clase que aporte una solución a este término para un valor
problema de carácter matemático, presenta por lo general específico de n.
cierto grado de dificultad para el aprendiz de programación, en n Atributo entero que
comparación con un caso o problema de carácter empresarial identifica al n-ésimo
como el presentado en la sección II-A. término de la serie o
sucesión.
cantTer Cantidad de términos de la
II. PATRÓN DE DISEÑO PARA SUCESIONES Y serie o sucesión.
SERIES ARITMÉTICAS PatrónSucesiónSerie ( ) Constructor sin argumentos,
La referencia [2] define una sucesión como un conjunto siempre disponible por
ordenado de números, una sucesión aritmética como una omisión.
asignarTermino(real) Método modificador para
sucesión en la que a cada término se le puede sumar una
asignar o definir el término
constante d –denominada diferencia común– para obtener al general de la serie o
siguiente término y a una serie como la suma de los términos sucesión.
de una sucesión. De igual manera, se define que una sucesión asignarN(entero) Método que asigna un valor
en la que se puede multiplicar una constante r –denominada ordinal n al término de la
razón común- por cada término para obtener el siguiente, se serie o sucesión.
llama sucesión geométrica. La Fig. 2 muestra el diseño de la asignarCantTer(entero) Método para establecer la
cantidad de términos de la
clase PatrónSucesiónSerie acorde al formalismo de UML1, que serie o sucesión.
permitirá generar sucesiones y series aritméticas y geométricas obtenerTermino( ): real Método que obtiene en n-
de diversa índole con n_ésimo término (o término común) ésimo término de la serie o
definido, donde cada atributo y método tienen el significado sucesión.
dado en la Tabla I. Los diseñadores de software por lo regular obtenerN( ): entero Obtiene el ordinal del
establecen visibilidad privada para los atributos de una clase término actual o en proceso.
obtenerCantTer( ): entero Obtiene la cantidad de
(signo menos precediendo cada atributo), en consonancia con
términos de la sucesión o
el concepto de encapsulamiento u ocultamiento de la serie.
información propio del paradigma orientado a objetos; de igual generarSucesión( ) Método analizador que
manera, los métodos que definen la interfaz pública de la clase muestra los cantTer
primeros términos de la
1
sucesión.
UML (Unified Modeling Language) es un lenguaje para construir planos de hallarValorSerie( ): real Método analizador que
software.

12 Revista Generación Digital Vol. 8 No. 1. Edición 15. Octubre de 2009. ISSN 1909-9223
retorna el valor final de la
serie para cantTer términos.
A. Construcción de la tabla de requisitos.
Según la clasificación de métodos realizada en [3], en la clase La construcción de la tabla de requisitos [3] forma parte del
PatrónSucesiónSerie se identifican tres tipos de métodos: el análisis del problema. Los requisitos hacen referencia a las
constructor con idéntico nombre al de la clase; los métodos necesidades de los usuarios, es decir, identifican los aspectos
modificadores asignarX( ) y obtenerX( ), equivalentes a los que los usuarios del programa desean resolver mediante
métodos setX( ) y getX( ) de ciertos lenguajes de programación; software. Estos requisitos se denominan funcionales porque
y los métodos analizadores generarSucesión( ) y tienen relación directa con la funcionalidad del sistema.La
hallarValorSerie( ).El patrón de diseño presenta entonces un tabla de requisitos está compuesta por cuatro columnas:
método constructor, por supuesto sobrecargable, seis métodos  Identificación del requisito: es un código que
modificadores y dos analizadores. identifica al requisito, generalmente compuesto por
una letra y un dígito. Identificadores comunes para los
III. APRENDIZAJE DE LA PROGRAMACIÓN requisitos son R1, R2, R3, etc.
Aprender a programar computadores involucra estrategias de  Descripción: consiste en una descripción concisa y
enseñanza-aprendizaje constructivistas, donde el aprendizaje se clara, en lenguaje natural, del requisito.
centra en el estudiante. Los aprendizajes por descubrimiento,  Entradas: son los insumos o datos necesarios para
colaborativo, significativo y basado en problemas o situado, que el requisito se pueda suplir con éxito.
son aplicados por los estudiantes de programación en mayor o  Resultados o salidas: constituyen el cumplimiento
menor grado durante los diferentes estadios del proceso del requisito, es decir, son los resultados que dan
cognitivo. El profesor debe ser consciente de la pedagogía solución a un requisito funcional definido por el
latente en el proceso de formación, para propiciar ambientes usuario.
donde estos aprendizajes se fertilicen y retroalimenten, porque Es común que la salida de un requisito se convierta en la
de alguna manera todos ellos se complementan. En el entrada de otro; por ejemplo, la salida del requisito R1 (las
aprendizaje por descubrimiento [4] la nueva información o variables n1 y n2) es la entrada del requisito R2.Los requisitos
conocimiento se adquiere a través de los propios esfuerzos del funcionales son casos de uso que describen de una manera
estudiante (tiempo de trabajo independiente), con los aportes detallada el comportamiento del sistema con los distintos
del aprendizaje por exposición o instrucción impartido por el actores que interactúan con él. Un caso de uso es una
docente (horas de trabajo presencial). Los contenidos descripción de un conjunto de secuencias de acciones que un
desarrollados deben ser percibidos por el aprehendiente como sistema ejecuta y que produce un resultado observable de
un conjunto de problemas a tratar y relaciones conceptuales a interés para un actor particular [9]. Un actor es un usuario del
establecer. En el aprendizaje colaborativo [5], el estudiante sistema.
puede retro alimentar sus conocimientos con los compañeros
B. Abstracción de clases (diagramas conceptual – si se
de su grupo o con comunidades externas, por medio de
requiere- y de clases según formalismo de UML2).
encuentros presenciales extra clase o con actividades
propiciadas por las tecnologías de la información y La abstracción de clases también forma parte del análisis del
comunicaciones. En el aprendizaje significativo [6], el problema y es el primer escaño en el diseño de la solución.
aprendizaje del alumno depende de la estructura cognitiva Consiste en una representación gráfica del problema - plano de
previa que se relaciona con la nueva información, de tal software-, donde se dibujan abstracciones de la realidad
manera que el nuevo conocimiento adquiere significado y relacionadas con el mundo del problema, modelables con
puede enlazarse en nuevos procesos cognitivos. software. El plano construido se puede presentar en dos fases,
diagrama conceptual y diagrama de clases, el primero de ellos
En el aprendizaje basado en problemas [7] confluyen opcional porque no se requiere cuando los problemas a tratar
características de los aprendizajes anteriores: el estudiante son pequeños ó con cierto margen de trivialidad.
descubre por sí mismo, interactúa con los demás, adquiere C. Descripción de las responsabilidades de las clases,
conocimientos con significado en la medida que se relacionan formalizadas con los contratos de cada método.
con los ya establecidos y sientan la base para otros venideros. El análisis de responsabilidades de las clases conlleva la
En el aprendizaje basado en problemas un grupo de alumnos descripción de los métodos de cada clase mediante contratos,
se reúne, con la facilitación de un tutor, para analizar y resolver que incluyen los requisitos asociados, la precondición o estado
un problema seleccionado o diseñado especialmente para el del objeto antes de ejecutar el método, la postcondición que
logro de ciertos objetivos de aprendizaje. aclara el estado del objeto luego de ejecutar el método, y el
modelo verbal que consiste en una descripción en lenguaje
IV. UNA DIDÁCTICA PARA LA PROGRAMACIÓN natural de la solución planteada, algo similar al denominado
ORIENTADA A OBJETOS algoritmo cualitativo.
La solución de un problema conlleva una didáctica de cuatro
2
fases, tal como se propone en [8]: UML (Unified Modeling Language) es un lenguaje para construir planos de
software.

Revista Generación Digital Vol. 8 No. 1. Edición 15. Octubre de 2009. ISSN 1909-9223 13
realizar operaciones de entrada y salida desde la consola,
La identificación de responsabilidades forma parte de la mediante los métodos estáticos imprimir(), leerEntero( ),
documentación de la solución (futuro sistema basado en leerReal( ), leerCaracter ) y leerCadena().
software).
D. Escritura de seudo código orientado a objetos. PatrónSucesiónSerie
La escritura de seudo código orientado a objetos especifica la
solución del problema en cuanto al ―cómo‖ se logra - termino: real Proyecto
- n: entero
implementar la solución, de una manera bastante cercana al
- cantTer: entero - suc: PatrónSucesiónSerie
proceso de codificación en un lenguaje de programación como
Java o C#. Esta fase debe conllevar la aplicación de pruebas + PatrónSucesiónSerie ( ) + Proyecto( )
para cada uno de los métodos, llevadas a cabo manualmente + asignarTermino(real) + principal( )
(similar a las denominadas ―pruebas de escritorio‖) o de + asignarN(entero)
manera automática con el traductor Sismoo [8]. + asignarCantTer(entero)
+ obtenerTermino( ): real
+ obtenerN( ): entero
V. ANÁLISIS DE UN PROBLEMA
+ obtenerCantTer( ): entero suc
Con el fin de ilustrar el patrón de diseño y la didáctica para la + generarSucesión( ) c
generación de series y sucesiones aritméticas, propuestos en + hallarValorSerie(entero): Flujo
las partes III y V, respectivamente, se presenta un sencillo real
problema que cuenta con una regla que describe su término
general. Se requiere generar y visualizar los primeros 100 Fig. 3. Diagrama estático para la generación de impares, acorde al
términos de la sucesión 3, 5, 7, 9, … . Esta sucesión se puede patrón de diseño expuesto en la parte III.
describir como 3, 5, 7, 9, …, 2n + 1, …, donde el n-ésimo C. Responsabilidades de las clases
término , es 2n + 1, expresado como .
Se presentarán las responsabilidades de las clases
PatrónSucesiónSerie y Proyecto, donde se soluciona el
A. Tabla de requisitos problema planteado, omitiendo en este caso las
La Tabla II presenta los requisitos funcionales para este responsabilidades de la clase Flujo por el hecho de constituir
problema, donde sólo se identifica uno de ellos como se indica una clase de uso común.
en la columna ―Descripción‖. No hay entradas porque se
conoce la cantidad de términos de la sucesión; la columna Contrato de la clase PatrónSucesiónSerie
―Resultados‖ hace referencia a la satisfacción del requisito. Las responsabilidades de las clases se expresan mediante los
contratos descritos en las Tablas III y IV, donde se describe la
funcionalidad de los métodos analizadores.
B. Diagrama de clases
El diagrama de clases ilustrado en la Fig. 3, además de incluir TABLA III CONTRATO DE LA CLASE PATRÓNSUCESIÓNSERIE
la clase PatrónSucesiónSerie, incluye también a la clase Método R. A. Precondición Postcondición
Proyecto que contiene el método principal(), de carácter generarSucesión( R1 No se ha La sucesión de
obligatorio en toda solución orientada a objetos porque ) generado la números impares
sucesión de ha sido generada
constituye su punto de entrada y salida. números y visualizada.
impares. Se
TABLA II TABLA DE REQUISITOS PARA LA SUCESIÓN DE NÚMEROS conoce que son
IMPARES cantTer
términos.
I.R. Descripción Entradas Resultados Contrato de la clase Proyecto
R1 Generar y visualizar los Ninguna Los 100 primeros TABLA IV CONTRATO DE LA CLASE PROYECTO
primeros 100 términos términos de la Método R. A. Precondición Postcondición
de la sucesión cuyo n- sucesión de Principal( R1 Se desconoce la La sucesión de los
ésimo término es: números impares ) cantidad de primeros 100
positivos, términos a generar, números impares ha
comenzando en 3. y por tanto no se ha sido generada y
generado la visualizada.
La clase Proyecto tiene un objeto de tipo PatrónSucesionSerie sucesión números
como atributo, denominado suc, objeto que precisamente impares.
permitirá generar la sucesión a medida que cambie su estado en
D. Seudo código orientado a objetos
tiempo de ejecución; en esta clase aposta se han omitido el
método constructor y los métodos modificadores del atributo El seudo código descrito a continuación corresponde al método
suc Es importante anotar la presencia de la clase Flujo en el analizador generar sucesión( ) de la clase PatrónSucesiónSerie
diagrama de clases. La clase de uso común Flujo permite y a la clase Proyecto. Obsérvese el uso de negritas para

14 Revista Generación Digital Vol. 8 No. 1. Edición 15. Octubre de 2009. ISSN 1909-9223
identificar las palabras reservadas del seudo lenguaje. que un grupo pequeño de alumnos confluye con la facilitación
de un tutor, a analizar y resolver un problema seleccionado o
Seudo código del método generarSucesión() diseñado especialmente para el logro de ciertos objetivos de
generarSucesión( ) aprendizaje.
entero n
para (n = 1, n < cantTer, n = n + 1) La segunda conclusión está relacionada con el patrón de diseño
termino = 2 * n + 1
Flujo.imprimir(termino)
orientado a objetos para la generación de sucesiones y series
fin_para aritméticas. En el artículo se trató una sucesión sencilla; sin
fin_metodo embargo, el patrón se puede extender para la generación de
sucesiones convergentes y divergentes, para el cálculo de
Seudo código de la clase Proyecto series aritméticas más complejas, como sucesiones de
funciones, series de potencias, o para series y sucesiones
clase Proyecto
conocidas como la sucesión de Fibonacci o la serie armónica.
privado PatrónSucesiónSerie suc
//---- Aquí va el constructor vacío, disponible por omisión -----
publico estático principal( ) REFERENCIAS
suc = nuevo PatrónSucesiónSerie( ) // Reserva memoria [1] R. Botero, C. Castro y E. Parra, Método Integrado de Programación
suc.asignarCantTer(100) Secuencial y programación Orientada a Objetos para el análisis, diseño y
Flujo.imprimir (―Los primeros 100 impares, comenzando en elaboración de algoritmos – MIPSOO, Informe de Investigación,
3, son:‖) Tecnológico de Antioquia, Medellín, 2005.
[2] S. Smith, C. Randall, J. Dossey, M. Keddy y M. Bittinger, Álgebra,
suc.generarSucesion( )
Trigonometría y Geometría Analítica, primera edición, México, 1998,
fin_metodo pp. 662, 664, 668.
fin_clase [3] J. Villalobos y R. Casallas, Fundamentos de programación. Aprendizaje
activo basado en casos. México, Pearson – Prentice hall, 2006.
El método analizador hallarValorSerie( ) de la clase [4] J. Bruner, Toward a Theory of Instruction, Cambridge, MA: Harvard
PatrónSucesiónSerie, retorna un valor real igual a la suma de University Press, 1966.
[5] L. M. Zañartu, ―Aprendizaje colaborativo‖, Contexto Educativo: revista
los términos de la sucesión generada; en este caso, retornará el digital de investigación y nuevas tecnologías, ISSN 1515-7458, N°23,
valor de los primeros 100 términos de la suma 3 + 5 + 7+ 9 + 2003.
…, que en notación sigma se reduce a: . El [6] D. Ausubel, J. Novak y H. Hanesian, Psicología educativa: un punto de
vista cognoscitivo, 2° ed. Trillas, México, 1991.
seudocódigo de este método es el siguiente: [7] J. A. González, El aprendizaje basado en problemas como forma de
innovación pedagógica, U. de Manizales, Facultad de Ingeniería, Grupo
publico real hallarValorSerie( ) de investigación en innovación curricular, 2006. Disponible:
real suma = 0 http://www.umanizales.edu.co/programs/ingenieria/abpinnovaci
para (n = 1, n < cantTer, n = n + 1) onpedagogica.pdf
termino = 2 * n + 1 [8] R. Botero, C. Castro, G. Taborda, J. Maya y M. Valencia. SISMOO,
suma = suma + termino investigación en curso, Facultad de Informática, Tecnológico de
fin_para Antioquia, Grupo GIISTA, Medellín, 2009.
[9] G. Booch, J. Rumbaugh y I.Jacobson. El Lenguaje Unificado de
retornar suma
Modelado, Addison Wesley Iberoamericana, Madrid, 1999.
fin_metodo

Se sobrentiende que al atributo cantTer le fue asignado un valor de


100 desde el método principal ( ).

VI. CONCLUSIONES
La lectura del artículo conlleva dos conclusiones: la primera
relacionada con las estrategias didácticas utilizadas al enseñar
programación orientada a objetos, donde se debe aplicar un
enfoque constructivita centrado en el estudiante, propiciando
variadas estrategias para gestión del conocimiento como el
aprendizaje por descubrimiento, donde la nueva información se
adquiere a través del propio esfuerzo del alumno; el
aprendizaje colaborativo, donde el estudiante puede retro
alimentar sus conocimientos con los colegas de su grupo o con
comunidades externas contactadas a través de los recursos
Web; el aprendizaje significativo, donde el aprendizaje del
alumno depende de la estructura cognitiva previa que se
relaciona con la nueva información; y el aprendizaje basado
en problemas, que reúne características de los ambientes ya
citados, donde tanto la adquisición de conocimientos como el
desarrollo de habilidades y actitudes resulta importante, dado

Revista Generación Digital Vol. 8 No. 1. Edición 15. Octubre de 2009. ISSN 1909-9223 15

Você também pode gostar