Está en la página 1de 6

Metodología de la Programación Estructurada y Orientada a Objetos

Leobardo LÓPEZ ROMÁN


Departamento de Ingeniería Industrial y de Sistemas, Universidad de Sonora
Hermosillo, Sonora, 83000, México
llopez@industrial.uson.mx

RESUMEN sin embargo, muchos de ellos, no están aprendiendo a


programar orientado a objetos, porque se les está
Con la aparición del lenguaje Java y la penetración que enseñando prácticamente en forma directa con el lenguaje
ha tenido como el primer lenguaje que muchos Java, y no se les está enseñando a “pensar”, es decir, no
estudiantes están aprendiendo, y debido a la falta de una están desarrollando la lógica de la programación
metodología apropiada, se está cayendo en el error de orientada a objetos.
enseñar a programar directamente con el lenguaje Java, La idea de este autor es que lo fundamental al aprender a
dejando de lado el desarrollo de la lógica, y se están programar computadoras es desarrollar la lógica
formando programadores sin lógica. necesaria para solucionar problemas en forma
Este autor tiene la convicción de que los estudiantes algorítmica, independientemente de algún lenguaje de
deben aprender un lenguaje orientado a objetos como programación; esto es, aprender a diseñar algoritmos o
Java u otro, pero antes, deben desarrollar la lógica de la programas usando un seudolenguaje, y no hacerlo
programación estructurada como base para el aprendizaje directamente con un lenguaje.
de la lógica de la programación orientada a objetos. Programación estructurada y orientada a objetos, es una
En este trabajo se presenta una metodología desarrollada metodología que este autor ha desarrollado, la cual viene
para conducir el proceso enseñanza aprendizaje de la a coadyuvar en la solución de una necesidad largamente
lógica de la programación, dividida en dos partes: en la experimentada por la comunidad académica de la
primera parte, se plantea la metodología de la programación de computadoras, contar con un método
programación estructurada usando Top Down Design y que permita conducir la enseñanza aprendizaje de la
seudocódigo; y en la segunda parte, se presenta la programación, mediante el uso de un seudolenguaje de
evolución de la programación estructurada a la orientada diseño de algoritmos o programas estructurados y
a objetos, usando el diagrama de clases de UML orientados a objetos.
integrado con la lógica de la programación estructurada La metodología contiene en forma natural los conceptos,
en seudocódigo y con los conceptos de objetos, clases y estructuras y filosofía que se han generado hasta estos
encapsulación de la programación orientada a objetos. tiempos en que la programación orientada a objetos y el
lenguaje Java marcan la pauta de la programación de
Palabras Claves: Metodología, Programación, computadoras.
Estructurada, Objetos, Orientada a Objetos. Esta metodología es el resultado de la integración y
adaptación de varias técnicas, como son: la programación
estructurada en seudocódigo; los conceptos y estructuras
1. INTRODUCCIÓN de la programación orientada a objetos: objetos, clases y
encapsulación; el diagrama de clases de UML (Unified
A la comunidad académica le llevó muchos años Modeling Language, desarrollado por G. Booch, I.
consolidar una forma apropiada como los estudiantes Jacobson y J. Rumbaugh) [1]; la arquitectura modelo-
deben aprender a programar computadoras. Primero, vista-controlador; y algunos conceptos introducidos por
deben aprender la metodología de la programación, el lenguaje Java. Dicha metodología permite diseñar
usando técnicas de diseño algorítmicas o seudolenguajes; algoritmos o programas estructurados y orientados a
y después, deben aprender como implementarla usando objetos, bien estructurados, bien documentados, eficaces,
un lenguaje de programación, todo esto con un enfoque eficientes y fáciles de darles mantenimiento. En este
estructurado, y después, sobre lo anterior, aprender la artículo se presenta un resumen de la metodología
programación orientada a objetos en Java u otro lenguaje. original, la cual está escrita con todo detalle en el libro
En la actualidad muchos estudiantes de la programación “Programación estructurada y orientada a objetos” [2];
de computadoras han estado aprendiendo Java como publicado por la editorial Alfaomega
primer lenguaje, que es un lenguaje orientado a objetos,
(www.alfaomega.com.mx). 2011. México. Y es programación orientada a objetos. La arquitectura general
distribuido en los países de habla hispana. de un programa cambió, y ahora consistía de un conjunto
de funciones o módulos jerarquizados, cada uno formado
por un conjunto de instrucciones.
2. ESTADO DEL ARTE
2.3 Programación orientada a objetos
La actividad de programar computadoras ha tenido varias Aunque la programación orientada a objetos (POO)
crisis, provocadas por el permanente aumento en la aparece muchos años antes, es a mediados de los
complejidad de las aplicaciones que deben enfrentarse, lo noventas cuando se generaliza su uso. La POO añade a la
que provoca que las técnicas y estructuras que resultan programación una nueva estructura: el objeto, con sus
adecuadas en un momento, con el paso del tiempo se conceptos; objetos, clases, encapsulación, herencia y
vuelvan inadecuadas. Esta problemática ha dado origen a polimorfismo. Aparecen nuevas técnicas de diseño:
dos revoluciones: la primera, a la que se le llamó Booch, Rumbaugh, Jacobson, Yourdon, UML (Unified
Programación Estructurada, permitió evolucionar desde Modeling Language), entre otras. Se desarrollan nuevos
programar de una forma “tradicional”, casi artesanal, a lenguajes: C++, Java, C#, etcétera. La arquitectura
programar de una mejor forma, que aportó las bases para general de un programa cambió, y ahora consiste de un
sustentar la segunda revolución en la evolución de los conjunto de objetos, cada uno formado por datos y un
paradigmas de programación, a lo que hoy se conoce conjunto de métodos, equivalentes a módulos o funciones
como programación orientada a objetos. en la programación estructurada, y a su vez, cada método
formado por un conjunto de instrucciones.
2.1 Programación tradicional
En la década de los cincuentas y principios de los
sesentas se programaba en forma “tradicional”, en esos 3. PROBLEMÁTICA DE LA ENSEÑANZA
tiempos sólo existían las estructuras lógicas: APRENDIZAJE DE LA PROGRAMACIÓN
Secuenciación, If y For (que se conocía como Do en
Fortran), y se utilizaban los diagramas de flujo como En este punto se describe la problemática de la enseñanza
técnica de diseño de algoritmos o programas. Al aprendizaje de la programación estructurada y orientada a
aumentar la complejidad de las aplicaciones que se objetos, de acuerdo con la experiencia, el enfoque y punto
enfrentaban, esa forma de programar tuvo una severa de vista de este autor, observada en el contexto donde me
crisis. La arquitectura general de un programa consistía desenvuelvo en México y en algunos otros países de
de un solo módulo o bloque de instrucciones. habla hispana.

