lunes, 18 de septiembre de 2017

PROGRAMACIÓN ORIENTADA A OBJETOS



                                 
                       PROGRAMACIÓN ORIENTADA A OBJETOS




      INGENIERÍA DE SISTEMAS Y TELEMÁTICAS

       

                    ING:                         Marco Aurelio Porro Chulli.


                    CICLO:                   VII  "A"


                    ASIGNATURA:      Laboratorio de Programacion III.


                    INTEGRANTES:       

  •               Vicente Wualdir Alberca Rojas.   
  •               Yenny Isabel Cuello Morón.                                





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 usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
El término de Programación Orientada a Objetos indica más una forma de diseño y una metodología de desarrollo de software que un lenguaje de programación, ya que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés abreviado OOD, Object Oriented Design), a cualquier tipo de lenguaje de programació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. 

¿Cómo se piensa en objetos?

Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real.
Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.
La programación orientada a objetos, intenta simular el mundo real a través del significado de objetos que contiene características y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generación.

Ø  Conceptos Básicos
·         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 ellas.
·         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 publicas 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: 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.

Ø  Características

Abstracción

Es el principio de ignorar aquellos aspectos de un fenómeno observado que no son relevantes, con el objetivo de concentrarse en aquellos que si lo son. Una abstracción denota las características esenciales de un objeto (datos y operaciones), que lo distingue de otras clases de objetos. Decidir el conjunto correcto de abstracciones de un determinado dominio, es el problema central del diseño orientado a objetos. Los mecanismos de abstracción son usados en el EOO para extraer y definir del medio a modelar, sus características y su comportamiento. Dentro del EOO son muy usados mecanismos de abstracción: la Generalización, la Agregación y la clasificación.

ƒ La generalización: es el mecanismo de abstracción mediante el cual unos conjuntos de clases de objetos son agrupados en una clase de nivel superior (Superclase), donde las semejanzas de las clases constituyentes (Subclases) son enfatizadas, y las diferencias entre ellas son ignoradas. En consecuencia, a través de la generalización, la superclase almacena datos generales de las subclases, y las subclases almacenan sólo datos particulares. La especialización es lo contrario de la generalización. La clase Médico es una especialización de la clase Persona, y a su vez, la clase Pediatra es una especialización de la superclase Médico.

ƒ La agregación: es el mecanismo de abstracción por el cual una clase de objeto es definida a partir de sus partes (otras clases de objetos). Mediante agregación se puede definir por ejemplo un computador, por descomponerse en: la CPU, la ULA, la memoria y los dispositivos periféricos. El contrario de agregación es la descomposición.

ƒ La clasificación: consiste en la definición de una clase a partir de un conjunto de objetos que tienen un comportamiento similar. La ejemplificación es lo contrario a la clasificación, y corresponde a la instanciación de una clase, usando el ejemplo de un objeto en particular.

Encapsulamiento

(Ocultamiento de Información) Es la propiedad del EOO que permite ocultar al mundo exterior la representación interna del objeto. Esto quiere decir que el objeto puede ser utilizado, pero los datos esenciales del mismo no son conocidos fuera de él. La idea central del encapsulamiento es esconder los detalles y mostrar lo relevante. Permite el ocultamiento de la información separando el aspecto correspondiente a la especificación de la implementación; de esta forma, distingue el "qué hacer" del "cómo hacer". La especificación es visible al usuario, mientras que la implementación se le oculta. El encapsulamiento en un sistema orientado a objeto se representa en cada clase u objeto, definiendo sus atributos y métodos con los siguientes modos de acceso:

ƒ Público (+) Atributos o Métodos que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no está relacionada con ella.

ƒ Privado (-) Atributos o Métodos que solo son accesibles dentro de la implementación de la clase.

