·.··!! ·· ´.!·· ´¸´· ··!

/,·· ´ ´/´


1
1.3 Y 1.4 PARADIGMAS DE
PROGRAMACION: CLASIFICACIÓN E
IMPORTANCIA
PARADIGMA:
Un paradigma es un conjunto de reglas que
"rigen" una determinada disciplina. Estás
"reglas" se asumen normalmente como
"verdades
incuestionables",
porque son "tan
evidentes" que se
tornan transparentes
para los que están
inmersos en ellas.
Como el aire para las
personas o el agua para
el pez.
Lo que se vive hoy son
permanentes "cambios paradigmáticos", en
la educación, la economía, los negocios, las
empresas, la política, la informática, etc.
es decir un permanente cambio de las
reglas. Los que se anticipan a los cambios
son los innovadores, aquellos que empiezan
cuestionando los paradigmas

¿Qué es un paradigma de programación?
1. Un paradigma de programación
provee (y determina) la visión y
métodos de un programador en la
construcción de un programa o
subprograma. Diferentes
paradigmas resultan en diferentes
estilos de programación y en
diferentes formas de pensar la
solución de problemas (con la
solución de múltiples “problemas”
se construye una aplicación).

2. Un paradigma de programación es
una colección de modelos
conceptuales que juntos modelan el
proceso de diseño y determinan, al
final, la estructura de un programa.

Esa estructura conceptual de
modelos está
pensada de forma
que esos modelos
determinan la
forma correcta de
los programas y
controlan el
modo en que
pensamos y
formulamos
soluciones, y al
llegar a la
solución, ésta se debe de expresar
mediante un lenguaje de
programación. Para que este
proceso sea efectivo las
características del lenguaje deben
reflejar adecuadamente los modelos
conceptuales de ese paradigma.


Los lenguajes de programación son basados
en uno o más paradigmas Por ejemplo:
Smalltalk y Java son lenguajes basados en el
paradigma orientado a objetos. El lenguaje
de programación Scheme, en cambio,
soporta sólo programación funcional. En
cambio Python, soporta múltiples
paradigmas.


·.··!! ·· ´.!·· ´¸´· ··! /,·· ´ ´/´


2
Clasificación por paradigmas de
programación:



La Programación Declarativa: está basada en
el desarrollo de programas especificando o
"declarando" un conjunto de condiciones,
proposiciones, afirmaciones, restricciones,
ecuaciones o transformaciones que
describen el problema y detallan su solución.
La solución es obtenida mediante
mecanismos internos de control, sin
especificar exactamente cómo encontrarla,
por ejemplo Prolog y Lisp.

La Programación Imperativa: es la más
común y más conocida. Los programas
imperativos son un conjunto de instrucciones
que le indican a la computadora cómo
realizar una tarea .Está representada por C,
Basic, Fortran, etc. La Programación
Funcional es la que emplea un lenguaje
matemáticamente elegante, empleando
principalmente funciones aritméticas y
pertenece también al grupo de lenguajes
declarativos; algunos ejemplos son Haskell,
Miranda y Scheme.

La Programación Lógica: permite formalizar
hechos del mundo real y forma parte de los
programas declarativos. El lenguaje lógico
por excelencia es Prolog, que a la vez es
declarativo.

La Programación Orientada a Objetos:
intenta simular el mundo real a través del
significado de objetos que contiene
características y funciones. Los lenguajes
orientados a objetos se clasifican como
lenguajes de quinta generación y forman
parte de la programación imperativa. Se basa
en la idea de un objeto, que es una
combinación de variables locales y
procedimientos llamados métodos que
juntos conforman una entidad de
programación. En la actualidad, existe una
gran variedad de lenguajes de programación
que soportan la orientación a objetos.

Ejemplos de estos lenguajes son C++, Java,
Smalltalk, Ruby on Rails, Python y JavaScript,
entre muchos otros .A continuación haré una
descripción breve de los dos últimos.

·.··!! ·· ´.!·· ´¸´· ··! /,·· ´ ´/´


3
1.5 DIFERENCIA ENTRE LA PE Y LA
POO

PROGRAMACIÓN ORIENTADA A OBJETOS

El paradigma de la POO se basa en la idea de
que el mundo puede ser modelado como un
conjunto de objetos que interactúan entre
sí; programar se reduce entonces a
identificar dichos objetos y copiar
adecuadamente las características y
comportamientos. El objetivo central del
diseño es que todo elemento del mundo
(objeto real) corresponda directamente a un
objeto del mundo computacional (objeto
formal) que lo modele. El proceso de
programación se puede resumir de la
siguiente manera:
1. Identificar las clases de objetos y sus
atributos
2. Identificar y especificar sus
operaciones
3. Implantar las clases de objetos.

Cada uno de estos pasos corresponde a
refinamientos progresivos, buscando cada
vez el mejoramiento del modelaje que se
está haciendo del mundo. También es muy
usual tener que regresar a pasos anteriores
para mejorar algún aspecto del diseño.


PROGRAMACIÓN ESTRUCTURADA

La metodología de la programación
estructurada está basada en la idea que se
requiere para resolver un problema y no el
mundo en el cual este ocurre. El modelo
representa una solución al problema y
corresponde a un conjunto de procesos
jerárquicos conectados por medio de flujos
de datos, el cual se logra utilizando la
técnica de refinamiento a pasos para
descomponer las funciones del sistema. Un
proceso o módulo es una serie de
instrucciones que puede ser invocada por su
nombre, encargada de transformar los
datos de entrada en datos de salida. La
jerarquía entre los procesos significa que la
función que realiza un módulo, o el
problema que se resuelva, puede ser
descompuesto en varios subprocesos; cada
uno de ellos resuelve un subproblema del
problema final. La definición de los flujos
de datos que intervienen en el modelo es lo
que se llama diccionario de datos.