2.2 Programación estructurada 3. 1 Problemática de la enseñanza aprendizaje de la


A finales de la década de los sesentas, surge un programación estructurada
movimiento llamado programación estructurada que vino
a añadir nuevas estructuras, técnicas y conceptos a la En muchas instituciones de educación incurren en alguno
programación: se añadieron las estructuras lógicas DO- de éstos errores:
UNTIL, DOWHILE y se formalizaron el IF-THEN, IF- 1. Enseñan a programar directamente con un lenguaje
THEN-ELSE y CASE. Se inventó el módulo, la función como C o C++. No es bueno enseñar directamente
y el concepto de parámetros. Se desarrollaron nuevas con un lenguaje, porque realmente se enseña a operar
técnicas de diseño de algoritmos o programas: el lenguaje, y no se desarrolla la lógica necesaria
seudocódigo, diagramas Warnier, diagramas Chapin, para programar computadoras.
Jackson, Diseño estructurado de Yourdon, Top Down 2. Enseñan la lógica con diagramas de flujo. Los cuales
Design (Diseño descendente), entre otras; que vinieron a resultan obsoletos porque no soportan todas las
desplazar a la tradicional técnica de diagramas de flujo. estructuras lógicas de control de la programación en
Fueron apareciendo nuevos lenguajes: Pascal, C, Cobol forma natural.
estructurado, Basic estructurado. Se estableció que se 3. Enseñan la lógica en seudocódigos que utilizan las
debe aprender a programar utilizando un seudolenguaje, estructuras lógicas de control en forma
es decir, no enseñar directamente con un lenguaje. Y se castellanizada. En lugar de IF-THEN-ELSE utilizan
estableció que se debe usar un estilo de programación que SI-ENTONCES-SINO, en lugar de FOR utilizan
haga más entendible el algoritmo y el programa. PARA, en lugar de DOWHILE utilizan MIENTRAS;
Nuevamente al aumentar la complejidad de las he usado éstos conceptos y he comprobado que no es
aplicaciones que se enfrentaban, esa forma de programar buena idea. Las estructuras lógicas de la
tuvo una severa crisis. Esto llevó a que siguiera programación tienen sus palabras reservadas
evolucionando y se generaron los conceptos de originales y no deben ser cambiadas, porque causan
programación modular, y luego el concepto de mucha confusión al estudiar los lenguajes de
abstracción de datos, para dar paso al desarrollo de la programación. Además, el tratamiento que se le da,
no favorece la segmentación de los programas en excelentes manuales del lenguaje Java, pero no conducen
módulos o funciones. el aprendizaje de la lógica básica de la programación
4. En las materias en las que se aplica la programación inmersa en la programación orientada a objetos. Llevando
como programación II y estructura de datos, los a que los estudiantes “aprendan a programar” sin
maestros hacen énfasis en el código del programa y desarrollar lógica. Esto significa que los estudiantes
no en el diseño del mismo. Lo cual es esencial en la realmente están aprendiendo a codificar usando el
programación estructurada y orientada a objetos. lenguaje Java, que es un lenguaje orientado a objetos,
pero no están aprendiendo a programar orientado a
3.2 Problemática de la enseñanza aprendizaje de la objetos usando el lenguaje Java, que sería lo correcto.
programación orientada a objetos Porque programar es un proceso que implica diseñar el
programa antes de codificarlo. Además, sabemos que si
En los últimos años se ha insistido y ejercido una gran un estudiante aprende a programar directamente con el
presión para que Java sea el primer y único lenguaje que lenguaje que esta de moda, su mente queda “casada” con
los estudiantes deben aprender. En consecuencia, muchas ese lenguaje, y cuando el lenguaje que esta de moda
instituciones educativas, están enseñando Java como cambie, la formación que se le dio con el anterior
primer lenguaje, eliminando una formación previa que lenguaje se convierte en deformación.
permita el desarrollo de la lógica de la programación.
Alguna gente dice que al estudiar el lenguaje Java va Por lo anterior, podemos inferir que la programación no
implícito el desarrollo de la lógica, y que la programación se está enseñando adecuadamente en muchas
es mucho más fácil, rápida, agradable y avanzada en Java instituciones de educación.
que lo que anteriormente era la programación.
3.3 Reivindicación de la programación estructurada
Alguna gente dice que cualquier persona que no sepa
nada de programación, puede entender fácilmente los En los últimos años se ha observado que muchas
conceptos de la programación orientada a objetos, y estoy instituciones de educación que antes iniciaban la
de acuerdo en parte, porque en un nivel abstracto enseñanza de la programación con la programación
cualquiera puede comprenderlos. Pero en el momento en estructurada en C o C++, que cambiaron a enseñar la
que se debe implementar los objetos en instrucciones en programación orientada a objetos con Java, y cayeron en
un lenguaje de programación como Java, es donde se dan la problemática explicada en el punto anterior, están
cuenta que algo falta. Porque un programa orientado a regresando a enseñar como lo hacían antes, primero la
objetos, se compone por un conjunto de objetos, y cada programación estructurada en C o C++ y después la
objeto, por un conjunto de métodos que implementan las programación orientada a objetos en Java u otro. Esto
funciones del objeto, a algunos de esos métodos hay que está reivindicando a la programación estructurada como
enviarles datos a través de parámetros, para que la base de la programación orientada a objetos.
establezcan y accedan los datos, y otros métodos realizan
cálculos. De manera que ese algo que falta es la lógica
básica de la programación; que consiste en: tipos de 4. METODOLOGÍA DE LA PROGRAMACIÓN
datos; entero, real, cadena, arreglos, etcétera; las ESTRUCTURADA Y ORIENTADA A OBJETOS
estructuras de control secuenciación, if-then, if-then-else,
switch, do-while, for, while; métodos (módulos y Con el objetivo de llenar ese vacío que ha dejado la
funciones definidas por el usuario); paso de parámetros bibliografía y con el propósito de coadyuvar en el
por valor y por referencia. Es por ello que digo que esos mejoramiento de la enseñanza aprendizaje de la
elementos y estructuras son la base de la programación programación de computadoras, he desarrollado esta
orientada a objetos, y que una persona que no desarrolle metodología de la programación estructurada y orientada
esas bases, jamás podrá comprender cómo implementar a objetos.
los métodos de objetos que procesan datos.
La metodología se divide en dos partes: en la primera
Por lo anterior, pienso que la programación orientada a parte, que abarca del capítulo uno al nueve, se presenta
objetos no se está enseñando adecuadamente en las la metodología de la programación estructurada usando la
instituciones de educación. ¿Cuál es la causa? Que en la técnica Top Down Design y seudocódigo. En esta
bibliografía existente sobre programación orientada a primera parte se da énfasis al desarrollo de la lógica
objetos, está ausente la metodología de la programación básica de la programación usando seudocódigo. Se
orientada a objetos enfocada a estudiantes principiantes. estudian los tipos de datos, identificadores, operaciones
En otras palabras, existen muchos libros sobre POO y de entrada, cálculo y salida.
UML, pero no están enfocados para niveles básicos de
aprendizaje. Los libros que están enfocados para niveles Las estructuras de control: la secuenciación; la selección
básicos de aprendizaje son los libros de Java, que son simple (if then), doble (if then else) y múltiple (switch);
la repetición do…while, la repetición for y la repetición 3. Función calcularMedia(Ref v: Arreglo[10] Real) Real
while. Los arreglos unidimensionales, bidimensionales, a. Declarar
tridimensionales y tetradimensionales. Y por último de Variables
esta primera parte, se estudia cómo usar más de una sumatoria, prom: Real
función, en problemas que involucran a más de una tarea i: Entero
o función; funciones que no regresan valor, funciones que b. sumatoria = 0
regresan valor, parámetros por valor y por referencia; c. for i=0; i<=9; i++
registros y archivos. 1. sumatoria = sumatoria + v[i]
d. endfor
A continuación se presenta un ejemplo, para mostrar una e. prom = sumatoria / i
idea general de cómo se usa la primera parte de la f. return prom
metodología en la solución de una aplicación. g. Fin Función calcularMedia

