Você está na página 1de 26

SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

INTRODUCCIÓN A LA PROGRAMACIÓN

SEMANA 8
Introducción a la Programación
Orientada a Objetos. Parte II

Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni
utilizar los contenidos para fines comerciales de ninguna clase.
IACC
1
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

APRENDIZAJE ESPERADO
Analizar propiedades fundamentales, modos de acceso y
sobrecarga de métodos y operadores en la Programación
Orientada a Objetos.

IACC
2
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

APRENDIZAJE ESPERADO..................................................................................................................... 2
INTRODUCCIÓN ................................................................................................................................... 4
1. PROPIEDADES FUNDAMENTALES DE LA POO ............................................................................. 5
1.1. INTERFACES ......................................................................................................................... 5
1.2. POLIMORFISMO .................................................................................................................. 9
1.3. HERENCIA .......................................................................................................................... 10
1.4. ABSTRACCIÓN.................................................................................................................... 12
1.5. MODULARIDAD ................................................................................................................. 15
1.6. ENCAPSULAMIENTO .......................................................................................................... 15
2. MODOS DE ACCESO................................................................................................................... 16
2.1 MODO PÚBLICO (PUBLIC).................................................................................................. 18
2.2 MODO PRIVADO (PRIVATE) ............................................................................................... 18
2.3 MODO PROTEGIDO (PROTECTED) ..................................................................................... 18
3. SOBRECARGA DE MÉTODOS Y DE OPERADORES .......................................................................... 19
3.1. CONCEPTO ......................................................................................................................... 19
3.2. UTILIDAD ........................................................................................................................... 21
3.3. OPERADORES UNARIOS Y BINARIOS ................................................................................. 22
COMENTARIO FINAL.......................................................................................................................... 24

IACC
3
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

INTRODUCCIÓN
La Programación Orientada a Objetos tiene Es importante reconocer las funcionalidades
un conjunto de pilares que establecen la de la POO tal como los modos de acceso, las
base y la robustez de este paradigma de sobrecargas y todos los elementos que
programación. permitirán que el programador pueda
modelar y realizar programas con
Estos pilares o características de la POO abstracciones de datos y definiendo
deben conocerse y utilizarse como una entidades asociadas a la realidad del
filosofía de trabajo a la hora de programar en problema que resuelve por medio del
lenguajes que trabajen con la orientación a
computador.
objetos.

Programar es comprender - Kristen Nygaard

IACC
4
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

1. PROPIEDADES FUNDAMENTALES DE LA POO


Luego de conocer los fundamentos y conceptos básicos de la POO, a continuación se revisarán las
propiedades que distinguen a este paradigma de programación de otros:

La Programación Orientada a Objetos tiene como elemento principal el


“objeto”, el cual es una unidad que contiene todas sus características y
comportamientos en sí misma, lo cual lo hace como un todo
independiente pero que se interrelaciona con objetos de su misma
clase o de otras clase, como sucede en el mundo real.

1.1. INTERFACES
Antes de definir una interfaz se debe tener en claro que en la Programación Orientada a Objetos
una interfaz no se refiere a “entorno grafico”, sino representa una descripción de uno o más
métodos que una clase puede implementar. A continuación, se plantea un ejemplo que permite
reconocer este concepto:

EJEMPLO

Una persona es salvavidas. Se entenderá entonces que, de acuerdo con su oficio, este
individuo es capaz de responder ante una emergencia en el agua.

En este caso se está describiendo una función de lo que hace un salvavidas, pero además
se debe considerar que una persona es quien tiene implementada esta condición.

En resumen, en la interfaz “salvavidas” se encuentran dos métodos: el relativo a su oficio


y el que corresponde a la categoría “persona”.

IACC
5
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Figura 1: Esquema de funcionamiento de una interfaz.


Fuente: https://goo.gl/z2Srzb

Microsoft (2015) menciona que una interfaz corresponde a una agrupación de métodos abstractos
y constantes cuyo objetivo es determinar cómo funciona una clase, es decir, la interfaz es una
plantilla o molde. La interfaz como tal no tiene ningún uso, solo se definen su tipo, argumento y
tipo de retorno.

Algunas características que se pueden destacar son:

 La visibilidad de una interfaz puede ser o package o public.


 Todos los métodos declarados en una interfaz son public y abstract.
 Los métodos de una interfaz no pueden ser estáticos, ya que estos deben ser redefinidos,
y al ser estáticos les sería imposible.
 Las clases pueden implementar una o más interfaces.
 Una interfaz puede heredar de una o varias interfaces, pero no pueden implementar
