Actividad 1
Actividad 1
Actividad 1
ORIENTADA A OBJETOS
Frecuencia: Martes
Actividad #1
Definición:
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a
como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir
nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos
rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con
este tipo de programación.
Objeto: Estos elementos son entidades provistas de un conjunto de propiedades y atributos, son
considerados instancias de una clase.
Evento: Se llevan a cabo en el sistema y están relacionados con el envío de datos o la ejecución
de métodos dentro de un objeto.
Mensaje: Los mensajes representan la comunicación establecida cada vez que se ejecutan,
dirigiendo la comunicación entre el objeto y quién los creo.
Atributo: Los atributos son elementos que contienen tipos de datos asociados a objetos, y tienen
la particularidad, de que dichos datos pueden ser visibles fuera del objeto.
Estado interno: Son variables privadas que pueden ser accedidas desde un método del objeto.
Características:
Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las
características siguientes son las más importantes:
Abstracción
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.
Encapsulamiento
Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma
entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del
sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente
porque se suelen emplear conjuntamente.
Principio de ocultación
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 pueden cambiar el estado interno de un objeto de
maneras inesperadas, 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.
Polimorfismo
Herencia
Las clases no están 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.
Recolección de basura
Ventajas y desventajas:
VENTAJAS
La primera ventaja del concepto de objetos es que todo el código que tiene algo que ver con las
naves espaciales se encuentra en un solo lugar. Otra ventaja es que los objetos pueden poseer
atributos inherentes de la clase a la que pertenecen, por ejemplo, naves espaciales y asteroides
podrían tener ambos una posición XY porque todos los objetos que pertenecen a la clase de los
objetos en movimiento tiene una posición XY. Escribir códigos es más fácil porque se pueden
conceptualizar como algo que le sucede a un objeto. Otra ventaja es que POO hace que los
programas grandes sean más manejables. Si todas las ventanas pertenecen a una jerarquía de
clases de ventanas y todo el código que se refiere a una ventana particular está dentro de esa
ventana, todas las manipulaciones de ventana se pueden escribir como una sencilla transferencia
de mensajes.
DESVENTAJAS
No todos los programas pueden ser modelados con exactitud por el modelo de objetos. Si lo que
deseas es leer algunos datos, hacerles algo simple y escribir de nuevo, no tienes necesidad de
definir clases y objetos. Sin embargo, en algunos lenguajes de POO, puede que tengas que
realizar este paso extra. Otra desventaja es que si se fuerza el lenguaje en el concepto de
programación orientada a objetos, se pierden algunas de las características de lenguajes útiles,
como los "lenguajes funcionales". Otra desventaja el que concepto que un programador tiene de lo
que constituye un objeto abstracto puede no coincidir con la visión de otro programador. Los
objetos a menudo requieren una extensa documentación.
Aplicación en la industria:
A continuación se presenta una aplicación de las ideas anteriores en un programa diseñado por los
autores para el análisis de estructuras reticuladas bidimensionales. (Los códigos fuentes del
programa, as como la documentación de sus clases y el manual de usuario, pueden descargarse
gratuitamente bajo licencia general publica GNU (pudiendo colaborarse además en las líneas en
desarrollo que actualmente se encuentran abiertas) desde:
http://www.cercis.net/jstruct/jstruct.html.) En el desarrollo de esta herramienta se ha empleado el
lenguaje de programación Java. La decisión ha sido adoptada por diferentes motivos: ser un
lenguaje completamente orientado a objetos, independiente del sistema operativo y que permite
una potente edición de interfaces graficas (punto clave en el pre y pos proceso de datos y
resultados). En contra del empleo de Java puede argumentarse que no es un lenguaje tan rápido
como otros, también orientados a objetos, pero cuyo resultado se encuentra compilado a código
nativo (como C++, por ejemplo). Para que su portabilidad sea posible, en vez de código maquina,
Java genera byte code que es interpretado por la maquina virtual de Java, 188 M. Fernández Ruiz
y M. Romera Corral siendo esta a su vez la encargada de relacionarse con el sistema operativo en
cuestión. No obstante, existen compiladores JIT (Just In Time) que compilan el bytecode a código
maquina antes de ejecutarlo, siendo, por lo tanto, particularmente eficaz en la ejecución de bucles.
Sin embargo, la adopción de algoritmos optimizados y la remuneración de nudos ´ en el código
escrito permiten que el tiempo de calculo sea muy reducido. Además, una vez cargada una clase,
la próxima vez que la misma sea llamada, el tiempo que tarda en ser ejecutada es muy inferior al
estar ya en memoria. También puede entenderse como una desventaja de Java respecto de otros
lenguajes orientados a objetos la no inclusión de la programación genérica o con plantillas (muy
usadas, por ejemplo, en C++). La razón de ello es que se ha preferido renunciar en Java a su
flexibilidad para obtener una mayor claridad del código (uno de los objetivos de la programación
orientada a objetos). No obstante, Java ha reservado una palabra clave (genérico) para poder
implementarlas en un futuro.
Lenguajes más usados:
PHP
PYTHON
JAVA
C
C++
Conclusión:
En esta actividad me pude percatar de los conceptos que sostienen los cuatro principios básicos de
la POO.
Por un lado vimos la parte de la abstracción de los datos, el cómo modelar un problema de la vida
real a un entorno que una computadora lo pudiera comprender, primero diseñando nuestras clases
y su relación entre ellas.
También, cuando implementamos nuestras clases y las jerarquías, aprendimos que tanto los
métodos y las propiedades de las mismas pueden tener un acceso restringido a otras clases, de
modo que la interacción se diera en un contexto seguro.
Por otro lado, cuando aprendimos sobre la herencia, nos dimos cuenta que con nuestra
abstracción de los problemas podemos armar jerarquías de objetos que se van expandiendo y
especializando.
También observamos las ventajas y desventajas para poder darnos una idea de cómo o que
manera nos podrá beneficiar en un futuro,
Bibliografía:
https://www.ecured.cu/Programaci%C3%B3n_Orientada_a_Objetos
http://culturacion.com/que-es-la-programacion-orientada-a-objetos-i/
https://desarrolloweb.com/articulos/499.php
http://poao4.blogspot.com/2015/11/poo-que-es-ventajas-y-desventajas.html
https://www.scipedia.com/wd/images/d/d8/Draft_Content_357519405RR212C.pdf