Universidad Politecnica Territorial "Jose Antonio Anzoategui"
MODULO 1. CONCEPTOS
FUNDAMENTALES DE LA PROGRAMACIÓN ORIENTADA A OBJETOS (P.O.O)
Lenguaje de Programación
Es un lenguaje formal
diseñado para realizar procesos que pueden ser llevados a cabo por máquinas
como las computadoras.
Fuente: wikipedia libre,
disponible en: https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
Distintos
Paradigmas de la Programación
Paradigma Imperativo: describe la programación como una secuencia instrucciones o comandos
que cambian el estado de un programa.
Paradigma
Declarativo:
No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso),
sino que describe (declara) cómo es algo. En otras palabras, se enfoca en
describir las propiedades de la solución buscada, dejando indeterminado el
algoritmo (conjunto de instrucciones) usado para encontrar esa solución.
Paradigma Estructurado: la programación se divide en bloques (procedimientos y funciones) que
pueden o no comunicarse entre sí. Además la programación se controla con
secuencia, selección e iteración. Permite reutilizar código programado y otorga
una mejor compresión de la programación.
Paradigma Orientado a Objetos: está basado en la idea de encapsular estado
y operaciones en objetos. En general, la programación se resuelve comunicando
dichos objetos a través de mensajes (programación orientada a mensajes). Se
puede incluir -aunque no formalmente- dentro de este paradigma, el paradigma
basado en objetos, que además posee herencia y subtipos entre objetos. Ej.:
Simula, Smalltalk, C++, Java, Visual Basic .NET, etc. Su principal ventaja es
la reutilización de códigos y su facilidad para pensar soluciones a
determinados problemas.
Paradigma Funcional: este paradigma concibe a la computación como la evaluación de
funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace
hincapié en la aplicación de las funciones y composición entre ellas, más que
en los cambios de estados y la ejecución secuencial de comandos (como lo hace
el paradigma procedimental). Permite resolver ciertos problemas de forma
elegante y los lenguajes puramente funcionales evitan los efectos secundarios
comunes en otro tipo de programaciones. Paradigma lógico: se basa en la
definición de reglas lógicas para luego, a través de un motor de inferencias
lógicas, responder preguntas planteadas al sistema y así resolver los
problemas. Ej.: prolog. Otros paradigmas y subparadigmas son: paradigma
orientado al sujeto, paradigma reflectante, programación basada en reglas,
paradigma basado en restricciones, programación basada en prototipos, paradigma
orientado a aspectos, etc.
Fuente: 14 de octubre del 2013. Miriam del Carmen García
Martínez. Disponible en:
http://michelletorres.mx/paradigmas-de-programacion/
Elementos
de poo
– Objetos: atributos + métodos
– Métodos: operaciones sobre los objetos
– Clases: categorías de objetos con propiedades y
operaciones comunes
– Jerarquías de clases
– En algunos lenguajes las clases son objetos, en otros
no
– Relaciones, objetos compuestos
Fuente:
programación orientada a objetos. Disponible en:
https://damian02.wordpress.com/elementos-de-poo/
Características
de la P.O.O
Denota las características esenciales de un objeto, donde se capturan
sus comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su
estado, y "comunicarse" con otros objetos en el sistema sin revelar
"cómo" se implementan estas características. Los procesos, las
funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una
variedad de técnicas son requeridas para ampliar una abstracción. El proceso de
abstracción permite seleccionar las características relevantes dentro de un
conjunto e identificar comportamientos comunes para definir nuevos tipos de
entidades en el mundo real. La abstracción es clave en el proceso de análisis y
diseño orientado a objetos, ya que mediante ella podemos llegar a armar un
conjunto de clases que permitan modelar la realidad o el problema que se quiere
atacar.
Reunir todos los elementos que
pueden considerarse pertenecientes a una misma entidad, al mismo nivel de
abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema. Algunos autores
confunden este concepto con el principio de ocultación, principalmente porque
se suelen emplear conjuntamente.
Comportamientos diferentes,
asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos
por ese nombre se utilizará el comportamiento correspondiente al objeto que se
esté usando. O, dicho de otro modo, las referencias y las colecciones de
objetos pueden contener objetos de diferentes tipos, y la invocación de un
comportamiento en una referencia producirá el comportamiento correcto para el
tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de
ejecución", esta última característica se llama asignación tardía o asignación
dinámica. Algunos lenguajes proporcionan medios más estáticos (en
"tiempo de compilación") de polimorfismo, tales como las plantillas y
la sobrecarga de operadores de C++.
Las clases no se encuentran aisladas, sino que se relacionan entre sí,
formando una jerarquía de clasificación. Los objetos heredan las propiedades y
el comportamiento de todas las clases a las que pertenecen. La herencia
organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los
objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener
que volver a implementarlo. Esto suele hacerse habitualmente agrupando los
objetos en clases y estas en árboles o enrejados que
reflejan un comportamiento común. Cuando un objeto hereda de más de una clase
se dice que hay herencia múltiple; siendo de alta complejidad técnica
por lo cual suele recurrirse a la herencia virtual para evitar la duplicación
de datos.
Se denomina "modularidad" a la propiedad que permite
subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una
de las cuales debe ser tan independiente como sea posible de la aplicación en
sí y de las restantes partes. Estos módulos se pueden compilar por separado,
pero tienen conexiones con otros módulos. Al igual que la encapsulación, los
lenguajes soportan la modularidad de diversas formas.
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo
de objeto expone una "interfaz" a otros objetos que específica cómo
pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho a
acceder a ellas; solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado
interno de un objeto de manera inesperada, eliminando efectos secundarios e
interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un
acceso directo a los datos internos del objeto de una manera controlada y
limitando el grado de abstracción. La aplicación entera se reduce a un agregado
o rompecabezas de objetos.
La recolección de basura (garbage collection) es la técnica por
la cual el entorno de objetos se encarga de destruir automáticamente, y por
tanto desvincular la memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos. Esto significa que el programador no debe
preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará
al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la
mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma
de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe
desasignarse expresamente.
Fuente: programación orientada a objetos. disponible
en: https://algonzalezpoo.wordpress.com/caracteristicas-de-poo/
Integrante
.
Vanessa Bissessar.
C.I. 25.487.641
C.I. 25.487.641
PNF. Informática 02
El Tigre, 26/05/2016