Sei sulla pagina 1di 25

CUADERNO DE

APUNTES DE CLASES

Metodologías de
Programación:
Programación Orientada a Objetos

Héctor M. Zelada Valdivieso

1
Metodologías de Programación: Programación Orientada a Objetos

Cuaderno de apuntes de clases

Metodologías de Programación: Programación Orientada a Objetos

Autor
Ing. Héctor M. Zelada Valdivieso

Chiclayo 2012
Escuela de Ingeniería De Sistemas y Computación
Facultad de Ingeniería.
Universidad Católica Santo Toribio de Mogrovejo

Copyright 2012, by the Contributing Authors, Esta obra se publica bajo una Creative
Commons License.
Copyright 2012, by the Contributing Authors. Esta obra se publica bajo una Creative
Commons License.

Cuaderno de apuntes de clase elaborado para la Escuela de Ingeniería De Sistemas y


Computación. Facultad de Ingeniería. Universidad Católica Santo Toribio de
Mogrovejo-USAT estáelaborado
Cuaderno de trabajo licenciado bajo
para una Creative
la Escuela de Ing.Commons
De SistemasReconocimiento-No
y Computación.
Comercial-
Facultad de Ingeniería. Compartir
Universidad Igual Santo
Católica 3.0 Unported
Toribio deLicense.
Mogrovejo - USAT is
licensed under a Creative Commons Reconocimiento-NoComercial-Compartir Igual 3.0
Unported License.
2
Metodologías de Programación: Programación Orientada a Objetos

INDICE

ÍNDICE DE FIGURAS 4
PRESENTACIÓN 5
INTRODUCCIÓN 6
CAPÍTULO I: CONCEPTOS GENERALES DE POO
1.1. Programación Orientada A Objetos 7
1.2. Objeto 8
1.3. Atributos 9
1.4. Métodos 10
1.5. Clase 11
1.6. Paquete De Clases 11
1.7. Mensaje 13
1.8. Método Constructor 13
1.9. Método Destructor 14
1.10. Especificadores Y Modificadores De Acceso 15
1.11. Sobrecarga De Métodos 15
1.12. Métodos Recursivos 16
1.13. Diagrama De Clases 17

CAPÍTULO II: CARACTERÍSTICAS DE LA POO

2.1. Abstracción 21
2.2. Encapsulamiento 22
2.3. Herencia 22
2.4. Polimorfismo 23

REFERENCIAS 25

3
Metodologías de Programación: Programación Orientada a Objetos

INDICES DE FIGURAS

Figura 1: Diagrama de una Clase Según UML 17


Figura 2: Ejemplos de Diagrama de una Clase Según UML 18
Figura 3: Ejemplos de Relación de Dependencia Entre Clases Según UML 18
Figura 4: Ejemplos de Relación de Herencia Entre Clases Según UML 19
Figura 5: Ejemplos de Relación de Asociación Entre Clases Según UML 19
Figura 6: Ejemplo de Relación de Interfaz Según UML 20
Figura 7: Ejemplo de Diagrama de Objeto Según UML 20

4
Metodologías de Programación: Programación Orientada a Objetos

PRESENTACIÓN

Hoy en día vivimos en un mundo dominado por Sistemas de Información (SI),


Ingeniería de Software (IS), Tecnologías de Información (TI), Ciencias de la
Computación (CC) e Ingeniería de Computadoras (IC), por lo que una de las
competencias relacionadas con la Ingeniería de Software que debe tener un ingeniero
de sistemas y computación es el de ser capaz de desarrollar software de alta calidad.
Para desarrollar un software tenemos que seguir todo un proceso, en el cual una de
sus etapas es la programación, etapa que para ser llevada a cabo de manera eficiente
es necesario que el programador conozca y aplique alguna metodología de
programación, porque si el programador no sigue una metodología de programación,
éste definirá sus propias reglas, lo que en muchos casos conllevará a que su
programa sea desordenado, y si su programa está desordenado, será difícil de
entender, y si es difícil de entender, será difícil de depurarlo y si es difícil de depurarlo,
el programa será propenso a tener errores, por lo que el programa perderá fiabilidad,
característica muy importante que debe tener todo programa de computadora de
calidad, además debemos tener presente que si no se sigue una metodología de
programación común en un equipo de desarrollo, no se podrá trabajar en equipo ni
aprovechar las ventajas que tiene una metodología de programación. Debido a todo
esto el presente cuaderno de apuntes de clases busca proporcionar al estudiante los
conceptos y características más importantes de una de las Metodologías de
Programación: La Metodología de Programación Orientada a Objetos (POO).

