Objetos, Clases, Herencia, Polimorfismo y Encapsulamiento
1. INSTITUTO TECNOLÓGICO SUPERIOR “SAN GABRIEL”
ANALISIS Y DISEÑO ORIENTADO A OBJETOS
NOMBRES: Graciela Cefla
SEMESTRE: Cuarto Sistemas
FECHA: 11/10/2016
TAREA N°: 1
TEMA: Conceptos y ejemplos de los siguientes términos: Objeto, Clase,
Herencia, Polimorfismo, Encapsulamiento.
2. OBJETO
Un objeto es una entidad provista de un conjunto de propiedades o atributos (datos),
de un comportamiento o funcionalidad (métodos) y de sus posibles relaciones con otros
objetos.
El concepto de objeto tiene un concepto equivalente al objeto de nuestro mundo real.
En nuestro entorno siempre estamos en constante relación con objetos: los creamos, los
usamos, los modificamos cambiando sus atributos, características o propiedades, los
relacionamos con otros objetos, etc.
Por ejemplo tomemos el objeto Automóvil.
Un automóvil es un objeto bastante pesado que tiene un conjunto de propiedadescomo
su identificación (placa), color, marca, modelo, accesorios, etc. Tiene también un
conjunto de funcionescomo la de desplazarse, detenerse, ponerse en marcha. Podemos
cambiarle de color, aumentar o quitar sus accesorios; es decir, podemos modificar sus
propiedades. Tienen de la capacidad de ser activados para poner en acción sus
funcionalidades; es decir, disponemos de un procedimiento para ponerlo en marcha,
avanzar en retroceso, detenerlo, voltear a la izquierda o derecha; es decir, mediante un
conjunto de métodos podemos darle uso al objeto automóvil.
En la POO el objeto es el automóvil; las propiedades de este objeto son sus
características y los métodos lo constituyen las funcionalidades o procedimientos con
los cuales hacemos uso del objeto y modificamos su estado o contenido.
En el Excel podemoshablar del objeto Celda. Este objeto tiene dimensiones, color de
fondo, tipo de borde, tiene un contenido o valor. Posee algunas funcionalidades que nos
permiten cambiarlo de tamaño, de color de fondo, de contenido. El objeto celda
pertenece al objeto Rango y está relacionada con él y tiene otras relaciones con otros
objetos como el objeto Hoja, el objeto Gráfico, Libro, etc.
CLASE
Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos)
de los futuros objetos.
Los objetos son instancias de una clase. Usando el símil “variable – tipo” de la
programación estructurada, se entiendo que un objeto es una variable que tiene el
comportamiento y estados del tipo (objeto)
Veamos la creación de la clase Persona
1
2
3
4
5
6
7
8
9
public class Persona {
public String nombre;
public int edad;
public void correr(){
/* por implementar */
}
}
3. y dentro del cuerpo del programa instanciamos una nueva Persona denominada
Esteban:
1
2
3
4
5
6
7
8
9
10
11
public class Main {
public static void main(String[] args) {
Persona esteban = new Persona();
// Ahora que esteban es persona, puede correr
esteban.corre();
}
}
HERENCIA
Se expresa como Herencia, cuya estructura jerárquica nos permite extender clases
heredando todo (comportamientos y estados) desde una clase padre o Super Clase. Las
clases que hereden de una Super Clase se denominan Clases Hijas o Sub Clases.
Ejemplo: Imaginemos que una Persona ha sido expuesta a una extraña radiación y
ahora tiene super poderes, por lo que no deja de ser persona, pero ahora tiene nuevos
comportamientos y estados, por lo que diremos que la nueva clase SuperHeroe hereda
de la clase Persona:
POLIMORFISMO
El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes
sintácticamente iguales a objetos de tipos distintos. El único requisito que deben
cumplir los objetos que se utilizan de manera polimórfica es saber responder al
mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que se
utilice, más allá de las obvias diferencias sintácticas.
Por ejemplo, en un lenguaje de programación que cuenta con un sistema de
tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u
objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se
utilizan de modo polimórfico sean parte de una jerarquía de clases.
ENCAPSULAMIENTO
Se denomina Encapsulamiento al ocultamiento del estado, es decir, del dato miembro
de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas
para ese objeto.
Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se
reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos
4. asociados de un objeto contra su modificación por quien no tenga derecho a acceder a
ellos, eliminando efectos secundarios e interacciones.
De esta forma el usuario de la clase puede obviar la implementación de los métodos y
propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el
usuario pueda cambiar su estado de maneras imprevistas e incontroladas.
Es el proceso de almacenar en una misma sección los elementos de una abstracción
que constituyen su estructura y su comportamiento; sirve para separar el interfaz
contractual de una abstracción y su implantación.
La encapsulación se refiere al hecho de “ocultar” una variable de nuestra clase hacia el
exterior, veamos un ejemplo relativo a nuestra clase Vehículo. Supongamos queremos
saber el valor de la velocidad, para acceder al valor, simplemente tendríamos que
hacer:
1
2
System.out.println("Velocidad: " + vehiculo.velocidad );//Mostrar velocidad
vehiculo.velocidad = 10;//Asignar velocidad
Pero supongamos que nosotros no queremos que se pueda acceder de esta manera (por
ejemplo, en el contexto que tengamos una clase Cliente, perteneciente a un banco,
nosotros no queremos que se pueda cambiar el valor del saldo del cliente desde afuera
de la clase), por lo tanto, tendríamos que hacer una encapsulación de nuestra variable
(en este caso, la variable velocidad), para esto, en la declaración de nuestra variable,
debemos anteponer la palabra reservada private antes del tipo de nuestra variable,
con esto, le estamos diciendo que nuestra variable solo puede ser vista desde dentro de
nuestra clase (es decir, solo podremos acceder a ella desde las funciones internas de
nuestra clase). Aquí un ejemplo de como convertir nuestra varible velocidad en
privada:
1 private int velocidad;
Ahora si intentamos acceder a nuestra variable velocidad, no podremos hacerlo. Nota:
las variables que no anteponen ninguna palabra antes del tipo, se asume que son
publicas (que es la manera en la que hemos usado hasta ahora).Ahora, supongamos
que queremos acceder al valor de la variable (por ejemplo si queremos hacer una
consulta de saldo en otra aplicación), pero no queremos que se modifique desde afuera,
para esto, simplemente debemos crear una función que nos retorne el valor, tal como
sigue:
1
2
3
public int getVelocidad() {
return velocidad;
}</pre>
La función anterior, suele llamarse getter en el mundo de la programación, por el otro
lado, existe una función setter, la cual se encarga de asignar un valor, esto se hace
para tener control total de lo que podemos y no podemos hacer con nuestra variable,
aquí les dejo un ejemplo de un setter:
1
2
3
4
public void setVelocidad(int velocidad) {</pre>
this.velocidad = velocidad;
}
<pre>
Quiero aclarar que el término getter y setter son solo convenciones utilizadas,
básicamente es decir que creamos una función para obtener un dato especifico (getter)
y otra función para asignar un dato específico (setter).
5. Si aún no queda claro, quiero hacer notar la diferencia entre public y private. Cuando
decimos que una variable, clase, función, etc. es de tipo public, estamos diciendo que se
puede acceder desde cualquier parte a ella, si decimos que es private, estamos diciendo
que sólo se podrá acceder a ella desde dentro de la clase donde se declara.
También existe otro tipo de control de acceso, el cual es de tipo protected, esto quiere
decir que solamente se puede acceder a variables, funciones, etc. de este tipo
solamente desde la clase en donde se declara, y las clases heredadas de esta