viernes, 28 de abril de 2017

PROGRAMACIÓN ORIENTADA A OBJETOS





                             
                                         "AÑO DEL BUEN SERVICIO AL CIUDADANO"

                   

                         ESCUELA ACADÉMICA INGENIERÍA DE SISTEMAS Y TELEMÁTICA

                                                                    ASIGNATURA

                                              LABORATORIO DE PROGRAMACIÓN I

                                                                           TEMA

                                         APLICACIONES N-CAPAS EN VISUAL NET

                                                                         AUTORES

                                                ARISTA CORONEL JORGE LUIS

                                             RAMOS FERNANDEZ SONIA ELVIRA

                                                                         DOCENTE

                                            ING. MARCO AURELIO PORRO CHULLI

                                                    BAGUA GRANDE-UTCUBAMBA

                                                                        AMAZONAS 

                                                                               2017


RESUMEN

La programación orientada a objetos representa a partir de los años 90 lo que la programación estructurada fue para los 70: un nuevo e importante paradigma para mejorar la construcción, mantenimiento y utilización de software. Los métodos tradicionales de programación tienden a ver los programas como un conjunto de procedimientos que se llaman unos a otros. Cada procedimiento tiene asociados unos datos pasivos sobre los que opera.
La programación orientada a objetos cambia esta visión por otra en la que una aplicación está compuesta por objetos con estado propio dotados de funcionalidad. Los objetos se comunican entre sí y tienen cada uno una forma propia de respuesta, que viene determinada por una serie de procedimientos que son asociados a cada objeto.
El objetivo de esta tecnología es obtener un software más consistente, robusto y reutilizable, más fácil de verificar, mantener, refinar y extender. El paradigma orientado a objetos representa un paso más en la dirección de acercar el lenguaje de las soluciones informáticas al lenguaje en que se plantean los problemas.
Además de las nociones y conceptos fundamentales de la programación orientada a objetos, en este curso se estudiará el lenguaje de programación Java, la utilización de las técnicas orientadas a objetos en el desarrollo de interfaces gráficas de usuario, y la tecnología de objetos distribuidos en sistemas cliente-servidor.

SUMMARY
                                      
Object-oriented programming represents from the 90s what structured programming was for the 70s: a new and important paradigm for improving the construction, maintenance and use of software. Traditional programming methods tend to view programs as a set of procedures that call each other. Each procedure has associated passive data on which it operates.
Object-oriented programming changes this view to another in which an application is composed of objects with their own state endowed with functionality. Objects communicate with one another and each have their own form of response, which is determined by a series of procedures that are associated with each object.
The goal of this technology is to obtain more consistent, robust and reusable software, easier to verify, maintain, refine and extend. The object-oriented paradigm represents a further step in the direction of approaching the language of computer solutions to the language in which problems arise.
In addition to the fundamental notions and concepts of object-oriented programming, this course will study the Java programming language, the use of object-oriented techniques in the development of graphical user interfaces, and the technology of objects distributed in systems Client-server.

                                        PROGRAMACIÓN ORIENTADA A OBJETOS



1. CONTENIDO

A. DEFINICION: La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. 
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.
El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos como Smalltalk se basan en ella. Dado que la OOP. Se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo.
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto.
Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.
La OOP son un conjunto de técnicas que nos permiten incrementar enormemente nuestro proceso de producción de software; aumentando drásticamente nuestra productividad por un lado y permitiéndonos abordar proyectos de mucha mayor envergadura por oto. Usando estas técnicas, nos aseguramos la re-usabilidad de nuestro código, es decir, los objetos que hoy escribimos, si están bien escritos, nos servirán para "siempre".
La OOP proporciona las siguientes ventajas sobre otros lenguajes de programación:
·    Uniformidad. Ya que la representación de los objetos lleva implica tanto el análisis como el diseño y la codificación de los mismos.
·    Comprensión. Tanto los datos que componen los objetos, como los procedimientos que los manipulan, están agrupados en clases, que se corresponden con las estructuras de información que el programa trata.
·    Flexibilidad. Al tener relacionados los procedimientos que manipulan los datos con los datos a tratar, cualquier cambio que se realice sobre ellos quedará reflejado automáticamente en cualquier lugar donde estos datos aparezcan.
·  Estabilidad. Dado que permite un tratamiento diferenciado de aquellos objetos que permanecen constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar las partes del programa que permanecen inalterables en el tiempo.
· Reusabilidad. La noción de objeto permite que programas que traten las mismas estructuras de información reutilicen las definiciones de objetos empleadas en otros programas e incluso los procedimientos que los manipulan. De esta forma, el desarrollo de un programa puede llegar a ser una simple combinación de objetos ya definidos donde estos están relacionados de una manera particular.
MECANISMOS BÁSICOS:

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).



