Está en la página 1de 19

PROGRAMACION

ORIENTADA A OBJETOS
EVINED21V
UNIDAD I. Principios Básicos de la Programación
Orientada a Objetos.
 1.1 Paradigma de POO, Clases y Objetos, Atributos, Métodos y Herencia.
Los lenguajes de programación forman un subconjunto de los lenguajes
formales. Mediante ellos el ser humano puede comunicarse con una
computadora y decirle qué es lo que tiene que hacer y, al mismo tiempo,
sirven para comunicarse con otros seres humanos y expresarles qué es lo
que se quiere que haga una computadora.

Definición de Paradigma.
La definición de paradigma que se encuentra en el diccionario de María
Moliner
 Para Thomas Kuhn, quien en su libro publicado en 1962, “The Structure of Scientific
Revolutions”, amplió la concepción del término paradigma de la siguiente forma:
”Forma en que un científico percibe al mundo y a la estructura de teorías y
suposiciones que modifican esta percepción”.

 En la ciencia de la computación, probablemente fue Robert Floyd quien habló por


primera vez del término Paradigmas de Programación y quien los definió como:
“Un proceso de diseño que va más allá de una gramática, reglas semánticas y
algoritmos, sino que es un conjunto de métodos sistemáticos aplicables en
todos los niveles del diseño de programas.”

Todos los lenguajes de programación existentes pueden ser clasificados en una jerarquía
de familias a partir del modelo que siguen para definir y operar información (Figura 1),
es decir, que pueden ser jerarquizados según el paradigma que siguen.
 Cuando se quiere utilizar la computadora para resolver problemas, lo primero que hay que
hay que hacer es poder trasladar dicho problema a la computadora, en donde el proceso
de translación del mundo real a la computadora implica un proceso denominado
ABSTRACCION.
Tal vez el termino por si solo sea extraño, pero desde niños estamos acostumbrados a
realizar abstracciones: ya que a veces jugábamos a hacer otra persona
situada en otro mundo, o jugábamos arriba de la cama en donde esta
podía convertirse en un avión, coche o barco.
Los ejemplos anteriores no son otra cosa que ABSTRACCIONES, modelos de la realidad
llevada a otro contexto por medio de una operación intelectual.

Entonces el trasladar un problema a una computadora, es por medio de abstracciones, o sea,


que se debe de crear un modelo simplificado de la realidad tomando los elementos que nos
parezcan pertinentes y transformándolos en variables, dentro de un programa. De esta forma
nuestra computadora podrá entenderlo, ejecutarlo, y finalmente, se habrá obtenido el
resultado que se estaba buscando.
 Para esto, se debe de emplear un lenguaje de programación, en donde se pueda
especificar a modo de instrucciones, cuales son los pasos que tendrá que seguir la
computadora para resolver el problema.
Todos los lenguajes de programación pueden ser clasificados en una jerarquía
de familias a partir del modelo que siguen para definir y operar información
(Figura 1), es decir, que pueden ser jerarquizados según el paradigma que
siguen.
En una primera clasificación, se encuentran dos grandes grupos en donde es posible
englobar casi todos los paradigmas de programación conocidos hasta ahora.

 PROGRAMACIÓN IMPERATIVA.
El término imperativo en este caso, es una orden para realizar una acción específica. De
forma similar, la programación imperativa consiste en una serie de comandos que una
computadora ejecutará.
Estos comandos detallan de forma clara y específica el cómo hacer las cosas y llevarán al
programa a través de distintos estados.

Los elementos más importantes de este paradigma son:


• Variables: Son objetos cuyo valor depende de una localidad de memoria y que puede
cambiar a lo largo de la ejecución del programa. La definición de este paradigma sería
imposible sin estos elementos fundamentales, ya que los estados de un programa son
representados y diferenciados por su conjunto de variables y sus contenidos.
• Tipos de datos: Son abstracciones que representan un conjunto de valores junto con las
operaciones y relaciones que son aplicables a ellos.
Algunos tipos comunes en varios lenguajes son: integer, que define parcialmente el
conjunto de los números enteros, float, que representa números reales, carácter, que
representa una sola letra o signo, cadena de caracteres, que representa a dos o mas
letras, y booleano, que generalmente especifica al pequeño conjunto conformado por
true y false.
Es importante recalcar que estos no son los únicos tipos de datos y que muchos lenguajes
permiten la implementación de muchos otros.

• Expresiones: Aunque son la forma fundamental de programar instrucciones, en la


programación imperativa su papel más importante está en las sentencias de asignación.
Una sentencia de asignación sirve para modificar el valor de una variable y así cambiar
el estado de un programa.
Esto puede ser algo muy sencillo como copiar el valor de una variable a otra localidad de
memoria o involucrar algo más complicado como realizar operaciones sobre las variables
antes de relocalizarlas en la memoria.
Los operadores empleados pueden ser:
 Matemáticos: +, -, *, /, sqrt, pow(b,e), etc..
 Lógicos: && (and), || (or), ! (not) o
 Relacionales: <, <=,>, >=, !=, ==
 O Una combinación de ambos.

• Estructuras de Control: Las estructuras de control son mecanismos que un lenguaje


requiere para realizar dos tareas indispensables:
1. Seleccionar una opción entre algunos flujos de control alternativos, e
2. Iterar la ejecución de una serie de sentencias.
 Una sentencia de selección provee al programa de medios para elegir entre dos o más
“caminos” de ejecución. Su forma más sencilla es el condicional if que selecciona entre
dos opciones y puede extenderse a una selección prácticamente infinita mediante
constructores múltiples (como switch – case o if-else if).

 Las sentencias de iteración representan el verdadero poder del cómputo, ejecutan un