5
INTRODUCCIÓN

Las metodologías de programación, también conocidas como paradigmas de


programación, son reglas, marcos de referencia, modelos, directrices o patrones que
definen la forma como solucionar un problema. Es decir influyen en la manera como
diseñamos una solución y como escribimos un programa de computadora. Existen
diferentes metodologías de programación, siendo una de ellas, la Metodología de
Programación Orientada a Objetos.

El presente cuaderno de apuntes de clase, es producto de una revisión bibliográfica de


diferentes autores que hablan sobre la Metodología de Programación Orientada a
Objetos. Busca proporcionar un resumen de los fundamentos teóricos necesarios para
el desarrollo de la asignatura de Metodologías de Programación que llevan los
estudiantes de la Escuela de Ingeniería de Sistemas y Computación de la Universidad
Católica Santo Toribio de Mogrovejo, en esta primera edición consta de 2 capítulos, el
primer capítulo veremos sobre los conceptos generales que debe conocer el
estudiante acerca de la Metodología de Programación Orientada a Objetos y en el
segundo capítulo veremos las características de la Programación Orientada a Objetos.

6
Metodologías de Programación: Programación Orientada a Objetos

CAPITULO I

FUNDAMENTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS

1.1. Programación Orientada A Objetos


La Programación Orientada a Objetos (POO) es un método de implementación en el
que los programas se organizan como colecciones cooperativas de objetos, cada uno
de los cuales representan una instancia de alguna clase, y cuyas clases son todos
miembros de una jerarquía de clases unidas mediante relaciones de herencia [1].

La Programación Orientada a Objetos define una estructura de más alto nivel llamada
objeto, que ofrece ventajas sobre la programación tradicional:

a) La primera es permitir al programador que organice su programa de acuerdo a


abstracciones de más alto nivel, siendo éstas más cercanas a la manera de
pensar de la gente. En otras palabras los objetos son las unidades de
representación de las aplicaciones. Por ejemplo, cuentas de banco,
observaciones de vuelo, etc.

b) La segunda es que los datos globales desaparecen, siendo éstos junto con las
funciones parte interna de los objetos. Por lo tanto, cualquier cambio en la
estructura de alguno de los datos sólo debiera afectar las funciones definidas
en el mismo objeto y no en los demás [2].

La Programación Orientada a Objetos, es un enfoque de desarrollo de software que


organiza tanto el problema como su solución como una colección de objetos discretos;
donde tanto la estructura de datos como el compartimiento están incluidos en la
representación [3].

La Programación Orientada a Objetos es una metodología o paradigma de


programación que utiliza a los Objetos como elementos fundamentales para construir
un programa de computadora. Surge en los años 70 y a diferencia del paradigma o
metodología de programación estructurada, que se centra en el proceso, este
paradigma se centra en el objeto que esta siendo afectado. En esta metodología,
después que hemos identificado el objeto, tenemos que identificar sus atributos

7
Metodologías de Programación: Programación Orientada a Objetos

(características, propiedades o estado del objeto) y sus métodos (comportamiento,


operaciones o acciones que realiza el objeto).

Esta metodología o paradigma orientado a objetos encapsula en uno sólo datos


(atributos) y procesos (métodos), a diferencia del paradigma estructurado que los
trabaja de manera aislada. Este paradigma se caracteriza por que presenta las
siguientes propiedades o características: Abstracción, Encapsulamiento, Herencia y
Polimorfismo.

1.2. Objeto
El objeto es una instancia de una clase que combina datos y procedimientos, un objeto
es simplemente una variable de un tipo de clase, y para diferenciar las variables de
tipo clase de las variables de otro tipo, se utiliza el término objeto [4].

Un objeto, es una unidad que combina en uno solo, datos y funciones que operan
sobre esos datos. Por consiguiente, dentro de los objetos residen los datos de los
lenguajes de programación tradicional, tales como números, arrays, cadenas y
registros, así como funciones o subrutinas que operan sobre ellos. Los objetos son
instancias de las clases [5].

El objeto es una entidad que tiene unos atributos particulares, las propiedades, y unas
formas de operar sobre ellos, los métodos [6].

Un objeto es una cosa con la que se puede interactuar; se le puede enviar varios
mensajes y éste reacciona ante ellos [7].