CLASE: Una clase es una plantilla que define las variables y los métodos que son comunes para todos los objetos de un cierto tipo.
Una clase, es simplemente una abstracción que hacemos de nuestra experiencia sensible. El ser humano tiende a agrupar seres o cosas objetos con características similares en grupos clases.



Así, aun cuando existen por ejemplo multitud de vasos diferentes, podemos reconocer un vaso en cuanto lo vemos, incluso aun cuando ese modelo concreto de vaso no lo hayamos visto nunca. El concepto de vaso es una abstracción de nuestra experiencia sensible. Quizás el ejemplo más claro para exponer esto lo tengamos en las taxonomías; los biólogos han dividido a todo ser (vivo o inerte) sobre la tierra en distintas clases.



Definición teórica: La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase.
METODO: Una operación que realiza acceso a los datos. Podemos definir método como un programa procedimental o procedural escrito en cualquier lenguaje, que está asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes.

Son sinónimos de 'método' todos aquellos términos que se han aplicado tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin embargo, es conveniente utilizar el término 'método' para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a través de un mensaje) y a su campo de acción, limitado a un objeto y a sus descendientes, aunque posiblemente no a todos.

Si los métodos son programas, se deduce que podrían tener argumentos, o parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un método de dos maneras diferentes:

·       Métodos propios. Están incluidos dentro de la cápsula del objeto.

