ESTA PAGINA ES DE MI TRABAJO
https://es.slideshare.net/SILVA19_PAMELA/laboratorio-de-programacin-i
“AÑO INTERNACIONAL DEL TURISMO SOSTENIBLE PARA EL DESARROLLO”
TEMA:
PROGRAMACIÓN ORIENTADA A OBJETO
CURSO: LABORATORIO DE PROGRAMACIÓN I
ESPECIALIDAD: INGENIERÍA DE SISTEMAS Y TELEMATICA.
NOMBRE: GILDA
PAMELA
APELLIDO: SILVA
flores
DOCENTE: MARCO AURELIO
PORRO CHULLI
CILCO:
IV – A AULA: 501
BAGUA GRANDE–
PERÚ
2017
PROGRAMACIÓN ORIENTADA A OBJETOS
1._ CONTENIDO
·
DEFINICIÓN
La programación orientada a
objetos (POO,
u OOP según sus siglas
en inglés) es un paradigma
de programación que viene a innovar la forma de obtener
resultados. Los objetos manipulan los datos de entrada para la obtención de
datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.
Muchos de los objetos pre-diseñados de los lenguajes
de programación actuales permiten la agrupación en
bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al
usuario la creación de sus propias bibliotecas. Está basada en varias
técnicas,incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.Su uso se
popularizó a principios de la década de 1990. En la
actualidad, existe una gran variedad de lenguajes
de programación que soportan la orientación a objetos.
·
CONCEPTO BASÍCOS (CLASES, METODO,
HERENCIA, SOBRECARGA, EVENTO, ATRIBUTOS, MESAJES, ETC.)
v Un objeto es una encapsulación
abstracta de información, junto con los métodos o procedimientos para
manipularla. Un objeto contiene operaciones que definen su comportamiento y
variables que definen su estado entre las llamadas a las operaciones.
v Una clase equivale a la
generalización o abstracción de un tipo específico de objetos.
v Un mensaje representa una acción a
tomar por un determinado objeto.
v Una instancia es la concreción de una
clase.
v Un método consiste en la
implementación en una clase de un protocolo de respuesta a los mensajes
dirigidos a los objetos de la misma. La respuesta a tales mensajes puede
incluir el envío por el método de mensajes al propio objeto y aun a otros,
también como el cambio del estado interno del objeto.
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.
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
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.
©
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. En el caso de los componentes
registrados como "protegidos" (protected) también se heredan,
pero solo para esa clase, no para futuras clases heredadas. Esto es así para
mantener hegemónico el ideal de POO.
©
SOBRECARGA
Para otros usos de este término, véase Sobrecarga (desambiguación).
Sobrecarga es
la capacidad de un lenguaje de programación, que permite nombrar con el mismo
identificador diferentes variables u operaciones.
En programación orientada a objetos la
sobrecarga se refiere a la posibilidad de tener dos o más funciones con
el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con
el mismo nombre realizan acciones diferentes. El compilador usará
una u otra dependiendo de los parámetros usados.
A esto se llama también sobrecarga de funciones.
También existe la sobrecarga de operadores que al igual
que con la sobrecarga de funciones se le da más de una implementación a un
operador.
El mismo método dentro de una clase permite hacer cosas
distintas en función de los parámetros.
Java no permite al programador implementar sus propios
operadores sobrecargados, pero sí utilizar los predefinidos como el +. C++, por
el contrario si permite hacerlo.
© EVENTO
Los eventos son el medio como interactúa
una clase con otras o con el propio usuario, se encargan de avisar que algo ha
ocurrido y de manejarlo de una forma o de otra. Cada vez que escribimos con
nuestro teclado, que hacemos click en un botón o un link, que cambiamos el
tamaño de un objeto, estamos generando eventos. Es por ello
que, cuando programamos, debemos tener en cuenta la posibilidad (no siempre
necesaria, pero lo será a medida que generemos clases cada vez más complejas),
tanto de manejar eventos que sólo implican a nuestra clase como de generar
nuestros propios eventos, de modo que los usuarios de nuestras clases (en
principio nosotros mismos) puedan decidir cómo reaccionará su código ante
ellos.
El modo de manejar los eventos en P.O.O. se conoce como emisor/receptor, también llamado despachador/escuchador o simplemente dispatcher/listener.
En esta dupla, la primera parte (el emisor) se encargará de lanzar el evento, mientras la segunda se encargará de recibirlo y gestionarlo como sea necesario. La primera parte será responsabilidad nuestra (los programadores de la clase) y la segunda es responsabilidad de quien utiliza la clase (en principio, también nosotros).
Cada lenguaje tiene su propio manejador de eventos, que es el que nos permite, tanto lanzar los eventos como crear los receptores (escuchadores/listeners) que nos permitirán manejarlos. Realmente es una aplicación del patrón Observer, del que hablaremos más adelante, cuando hablemos de patrones, pero que necesariamente tocaremos en este post.
El modo de manejar los eventos en P.O.O. se conoce como emisor/receptor, también llamado despachador/escuchador o simplemente dispatcher/listener.
En esta dupla, la primera parte (el emisor) se encargará de lanzar el evento, mientras la segunda se encargará de recibirlo y gestionarlo como sea necesario. La primera parte será responsabilidad nuestra (los programadores de la clase) y la segunda es responsabilidad de quien utiliza la clase (en principio, también nosotros).
Cada lenguaje tiene su propio manejador de eventos, que es el que nos permite, tanto lanzar los eventos como crear los receptores (escuchadores/listeners) que nos permitirán manejarlos. Realmente es una aplicación del patrón Observer, del que hablaremos más adelante, cuando hablemos de patrones, pero que necesariamente tocaremos en este post.
© ATRIBUTO
Atributos (estado) están estrechamente
relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase
requiere de métodos para poder tratar los atributos con los que cuenta.
El programador debe pensar
indistintamente en ambos conceptos, sin separar ni darle mayor importancia a
alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases
contenedoras de información por un lado y clases con métodos que manejen a las
primeras por el otro. De esta manera se estaría realizando una "programación estructurada camuflada" en un lenguaje de poo.
© MENSAJES
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ó.
·
CARACTERISTICAS (ASTRACCIÓN,
ENCAPSULAMIENTO, HERENCIAS, POLIMORFISMO, MODULARIDAD, ETC.)
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.
Significa
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.
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.
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++.
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.
·
POO EN VISUAL BASIC
Los objetos son el elemento central de la programación en Visual Basic.
Los formularios y controles son objetos. Las bases de datos son objetos. Si ha
usado Visual Basic durante algún tiempo, o si ha trabajado con los ejemplos de
la documentación, ya ha programado con objetos, pero hay mucho más en lo que se
refiere a objetos de lo que ha visto hasta aquí.
En los siguientes temas, verá lo fácil que resulta crear objetos propios
a partir de las clases que defina, así como utilizar objetos para simplificar
la creación de código y aumentar su reutilización.
·
Clases y objetos
Las palabras "clase" y "objeto"
se usan con tanta frecuencia en la programación orientada a objetos que es
fácil confundir los términos. En general, una class es
una representación abstracta de algo, mientras que un objeto es un ejemplo utilizable de lo que
representa la clase. La única excepción a esta regla la constituyen los
miembros de clases compartidas, que pueden utilizarse en instancias de una
clase y en variables de objeto declaradas como tipo de la clase.
·
Campos, propiedades, métodos y eventos
Las clases se componen de campos, propiedades,
métodos y eventos. Los campos y propiedades representan información que
contiene un objeto. Los campos se parecen a las variables ya que se pueden leer
y establecer directamente. Por ejemplo, si tiene un objeto denominado
"Car", podría almacenar su color en un campo denominado
"Color".
Las propiedades se recuperan y establecen como los
campos, pero se implementan mediante los procedimientos propiedad Get y Set, que proporcionan más control sobre la forma en
que los valores se establecen o se devuelven. El nivel de direccionamiento
indirecto entre el valor que se va a almacenar y los procedimientos que lo usan
ayuda a aislar los datos y permite validar valores antes de asignarlos o
recuperarlos.
Los métodos representan acciones que un objeto puede
realizar. Por ejemplo, un objeto "Car" podría tener los métodos
"StartEngine", "Drive" y "Stop". Los métodos se
definen agregando procedimientos, ya sean rutinas o funciones Sub, a
la clase.
Los eventos son notificaciones que un objeto recibe
de, o transmite a, otros objetos o aplicaciones. Los eventos permiten a los
objetos realizar acciones siempre que se produce un acontecimiento específico.
Un ejemplo de evento para la clase "Car" sería un evento
"Check_Engine". Puesto que Microsoft Windows es un sistema controlado
por eventos, éstos pueden proceder de otros objetos, aplicaciones o entradas de
usuario realizadas al hacer clic con el mouse (ratón) o al presionar teclas.
·
Encapsulación, herencia y polimorfismo
Los campos, propiedades, métodos y eventos son
solamente la mitad de la ecuación de la programación orientada a objetos. Para
que la programación orientada a objetos sea auténtica los objetos deben admitir
tres cualidades: encapsulación, herencia y polimorfismo.
La encapsulación significa que un grupo de propiedades,
métodos y otros miembros relacionados se tratan como si de una sola unidad u
objeto se tratase. Los objetos pueden controlar cómo se cambian propiedades o
se ejecutan métodos. Por ejemplo, un objeto puede validar valores antes de
permitir cambios en la propiedad. La encapsulación, además, facilita la posibilidad
de realizar cambios en la implementación pasado algún tiempo, mediante una
actividad denominada ocultación de datos que permite ocultar los detalles de
implementación de los objetos.
Herencia describe la posibilidad de
crear nuevas clases basadas en una clase existente. La nueva clase hereda todas
las propiedades, métodos y eventos de la clase base, y puede personalizarse con
propiedades y métodos adicionales. Por ejemplo, puede crear una nueva clase
denominada "Truck" basada en la clase "Car". La clase
"Truck" hereda la propiedad "Color" de la clase
"Car" y puede tener propiedades adicionales como
"FourWheelDrive".
Polimorfismo significa que puede tener
múltiples clases que se pueden utilizar de forma intercambiable, si bien cada
clase implementa las mismas propiedades o los mismos métodos de maneras
diferentes. El polimorfismo es importante en la programación orientada a
objetos puesto que permite usar elementos que tienen el mismo nombre,
independientemente del tipo de objeto que se esté utilizando en ese momento.
Por ejemplo, dada una clase base "Car", el polimorfismo permite al
programador definir diferentes métodos "StartEngine" para cualquier
número de clases derivadas. El método "StartEngine" de una clase
derivada denominada "DieselCar" puede ser totalmente diferente del
método con el mismo nombre en la clase base. Otros procedimientos o métodos
pueden usar el método "StartEngine" de las clases derivadas de la
misma forma, con independencia del tipo de objeto "Car" que se esté
utilizando en ese momento.
·
Sobrecarga, reemplazo y sombreado
La sobrecarga, el reemplazo y el sombreado son
conceptos similares que pueden confundirse fácilmente. Aunque las tres técnicas
permiten crear miembros con el mismo nombre, existen algunas diferencias
importantes.
Los miembros sobrecargados se utilizan para
proporcionar diferentes versiones de una propiedad o método que tienen el mismo
nombre, pero que aceptan un número diferente de parámetros, o parámetros con
diferentes tipos de datos.
Las propiedades y métodos reemplazados se utilizan
para reemplazar una propiedad o método heredados que no son apropiados en una
clase derivada. Los miembros reemplazados deben aceptar el mismo tipo de datos
y número de argumentos. Las clases derivadas heredan los miembros reemplazados.
Los miembros sombreados se utilizan para reemplazar
localmente un miembro que tiene un ámbito más amplio. Cualquier tipo puede
sombrear cualquier otro tipo. Por ejemplo, puede declarar un propiedad que
sombree un método heredado con el mismo nombre. Los miembros sombreados no se
pueden heredar.
2._ RESUMEN
La POO es
un paradigma surgido en los años 1970, que
utiliza objetos como elementos fundamentales en la construcción de la solución.
Un objeto es una abstracción de algún hecho o ente del mundo real, con
atributos que representan sus características o propiedades, y métodos que
emulan su comportamiento o actividad. Todas las propiedades y métodos comunes a
los objetos se encapsulan o agrupan en clases. Una clase es una plantilla, un
prototipo para crear objetos; en general, se dice que cada objeto es una
instancia o ejemplar de una clase.
Algunos lenguajes
orientados a objetos.
Simula (1967)
es aceptado como el primer lenguaje que posee las características principales
de un lenguaje orientado a objetos. Fue creado para hacer programas de
simulación, en donde los "objetos" son la representación de la
información más importante.
Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico,
y con el que gran parte de la teoría de la programación orientada a objetos se
ha desarrollado.
Entre los lenguajes
orientados a objetos se destacan los siguientes:
Muchos de estos
lenguajes de programación no son puramente orientados a objetos, sino que son
híbridos que combinan la POO con otros paradigmas.
Al igual que C++, otros
lenguajes, como OOCOBOL, OOLisp, OOProlog y Object REXX, han sido creados
añadiendo extensiones orientadas a objetos a un lenguaje de programación
clásico.
Un nuevo paso en la
abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es
todavía una metodología en estado de maduración, cada vez atrae a más
investigadores e incluso proyectos comerciales en todo el mundo.
Véase también:
3._SUMMARY
The OOP is a paradigm that emerged in the 1970s, which
uses objects as fundamental elements in the construction of the solution. An
object is an abstraction of some fact or entity of the real world, with
attributes that represent its characteristics or properties, and methods that
emulate its behavior or activity. All properties and methods common to objects
are encapsulated or grouped into classes. A class is a template, a prototype
for creating objects; In general, each object is said to be an instance or
instance of a class.
Some object-oriented languages.
Simula (1967) is accepted as the first language that has
the main characteristics of an object-oriented language. It was created to make
simulation programs, where "objects" represent the most important
information.
Smalltalk (1972 to 1980) is possibly the canonical
example, and with which much of the theory of object-oriented programming has
been developed.
Among the object-oriented languages are the following:
Many of these programming languages are not purely
object oriented; they are hybrids that combine OOP with other paradigms.
Like C ++, other languages, such as OOCOBOL, OOLisp,
OOProlog and Object REXX, have been created by adding object-oriented extensions
to a classical programming language.
A new step in the abstraction of programming paradigms is
Aspect Oriented Programming (POA). Although it is still a maturing methodology,
it is attracting more researchers and even commercial projects around the world.
See also:
• Object-oriented database
• Component-based software engineering.
4._RECOMENDACIONES
Elegir el
entorno de Programación depende principalmente del tipo de aplicación a
desarrollar.
• Si la aplicación involucra operaciones
con base de datos, interfaces web u
otras tareas de negocio, la opción ideal es Visual Basic.
• Si tu aplicación demanda algoritmos
rápidos y un diseño natural lógico, a la vez de un mantenimiento de una GUI de
primera categoría, entonces el enfoque Visual Basic/COM debería ser aplicado.
• Si usted es el programador que quiere
todo bajo control entonces el enfoque API es la elección.
• El programador debe darse cuenta que,
sin embargo, todo se codifica a mano y puede llevarse más tiempo escribirla que
una solución diseñada en el enfoque VB o VB/COM.
5._CONCLUSIONES
La
programación orientada a objetos permite la optimización del código generado
gracias a que mediante técnicas de herencia, atributos estáticos entre otros
permiten, que el código sea genérico de manera que sea reutilizable.
Mediante la técnica
aprendida en el presente curso podemos establecer una solución primitiva de un
problema real, tan solo con relacionarlo con objetos lógicos que serán usados
para el desarrollo del software.
Podemos dar
a conocer de una forma sencilla los mecanismos que se usan en este nivel de
programación, a personas que deseen una explicación rápida y sencilla de lo que
es la programación orientada a objetos.
Tenemos los
conocimientos necesarios como para enfrentar un problema real y desarrollo en
otro lenguaje de programación, pues concedimos la idea de que el lenguaje C es
la base de la programación.
Al trabajar
con la programación orientada a objetos sea esta desarrollada en otras
plataformas de programación o en lenguaje C, sabemos las formas de lograr un
mejor rendimiento del equipo a controlar y aplicar soluciones sencillas, de
manera que sea fácilmente digeribles para el usuario y/o destinatario del
trabajo final.
6._APRECIACIÓN EL EQUIPO
Durante años, los programadores se han dedicado a
construir aplicaciones muy parecidas que resolvían una y otra vez los mismos
problemas. Para conseguir que los esfuerzos de los programadores puedan ser
utilizados por otras personas se creó la POO. Que es una serie de normas de
realizar las cosas de manera que otras personas puedan utilizarlas y adelantar
su trabajo, de manera que consigamos que el código se pueda reutilizar.
La POO no es difícil, pero es una manera especial
de pensar, a veces subjetiva de quien la programa, de manera que la forma de
hacer las cosas puede ser diferente según el programador. Aunque podamos hacer
los programas de formas distintas, no todas ellas son correctas, lo difícil no
es programar orientado a objetos sino programar bien. Programar bien es
importante porque así nos podemos aprovechar de todas las ventajas de la POO.
7._GLOSARIO DE TÉRMINOS
POA: Programación Orientada a Aspectos.
ABSTRACTION: La abstracción de métodos se define separando el uso de un método sin conocer como está implementado ese método.
Acoplamiento: Medida del grado en el que un objeto o componente depende de otro.
8._BIBLIOGRAFIA O LINKOGRAFÍA
- http://www.forosdelweb.com/f68/conceptos-para-aprender-programacion-orientada-objeto-php-1101321/
- https://poogg.jimdo.com/conclusiones/
- https://sophia.javeriana.edu.co/~acarrillo/POO/Material/CursoPOOConceptosOO-
parteI.pdf
- https://algonzalezpoo.wordpress.com/herencia/
Agregar IMAGENES y VIDEOS sobrev el TEMA. Planear debidamente las RECOMENDACIONES y CONCLUSIONES. Definir al menos 10 términos en su glosario. Gracias por su aporte. Saludos
ResponderEliminar