NADA. Las clases solo pueden heredar de otra clase, pero las interfaces pueden hacer
herencia múltiples.
 Las interfaces no tienen constructor, por lo que no es posible crear objetos con el
operador “new” de esta. A diferencia de las clases que sí necesitan un constructor.
 Si se implementa en una clase una interfaz, y esta hereda de otra, la clase deberá
implementar todos los métodos de la interfaz que implementa y de los métodos que esta
hereda.

Ejemplo de declaración de una interfaz en JAVA:

IACC
6
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Imagen 1: Ejemplo de declaración de una interfaz en JAVA.


Fuente: http://picarcodigo.blogspot.cl/2012/10/interfaces.html

Es importante destacar que en la imagen se tiene:

 Dos características o atributos de tipo numérico double. Estos atributos denominados


NUMERO1 y NUMERO2.
 4 métodos (suma, resta, multiplicación y división). A pesar de no estar indicado son de tipo
public y abstract, esto lo define el lenguaje de programación.

A continuación, se presenta una implementación de la interfaz en una clase:

IACC
7
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Imagen 2: Implementación de una interfaz en una clase.


Fuente: http://picarcodigo.blogspot.cl/2012/10/interfaces.html

En la imagen 2 se puede observar:

 Se crea una clase utilizando el método MAIN y se implementa la interfaz desarrollada en el


ejemplo anterior “interfaz operaciones”.
 Se redefinen los métodos de la interfaz.
 Por no utilizar constructores se llaman a los atributos de la siguiente manera:
 Operaciones.NUMERO1
 Operaciones.NUMERO1
 Se crea un objeto de la clase principal que llama a los métodos y los muestra en pantalla.

IACC
8
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Revisa el ejemplo planteado en los slides 13 –al 24 disponible en:

http://slideplayer.es/slide/10779589/

1.2. POLIMORFISMO
De acuerdo con Canchala (s. f.) puede ocurrir en la programación orientada a objetos que un
método o una acción corresponda o coincida en diferentes clases o incluso en una misma clase
pero realizando una función diferente. El polimorfismo da la posibilidad que dos métodos
implementen distintas acciones a pesar de tener el mismo nombre y esto dependerá del objeto
que ejecute el método.

Diagrama 2: Representación de polimorfismo.


Fuente: http://stadium.unad.edu.co/ovas/10596_9839/polimorfismo.html

Otro ejemplo se presenta en la siguiente imagen:

IACC
9
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Forma
- Área
- CalcularÁrea ()

Círculo Rectángulo Cuadrado


- Área - Área - Área
- CalcularÁrea () - CalcularÁrea () - CalcularÁrea ()

A pesar que el método es CalculaÁrea (), para cada objeto el cálculo es diferente y ejecuta
diferentes ecuaciones para determinar esta área.

Con esto se define que el polimorfismo representa la capacidad que tienen los objetos de una
clase para actuar o responder al mismo mensaje en función de los parámetros utilizados cuando
fueron invocados.

1.3. HERENCIA
De acuerdo con Roldán (2016), la herencia destaca como una propiedad de la POO que permite
que a partir de una clase se creen nuevas clases atributos y métodos de la clase madre. La ventaja
de esta propiedad radica en que se tiene la capacidad de definir nuevos atributos y métodos para
la subclase creada. La herencia permite definir una estructura jerárquica entre clases que va
especializando a las mismas dentro del programa.

Otra ventaja para el programador es que no debe empezar de cero la creación de clases, puede
disponer de una biblioteca de clases y a partir de allí generar las que le sean útiles de acuerdo con
los atributos o métodos que se requieran.

En la siguiente imagen se observa cómo a partir de una clase se heredan métodos o atributos a
dos subclases diferentes.

IACC
10
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Diagrama 3: Herencia a dos subclases.


Fuente: http://www.ciberaula.com/imagenes/hs.jpg

La siguiente imagen muestra el caso en el que una clase tiene herencia múltiple, es decir, hereda
de dos clases madres diferentes:

Diagrama 4: Herencia múltiple.


Fuente: http://www.ciberaula.com/articulo/herencia

Finalmente, la imagen muestra la propiedad de herencia de la clase vehículo en las subclases taxi y
autobús, heredando métodos y campos comunes:

IACC
11
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Fuente: https://goo.gl/A4n6eT

Para implementar la herencia, el código debiera quedar de la siguiente manera:

public class NombredelaClase extends ClaseaHeredar

1.4. ABSTRACCIÓN
De acuerdo con Canchala (s. f.), la abstracción es una propiedad que consiste en que un objeto
tiene características propias que lo hacen diferente y lo distinguen de otros tipos de objetos. La
abstracción se enfoca con la visión externa del objeto.