Problema 1: 4. Función imprimirVector(Ref vect: Arreglo[10] Real)


a. Declarar
Elaborar un algoritmo que permita leer un vector de diez Variables
números en un arreglo de 10 elementos; que lo imprima e x: Entero
imprima la media. Leer el vector en una función; calcular b. for x=0; x<=9; x++
la media en otra función; e imprimir el vector en otra 1. Imprimir vect[x]
función. Utilizando parámetros. c. endfor
d. Fin Función imprimirVector
A continuación se diseña el diagrama general de la Fin
solución usando Top Down Design:
Explicación:
Algoritmo
MEDIA CON FUNCIONES El algoritmo tiene cuatro funciones. La función
Función principal() principal(), en la que se define la variable vector, como
un arreglo de 10 elementos, y la variable promedio.
Enseguida llama a la función leerVector(vector),
enviando vector como parámetro y conectándolo con el
Función Función Función parámetro por referencia vec; en el cual lee los 10
leerVector() calcularMedia() imprimirVector() números.
Luego llama a la función calcularMedia(vector) enviando
Ahora se diseña el algoritmo en seudocódigo: vector como parámetro y conectándolo con el parámetro
v; del cual calcula la media y la devuelve para colocarla
Algoritmo MEDIA CON FUNCIONES en promedio.
1. Función principal() A continuación llama imprimirVector(vector) enviando
a. Declarar vector como parámetro y conectándolo con el parámetro
Variables vect; el cual imprime. Y finalmente imprime el promedio.
vector: Arreglo[10] Real
promedio: Real En la segunda parte de la metodología, que abarca del
b. leerVector(vector) capítulo diez al trece, es donde se estudian los conceptos
c. promedio = calcularMedia(vector) de la programación orientada a objetos, integrándolos con
d. imprimirVector(vector) el concepto de diagrama de clases de UML (Unified
e. Imprimir promedio Modeling Language), con la arquitectura modelo-vista-
f. Fin Función principal controlador, con las estructuras estudiadas en los
primeros nueve capítulos correspondientes a la
2. Función leerVector(Ref vec: Arreglo[10] Real) programación estructurada y la incorporación de los
a. Declarar conceptos de la programación orientada a objetos en la
Variables técnica seudocódigo, logrando una metodología de la
n: Entero programación que permite diseñar algoritmos orientados
b. for n=0; n<=9; n++ a objetos. Planteando una evolución de la programación
1. Solicitar elemento vec[n] estructurada a la programación orientada a objetos,
2. Leer vec[n] enfatizando que la evolución radica en el diseño
c. endfor arquitectónico del algoritmo o programa, que en la
d. Fin Función leerVector programación estructurada se hace mediante técnicas
como Top Down Design, y en la programación orientada 1. sueldo = producción * 20.00
a objetos se usan técnicas como el diagrama de clases. b. endif
c. if (produccion > 500)AND (produccion <= 800)
A continuación se presenta un ejemplo, para mostrar una then
idea general de cómo se usa la segunda parte de la 1. sueldo = producción * 25.00
metodología en la solución de una aplicación. d. endif
e. if produccion > 800 then
Problema 2: 1. sueldo = producción * 30.00
f. endif
En cierta empresa manufacturera de mesas se tienen g. Fin Método calcularSueldo
varios obreros; por cada obrero se tiene su nombre y la
cantidad de unidades producidas por cada uno de los seis 5. Método obtenerNombreObr() Cadena
días en que laboró. Elaborar un algoritmo que permita a. return nombreObr
leer los datos de los obreros e imprima un reporte de b. Fin Método obtenerNombreObr
producción.
6. Método obtenerProduccion() Real
A continuación se tiene la solución en dos partes: en la a. return produccion
primera, se diseña el diagrama de clases, que contiene la b. Fin Método obtenerProduccion
estructura general del algoritmo o programa, y después,
en la segunda parte, se diseña el algoritmo que contiene la 7. Método obtenerSueldo() Real
lógica que soluciona el problema usando seudocódigo. a. return sueldo
b. Fin Método obtenerSueldo
Diagrama de clases Fin Clase Obrero3