Los objetos son abstracciones del mundo; es decir un objeto es un ente o alguna cosa
tangible o intangible que uno se pueda imaginar que interviene el sistema que
estamos analizando y es relevante para éste. Los objetos tienen unos atributos que
representan sus características, propiedades o su estado y unos métodos que
representan su comportamiento o acciones que puede realizar.
Ejemplo: Plumón color negro, Plumón color azul, Celular de marca Motorola, etc.
Los atributos y métodos comunes a los objetos se agrupan en unos tipos llamados
clases, Por lo que algunos autores llaman a estos atributos y métodos como
miembros de una clase. Por ejemplo la clase para los objetos mencionados antes
sería la clase Plumón; por eso se dice que un objeto es una instancia de una clase ya
que se crean a partir de una clase. “Si no hay una clase no se pueden crear objetos”.

8
Metodologías de Programación: Programación Orientada a Objetos

¿Qué clase de cosas pueden ser objetos en un programa orientado a objetos?

La respuesta está solo limitada a su imaginación. Ejemplo: aviones, automóviles,


ventanas, menús, teclados impresoras, unidades de discos, Mouse, celulares,
animales vertebrados, animales invertebrados, datos complejos, carnes, frutas,
verduras, pasteles, etc. La identificación de objetos se obtiene examinando la
descripción del problema (análisis gramatical del enunciado o descripción) y
localizando los nombres y cláusulas nominales, después de identificarlas, tenemos
que definir sus atributos y métodos.

Shaer, Mellor y Yourdon definen categorías que nos pueden ayudar a identificar
objetos:
 Cosas tangibles (mesa, silla, plumón, etc.)
 Roles o papeles de las personas (cliente, proveedor, alumno, médico, etc.)
 Transacción (compras, ventas, matricula, cita, etc.)
 Organizaciones (empresa, área, equipo, etc.)
 Incidentes (suceso, vuelo, accidente, evento, etc.)
 Lugares (sala de embarque, muelle de carga, etc.)

1.3. Atributos
Los atributos son datos o variables que caracterizan o describen el estado de un
objeto, un atributo consta de un nombre de atributo y un valor de atributo [5].

Los atributos son las características de cada instancia de la clase [8].

Los atributos son las variables que se declaran al principio de la clase, fuera de los
métodos. Estas variables son compartidas por todos los métodos de la clase [6].

Los 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 [4].
Los atributos son las características, propiedades, estado o datos de los objetos. Se
dice que el estado del objeto es el valor que tienen todos sus atributos en un instante
dado.

9
Metodologías de Programación: Programación Orientada a Objetos

Los atributos vienen a ser los datos (simples o estructurados) que se definían en la
Programación Estructurada. En algunos libros de programación se les denomina,
variables miembro, variables de instancia, o campos.

Partes:
 Los atributos tienen un especificador de acceso, el cual puede ser público (+),
