viernes, 19 de octubre de 2012

Encapsulamiento y Herencia en la programación



En la clase de hoy repasamos los tipos de encapsulamiento que son de tres tipos:

La encapsulación es un mecanismo que consiste en organizar datos y métodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulación garantiza la integridad de los datos que contiene un objeto.

 

Ocultación de datos

El usuario de una clase en particular no necesita saber cómo están estructurados los datos dentro de ese objeto, es decir, un usuario no necesita conocer la implementación Al evitar que el usuario modifique los atributos directamente y forzándolo a utilizar funciones definidas para modificarlos (llamadas interfaces), se garantiza la integridad de los datos (por ejemplo, uno puede asegurarse de que el tipo de datos suministrados cumple con nuestras expectativas bien que los se encuentran dentro del periodo de tiempo esperado).

La encapsulación define los niveles de acceso para elementos de esa clase. Estos niveles de acceso definen los derechos de acceso para los datos, permitiéndonos el acceso a datos a través de un método de esa clase en particular, desde una clase heredada o incluso desde cualquier otra clase. Existen tres niveles de acceso:

público: funciones de toda clase pueden acceder a los datos o métodos de una clase que se define con el nivel de acceso público. Este es el nivel de protección de datos más bajo..
protegido: el acceso a los datos está restringido a las funciones de clases heredadas, es decir, las funciones miembro de esa clase y todas las subclases.
privado: el acceso a los datos está restringido a los métodos de esa clase en particular. Este es nivel más alto de protección de datos.
  
 
La herencia es un mecanismo de reutilización de software que permite crear nuevas clases que adquieren los atributos y métodos de alguna clase predefinida, es decir, una clase ya hecha.





Algunas de las propiedades de las clases heredadas:
 
• Permite manipular las semejanzas entre objetos mediante una jerarquía
• Cuando una clase hereda de otra se dice que la subclase hereda de la superclase.
• Cuando la subclase hereda de la superclase, la primera 
hereda todos los métodos y variables de la superclase.

Supongas que tenemos una clase llamana Persona y que tiene como atributos: nombre edad

1
2
3
4
5
6
7
8
9
10
11
12
13
publicclassPersona{
    privateintedad;
    privateString edad;

    publicPersona(intedad, String nombre){
        this.edad  = edad;
        this.nombre = nombre;
    }

    publicStringdatosGenerales(){
        return"la edad es: "+ edad + " y el nombre es: "+ nombre;
    }
}

Si necesitamos hacer mas clases que sean tan parecidas a la clase Persona entonces es donde debemos usar la herencia, la cual se hace de la siguiente forma.

1
2

publicclassEstudiante extendsPersona{
    privateintcarnet;




Donde access es una de las tres palabras claves: public, private o protected. El especificador access determina cuántos elementos de la clase base son heredados por la clase derivada.
La siguiente tabla muestra claramente los tipos de derivación:



Tipo de derivación
(access)

Miembros de la clase base Acceso de la clase privada
Private Private
public
protected
Innaccesible
private
private
Public Private
public
protected
Innaccesible
public
protected
protected Private
public
protected
Innaccesible
protected
protected


El tipo de derivación que se solicita cuando se crea una clase derivada determina cómo se heredan los miembros de la clase derivada.  La tabla anterior, muestra los tres tipos de derivación, el tipo de acceso a los miembros de la clase base y el acceso permitido a la clase derivada.

Una derivación privada implica que:
  • Los datos miembros privados heredados de una clase base son innacesibles por la clase derivada.
  • Los miembros públicos y protegidos heredados de la clase base son miembros privados en la clase derivada.

Una derivación pública implica que:
  • Los datos miembros privados heredados de una clase base son innacesibles por la clase derivada.
  • Los miembros públicos heredados de la clase base son miembros públicos en la clase derivada.
  • Los miembros protegidos heredados de la clase base son miembros protegidos en la clase derivada.
Una derivación protegida implica que:
  • Los datos miembros privados heredados de una clase base son innacesibles por la clase derivada.
  • Los miembros públicos heredados de la clase base son miembros públicos en la clase derivada.
  • Los miembros públicos y protegidos heredados de la clase base son miembros protegidos en la clase derivada.
Como puede verse los miembros de la clase privados son siempre inaccesibles por una clase derivada por lo que, para acceder a ellos, deben utilizarse las funciones miembro heredadas por la clase derivada.  Cualquier función miembro nueva que se escriba pra la clase derivada no tendrá acceso a esos miembros, de modo que deben utilizarse las funciones miembro heredadas de la clase base.


En la clase de hoy del dia de ayer repasamos los tipos de encapsulamiento que son de tres tipos:

segun http://es.kioskea.net/contents/poo/encapsul.php3

Lana clase llamana Persona y que tiene como atr

    public String datosGenerales(){
        return "la edad es: " + edad + " y el nombre es: " + nombre;
    }
}
Si necesitamos hacer mas clases que sean tan parecidas a la clase Persona entonces es donde debemos usar la herencia, la cual se hace de la siguiemnte forma.
1
2
public class Estudiante extends Persona{
    private int carnet;

No hay comentarios:

Publicar un comentario