Unidad 1 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

LIC.

BEATRIZ COLQUE CONDORI PROGRAMACION ORIENTADA A OBJETOS

UNIDAD 1

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

1.1. INTRODUCCIÓN

Vivimos en un mundo de objetos. Estos objetos existen en la naturaleza, en entidades


hechas por el hombre, en los negocios y en los productos que usamos. Pueden ser
clasificados, descritos, organizados, combinados, manipulados y creados. Por eso no es
sorprendente que se proponga una visión orientada a objetos para la creación de software
de computadora, una abstracción que modela el mundo de forma tal que nos ayuda a
entenderlo y gobernarlo mejor.

La Programación Orientada a Objetos (POO) es un nuevo paradigma de programación , es


una nueva forma diferente de programar, un modelo a seguir para solucionar problemas a
través de la Informática.

La característica principal de la Programación Orientada a Objetos es la reutilización de


código que debe ser simple y lo suficientemente verificado antes de ser reutilizado, esta
solución debe ser lo más parametrizable posible para que sea general y pueda ser invocado
desde cualquier casos posible en los que sea requerido.

La POO utiliza una terminología diferente a la utilizada en la Programación Estructurada,


entre los principales nuevos términos estan: Objetos, Atributos, Métodos, Clases entre
otros.

1.2. CARACTERÍSTICAS FUNDAMENTALES DE LA POO

El paradigma orientado a objetos se fundamenta en los siguientes principios:

 Abstracción
 Modularidad
 Encapsulación o encapsulamiento  Jerarquía

1.1.1. ABSTRACCIÓN

La abstracción es una aproximación o abordaje del diseño que hace hincapié en los
aspectos más importantes de algo, sin preocuparse por los detalles menos importantes.

La abstracción es el proceso en el cual separamos las propiedades más importantes de un


objeto, de las que no lo son. Es decir, por medio de la abstracción definimos las
características esenciales de un objeto del mundo real, los atributos y comportamientos que
lo definen como tal, para después modelarlo en un objeto de software.

1
LIC. BEATRIZ COLQUE CONDORI PROGRAMACION ORIENTADA A OBJETOS

En el proceso de abstracción no debemos preocuparnos por la implementación de cada


método o atributo, solamente debemos definirlo de forma general. Por ejemplo,
supongamos que deseamos escribir un programa para representar el sistema solar, por
medio de la abstracción, podemos ver a éste sistema como un conjunto de objetos, algunos
de estos objetos son los planetas, que tienen un estado, dado por sus características físicas,
digamos, tamaño, masa, entre otras, estos objetos tendrán también comportamientos: la
translación y la rotación, pueden mencionarse como los más evidentes.

1.1.2. ENCAPSULACIÓN

• La encapsulación es el ocultamiento de la información.


• El encapsulamiento es la propiedad de la orientación a objetos que nos permite
asegurar que la información de un objeto le es desconocida a los demás objetos en
la aplicación.

La abstracción de “caja negra” es utilizada ampliamente en física, electrónica e informática


y consiste en esconder todos los detalles internos del sistema que se estudia bajo una caja
negra imaginaria, cuando sea más importante comprender qué hace el sistema que cómo
lo hace.

Los conceptos de abstracción y encapsulación no son conceptos independientes, sino


complementarios: la abstracción hace referencia al comportamiento observable de un
objeto, mientras la encapsulación hace referencia a la implementación que le permite
alcanzar este comportamiento. Es decir: la abstracción se centra en el comportamiento
observable del objeto y el encapsulamiento en la implementación (métodos, atributos).
Contribuye a la ocultación de la información: parte publica (interfaz) y parte privada
(implementación).

Una aplicación orientada a objetos está constituida, como mencionamos anteriormente, por
módulos. Estos módulos se implementan mediante clases, las cuales representan,
generalmente, abstracciones de objetos del mundo real. Es por medio del encapsulamiento
que podemos definir los atributos y los métodos de una clase para que los objetos que se
instancian de ésta trabajen como unidades independientes de los demás objetos con los
que interactúan. En otras palabras, con el encapsulamiento ganamos modularidad, y
además protegemos a los objetos de ser manipulados de forma inadecuada por objetos
externos.