bloque de sentencias desde cero hasta un número teóricamente finito de veces.
Es interesante que todos los lenguajes de programación desde el primero, que data de
la década de los cuarenta, implementaron estructuras de iteración.

Estas se dividen en dos categorías principales dependiendo de cómo se controla la


iteración, siendo:
 controlados con contadores (for) o
 controlados lógicamente (como while y do-while).
PROGRAMACION FUNCIONAL
 El paradigma funcional esta basado en el concepto matemático de función:

 El paradigma funcional considera al programa como una función matemática, donde el


dominio representaría el conjunto de todas las entradas posibles (inputs) y el rango
sería el conjunto de todas las salidas posibles (outputs). La forma en que funciona
puede ser entendida como una caja negra:
El paradigma funcional tiene las siguientes características, las cuales son:
 Primero, en los lenguajes funcionales no existe el concepto de variables y
consecuentemente tampoco existen operaciones de asignación.

 Segundo, la existencia de una propiedad llamada transparencia referencial (Referential


transparency), la cual indica que una función sólo depende de sus parámetros y que
tendrá efecto únicamente en su resultado, por lo que podríamos llamar a una función
arbitrariamente sin tener efectos colaterales en el resto de las computaciones.
 Por último, que una función puede ser utilizada como parámetros y resultados de
cualquier otra función.

Los lenguajes más utilizados dentro de este paradigma son Standard ML, Haskell y Scheme9
aunque al hoy por hoy LOGO10 figuraría junto con otros dialectos de LISP.
PROGRAMACION LÓGICA
 El paradigma lógico difiere de forma importante de otros paradigmas. No sólo en su
sintaxis o semántica, sino que en él la lógica representa conocimiento, el cual es
manipulado mediante inferencias.
 A diferencia de los demás paradigmas, trabajar en este significa especificar qué hacer
y no cómo hacerlo, por ello son llamados lenguajes declarativos.

El proceso general de la programación lógica es que a partir de un conjunto de reglas


(axiomas) e inferencias podamos comprobar nuevas proposiciones que nos sean relevantes.
Este proceso está basado en reglas de lógica de primer orden.
 Al ser un paradigma bastante abstracto vale la pena esclarecerlo a través de algunos
ejemplos por medio de Structured Query Language (SQL), un lenguaje para operar bases
de datos y el cual representa otra de las aplicaciones de la programación lógica.
 Definamos un conjunto de películas mexicanas inmortales con algunos de sus atributos:

 Ahora, suponiendo este conjunto, se va realizar algunas operaciones sobre él. Primero, se realizara
una consulta que devolvería el conjunto ordenado de forma descendente por su fecha de estreno:
 Obteniéndose el siguiente resultado:

 Ahora se tratara de seleccionar un subconjunto de películas a través de predicados, que


son consultas que involucran el operador where. Por lo que se seleccionaran todas las
películas que no sean del género “Drama”.
Lo que resultaría en el siguiente subconjunto de elementos que esta ordenado por fecha de
estreno y los cuales satisfacen una clausula específica: que su genero sea distinto a
“Drama”.
PARADIGMA DE PROGRAMACION ORIENTADO A OBJETOS (POO)
La programación orientada a objetos (POO) es el paradigma de programación más popular
en la actualidad. Programar bajo este paradigma es como tratar de simular o modelar los
objetos del mundo real.

BENEFICIOS DE LA POO
Entre los beneficios que ofrece el paradigma de la POO están:
 Modelación Comprensible: La forma de modelara una solución mediante el paradigma de la
POO es muy similar a la visión que tienen los seres humanos respecto a la realidad.
 Reutilización: La posibilidad de no comenzar nuevas aplicaciones desde cero, pues el
diseño que da la POO al código permite usar nuevamente código creado con anterioridad.
 Flexibilidad: El paradigma de la POO crea código flexible y facilita la adaptación de código
ya escrito a nuevas necesidades sin mucho esfuerzo Esto repercute en el mantenimiento ,
más sencillo y menos costoso de las aplicaciones.
 Escalabilidad: Las aplicaciones pueden ir creciendo a la par de las nuevas necesidades
debido a la reutilización y características como la herencia.
Elementos del modelo de objetos:
 Clases : Una clase es un tipo de dato que contiene en una misma estructura atributos
(variables) y métodos(funciones).
Dentro de la clases, existe un especificador de acceso, que indica la visibilidad de la clase
(quienes pueden verla).
 Objeto: Un objeto es una instancia de una clase, de la misma manera que una variable es
una instancia de un tipo de dato.
Pro ejemplo: considerar la siguiente instrucción:
int edad
La variable edad es una instancia del tipo de dato int
 Método: Los métodos son funciones de una clase.
 Herencia: Esta técnica permite que una clase hija (clase que hereda de otra) adquiera de
la clase padre las siguientes propiedades:
1. Automáticamente obtiene todos los atributos (variables) miembro de la clase padre.
2. Obtiene todos los métodos miembro de la clase padre; por lo que, la clase hija podrá
funcionar de la misma manera que la padre.
3. La clase hija puede definir nuevos atributos (variables) y métodos (funciones).
 Abstracción: Es concentrarse sobre las características o hechos mas importantes de los
objetos, dejando de lado los detalles.

 Polimorfismo: Es la propiedad que tienen los objetos de responder de manera diferente a


un mismo mensaje.

 Encapsulamiento: Concepto que se refiere a integrar los elementos necesarios dentro de


una entidad.

 Ocultamiento: Propiedad que permite aislar o proteger del exterior a los atributos de un
objeto, de tal manera que no puedan sr modificados de manera arbitraria.

 Modularidad: Es la propiedad que exige dividir una aplicación grande en partes mas
pequeñas, independientes entre si.

También podría gustarte