·       Métodos heredados. Están definidos en un objeto diferente, antepasado de éste (padre, “abuelo", etc.). A veces estos métodos se llaman método miembro porque el objeto los posee por el mero hecho de ser miembro de una clase.

HERENCIA: La herencia es uno de los conceptos más cruciales en la POO (programación orientada a objetos).




La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia.




MENSAJES: Un objeto es inútil si está aislado. El medio empleado para que un objeto interactúe con otro son los mensajes. Hablando en términos un poco más técnicos, los mensajes son invocaciones a los métodos de los objetos.

Evento: Es una acción que un objeto reconoce, como hacer clic con el mouse (ratón) o presionar una tecla, y para el que puede escribir código para responder. Los eventos se producen como consecuencia de una acción del usuario o de código de programa, o bien pueden ser desencadenados por el sistema. También puede desarrollar eventos personalizados propios para que los generen sus objetos y los controlen otros objetos.

Atributos: Son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.

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.
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.

B.  CARACTERISTICAS:
 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 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.

POLIMORFISMO: 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++.


Sobrecarga: La sobrecarga puede ser considerada como un tipo especial de polimorfismo que casi todos los lenguajes de OOP incluyen.
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.
HERENCIA: 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.

MODULARIDAD: 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.

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 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.

RECOLECCIÓN DE BASURA: 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.

C.    POO EN VISUAL BASIC: La programación en Visual Basic se puede realizar de diversas formas o estilos. Este lenguaje nace como un ambiente de prototipación rápida (RAD) para aplicaciones bajo el sistema operativo Microsoft Windows. La orientación a objetos se incorpora como un elemento posterior al nacimiento del lenguaje y actualmente (versión 5) no está totalmente soportada.
A pesar de lo anterior, Visual Basic permite la aplicación de los conceptos de orientación a objetos, aunque esto no corresponda a un mapeo directo. Acá se presenta una técnica que permite programar en forma estándar, basándose un modelo de clases UML. Por otra parte los conceptos que se plantean son fácilmente aplicables a otros lenguajes de programación visuales.
Además de cumplir con el paradigma de la orientación a objetos, se presentan acá formas de programación que cumplen con una arquitectura de tres capas. De esta forma, la lógica, en términos de reglas del negocio, se aísla de los elementos de interfaz y de la forma de almacenamiento de los objetos. Bajo este tipo de arquitectura, es posible separar físicamente estos componentes del negocio, pudiéndose centralizar en servidores especializados, a través del uso de monitores transaccionales como Microsoft MTS.

ARQUITECTURA DE 3 CAPAS: El objetivo principal de este planteamiento es separar y, por lo tanto independizar, las reglas del negocio de las aplicaciones que las utilicen. De esta forma, es posible utilizar las mismas reglas del negocio para diferentes aplicaciones, corriendo sobre distintas plataformas.
·   La capa de aplicación corresponde a programas interactivos o procesos, que realicen alguna acción sobre los componentes del negocio.
·    La capa intermedia estará formada por las clases del negocio, quienes interactúan con el medio de almacenamiento que está representado en la capa de datos.
·  Una arquitectura pura de tres capas no permite ninguna forma de comunicación directa entre la aplicación y la capa de datos; esto es, entre los programas de usuario y la base de datos. Los programas de aplicación deben solicitar todos sus requerimientos a la capa del negocio, a través de la invocación de servicios, que corresponden a los métodos definidos para cada clase. La separación propuesta por este modelo de capas nos da una clara guía de la forma en que podemos enfrentar la programación de un sistema en Visual Basic.
La nueva versión, Visual Basic .NET, incorpora características de orientación a objetos de tal manera que podría considerarse un lenguaje totalmente diferente a sus predecesores y totalmente orientado a objetos, ya que en versiones anteriores Visual Basic era considerado un lenguaje de programación con sintaxis de objetos, pero no un verdadero lenguaje orientado a objetos.
Las principales novedades que incorpora son:
ü    La herencia, tan solicitada por miles de programadores.
ü    Desarrollo de programas con múltiples hilos de ejecución.
ü    Control estructurado de excepciones.
ü    Inicializadores, que permiten establecer los valores iniciales de las variables.

4. RECOMENDACIONES
En un programa orientado a objetos tendremos a un conjunto de objetos colaborando entre ellos. Este manual fue hecho con el propósito  de ayudar a los estudiantes universitarios que tienen el deseo de aprender, más fuerte cada día.
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.
La orientación a objetos requiere de una metodología que integre el proceso de desarrollo y un lenguaje de modelamiento con herramientas y técnicas adecuadas.
Cualquier comentario o sugerencia me lo pueden hacer a mi correo electrónico: soniaupa2016@gmail.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 las técnicas aprendidas 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.
La programación en Visual Basic se puede realizar de diversas formas o estilos. Este lenguaje nace como un ambiente de prototipación rápida (RAD) para aplicaciones bajo el sistema operativo Microsoft Windows.

6. APRECIACION DEL EQUIPO
Como equipo de trabajo podemos decir que una “La Programación orientada a objetos" son un conjunto de técnicas que nos permiten incrementar enormemente nuestro proceso de producción de software; aumentando drásticamente nuestra productividad por un lado y permitiéndonos abordar proyectos de mucha mayor envergadura por otro.

7. GLOSARIO DE TERMINOS

CONCATENAR: Enlazar hechos o ideas que suceden en serie o cadena.

ENCAPSULAMIENTO: Como un envoltorio protector alrededor del código y los datos que se manipulan. El envoltorio define el comportamiento y protege el código y los datos para evitar que otro código acceda a ellos de manera arbitraria.

INSTANCIASIÓN: una instancia de un programa es una copia de una versión ejecutable del programa que ha sido escrita en la memoria del computador.

CASTEO: es decir convierte datos, variables o expresiones a un nuevo tipo de dato.

CONSTRUCTOR: El constructor de una clase es un método estándar para inicializar los objetos de esa clase. Es una función que se ejecuta siempre al crear un objeto.

SOBRECARGO: cuando se utiliza un operador para diferentes tareas.


COMPAÑEROS LES INVITO A REVISAR MIS DIAPOSITIVAS:
https://es.slideshare.net/SoniaRamosFernandez/programacin-orientada-a-objetos-75537626










1 comentario:

  1. Agregar imagenes y videos. Planear debidamente las RECOMENDACIONES y CONCLUSIONES. Definir al menos 10 términos en su glosario. Gracias por su aporte. Saludos

    ResponderEliminar