1.1.3. HERENCIA

La significación de la palabra “herencia” no difiere de la empleada en el lenguaje ordinario


(Los hijos heredan rasgos de los padres).

En el paradigma de la orientación a objetos, la herencia permite que unos objetos puedan


basarse en otros objetos ya existentes. En términos de clases, la herencia es el mecanismo

2
LIC. BEATRIZ COLQUE CONDORI PROGRAMACION ORIENTADA A OBJETOS

por el cual una clase X puede heredar propiedades de una clase Y (X hereda de Y), de
modo que los objetos de la clase X tengan acceso a los atributos y operaciones de la clase
Y, sin necesidad de redefinirlos. Sin embargo, las propiedades de una clase no son
necesariamente la suma de las propiedades de todas sus superclases.

La herencia suele clasificarse así:

• Herencia de especialización: Una clase hija es un caso particular de la clase padre.


Las subclases, cuando redefinen los métodos heredados de la superclase,
especializan o concretan la clase padre. Esta forma de herencia es, con diferencia,
la más usada.
• Herencia de especificación: Una clase padre define el comportamiento de sus
subclases, pero no proporciona ninguna implementación por defecto. Por
consiguiente, la superclase –una clase abstracta o un interface– se encuentra
incompleta. Esta forma de herencia es la segunda más común. Resulta muy útil para
definir una interfaz común para clases relacionadas.
• Herencia de implementación o construcción: Se usa la clase padre sólo por su
comportamiento, a pesar de que no exista relación entre la clase padre y las
subclases. En este caso, la herencia se usa para aprovechar código ya escrito, pero
no implementa una generalización (“es un” o “es una clase de un”). Su uso suele
considerarse incorrecto y desaconsejable.
• Herencia de generalización: Las clases hijas modifican o redefinen algunos métodos
de su superclase, de modo que extienden el comportamiento de aquélla.
Comportamiento, por tanto, exactamente opuesto al de la herencia de
especialización. Se recomienda evitarla; pero a veces se hace imprescindible.
Cuando se tiene un conjunto de clases de modificables y se desea conseguir clases
más generales, resulta casi inevitable no usarla. Consideremos una biblioteca
software con una clase MonitorRGB; si se quiere crear una clase Monitor genérica,

3
LIC. BEATRIZ COLQUE CONDORI PROGRAMACION ORIENTADA A OBJETOS

que use otras coordenadas cromáticas, habrá que usar la herencia de


generalización.
• Herencia de extensión: Las subclases añaden nuevas funciones con respecto a su
superclase, pero no se modifica ni redefine ningún método heredado. Esta forma de
herencia permite a los programadores desarrollar nuevas bibliotecas a partir de las
ya existentes.
• Herencia de limitación o restricción: Las clases hijas limitan el comportamiento de
su superclase.
• Herencia de variación: Las clases hijas y su superclase comparten código. A
diferencia de la herencia de implementación, aquí sí existe una relación entre las
clases, pero no es del tipo “es un”. Por ejemplo, una clase Video puede usar métodos
de una clase Audio. En general, no se recomienda el uso de esta técnica, y casi
siempre puede evitarse. Continuando con el ejemplo, podría definirse una clase
padre más general (Medio Audiovisual).

• Herencia de combinación: También conocida como herencia múltiple. Se explica un


poco más adelante.

4
LIC. BEATRIZ COLQUE CONDORI PROGRAMACION ORIENTADA A OBJETOS

1.1.4. POLIMORFISMO

Se denomina polimorfismo a la capacidad que tienen los objetos de responder ante el mismo
mensaje en función de los parámetros utilizados durante su invocación.

Cuando un método (o función) se define por una combinación de su nombre y la lista de sus
parámetros (o argumentos), hablamos de polimorfismo por sobrecarga de funciones. Con
este polimorfismo podemos usar el mismo nombre para distintas funciones
(correspondientes, generalmente, a una misma operación), con diferentes listas de
parámetros. También puede hablarse de sobrecarga de operadores. Internamente, los
compiladores traducen los métodos y operadores sobrecargados en métodos distintos.

También podría gustarte