programacion

8
Un paradigma de programación es una propuesta tecnológica adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que únicamente trata de resolver uno o varios problemas claramente delimitados. Es un estilo de programación empleado; la resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente. El paradigma de programación que actualmente es el más usado es la orientación a objetos. El núcleo central de este paradigma es la unión de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto". Tradicionalmente datos y procesamiento se han separado en áreas diferente del diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a objetos y características como el encapsulado, polimorfismo o la herencia se permitió un avance significativo en el desarrollo de software a cualquier escala de producción. Un paradigma de programación representa un enfoque particular o filosofía para diseñar soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los elementos involucrados en un problema, así como en los pasos que integran su solución del problema, en otras palabras, el cómputo. La orientación a objeto parece estar ligada en sus orígenes con lenguajes como Lisp y Simula aunque el primero que acuñó el título de programación orientada a objetos fue Smalltalk. Objeto (programación) En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto es un programa de computadora que

Upload: camilo-plazas

Post on 15-Jan-2016

5 views

Category:

Documents


0 download

DESCRIPTION

varios

TRANSCRIPT

Page 1: Programacion

Un paradigma de programación es una propuesta tecnológica adoptada por una

comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que

únicamente trata de resolver uno o varios problemas claramente delimitados.

Es un estilo de programación empleado; la resolución de estos problemas debe suponer

consecuentemente un avance significativo en al menos un parámetro que afecte a la

ingeniería de software.

Tiene una estrecha relación con la formalización de determinados lenguajes en su momento

de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a

aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la

sustituyen parcial o totalmente.

El paradigma de programación que actualmente es el más usado es la orientación a objetos.

El núcleo central de este paradigma es la unión de datos y procesamiento en una entidad

llamada "objeto", relacionable a su vez con otras entidades "objeto".

Tradicionalmente datos y procesamiento se han separado en áreas diferente del diseño y la

implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de

fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a

objetos y características como el encapsulado, polimorfismo o la herencia se permitió un

avance significativo en el desarrollo de software a cualquier escala de producción.

Un paradigma de programación representa un enfoque particular o filosofía para diseñar

soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los

elementos involucrados en un problema, así como en los pasos que integran su solución del

problema, en otras palabras, el cómputo.

La orientación a objeto parece estar ligada en sus orígenes con lenguajes como Lisp y Simula

aunque el primero que acuñó el título de programación orientada a objetos fue Smalltalk.

Objeto (programación) En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés),

un objeto es un programa de computadora que consta de un estado y de un comportamiento,

que a su vez constan respectivamente de datos almacenados y de tareas realizables durante

el tiempo de ejecución. Un objeto puede ser creado instanciandouna clase, como ocurre en la

programación orientada a objetos, o mediante escritura directa de código y la replicación otros

objetos, como ocurre en la programación basada en prototipos.

Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un

programa es una colección de subrutinas (funciones o procedimientos), o simplemente una

lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar

Page 2: Programacion

datos y enviar mensajes a otros objetos de manera similar a unservicio (en Windows)

o demonio (en Unix y Linux).

En el mundo de la programación orientada a objetos (POO), un objeto es el resultado de la

instanciación de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en ella

definida, pero ésta queda implementada sólo al crear una instancia de la clase, en la forma de

un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombre clase_silla),

entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano,

sería un objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas) utilizando la

definición de la clase (plano) anterior. Los conceptos de clase y objetos son análogos a los

de tipo de datos y variable; es decir, definida una clase podemos crear objetos de esa clase,

igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), podemos

definir variables de dicho tipo:

int a,b;

( 'int' es un tipo de dato y 'a' y 'b' son variables de tipo entero con las que podemos operar)

Herencia (informática)Para otros usos de este término, véase Herencia.

En programación orientada a objetos la herencia es, después de la agregación o composición, el mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la reutilización y la extensibilidad. A través de ella los diseñadores pueden crear nuevas clases partiendo de una clase o de una jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase.

Es la relación entre una clase general y otra clase más específica. Por ejemplo: Si declaramos una clase párrafo derivada de una clase texto, todos los métodos y variables asociadas con la clase texto, son automáticamente heredados por la subclase párrafo.

La herencia es uno de los mecanismos de los lenguajes de programación orientada a objetos basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programación).

En los lenguajes que cuentan con un sistema de tipos fuerte y estrictamente restrictivo con el tipo de datos de las variables, la herencia suele ser un requisito fundamental para poder emplear el Polimorfismo, al igual que un mecanismo que permita decidir en tiempo de ejecución qué método debe invocarse en respuesta a la recepción de un mensaje, conocido como enlace tardío (late binding) o enlace dinámico (dynamic binding).

Page 3: Programacion

Abstracción (informática)La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.

Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos. La abstracción ofrecida por los lenguajes de programación se puede dividir en dos categorías: abstracción de datos (pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de control).