Las abstracciones se pueden dar en diferentes niveles de acuerdo con Canchala (s. f.):

IACC
12
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Tipo de abstracción Descripción


Abstracción de entidades Cuando un objeto representa un modelo útil
de una entidad que se desea.

Abstracción de acciones Un objeto representa un conjunto de


operaciones con funciones del mismo tipo.

Abstracción de máquinas virtuales Un objeto agrupa operaciones virtuales de


nivel superior de control o de operaciones.

Abstracción de coincidencia Un objeto almacena un conjunto de


operaciones sin relación alguna entre sí.

De acuerdo con Álvarez (2014) la Programación Orientada a Objetos puede definir jerarquías por
medio de la herencia. Por ejemplo la clase animal puede tener subclases como animales
mamíferos, invertebrados, etc., dentro de la subclase mamíferos se puede representar una vaca,
un perro, etc.

En este sentido, siguiendo el planteamiento anterior, un animal puede abarcar desde un zancudo
hasta una ballena incluso un ser humano. Todas estas representaciones de los animales son
admitidas por el cerebro humano que de forma genérica define “los seres vivos de un reino”. En
este sentido, para describir o definir lo que es un animal en general, se debe ser muy genérico ya
que las especificaciones no aplican para todos los animales, por ejemplo no se puede decir “los
animales nacen de huevos” ya que esto no aplica para todos los animales.

Ahora bien, esto conlleva a definir que una abstracción es justamente utilizar palabras o
descriptores sin mucho detalle para poder generalizar y tener una abstracción de las clases.

Álvarez (2014), dice textualmente:

“¿en el mundo real hay un “animal” como tal? No, ni tan siquiera hay un “mamífero”. Lo

que tenemos son especímenes de “perro” o “vaca”, “hormiga”", “cocodrilo”, “gorrión”

pero no “animal” en plan general. Es cierto que un perro es un animal, pero el concepto

final, el ejemplar, es de perro y no animal.

Por tanto “animal”, en términos del lenguaje común, podemos decir que es un concepto

genérico, pero no una concreción. En términos de POO decimos que es un concepto

abstracto, que implementaremos por medio de una clase abstracta. No instanciaremos

IACC
13
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

animales como tal en el mundo, sino que instanciaremos especímenes de un tipo de

animal concreto”.

Al implementar en programación la abstracción, se pueden observar funciones tal como:

public abstract function nacer();

Así, una clase abstracta tiene definidos métodos abstractos sobre los que no se pueden instanciar
objetos. Entonces, la abstracción se centra en definir las características esenciales de un objeto, en
relación a la perspectiva del programador.

Imagen 3: Abstracción de la clase gato.


Fuente: https://jvan010.files.wordpress.com/2011/08/abstraccion.jpg

IACC
14
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

1.5. MODULARIDAD
Canchala (s. f.), define que la modularidad se basa en descomponer un programa o dividirlo en
módulos que se puedan compilar por separado, pero conectados entre sí. La POO debe permitir:

 Descomponer un sistema complejo.


 Componer un sistema complejo por medio de sus módulos.
 Comprender el sistema desde sus partes para entender el todo.

La siguiente figura representa los módulos que se deben programar para trabajar con el objeto
perro:

Imagen 4: Módulos para trabajar con el objeto perro.


Fuente: https://goo.gl/YTp44i

1.6. ENCAPSULAMIENTO
Roldán, Á. (2016) define el encapsulamiento como un mecanismo de organización de atributos y
métodos del objeto que se implementa, esto, con el fin de garantizar la integridad de los datos
que contiene el objeto.

Esta capacidad permite agrupar datos en un entorno con límites definidos de elementos distintos.
Para encapsular en POO primero se debe generalizar la abstracción y a partir de allí se definen los
límites que es lo que hace el encapsulamiento.

Un ejemplo real es cuando una persona decide ir a ver televisión: esta persona se preocupa solo
por cambiar de canal y subir o bajar el volumen. El funcionamiento de la televisión y la forma en
que los canales se muestran se mantienen ocultas al usuario ya que esto no le importa.

El encapsulamiento mantiene oculto cualquier proceso interno dándole al programador acceso


solo a lo que este necesita. Esta cualidad permite entonces restringir y ocultar el proceso de cada
dato que pertenece a una clase y solo pueden ser modificados por las operaciones definidas para
ese espacio. Esto protege de la modificación garantizando el flujo del programa.

IACC
15
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Una clase y un método funcionan como una cápsula. Un ejemplo es un programa de televisión, el
usuario solo ve lo que se reproduce en la pantalla pero no conoce cómo se realizó el proceso ya
que está encapsulado.