Se puede esquematizar este proceso de
construcción del modelo en los siguientes
pasos:

• Formalizar los resultados del análisis
• Identificar los módulos
• Elaborar el diccionario de datos
• Especificar los módulos
• Implantar los módulos.



1.6 ¿QUÉ ES LA POO?
1


Introducción a la programación orientada a
objetos (POO)



La POO es un paradigma de programación
(o técnica de programación) que utiliza

1
“POO y MVC en PHP” de Eugenia Bahit
·.··!! ·· ´.!·· ´¸´· ··! /,·· ´ ´/´


4
objetos e interacciones en el diseño de un
sistema.
Elementos de la POO


La POO está compuesta por una serie de
elementos que se detallan a continuación.


Clase
Una clase es un modelo que se utiliza para
crear objetos que comparten un mismo
comportamiento, estado e identidad.


Metáfora
Persona es la metáfora de una clase (la
abstracción d Juan, Pedro, Ana y María), cuyo
comportamiento puede ser caminar, correr,
estudiar, leer, etc. Puede estar en estado
despierto, dormido, etc. Sus características
(propiedades) pueden ser el color de ojos,
color de pelo, su estado civil, etc.


class Persona {
# Propiedades
# Métodos
}



Objeto
Es una entidad provista de métodos o
mensajes a los cuales responde
(comportamiento); atributos con valores
concretos (estado); y propiedades
(identidad).

$persona = new Persona();
/* El objeto, ahora, es $persona, que se ha
creado siguiendo el modelo de la clase
Persona*/

Método
Es el algoritmo asociado a un objeto que
indica la capacidad de lo que éste puede
hacer.

function caminar() {
#...
}


Evento y Mensaje
Un evento es un suceso en el sistema
mientras que un mensaje es la comunicación
del suceso dirigida al objeto.


Propiedades y atributos
Las propiedades y atributos, son variables
que contienen datos asociados a un objeto.

$nombre = 'Juan';
$edad = '25 años';
$altura = '1,75 mts';





·.··!! ·· ´.!·· ´¸´· ··! /,·· ´ ´/´


5
Características conceptuales de la POO



La POO debe guardar ciertas características
que la identifican y diferencian de otros
paradigmas de programación. Dichas
características se describen a continuación.


Abstracción
Aislación de un elemento de su contexto.
Define las características esenciales de un
objeto.


Encapsulamiento
Reúne al mismo nivel de abstracción, a
todos los elementos que puedan
considerarse pertenecientes a una misma
entidad.


Modularidad
Característica que permite dividir una
aplicación en varias partes más pequeñas
(Denominadas módulos), independientes
unas de otras.

Ocultación (aislamiento)
Los objetos están aislados del exterior,
protegiendo a sus propiedades para no ser
modificadas por aquellos que no tengan
derecho a acceder a las mismas.


Polimorfismo
Es la capacidad que da a diferentes
objetos, la posibilidad de contar con
métodos, propiedades y atributos de igual
nombre, sin que los de un objeto interfieran
con el de otro.


Herencia
Es la relación existente entre dos o más
clases, donde una es la principal (madre) y
otras son secundarias y dependen (heredan)
de ellas (clases “hijas”), donde a la vez, los
objetos heredan las características de los
objetos de los cuales heredan.


Recolección de basura
Es la técnica que consiste en destruir
aquellos objetos cuando ya no son
necesarios, liberándolos de la memoria.





·.··!! ·· ´.!·· ´¸´· ··! /,·· ´ ´/´


6
1.7 BENEFICIOS DE LA POO
La Programación Orientada a Objetos tiene
las siguientes ventajas respecto a otros
paradigmas de la programación:

BENEFICIOS
1. Fomenta la reutilización y extensión
del código.
2. Facilita el mantenimiento del
software.
3. Permite crear sistemas más
complejos.
4. Agiliza el desarrollo de software.
Facilita la creación de programas
visuales.
5. Facilita el trabajo en equipo.
6. Relacionar al sistema al mundo real.
7. Datos separados del Diseño.

Otros beneficios son

 Reusabilidad: Cuando hemos
diseñado adecuadamente las clases,
se pueden usar en distintas partes
del programa y en numerosos
proyectos.
 Mantenibilidad: Debido a la sencillez
para abstraer el problema, los
programas orientados a objetos son
más sencillos de leer y comprender,
pues nos permiten ocultar detalles
de implementación dejando visibles
sólo aquellos detalles más
relevantes.
 Modificabilidad: La facilidad de
añadir, suprimir o modificar nuevos
objetos nos permite hacer
modificaciones de una forma muy
sencilla.
 Fiabilidad: Al dividir el problema en
partes más pequeñas podemos
probarlas de manera independiente
y aislar mucho más fácilmente los
posibles errores que puedan surgir.
La programación orientada a objetos
presenta también algunas desventajas como
pueden ser:
PROBLEMAS
 Cambio en la forma de pensar de la
programación tradicional a la
orientada a objetos.
 La ejecución de programas
orientados a objetos es más lenta.
 La necesidad de utilizar bibliotecas
de clases obliga a su aprendizaje y
entrenamiento.
 Complejidad para adaptarse.
 Mayor cantidad de código (aunque a
la larga no, por la reutilización).