Los diferentes paradigmas de programación han aumentado su nivel de abstracción, comenzando desde los lenguajes de máquina, lo más próximo al ordenador y más lejano a la comprensión humana; pasando por los lenguajes de comandos, los imperativos, la orientación a objetos (POO), la Programación Orientada a Aspectos (POA); u otros paradigmas como la programación declarativa, etc.

Polimorfismo (informática) En programación orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.

La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.

Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.

Acoplamiento (informática)Acoplamiento en Informática (especialmente en ingeniería de software, es la forma y nivel de interdependencia entre módulos de software; una medida de qué tan cercanamente conectados están dos rutinas o módulos de software;1 así como el grado de fuerza de la relación entre módulos.2

El acoplamiento está comúnmente contrastado con la cohesión. Un bajo acoplamiento normalmente se correlaciona con una alta cohesión, y viceversa. El bajo acoplamiento es frecuentemente una señal de un sistema bien estructurado y de un buen diseño de software.

Encapsulamiento (informática)En programación modular, y más específicamente en programación orientada a objetos, se denomina Encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.

Page 4: Programacion

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.

La cohesión hace referencia a la forma en que agrupamos unidades de software (módulos, subrutinas...) en una unidad mayor. Por ejemplo: la forma en que se agrupan funciones en una biblioteca de funciones o la forma en que se agrupan métodos en una clase, etc. El consenso general para una buena programación o un buen diseño es que la cohesión debe ser alta. Es decir, mientras más cohesionados estén los elementos agrupados, mejor. El acoplamiento, junto con la modularidad, la cohesión y otros factores, permiten mejorar la programación y el diseño de sistemas informáticos y aplicaciones, y son cruciales en el incremento de la reutilización de los códigos. Tipos de cohesión (criterios de agrupamiento) * Cohesión funcional: Los elementos de la unidad de software están relacionados en el desarrollo de una única función. Es decir, las unidades de software trabajan juntas con un mismo fin. En general, es el criterio de agrupación más deseable. Probablemente haya entre las unidades un acoplamiento relativamente alto, por lo tanto es conveniente que estén juntas. * Cohesión secuencial: Una unidad de software realiza distintas tareas en secuencia, de forma que las entradas de cada tarea son las salidas de la tarea anterior. En otras palabras, se agrupan las unidades que cumplen que los resultados o salidas que produce una sirven como entrada para que la próxima continúe trabajando. * Cohesión comunicacional o de datos: La unidad de software realiza actividades paralelas usando los mismos datos de entrada y salida. En otras palabras, cuando todas las unidades agrupadas trabajan sobre el mismo conjunto de datos. * Cohesión procedimental: La unidad de software tiene una serie de funciones relacionadas por un procedimiento efectuado por el código. Es similar a la secuencial, pero incluyendo el paso de controles. * Cohesión lógica: Cuando las unidades de software agrupadas realizan un trabajo en una misma categoría lógica, pero no necesariamente tienen relación entre sí. Por ejemplo: bibliotecas de funciones matemáticas, sólo se agrupan porque realizan cálculos matemáticos, pero no tienen necesariamente relación entre ellas. * Cohesión temporal: Los elementos de la unidad de software están implicados en actividades relacionadas con el tiempo. En otras palabras, se agrupan unidades de software que tienen que ejecutarse más o menos en el mismo período de tiempo, sin que haya otro tipo de relación entre ellas. En general debe evitarse. * Cohesión casual o coincidente: Los elementos de la unidad de software contribuyen a las actividades relacionándose mutuamente de una manera poco significativa. En otras palabras, es cualquier criterio que no caiga dentro de los anteriores. Este tipo de cohesión viola el principio de independencia y de caja negra de las unidades de software, por lo tanto debe evitarse.

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.

Page 5: Programacion

Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objeto.

Clase

Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La

instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.

Herencia

(Por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D

hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y

operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos

métodos y variables públicas declaradas en C. Los componentes registrados como "privados"

(private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos

al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así

para mantener hegemónico el ideal de POO.

Objeto

Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y

de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan

a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos

internos del sistema (del programa). Es una instancia a una clase.

Método

Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena

tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el

objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la

generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento

Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un

mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado

al objeto pertinente. También se puede definir como evento la reacción que puede

desencadenar un objeto; es decir, la acción que genera.

Atributos

Características que tiene la clase.

Mensaje

Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con

ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo

Page 6: Programacion

Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los

datos visibles desde fuera del objeto y esto se define como sus características

predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno

Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un

método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o

clase de objetos). No es visible al programador que maneja una instancia de la clase.

Componentes de un objeto

Atributos, identidad, relaciones y métodos.

Identificación de un objeto

Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus

atributos y funciones correspondientes.

En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor

interno del atributo del objeto o de un estado interno, así como la "función" es un

procedimiento interno del método del objeto.