2. MODOS DE ACCESO
Al declarar una clase en POO con sus atributos y métodos, se debe definir un rango de acción de
las mismas o una forma de acceso. Estos ámbitos de acción pueden ser principalmente de tres
tipos:

 Público
 Privado
 Protegido

De acuerdo con Canchala (s. f.) las clases deben declararse públicas y los atributos deben
declararse como privados. Al definir los atributos privados no se puede ingresar a ellos desde otras
clases, al menos que se utilicen métodos getters y setters.

A continuación se presenta un ejemplo con la definición de una clase en JAVA, en el cual se


definen clases públicas y métodos privados.

La clase granja quedará definida como:

IACC
16
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Imagen 5: Clase granja.


Fuente: https://rootear.com/desarrollo/poo-niveles-acceso

IACC
17
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

La clase Animal queda definida de la siguiente forma:

public class Animal {

private String nombre;


private int edad;
private double peso;

Imagen 6: Clase animal.


Fuente: https://rootear.com/desarrollo/poo-niveles-acceso

De esta forma, se deben generar métodos set y get para los atributos que sean necesarios.

2.1 MODO PÚBLICO (PUBLIC)


De acuerdo con Rodríguez (s. f.) cuando se utiliza el modo público se puede acceder desde fuera
de la clase o la variable. Es decir, desde la instancia de la clase se puede acceder a los datos y no
solo desde el código interno de la clase. Para declarar una variable/función como pública, se le
antepone la palabra clave “public”.

2.2 MODO PRIVADO (PRIVATE)


Rodríguez (s. f.) explica que el modo privado es lo opuesto al anterior. A las clases, variables o
funciones privadas solo se puede acceder desde la misma clase. El modo privado permite más
control sobre la clase, y sobre la forma de encapsular, procesar sus métodos y manejar sus
variables.

2.3 MODO PROTEGIDO (PROTECTED)


De acuerdo con Rodríguez (s. f.) este es un modo intermedio, no permite el acceso a las clases
desde una instancia (tal como ocurre en el modo público) pero sí se puede acceder desde las
subclases, sin importar que estén o no en el mismo paquete o librería.

Esto implica que si una clase hereda de otra, tendrá acceso a sus variables y funciones protegidas
de la súper clase.

IACC
18
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

3. SOBRECARGA DE MÉTODOS Y DE OPERADORES


3.1. CONCEPTO
EcuRed (s. f.) señala que la sobrecarga es el procedimiento donde se implementa el polimorfismo
en la programación orientada a objetos. La sobrecarga implica que se pueden definir dos o más
métodos dentro de una misma clase que comparten el mismo nombre pero la declaración de
parámetros son diferentes. Es una capacidad que tienen los objetos de una clase para responder al
mismo mensaje en función de los parámetros utilizados durante su innovación.

La siguiente figura muestra la declaración de un método sobrecargado:

Imagen 7: Método sobrecargado.


Fuente: https://goo.gl/i5VJc2

En el siguiente ejemplo se define una clase con 3 métodos y se muestra la sobrecarga, creando
una diferencia en el tipo de parámetro y el método que llamará a cada uno de ellos:

IACC
19
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

class Sobrecarga {

public void prueba()


{
System.out.println(“\n Metodo sin Argumentos:()”);
}

public void prueba(int x) // Sobrecarga de prueba() con un parámetro tipo


int
{
System.out.print(“\n Metodo con un Argumento:”);
System.out.println(“ x= “ +x);
}

public void prueba(double x, double y, double z) //Sobrecarga de prueba()


con tres parámetros tipo double
{
System.out.print(“\n Metodo con tres Argumentos:”);
System.out.println(“ x= “ +x+ “ y= “ + y + “ z= “ + z + “\n”);
}
}

class Demostracion Sobrecarga {

public static void main (String [] var)


{
Sobrecarga objeto= new Sobrecarga(); //Se crea un Objeto de nombre
Objeto para llamar a los Métodos Sobrecargados

objeto.prueba();
objeto.prueba(30);
objeto.prueba(−3.5,20.0,18.6);
}
}

IACC
20
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

3.2. UTILIDAD
De acuerdo con EcuRed (s. f.), un método con sobrecarga se utiliza para reutilizar el nombre de un
método pero con argumentos distintos. Para utilizar la sobrecarga, el autor plantea las siguientes
reglas:

 Los métodos sobrecargados deben de cambiar la lista de argumentos en cada llamado.