privado (-), protegido (#) o amistoso.
 Los atributos tienen un tipo de dato.
 Los atributos tendrán un nombre
 Ejemplo en Java: private float base;

1.4. Métodos
Los métodos son los procedimientos o acciones que cambian el estado de un objeto,
es un procedimiento o función que se invoca para actuar sobre un objeto, un método
es el algoritmo ejecutado en respuesta a la recepción de un mensaje cuyo nombre
corresponde con el nombre del método, los métodos son las operaciones o servicios
que describen el comportamiento asociado a un objeto, representa las acciones que
pueden realizarse por un objeto o sobre un objeto, cada método tiene un nombre y un
cuerpo que realiza la acción o comportamiento asociado con el nombre del método [5].

Un método se implementa en una clase y determina cómo tiene que actuar el objeto
cuando recibe el mensaje vinculado con ese método. A su vez, un método puede
también enviar mensajes a otros objetos solicitando una acción o información [6].

Los métodos son las operaciones que muestran el comportamiento del objeto [9].

Los métodos son los comportamientos, operaciones, acciones o procesos de los


objetos. Vienen a ser los procesos (funciones o procedimientos) que definíamos en la
Programación Estructurada.

En algunos libros de programación se denominan métodos miembro o funciones


miembros.

Partes:
 Los métodos tienen un especificador de acceso, el cual puede ser público (+),
privado (-), protegido (#) o amistoso.
 Los métodos pueden retornar un valor o no.
10
Metodologías de Programación: Programación Orientada a Objetos

 Los métodos tendrán un nombre.


 Los métodos pueden tener parámetros.
 Los métodos tienen una definición (cuerpo del método).
 Ejemplo en Java:
public float calcularArea (float base, float altura)
{ // Definición del método
}

1.5. Clase
Una clase describe un grupo de objetos con estructuras y comportamientos común [2].

Una clase es una agrupación de datos (atributo) y de funciones (métodos), que operan
sobre esos datos. A clase es el centro de la programación Orientada a Objetos [4].

Una clase es la descripción de un conjunto de objetos; consta de métodos y datos que


resumen características comunes de un conjunto de objetos. Se pueden definir
muchos objetos de la misma clase. Dicho de otro modo, una clase es la declaración de
un tipo de objeto. Las clases son similares a los tipos de datos y equivalen a modelos
o plantillas que describen cómo se construyen ciertos tipos de objetos. Una clase es
una colección de objetos similares [5].

Una clase es un tipo definido por el usuario. Una clase equivale a la generalización de
un tipo específico de objetos. Un objeto de una determinada clase se crea en el
momento en que se define una variable de dicha clase [6].

Las clases encapsulan o agrupan los atributos y métodos comunes a varios objetos,
son una plantilla, prototipos o tipos de datos especiales que permite crear objetos. Por
eso se dice que los objetos son instancias de una clase, si no tenemos una clase, no
podremos crear el objeto ya que el objeto se crea a partir de una clase. Estas clases
también tienen un especificador de acceso que puede ser público (accedido por
cualquier clase) o de paquete (sólo puede ser accedido por clases del mismo
paquete).

1.6. Paquete De Clases


Un paquete es una construcción lógica para agrupar clases, asociaciones y
generalizaciones. El paquete captura diferentes perspectivas de un sistema [2].

11
Metodologías de Programación: Programación Orientada a Objetos

Los paquetes son contenedores de clases e interfaces y también pueden contener a


otros paquetes. Todas clases contenidas en un paquete son clases amigas y pueden
compartir atributos y métodos dentro de este ámbito [4].

Los paquetes son un mecanismo utilizado por java que permite organizar las clases de
una manera estructurada y jerárquica. Básicamente, un paquete es un directorio en el
que se almacenan los archivos class con los byte codes de la clase; un paquete puede
a su vez estar compuestos de otros subpaquetes [6].

Un paquete es un directorio que agrupa a las clases, y además dentro de un paquete


puede haber otros paquetes. Debemos saber que hay paquetes que ya vienen con los
lenguajes de programación y otros paquetes son creados por el programador. Por
ejemplo, Java cuenta con una biblioteca de clases conocida como paquetes
(packages) de clases, dentro de cada paquete encontraremos unas clases que
podemos incluir en nuestros programas y reutilizar sus atributos y métodos según se
requiera.

Ejemplo de paquetes:
 java.lang: Donde encontraremos a la clase System, Math, Byte, Short, Integer,
Long, Float, Double, String, etc.
 java.io: Donde encontraremos a la clase BufferedReader, InputStreamReader,
IOException, etc.
 java.util: Donde encontraremos a la clase Date, Random, Arrays, Vector, etc.
 javax.swing: Donde encontraremos a la clase JOptionPane, etc.

Para incluir clases en nuestros programas, tenemos que escribir:


import nombrepaquete.NombreClase;

Cuando en lugar del nombre de la clase colocamos * significa que importaremos todas
las clases de ese paquete.
Ejemplo:
import java.lang.*;
import java.io.*;
import java.util.Date;

12
Metodologías de Programación: Programación Orientada a Objetos

El compilador incluye automáticamente en nuestros programas las clases del paquete


java.lang, es por eso que ya no es necesario poner la instrucción java.lang.*; en
nuestros programas.

1.7. Mensaje
El mensaje es esencialmente una orden que se envía a un objeto para indicarle que
realice alguna acción; es decir se le solicita que ejecute uno de sus métodos. Un
objeto accede a otro enviándole un mensaje. Estructuralmente, un mensaje consta de
tres partes: identidad del receptor, el método que se ha de ejecutar y una información
especial necesaria para realizar el método invocado (argumentos o parámetros
requeridos) [5].

Cuando se ejecuta un programa orientados a objetos, los objetos están recibiendo,


interpretando y respondiendo a mensajes de otros objetos [6].

Un mensaje es una orden que se le envía a un objeto para que ejecute uno de sus
métodos. Es la orden que hace que el objeto ejecute alguno de sus métodos.

Forma de enviar un mensaje a un objeto:

1.8. Método Constructor


Un constructor es un método que en algunos lenguajes de programación, por ejemplo
en Java, tiene el mismo nombre que la clase y cuyo propósito es inicializar los
miembros datos de un nuevo objeto que se ejecuta automáticamente cuando se crea
un objeto de una clase. Sintácticamente es similar a un método. Dependiendo del
número y tipos de los argumentos proporcionados, una función o método constructor
se llama automáticamente cada vez que se crea un objeto. Si no se ha escrito ninguna
función constructor en la clase, el compilador proporciona un constructor por defecto.
A su rol como inicializador, un constructor puede también añadir otras tareas cunado
es llamado. En Java, cuando se define un constructor no se puede especificar un valor
de retorno, ni incluso nada (void); un constructor nunca devuelve un valor. Un

13
Metodologías de Programación: Programación Orientada a Objetos

constructor puede, sin embargo, tomar cualquier número de parámetros (cero o más)
[5].

Un método constructor es un procedimiento especial de una clase que es llamado


automáticamente siempre que se crea un objeto de esa clase. Su función es iniciar el
objeto [6].

Los constructores pueden usarse para llevar acabo la inicialización, lo que da una
flexibilidad mayor en la programación [10].

El método constructor es un método especial de una clase que es llamado


automáticamente siempre que se crea un objeto de la misma. Se encarga de la
creación del objeto e inicializa su estado. Es decir inicializa los atributos del objeto, ya
sea a sus valores iniciales que ha definido el programador o si no los hubiera los
inicializa a los valores predeterminados del sistema (atributos numéricos: 0; atributos
de carácter: ‘\0’; referencias a objetos: null). Esta inicialización es sólo para los
atributos no para la variables locales, para las variables locales el programa debe
asignarles un valor antes de usarlas, o sino saldrá un error). El nombre de este
método constructor en Java suele ser el mismo de la clase a la cual sirven.
El constructor por omisión es un constructor sin parámetros que será invocado cada
vez que se construya un objeto. Pero el programador puede definir explícitamente su
constructor, en donde el constructor por omisión es remplazado por éste, para
solucionar este problema, hay que añadir a la clase un constructor sin parámetros
(Sobrecarga del método constructor), las clases pueden tener varios constructores
sobrecargados, pero mínimo siempre tienen uno que permite que se cree el objeto.

1.9. Método Destructor


Un método destructor es un procedimiento especial de una clase que es llamado
automáticamente siempre que se destruya un objeto de esa clase. Su función es
realizar tarea final en el momento de destruir el objeto, un destructor se distingue
fácilmente en algunos lenguajes de programación por que tiene el nombre finalize [6].

Al igual que sucede con los constructores, se proporciona un constructor por defecto
en el caso de que no se incluya implícitamente en la declaración de la clase. Al
contrario que los constructores, sólo puede haber un destructor por clase. Esto se
debe a que los destructores no pueden tener argumentos ni devolver valores. Los

14
Metodologías de Programación: Programación Orientada a Objetos

destructores se llaman automáticamente siempre que un objeto deje de existir y su


objetivo es limpiar cualquier efecto no deseado que haya podido dejar el objeto [5].

Un método destructor, es un método que se ejecuta automáticamente cada vez que se


destruye un objeto, en el caso de java es el método finalize. Cuando un objeto es
destruido, se llama al método finalize, y luego el recolector de basura se encarga de
eliminar el objeto, liberando la memoria ocupada. Un objeto es destruido cuando se
eliminan todas las referencias al mismo, una referencia a un objeto puede ser
eliminada porque el flujo de ejecución salga fuera del ámbito donde esta declarada, o
porque explícitamente se le asigna el valor null. A diferencia de los constructores sólo
se puede definir un destructor

1.10. Especificadores Y Modificadores De Acceso


Los modificadores de acceso se utilizan para definir la visibilidad de los miembros de
una clase (atributos y métodos) y de la propia clase [6].

En la Tabla N° 1 se puede resumir los accesos permitidos a los miembros de una


clase (atributos y métodos), dependiendo del especificado o modificador de acceso.

Tabla 1: Especificadores de acceso


Zona Public (+) Privado (-) Protected (#) Sin Modificador
(público) (privado) (protegido) Friendly
(amistoso)
Misma clase X X X X
Otra clase (no clase hija) en X
X X
el mismo paquete (Esto se da en Java)

Otra clase (no clase hija) en


X
otro paquete
Clase hija (subclase o clase
derivada) en el mismo X X X
paquete
Clase hija (subclase o clase
X X
derivada en otro paquete

1.11. Sobrecarga De Métodos


La sobrecarga de métodos es otra ventaja que nos ofrece la Programación Orientada
a Objetos, por lo que podemos tener en una misma clase varios métodos con el mismo
nombre, de esta manera nos permite, por tanto, disponer de diferentes versiones de
un método para llevar a cabo una determinada operación [6].

15
Metodologías de Programación: Programación Orientada a Objetos

La sobrecarga de métodos nos permite tener en un misma clase, métodos con el


mismo nombre, pero que no son idénticos ya que difieren en su parámetros, debemos
recodar que la firma de un método; es decir lo que lo hace único es su nombre y sus
parámetros (cantidad y tipo de datos), no interviene el tipo de dato de retorno, ni el
nombre del parámetro; es así que nos podemos encontrar en una clase métodos que
se llaman igual, pero que no son idénticos ya que difieren en su parámetros.

Ejemplo de métodos sobrecargados:


public void calcularArea ( ) {

public float calcularArea ( byte parte) {

1.12. Métodos Recursivos


La recursividad es una técnica de programación importante que se utiliza para realizar
una llamada a un método desde el mismo método. Como ejemplo útil se puede
presentar el cálculo de números factoriales. Él factorial de 0 es, por definición, 1. Los
factoriales de números mayores se calculan mediante la multiplicación de 1 * 2 * …,
incrementando el número de 1 en 1 hasta llegar al número para el que se está
calculando el factorial [10].

Ejemplo de un método recursivo


public long factorial (long n) {
if (n== 0 || n== 1)
return 1;
else
return factorial(n-1)*n;
}

16
Metodologías de Programación: Programación Orientada a Objetos

1.13. Diagrama De Clases


Después de identificar y seleccionar las clases, se debe construir el diagrama de
clases para el dominio del problema. Este diagrama puede ayudar a identificar clases
adicionales, además servirá de base para encontrar los atributos y asociados entre
ellas [2].

El diagrama de clases modela la vista estática del sistema, ya que no describe el


comportamiento del sistema en función del tiempo. Un diagrama de clases recoge
tanto los conceptos del dominio de la aplicación como aquellos que forman parte de la
implementación de la aplicación.

Los elementos principales son:


 Clases, para modelar un concepto del dominio de la aplicación o de la solución.
 Relaciones, para asociar las clases [11].

UML (lenguaje de modelado unificado), define la forma como debemos realizar un


diagrama de clases que se muestra en la figura 1.

Figura 1: Diagrama de una Clase Según UML

Especificador de acceso:
Público (+), Privado (-), Protegido (#), por omisión (si no se indica nada)

Alcance de los miembros (atributos y métodos) de una clase:


 De clase: No se necesita crear un objeto para acceder a los atributos y
métodos de la clase. En el diagrama se indica subrayando todo el atributo o
todo el método, se caracteriza por que el valor de los atributos permanece
estático, es el mismo para todos los objetos que se creen, se usa por ejemplo

17
Metodologías de Programación: Programación Orientada a Objetos

para llevar un control de la cantidad de objetos creados de una clase


determinada.
 De instancia o de objeto: Se necesita crear un objeto para acceder a los
atributos y métodos de la clase. En el diagrama se indica esto no subrayando
los atributos o métodos.

Ejemplos:
En la figura 2, se muestra un par de ejemplo de como diagramar una clase.

Figura 2: Ejemplos de Diagrama de una Clase Según UML

Las clases se relacionan entre si, formando relaciones de dependencia, de herencia o


generalización, de asociación o de interfaz.

En la figura 3 se muestra un ejemplo de como sería una relación de dependencia entre


clases, donde si la clase independiente se altera la clase que depende de ella se ve
afectada.

Figura 3: Ejemplos de Relación de Dependencia Entre Clases Según UML

18
Metodologías de Programación: Programación Orientada a Objetos

En la figura 4 se muestra un ejemplo de como sería una relación de herencia entre


clases, la clase padre encapsula atributos y métodos comunes de las clases hijas, y la
clase hija hereda (reutiliza) estos atributos y métodos de la clase padre si el
especificador de acceso lo permite (+ y #)

Figura 4: Ejemplos de Relación de Herencia Entre Clases Según UML

En la figura 5 se muestra un ejemplo de como sería una relación de asociación entre


clases.

Figura 5: Ejemplos de Relación de Asociación Entre Clases Según UML

En la figura 6 se muestra un ejemplo de como sería una relación entre una clase y una
interfaz.

19
Metodologías de Programación: Programación Orientada a Objetos

Figura 6: Ejemplo de Relación de Interfaz Según UML

UML, además define una forma de como diagramar un objeto como se muestra en la
figura 7.

Figura 7: Ejemplo de Diagrama de Objeto Según UML

20
Metodologías de Programación: Programación Orientada a Objetos

CAPITULO II

CARACTERÍSTICAS DE LA DE PROGRAMACIÓN ORIENTADA A


OBJETOS

2.1. Abstracción

La abstracción es el proceso de excluir detalles no deseados o no significativos al


problema que se trata de resolver [5].

La abstracción consiste en centrarse en los aspectos esenciales inherente de una


entidad, e ignorar sus propiedades accidentales. En el desarrollo de sistemas esto
significa centrarse en lo que es y lo que hace un objeto antes de decidir cómo debería
ser implementado [12].

Por medio de la abstracción conseguimos no detenemos en los detalles concretos de


las cosas que no interesen en cada momento, sino generalizar y centrarse en los
aspectos que permitan tener una visión global del problema. Por ejemplo, el estudio de
un ordenador podemos realizarlo a nivel de funcionamiento de sus circuitos
electrónicos, en términos de corriente, tensión, etc., o a nivel de transferencia entre
registros, centrándose así el estudio en el flujo de información entre las unidades que
lo componen (memoria, unidad aritmética, unidad de control, registros, etc.), sin
importarnos el comportamiento de los circuitos electrónicos que componen estas
unidades [6].

La abstracción es una característica de la metodología de programación Orientada a


Objetos que consiste en capturar los detalles fundamentales o principales de los
objetos que intervienen en la realidad que estamos analizando. La abstracción
consiste en definir todas las clases necesarias para la realidad analizada, identificando
además para cada clase los atributos y métodos necesarios, dejando de lado detalles
irrelevantes. La abstracción permite gestionar la complejidad. Por ejemplo, las
personas no piensan en un coche como centenares de elementos, sino como un
objeto bien definido con su propio comportamiento. Esta abstracción permite utilizar el
coche (carro) para conducirlo sin tener que preocuparse de la complejidad de las
partes que lo forman, no nos preocupamos de como funciona el motor, los frenos, el
sistema de refrigeración, etc. En los lenguajes de programación orientada a objetos, el

21
Metodologías de Programación: Programación Orientada a Objetos

concepto de Clase es la representación y el mecanismo por el cual se gestionan las


abstracciones.

2.2. Encapsulamiento
El principio de encapsulamiento significa que las estructuras de datos internas
utilizadas en la implementación de una clase no pueden ser accesibles directamente al
usuario de la clase [5].

El encapsulamiento es la capacidad de envoltura y protección alrededor del código y


los datos que se manipulen. Esta envoltura define el comportamiento y protege el
código y los datos, para evitar que otro código acceda a ellos de manera arbitraria [4].

El encapsulamiento permite ofrecer a los usuarios una visión de caja negra, de forma
que sólo se exporte la interfaz de usuario. Esta aproximación, estrechamente ligada
con la ocultación de información, permite empaquetar la funcionalidad de un objeto, de
forma que se pueda cambiar la funcionalidad interna sin afectar a la visión externa de
un componente de un sistema [6].

El encapsulamiento es una característica de la metodología de programación


Orientada a Objetos por la cual los objetos encapsulan en su interior atributos y
métodos, de tal forma que podemos ver la estructura de un objeto como si estuvieran
encerrados en una capsula. Cuando hablamos de encapsulamiento, también tenemos
que hablar de ocultamiento de información, el cual es el proceso por el cual sólo las
interfaces externas de un objeto se pueden ver por otros objetos. Sólo conocemos del
objeto que hace, cuales son sus interfaces a través de la cual podemos acceder a él,
pero no sabemos o no conocemos como lo hace. Sólo necesitamos conocer lo
necesario para poder usar un objeto (Que hace y como puedo acceder a él). Ejemplo
los métodos que usamos de la clase Math, como pow, sqrt, etc. De los cuales
sabemos que hace, que parámetros necesita, que tipo de dato retorna, pero no
conocemos la definición de ese método; es decir no sabemos como lo hace, o como
esta implementado.

2.3. Herencia
La herencia, es la propiedad que le permite a los objetos ser construidos a partir de
otros objetos. Dicho de otro modo, la capacidad de un objeto para utilizar las
estructuras de datos y los métodos previstos en antepasados o ascendientes. El
objetivo final es la reutilización, es decir, reutilizar código anteriormente ya

22
Metodologías de Programación: Programación Orientada a Objetos

desarrollado. Existen dos mecanismos de herencia utilizados comúnmente en


programación orientada a objetos: Herencia simple y herencia múltiple. La herencia
simple es aquel tipo de herencia en la cual un objeto puede tener sólo un ascendiente,
o dicho de otro modo, una subclase puede heredar datos y métodos de una única
clase. La herencia múltiple es aquel tipo de herencia en la cual una clase puede tener
más de un ascendiente inmediato, o lo que es igual, adquirir datos y métodos de más
de una clase [5].

La herencia es el mecanismo por el que se crean nuevas clases definidas en términos


de clases ya existentes. La herencia relaciona clases de modo jerárquico, esto permite
que una clase herede toda las variables y métodos de su clases superior además de
implementar sus propias clases y métodos [4].

La herencia permite el acceso automático a la información contenida en otras clases,


de esta forma, la reutilización del código está garantizada. Con la herencia todas las
clases están clasificadas en una jerarquía estricta. Se puede ver a la herencia como
una sucesiva especialización de las clases. La clase de la que se hereda se suele
denominar clase padre o superclase, y la clase que hereda se denomina clase hija o
subclase. Es el mecanismo por el cual se crean nuevas clases definidas en términos
de clases ya existentes. La herencia relaciona clases en modo jerárquico esto permite
que una clase herede todas las variables y métodos de su clase [6].

La herencia es una característica de la metodología de programación Orientada a


Objetos por la cual los objetos pueden heredar atributos o métodos de otros objetos.
En la herencia existirá una clase base también llamada clase padre o superclase de la
cual heredan atributos o métodos las clases derivadas, clases hijas o subclases si el
especificador de acceso lo permite. Cuando la clase hija hereda de una sola clase
padre se llama herencia simple y cuando la clase hija hereda de varias clases padres
se llama herencia múltiple. Java no soporta herencia múltiple, C++ si lo hace. El
manejo de herencia permite la reutilización y evitar redundancia, en la figura 4 se
mostró un ejemplo de como se representa una relación de herencia entre clases.

2.4. Polimorfismo
El polimorfismo (múltiples formas) es la utilización de operadores o funciones de
formas diversas, dependiendo de cómo se estén operando [5]

El polimorfismo es una propiedad que permite que un objeto tenga un comportamiento


distinto, en función a una determinada realidad [4].
23
Metodologías de Programación: Programación Orientada a Objetos

El polimorfismo es una característica que permite implementar múltiples formas de un


mismo método, dependiendo cada una de ellas de la clase sobre la que se realice la
implementación. Esto hace que se pueda acceder a una variedad de métodos distintos
(todos con el mismo nombre) utilizando exactamente el mismo medio de acceso [6].

El polimorfismo es una característica de la metodología de programación Orientada a


Objetos por la cual un mismo método puede comportarse de manera distinta en clases
diferentes. Por esta característica, podemos enviar el mismo mensaje a objetos de
diferentes clases, de forma que cada uno de ellos responde a ese mismo mensaje de
modo distinto dependiendo de su implementación. No confundir con sobrecarga, el
polimorfismo se aplica sólo a métodos que tienen la misma signatura pero están
definidos en clases diferentes. La signatura de un método es una combinación de su
nombre y el tipo y número de argumentos que se pasan al mismo. Por ejemplo el
método sumar para un objeto entero significará suma, mientras que para un objeto
String significará concatenación. El método área en un rectángulo tendrá un
comportamiento diferente que el método área de un triángulo.

24
Metodologías de Programación: Programación Orientada a Objetos

REFERENCIAS BIBLIOGRÁFICAS

[1] Grady Booch, Análisis y diseño orientado a Objetos con Aplicaciones, Segunda Ed.
México: Addison Wesley, 1995.

[2] Alfredo Weitzenfeld, Ingeniería de Software Orientada a Objetos con UML, Java e
Internet, México: Thomson. Learnign, inc., 2005.

[3] Shari Lawrence Pfleeger, Ingeniería de Software: Teoría y Práctica, Buenos Aires:
Perarson Educación, 2002.

[4] J. Castañeda, Desarrollo de Aplicaciones en Java, Primera Ed. Perú: Ritisa Graff,
2007.

[5] Luis Joyanes, Fundamentos de Programación I y algoritmos, estructuras de datos y


objetos I, Tercera Ed., España: Madrid, MgGraw – Hill, 2003.

[6] Fco. Javier Ceballos Sierra, Java 2: Curso de Programación, Segunda Ed., México
D.F.: Alfaomega Grupo Editor, 2003.

[7] Perdita Stevens, Utilización de UML en Ingeniería de Software con Objetos y


Componentes, Madrid: Pearson Educación, 2002.

[8] Bertrand Meyer, Construcción de un Software Orientado a Objetos, Madrid:


Pretince Hall, 1999.

[9] Rogers Pressman, Ingeniería de Software: Un enfoque práctico, México D.F.: Mc


Graw-Hill, 2005.

[10] Bruce Eckel, Piensa en Java, 2da Ed., Madrid: Pearson Educación, 2002.

[11] Antonio De Amescua, Análsisi y Diseño Estructurado y Orientado a Objetos de


Sistemas Informáticos, España: Madrid, MgGraw-Hill.

[12] James Rumbaugh, El Lenguaje Unificado de Modelado: Manual de Referencia,


Madrid: Pearson Educación, 2000.

25

Potrebbero piacerti anche