Professional Documents
Culture Documents
Paradigmas
Conceptos Preliminares
La música: ¿Podemos decir que la música también sufrió cambios en sus paradigmas?
Sí, pero a diferencia, la música no explica la realidad sino que es arte y una forma de expresión, lo que no
tiene un criterio de medición de correcto o incorrecto, sino es relativo a uno, pero igual, se puede pensar,
a riesgo que un filosofo se enoje (Y MUCHO), que el rock, el jazz, puede ser vistos como paradigmas de
producción musical.
También podemos observar en los deportes por ejemplo: el salto en alto, boxeo, etc. Las posturas, las
formas de ejecutar sus acciones hace medio siglo no son las mismas de ahora. Este cambio de práctica,
podemos concebirlo como un cambio de paradigma.
Nuevamente, no les llama paradigma, porque estas cosas no son ciencias, pero la idea, es la misma…
¡Perdamos miedo a la palabra paradigma!
Un poco de historia
En un comienzo a las grandes maquinas (literamente, ocupaban cuartos enteros) que se usaban
exclusivamente para el de calculo matemáticos (las hoy en día son las portátiles y prácticas calculadoras)
y la programación se reducía configurar a esa maquina, de una forma muy complicada, para computar
(CALCULAR) el resultado que se buscaba. En general en cálculos de de predicciones meteorologías o
estadísticos. A estas maquinas se las denomino computadoras pues computaban.
1 de 8
Curso Java I Paradigmas
Con el tiempo, la arquitectura y los componentes electrónicos fueron evolucionando con los desarrollos
tecnológicos y no solo se logro achicar el tamaño de los mismos, sino que aumento su capacidad de
procesamiento, pero además, de a poco, se fue expandiendo la utilidad de la misma, ya no solamente
consistía en computar resultados matemáticos, sino que, de forma general, procesaba grande volúmenes de
información en tiempo reducido.
La computadora de a poco empezó a escaparse del ámbito puramente matemático para adentrarse en el
ámbito de procesamiento de datos generales (Década del 50’).
La computadora es entonces, en la actualidad, una maquina programable que sirve a propósito generales
y puede resolver varios tipos de problemas y la programación es el proceso mediante el cual se prepara
a una computadora para efectuar una determinada tarea.
Para programar en un principio a una maquina, necesitamos un forma de comunicarnos con ella, a dicha
forma de comunicarnos se la denominó lenguaje, haciendo un paralelismo con la realidad. Es decir,
nosotros, entre nosotros, nos comunicamos mediante un lenguaje, bueno con la maquina es la misma
historia.
Así es como decimos que para programar a una computadora necesitamos conocer un lenguaje de
programación que nos permita prepararla para ejecutar la tarea que queremos hacer.
Con un lenguaje la idea es especificar a la maquina como manipular una secuencia de datos a través de
sucesivas instrucciones para producir un resultado.
El primer lenguaje con el se trabajo fue directamente el lenguaje maquina, es decir, el lenguaje que
entiende directamente se redactaban solamente con los famosos 1 y 0 del código binario para que los
circuitos electrónicos de la maquina puedan entender.
Como realmente esto estos programas se volvían inmatenibles, surgió la necesidad de esclarecer la cosas y
trabajar en un lenguaje más entendible, así que fue que en la década del 50’ nació el lenguaje ensamblador,
un lenguaje un poco más entendible por los seres humanos pero que aun así los programas construidos
eran complicados de mantener.
Con este lenguaje aperece un primer nivel de abstracción con respecto de la máquina subyacente y a sus
circuitos electrónicos, ya no se programa directamente sobre el lenguaje maquina sino que había 1 (un)
nivel de indirección, se programa en un lenguaje que se traducía al lenguaje máquina que era el que
entendía esta para ejecutar las instrucciones, dicho lenguaje se llamaba lenguaje de Ensamblador.
Los programas resultantes resultaban ser un choclo o “espagueti” de código que mezclaba los datos y las
instrucciones de forma muy poco clara.
Nuevos paradigmas
A mediados del 60, la relación costos y capacidad de procesamiento había bajado notablemente.
Si la industria automotriz hubiese seguido la misma tendencia que la de las computadores, habríamos
tenido en 1987 un rolls-royce por menos de 5 dólares que consumiría menos de dos gotas de nafta cada
cien kilómetros.
2 de 8
Curso Java I Paradigmas
Dada esta situación la búsqueda de nuevas aplicaciones para equipos tan baratos y disponibles cada vez
para más sectores se incremento radicalmente. Pero con ello también vinieron los fracasos, muchos
proyectos fracasaban durante su construcción o se descontinuaban. Por otro lado, la demanda de software
seguía creciendo a un ritmo para la cual se hacía evidente que la industria no tenía respuesta, había
comenzado la “crisis del software”.
Es por ello que surgen necesidades de encontrar nuevas y mejores técnicas de producción de software, y
así se fueron logrando avances en las distintas áreas que involucra el desarrollo de software: se
desarrollaron nuevas ténicas de análisis de requisitos, proliferaron enfoques metodológicos para el diseño y
la documentación, y para lo que es la programación fueron surgieron nuevos paradigmas sobre los
lenguajes de programación que facilitaran la tarea de desarrollar aplicaciones o sistemas concretos.
Con los primeros lenguajes de programación en alto nivel, surge una fuerte necesidad de estandarizar un
poco la forma de escribir los programas en dichos lenguajes, por lo que surge este primer paradigma que
fomenta.
La idea es proclamarse como una técnica que lleve a programas más entendibles de lo que se venían
haciendo, pudiéndolo así modificar, mantener con menos costo.
Lo programación modular busca cubrir los baches que deja la programación estructura por sobre todo en
sistemas o aplicaciones de tamaño medio a grande.
La idea consiste en dividir a un programa en un conjunto de módulos o subprogramas autónomos que
fueran indivudalmente programables, verificables y modificables.
En esencia este paradigma plantea lo que el conocido filosofo Descartes habla en su famosa obra “El
Método” de desglosar a un problema en partes, y a cada parte, dividirla nuevamente en partes, hasta
llegar a las partes más elementales (ya indivisibles) que puedan ser comprendidas más fácilmente, para
luego unificar todo y comprender el problema en su totalidad.
Bajo la mirada de este paradigma los programas son pensados como el resultado de la ejecución de un
conjunto de operaciones que se pueden descomponer a su vez en otras operaciones, y así hasta llegar las
operaciones elementales o instrucciones.
Este estilo se conoce como descendente, puesto que se va refinando desde lo más complejo hasta lo más
elemental.
En otros casos los subprogramas o módulos sirven para escribir secuencias de acciones que puedan ser re
utilizadas en otros programas, construyendo lo que se conoce como biblioteca de subprogramas o librerías.
Este estilo se lo conoce como ascendente.
Estos estilos no son excluyentes sino que son totalmente complementarios.
Se alienta a que los módulos tengan características que lo hagan de mejor calidad como: Poca cohesión
entre ellos (no estén ligados estrechamente y un cambio en uno no provoque cambios en el otro) y alta
3 de 8
Curso Java I Paradigmas
cohesividad (cada una efectúe una tarea simple y bien definida sin alterar el medio que lo rodea de forma
implícita).
Estos dos paradigmas se mezclan en la programación estructurada y modular o sencillamente
“Procedural” (por estar guiada por procedimientos).
Abstracción
Pero así como estaba encarada la programación estructurada y modular, no se podían resolvía todos los
problemas a mediados del 80’.
Es por eso que la industria del software empieza a seguirle los pasos a otras industrias y construir sus
productos en base a la unión de componentes elaborados previamente.
En la industria automotriz, una fábrica no pretende producir los equipos de audio, de aire acondicionado,
las baterías, las lamparitas o las cubiertas. ¿Por qué hacen esto? Porque comprárselas a los que hacen
estas auto-partes les conviene mucho más, dado que termina siendo más económico y además permite que
cada uno se dedique a lo que mejor sabe hacer).
Los TDA en la práctica son estructuras de datos más operaciones (algoritmos) que permiten manejar
dichas estructuras.
Los lenguajes de programación modular fueron incorporado soporte para este tipo de abstracción mediante
la posibilidad de definir tipos de datos como unidades o módulos portables.
Ocultamiento de la implementación
La abstracción como mecanismo para crear módulos independientes y portables tal como lo definimos
sugiere fuertemente otra propiedad muy importante: Impedir que se puedan visualizar detalles que no son
importantes para el usuario del modulo (llamado cliente).
En la industria automotriz, nuevamente, a la fábrica de autos, ¿le importa saber los detalles de cómo
funciona por dentro el equipo de música?
En realidad no, solo le interesa que asegure una serie de interfases y conexiones que permitan su
instalación y una sería de características y funcionalidades a prestar, de esta forma el fabricante de auto
y el fabricante de equipo pueden hacer lo que quieran pero ambos garantizan que comparten una
interfase común).
La idea es para el usuario de un módulo concebirlo como una caja negra, de la cual nada se sabe que hay
por dentro, solamente se sabe que es lo que recibe y que es lo que sale, o sea, se sabe lo que hace pero
como lo hace, dejando este detalle de implementación de lado confiando en que su funcionamiento.
En la práctica el ocultamiento de la implementación se materializa en la especificación que señala
concretamente las funciones que el módulo realiza, los parámetros que se utilizan en cada función
(entrada) y el efecto que producen dichas funciones incluyendo los valores que retornan dichas
4 de 8
Curso Java I Paradigmas
operaciones (salida). De esta forma se define una interfase clara entre el usuario del módulo y el creador
del mismo, donde el creador puede hacer lo que quiera dentro de su caja negra mientras siga dando las
mismas prestaciones al usuario y el usuario las use tal como esta especificado.
La gran ventaja es que cada uno puede hacer las modificaciones que le parezcan siempre y cuando
cumplan con el contrato definido en la especificación.
La POO encara la resolución de problemas desde otra óptica: la óptica del objeto.
Para el ejemplo anterior ahora tendríamos un objeto pantalla, con sus datos (atributos) y con sus
operaciones (métodos) que ese objeto puede realizar (comportamiento) cada vez que se le envía un cierto
mensaje o solicitud.
Los objetos, a primera vista, puede parecer muy similares a lo que es un tipo de dato abstracto (TDA):
pues se componen de una estructura de datos, que ahorra llamamos atributos, más procedimientos sobre
estos, que ahora tienen el nombre de métodos; los mensajes se podrían pensar como invocaciones a estos
procedimientos.
Con esto se podría llegar pensar que simplemente se ha inventado un nuevo nombre para algo que ya
existía anteriormente.
Esto es alguna medida es cierto, las ideas provienen en gran parte de la modularización, de la abstracción
de datos y del ocultamiento de la implementación, sin embargo la filosofía que introduce este paradigma
es radicalmente diferente a las anteriores.
Esta es la razón del porque cuesta pasar del paradigma estructurado al paradigma de orientación a objetos,
tiene que existir un cambio de mentalidad y enfocar la resolución del problema.
Supongamos un sistema corporativo que contiene objetos que representan los empleados de la compañía.
Cada uno de estos objetos tiene datos y comportamientos que describimos a continuación.
5 de 8
Curso Java I Paradigmas
Identidad
Es lo diferencia a un objeto de otros dentro de un mismo tipo.
Datos y estado
Las propiedades que tiene un objeto se conocen con el término de atributos, el valor de dichos atributos, en
un momento determinado, define su estado.
Siguiendo el ejemplo anterior, los atributos de un objeto empleado pueden ser: Número de Legajo , Fecha
de nacimiento, sexo, posición, antigüedad, etc.
Comportamiento
El comportamiento define lo que un objeto puede hacer.
En el paradigma procedimental, el comportamiento esta definiendo por procedimientos, funciones y
subrutinas del programa.
En el paradigma Orientado a objetos, estos comportamientos están contenidos en métodos de los objetos, y
estos se invocan mediante mensajes.
Supongamos que un comportamiento necesario para el objeto empleado consiste en saber o conocer su
número de legajo, entonces existiría un método para consultarle a dicho objeto el valor de ese atributo.
Supongamos que queremos calcular cuanto le tenemos que pagar a un empleado de una compañía, para
eso tenemos un objeto “calculador de sueldos” que exhibe un comportamiento de poder calcular el
sueldo para una determinado empleado. Por lo tanto este objeto tendrá que obtener, entre otras cosas, el
número de legajo, la antigüedad, etc. del empleado al cual se le este liquidando el sueldo.
Decimos así que el objeto calculador le estará en algún momento enviando un mensaje al objeto
empleado pidiéndole sus datos.
De dicha delicada interacción entre objetos se obtiene la resolución a los problemas que intenta resolver el
programa, es por eso, que el objeto de estudio a medida que aprendamos, además de aprender JAVA, será
como orquestar estas relaciones entre objetos para construir una aplicación que no solo resuelva el
problema, sino que también utilice un adecuado diseño y modelo de objetos.
Clase
Una clase responde a la idea de concepto, entendido como una noción compartida que se aplica a
determinados objetos en forma consciente. Un concepto puede no tener instancias directas, como el
concepto de “Animal” (no existe una entidad real o abstracta que responda solamente a “Animal”, dado
que es una categoría) pero no puede haber objetos que no respondan a un concepto. Así surge la noción de
clase.
6 de 8
Curso Java I Paradigmas
Por ejemplo: País, idioma, elefante, libro, taza, auto y empleado son clases.
Bolivia, castellano (abstracto), dumbo, el eternauta, la taza que rompí ayer sin querer, el auto de patente
RAD-025 y Roberto, son objetos, instancias de las correspondientes clases.
Otro ejemplo consistiría en mirar una base de datos, en forma de planilla, en donde la definición de la
tabla en sí misma (campos, descripción y tipos de datos) sería la clase y los objetos serían las filas de la
misma tabla.
Ventajas
Desventajas
7 de 8
Curso Java I Paradigmas
Otros paradigmas
Existen otros paradigmas orientados a resolver problemas por vías de la programación. Entre ellos:
• Paradigma declarativo
• Paradigma funcional
• Paradigma Orientado a Aspectos
8 de 8