Clase EjecutaObrero3
Obrero3 1. Método principal()
a. Declarar
nombreObr Variables
produccion EjecutaObrero3 nombre, obrMayor, obrMenor: Cadena
sueldo dia, proDia, totProdObr, totProd,
totObreros, mayorProd, menorProd: Entero
establecerNombreObr() totSueldos: Real
establecerProduccion() desea: Carácter
calcularSueldo() b. Imprimir encabezado
obtenerNombreObr() c. totObreros = 0
obtenerProduccion() totProd = 0
obtenerSueldo() totSuedos = 0
mayorProd = 0
menorProd = 10000
d. do
Algoritmo CALCULA LA PRODUCCION DE OBREROS 1. Declarar, crear e iniciar objeto
Clase Obrero3 Obrero3 objObrero = new Obrero3()
1. Declarar 2. Solicitar Nombre
Datos 3. Leer nombre
nombreObr: Cadena 4. totProdObr = 0
produccion: Entero 5. for dia=1; dia<=6; dia++
sueldo: Real a. Solicitar Producción del dia
b. Leer proDia
2. Método establecerNombreObr(nom: Cadena) c. totProdObr = totProdObr + proDia
a. nombreObr = nom 6. endfor
b. Fin Método establecerNombreObr 7. Establecer
objObrero.establecerNombreObr(nombre)
3. Método establecerProduccion(prod: Entero) objObrero.establecerProduccion(totProdObr)
a. produccion = prod 8. Calcular objObrero.calcularSueldo()
b. Fin Método establecerProduccion 9. Imprimir objObrero.obtenerNombreObr()
objObrero.obtenerProduccion()
4. Método calcularSueldo() objObrero.obtenerSueldo()
a. if produccion <= 500 then
10. if objObrero.obtenerProduccion()>mayorProd
then
5. CONCLUSIONES
a. mayorProd = objObrero.obtenerProduccion()
b. obrMayor = objObrero.obtenerNombreObr()
Actualmente hay una tendencia a utilizar Java como
11. endif
primer lenguaje directamente con el concepto orientado a
12. if objObrero.obtenerProduccion()<menorProd
objetos, sin profundizar en el desarrollo de las bases
then
lógicas de la programación, esto puede resultar muy
a. menorProd = objObrero.obtenerProduccion()
dañino, como lo fue BASIC en su momento, porque
b. obrMenor = objObrero.obtenerNombreObr()
vamos a generar programadores buenos para codificar
13. endif
usando lenguajes, pero sin bases lógicas, es decir,
14. totObreros = totObreros + 1
programadores que no saben programar.
totProd = totProd +
objObrero.obtenerProduccion()
Todo estudiante de sistemas, computación, informática,
totSuedos = totSuedos +
tecnologías de la información y carreras afines, debe
objObrero.obtenerSueldo()
aprender a programar orientado a objetos en lenguaje
15. Preguntar “¿Desea procesar otro obrero (S/N)?”
Java u otro similar, pero para lograrlo, primero debe
16. Leer desea
desarrollar las habilidades mentales lógicas necesarias,
e. while desea == „S‟
aprendiendo una metodología de la programación
f. Imprimir totObreros, totProd, totSueldos,
apropiada, porque la programación es lógica y debe ser
obrMayor, mayorProd, obrMenor, menorProd
independiente de algún lenguaje de programación.
g. Fin Método principal
Fin Clase EjecutaObrero3
Ahora, la comunidad académica tiene a su disposición un
Fin
libro [2] donde se presenta una metodología enfocada al
desarrollo de las bases lógicas de la programación, esto
Explicación:
es, para aprender a diseñar algoritmos o programas
estructurados y orientados a objetos usando seudocódigo.
En el diagrama de clases, se esquematiza la estructura
Dicha metodología, permite preparar a los estudiantes
general de la solución. Se tiene la clase controlador
para que puedan aprender y comprender cualquier
EjecutaObrero3, la cual utiliza al modelo, que está
lenguaje estructurado u orientado a objetos como C, C++,
formado por la clase Obrero3.
Java, C#, UML, etcétera.
En el algoritmo se diseña la lógica de cada una de las
clases usando seudocódigo. En la clase Obrero3 se
Lo relevante del método es que conduce el proceso
declaran los datos: nombreObr, produccion y sueldo; y
enseñanza aprendizaje de la programación de
los métodos establecerNombreObr(),
computadoras utilizando seudocódigo, es decir, sin
establecerProduccion(), calcularSueldo(),
utilizar la computadora directamente. Esto permite
obtenerNombreObr(), obtenerProduccion() y
desarrollar las capacidades mentales lógicas que una
obtenerSueldo(); para establecer, calcular y obtener cada
persona debe tener para programar computadoras y sienta
uno de los datos respectivamente.
las bases de disciplina y buena estructura. Este enfoque se
le dificulta a mucha gente, sin embargo, hay que
En la clase EjecutaObrero3 que es la clase controladora,
enfrentarlo, porque siendo la programación una actividad
es donde se establece la lógica que soluciona el problema
intelectual que requiere mucha creatividad, capacidades
utilizando la clase Obrero3. Se declaran las variables
de abstracción, de análisis, y de síntesis, éstas no se
necesarias para dar entrada a los datos. Se establece un
pueden desarrollar operando un lenguaje en la
ciclo do…while que permitirá procesar varios obreros. En
computadora, sino ejercitando la mente con una
el proceso de cada obrero, se genera el objeto para el
metodología apropiada.
obrero, se lee su nombre y con un ciclo for se procesa la
producción de cada uno de los seis días que laboró,
calculando el total de producción del obrero. Enseguida
se llevan los datos nombre y la producción al objeto a 6. REFERENCIAS
través de los métodos setters, luego se calcula el sueldo
llamando al método correspondiente y finalmente se [1] G. Booch, J. Rumbaugh y I. Jacobson, UML El
obtienen del objeto los datos que se van a imprimir, a lenguaje unificado de modelado, España, Addison
través de los métodos getters. Wesley, 1999.

Para conocer la metodología en detalle, se recomienda la [2] L. López, Programación estructurada y orientada a
lectura del libro [2]. objetos 3ra. Edición, Alfaomega, México, 2011.
ISBN 978-607-707-211-9.

También podría gustarte