ƒ Protegido (#): Atributos o Métodos que son accesibles para la propia clase y sus clases hijas (subclases). Los atributos y los métodos que son públicos constituyen la interfaz de la clase, es decir, lo que el mundo exterior conoce de la misma. Normalmente lo usual es que se oculten los atributos de la clase y solo sean visibles los métodos, incluyendo entonces algunos de consulta para ver los valores de los atributos. El método constructor (Nuevo, New) siempre es Público.

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.

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


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.
Uno de los elementos (a mi modo de ver) más interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra (suena a chino ¿no? Calma, lo veremos luego con paciencia). Tratemos de explicarlo con un ejemplo:
Decimos que una gallina es un ave; esto quiere decir que las gallinas tienen características comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las características comunes de todas las aves. Pero, además, resulta que un ave es un animal, lo que significa que también comparte características comunes al caballo, el perro, el hombre y cualquier otra cosa que pueda ser clasificada como animal.

Ø  POO en Visual Basic Net


(OOP según sus siglas en inglés) es un modelo de la programación que usa objetos y sujetos interacciones, para diseñar aplicaciones y programas informáticos. Visual Basic es un lenguaje de programación creado por Microsoft Corp. que goza de gran popularidad. Las razones para ello son su potencia o capacidades, facilidad de uso y el permitir crear programas de aspecto y funcionamiento relacionados con el también muy popular entorno Windows. Aparte de permitirnos crear programas de aspecto profesional, nos facilitará el trabajo a la hora de utilizar o vincular aplicaciones casi tan extendidas como Windows como son Microsoft Word, Excel o Access y PowerPoint

Los conceptos de la programación orientada a objetos tienen origen en simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole Johan Dahl y Kristen Nigaard del Centro de Cómputo Noruego en Oslo surgio en los años 1970 pero su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. 





• La ENCAPSULACIÓN es la cualidad de unificar los datos y la forma de manipularlos, de esta forma podemos ocultar el funcionamiento de una clase y exponer solo los datos que manipula (mediante propiedades), así como proveer de medios para poder manipular dichos datos (mediante métodos). De esta forma solo exponemos al mundo exterior la información y la forma de manipularla, ocultando los detalles usados para manejar esos datos y, lo que es más importante, evitando que nadie manipule de una forma no controlada dicha información.

• La HERENCIA es la cualidad de poder crear nuevas clases (o tipos) basadas en otras clases, de forma que la nueva clase obtenga todas las características de la clase que ha heredado, tanto los datos que contiene como la forma de manipularlos, pudiendo añadir nuevas características e incluso cambiar el comportamiento de algunas de las incluidas en la clase base, (siempre que así se haya previsto). Mediante la herencia podemos crear de forma fácil una jerarquía de clases que comparten un mismo comportamiento básico pero que cada nueva generación puede tener (y de hecho tiene) un nuevo comportamiento.

• El POLIMORFISMO es la cualidad de implementar de forma particular algunas de las características que tienen las clases, de forma que cuando necesitemos usarlas no nos preocupe la implementación interna que cada una tenga, lo que realmente nos interesa o nos debe importar es que podemos usar esas características e incluso podamos acceder a ellas de forma anónima... o casi.  

 La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

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

·  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 publicas 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 OOP.

·  Objeto: 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 corresponde con los objetos reales del mundo que nos rodea, o a 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, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

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



Video Tutorial de POO en Visual.Net



2 .  Resumen
La programación orientada a objetos es un modelo que utiliza objetos como elementos fundamentales en la construcción de la solución. Surge en los años 70. Un objeto es una abstracción de algún hecho o ente del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.
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.

Conceptos básicos de la programación orientada a objetos
Ø  Clase
Ø  Método
Ø  Herencia
Ø  Sobrecarga
Ø  Evento
Ø  Atributos, etc

Características de la programación orientada a objetos
Ø  Abstracción
Ø  Encapsulamiento
Ø  Herencia
Ø  Polimorfismo
Ø  Modularidad, etc


Ejemplo en Java







3  .  Summary
Object-oriented programming is a model that uses objects as fundamental elements in the construction of the solution. It arises in the 70s. An object is an abstraction of some fact or entity of the real world that has attributes that represent its characteristics or properties and methods that represent its behavior or actions that perform. All properties and methods common to objects are encapsulated or grouped into classes. A class is a template or a prototype to create objects, so it is said that objects are instances of classes.

Object-oriented programming changes this view to another in which an application is composed of objects with their own state endowed with functionality. The objects communicate with each other and each have their own form of response, which is determined by a series of procedures that are associated with each object

Object-oriented programming basics

      Ø  Class
      Ø   Method
      Ø  Inheritance
      Ø  Overload
      Ø  Event
      Ø  Attributes, etc.

Characteristics of object-oriented programming

      Ø  Abstraction
      Ø  Encapsulation
      Ø  Inheritance
      Ø  Polymorphism
      Ø  Modularity, etc.

4 .  Recomendaciones
·  Al utilizar programación Orientada a objetos debemos tener en cuenta sus características que incluyen en esto para k no sea tedioso.
·  Es importante conocer la estructura del lenguaje de programación orientada a objetos en el que se va a trabajar para saber cómo utilizar los objetos, las clases, heredar, instanciar y encapsular.
·   Para poder utilizar la herencia es muy importante declarar los métodos de forma pública para que sean reconocidos.
5.  Conclusiones

Ø  La programación orientada a objetos ha evolucionado grandemente ya que está basada en objetos de la vida real.
Ø   Que es muy importante conocer a cerca de este lenguaje ya que en la actualidad es una herramienta útil para resolver problemas de nuestra vida cotidiana.
Ø   Que al practicar este lenguaje reducimos el tiempo para realizar un modelo o una idea que tenemos en mente y en si este lenguaje es muy importante conocerlo.
Ø  Es el modelo más usado actualmente, hasta que se desarrolle uno nuevo que satisfaga de mejor manera los requerimientos de software del futuro.
Ø   Con este nuevo paradigma se pueden hacer programas más complejos, pero a la vez más fácil de entender, permitiendo el trabajo en equipo y la reutilización del código, hecho por otra persona.

6 .  Apreciación del Equipo

·  Con este trabajo de investigación podemos entender y conocer cómo es que trabaja este tipo de programación ya que se basa en objetos de la vida real y problemas que pasan en la vida cotidiana.
·   Nos ayudó a tener más conocimiento de los conceptos fundamentales de la poo así como sus características de esta.
·   Nos ayudó a poner en práctica este tipo de programación y aprender a resolver problemas mediante líneas de códigos.

7.  Glosario de Términos
Paradigma: Ejemplo o modelo de algo.

Polimorfismo: Se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos.

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

Instanciación: Una instancia (en inglés, instance) es la particularización, realización específica u ocurrencia de una determinada clase, entidad (modelo entidad-relación) o prototipo.

Hegemónico: Se denomina hegemonía al dominio de una entidad sobre otras de igual.

Estáticos: Relativo al equilibrio de las fuerzas. Ejemplo: energía, presión estática. Que no se mueve.

Asignación tardía o dinámica:  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.

8.  Linkografías


Aqui les dejo el link de las Diapositivas



No hay comentarios:

Publicar un comentario