 Pueden cambiar el tipo de retorno, esto es algo opcional.
 Pueden cambiar el modificador de acceso (público, privado, protegido).
 Pueden declarar nuevas o más amplias excepciones.
 Un método puede ser sobrecargado en la misma clase o en una subclase.

Es importante destacar que el método sobrecargado se llamará con


los argumentos que se envían al mismo durante la llamada. Si se
invoca a un método con un string como argumento, se ejecutará el
método que tome un string como argumento, si se manda a llamar al
mismo método pero con un float como argumento, se ejecutará el
método que tome un float como argumento y así sucesivamente. Si se
invoca a un método con un argumento que no es definido en ninguna
de las versiones sobrecargadas, entonces el compilador arrojará un
mensaje de error.

La siguiente imagen muestra el uso de una sobrecarga de métodos:

IACC
21
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

Imagen 8: Uso de sobrecarga de método.


Fuente: http://eii.ucv.cl/pers/guidi/cursos/ti/Java-POO-3-SobrecragaConstructoresYMetodos.pdf

Luego de implementar el método, se muestra una clase en la cual se aplica o se hace un llamado a
la sobrecarga del método:

Imagen 9: Aplicación de sobrecarga del método.


Fuente: http://eii.ucv.cl/pers/guidi/cursos/ti/Java-POO-3-SobrecragaConstructoresYMetodos.pdf

3.3. OPERADORES UNARIOS Y BINARIOS


La sobrecarga de operadores permite al programador establecer nuevos significados a los
operadores existentes en el lenguaje de programación. Hay lenguajes como C++ que permite la
sobrecarga de operadores para facilitar la forma de manipular los tipos de datos definidos por el
usuario.

IACC
22
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

De acuerdo con EcuRed (s. f.), los operadores unarios actúan sobre un solo argumento. Un ejemplo
de operadores unarios son: el NOT o negación y los operadores ++ o – que incrementan o
decrementan el valor de un argumento.

Los operadores binarios actúan sobre dos argumentos, por ejemplo, el signo + se utiliza para
realizar la suma de dos valores, por lo tanto, se requieren de esos dos elementos (números) para
generar un resultado.

La sobrecarga de operadores dependerá del lenguaje de programación que se utilice y el


compilador tendrá la capacidad de conocer cuál es la función sobrecargada que debe interpretar.
Las funciones operador tiene la misma prioridad que las operaciones intrínsecas utilizadas por el
mismo operador.

De acuerdo con EcuRed (s. f.), las restricciones usuales son:

1) No se puede construir sus propios operadores. Se pueden sobrecargar solo los operadores
definidos en el lenguaje.
2) La sobrecarga de operadores funciona solo cuando se aplica a objetos de una clase.
3) No se puede cambiar la precedencia o asociatividad de los operados en C++ (idéntica a las
reglas de C ANSI).
4) No se puede cambiar un operador binario para funcionar con un único objeto o unario.
5) No se puede cambiar un operador unario para funcionar con dos objetos.

IACC
23
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

COMENTARIO FINAL
La programación orientada a objetos representa un cambio radical en el estilo tradicional de
programar. La complejidad de los sistemas hace día a día que el programador deba hacer su
código más rentable y por tanto tener una mirada del mundo real.

Esta composición del mundo real en objetos es uno de los legados de la POO, pero se deben
conocer sus pilares y características que la distinguen de otros paradigmas para lograr dominar
esta forma de programar y de reflejar la realidad, tal como lo es el manejo de la herencia, el
polimorfismo, la abstracción y el encapsulamiento. Con esto el estudiante – programador tendrá
herramientas actualizadas y robustas en la forma en que se desarrollan sistemas informáticos en
un contexto actual.

IACC
24
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

REFERENCIAS
Álvarez M. (2014). Qué es la Programación Orientada a Objetos. Recuperado de:

https://www.desarrolloweb.com/articulos/499.php

Canchala, L. (s. f.). Fundamentos de POO. Recuperado de: https://goo.gl/H8LjrF

EcuRed (s .f.). Sobrecarga de operadores. Recuperado de:

https://www.ecured.cu/Sobrecarga_de_operadores

Microsoft (2015). Interfaces. Recuperado de: https://goo.gl/Uzxbfe

Rodríguez, A. (s. f.). Tipos de modificadores de acceso en java: conceptos public, private y

protected o protegido. Visibilidad. Recuperado de: https://goo.gl/5HjQfH

Roldán, Á. (2016). Programación Orientada a Objetos. Recuperado de: https://goo.gl/XoPamR

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE:

IACC (2018). Introducción a la Programación Orientada a Objetos. Parte II.


Introducción a la Programación. Semana 8.

IACC
25
SEMANA 8 – INTRODUCCIÓN A LA PROGRAMACIÓN

IACC
26

Você também pode gostar