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:
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
Ø https://es.wikibooks.org/wiki/Programaci%C3%B3n_Orientada_a_Objetos/Caracter%C3%ADsticas_de_la_POO
Aqui les dejo el link de las Diapositivas
No hay comentarios:
Publicar un comentario