Java Basico Unidad 6

download Java Basico Unidad 6

of 13

Transcript of Java Basico Unidad 6

  • 5/22/2018 Java Basico Unidad 6

    1/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 1 de 13

    Unidad 6. Constructores y Herencia

    Objetivos

    Definir e implementar las tcnicas de la programacinorientada a objeto, mediante la encapsulacin, losconstructores y la herencia con el lenguaje de programacinJAVA:

    Comparar mtodos de objeto y estticos

    Utilizar mtodos sobrecargados

    Utilizar la encapsulacin para proteger datos

    Crear constructores para inicializar objetos

    Definir e implementar el uso de la herencia

    Explicar la abstraccin

    Contenido de la unidad6.1 Mtodos y variables de objeto y estticos

    6.2 Usando la encapsulacin

    6.3 Describiendo el alcance de las variables

    6.4 Constructores

    6.5 Implementando la herencia en JAVA

    IntroduccinLa encapsulacin se refiere al hecho de ocultar una variable de nuestra clase

    hacia el exterior, de modo que solo pueda ser vista o ms bien accedida a travs

    de mtodos de la propia clase. Otra clase no la podr acceder, para poder acceder

    a ella desde otra clase, esta ltima tendr que llamar a un mtodo de la clase

    origen que pueda acceder a ella. Para encapsular un miembro de una clase en su

    declaracin debemos anteponer la palabra reservada private, siendo privada la

    variable miembro no podr ser accedido desde afuera, solo las funciones propias

    de la clase la podrn manipular.

    Los constructores son funciones especiales de la clase, que llevan el mismo

    nombre de la clase y se utilizan generalmente para inicializar sus datos miembros.

    Estas funciones no tienen ningn tipo de retorno, pero si pueden tomar parmetros

    en su llamada, para inicializar todos, algunos o solo un dato de la clase.

  • 5/22/2018 Java Basico Unidad 6

    2/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 2 de 13

    La herencia hace referencia a que una clase llamada derivada o hija puede

    heredar los miembros de otra clase, llamada generalmente como clase base o

    madre. Para establecer una relacin de herencia en JAVA se debe especificar lapalabra reservada extends en la declaracin de la clase hija, especificando a

    continuacin el nombre o identificador de la clase de que deseamos heredar. La

    clase derivada va a poseer todas las variables y mtodos de la clase base,

    excepto los declarados como privados.

    El encapsulamiento y la herencia junto al polimorfismo y la abstraccin son los

    pilares principales de la programacin orientada a objeto. Aunque ya hemos

    trabajado con mtodos en las unidades anteriores, en esta unidad estaremos

    trabajando ms a conciencia como se desarrollan e implementan los mtodos

    asociados a los principales conceptos de la programacin orientada a objetoutilizando el lenguaje de programacin JAVA.

    6.1 Mtodos y variables de objeto y estticos

    Generalmente el cdigo o programa que escribimos en JAVA est definido en los

    mtodos de las clases que escribimos en este lenguaje de programacin. Los

    mtodos estn pensados en la programacin orientada a objeto para que cada

    uno de ellos trabaje de forma independiente.

    La sintaxis en JAVA para definir un mtodo es la siguiente:

    [modificador] Tipo nombre_metodo ([argumentos])

    {

    // Cgido del mtodo

    };

    Dnde:

    modificador:es el mtodo de acceso al mtodo, ej. public

    Tipo:es el tipo de dato que retorna (En el caso de retornar algn valor).

    nombre_metodo: es el identificador del mtodo, el nombre que elige el

    programador para asignarle a su mtodo.

    argumentos: son valores con los que se llamar el mtodo. Los parmetros los

    podemos ver como variables locales al mtodo, pero su valor se inicializa con

    datos que llegan cuando lo llamamos. Un mtodo puede ser llamado sin

    argumentos.

  • 5/22/2018 Java Basico Unidad 6

    3/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 3 de 13

    Cdigo del mtodo: Es el cdigo que deseamos programar y ejecutar dentro del

    mtodo.

    Ejemplo: En la siguiente imagen podemos ver la clase cliente que hemos

    trabajado en unidades anteriores, ah podrn visualizar el mtodo

    muestraClienteInfo() este mtodo no retorna ninguna valor por lo tanto su tipo es

    void y no se le pasan argumentos por eso, dentro de los parntesis no escribimos

    nada.

    Para invocar o ejecutar un mtodo desde una clase diferente debemos de usar el

    operador punto (.) con la variable de referencia a objeto que hayamos definido

    para instanciar la clase en cuestin. Ej:

    Para invocar un mtodo en la misma clase solo basta con incluir como instruccin

    o sentencia el nombre del mtodo, indicando los argumentos correspondientes si

    existen.

  • 5/22/2018 Java Basico Unidad 6

    4/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 4 de 13

    Para pasar argumentos y retornar valores en los mtodos, es importante tener

    presente los conceptos fundamentales siguientes:

    Los mtodos pueden ser invocados con una lista de argumentos, los cuales

    funcionan como datos de entrada o de insumo a dicho mtodo.

    Los mtodos pueden retornar valor que puede ser utilizado posteriormente

    en el mtodo que originalmente realiz la llamada al mtodo que retorn el

    valor.

    Muchos mtodos que son declarados o usados desde la librera estndar de JAVA

    aceptan argumentos. El mtodo main debe ser escrito para aceptar valores

    cuando el programa es ejecutado desde la lnea de comando.

    public static void main (String args [ ])

    Los pasos a realizar para invocar o llamar un mtodo con argumentos son:

    Incluir los argumentos dentro del parntesis del mtodo que se llama.

    Pasar valores literales o variables como argumentos.

    Se debe usar comillas encerando argumentos que sean valores literales del

    tipo Strings.

    Pasar los argumentos requeridos como una lista de parmetros listados en

    el mismo orden en el cual ellos estn definido en la declaracin del mtodo

    que estamos invocando.

    Para declarar un mtodo que retorne un valor que retorne un valor, se debecolocar el tipo del valor que desea que el mtodo devuelva delante del

    identificador o nombre de mtodose. Para retornar un valor desde un mtodo, sedebe usar la palabra reservada return. Ej:

    public intsuma (int no1, int no2) {int resultado = no1 + no2;returnresultado;

    }

    Si invocamos un mtodo que retorna un valor, podemos utilizar ese valor

    retornado dentro de nuestro programa.

  • 5/22/2018 Java Basico Unidad 6

    5/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 5 de 13

    Ventajas de utilizar mtodos

    Los mtodos son el mecanismo por el cual lo objetos interactan. Enlos programas JAVA es comn tener mltiples objetos interactuando

    invocando mtodos de otros objetos. Las principales ventajas de

    utilizar mtodos son las siguientes:

    Los mtodos hacen que los programas sean ms fcilesde leer y mantener.

    Los mtodos hacen posible que el desarrollo y el

    mantenimiento se realicen de manera ms rpida.

    Los mtodos son la columna vertebral del concepto dereutilizacin de cdigo.

    Los mtodos permiten separar objetos para comunicar ydistribuir el trabajo desarrollado por el programa,hacindolo ms modular.

    6.2 Usando la encapsulacin

    La encapsulacin se refiere al ocultamiento de los datos dentro de las clases, estohace que de una manera fcil para los programadores puedan usar sus clases yproteger ciertos datos dentro de la clase aplicando el modificador apropiado.

    La encapsulacin en las clases requiere que el programador apliqueapropiadamente los modificadores de visibilidad a los elementos en el programacomo son la clase, las variables de atributos y la declaracin de los mtodos.

    Los modificadores de visibilidad son dos public y private. Los atributos y losmtodos pueden tener modificadores de visibilidad o acceso que indiquen el nivelde acceso que otros objetos pueden tener sobre ellos.

    El modificador public permite que la clase, atributos y mtodos sean visibles oaccedidos por cualquier objeto en su programa. Para hacer que un atributo omtodo sea pblico, se debe colocar la palabra reservada public delante de lavariable de atributo o el mtodo en cuestin. Si todos los atributos en un programason public, sus valores pueden ser cambiando sin ningn error presentarse; estopuede crear problemas durante la ejecucin del programa.

  • 5/22/2018 Java Basico Unidad 6

    6/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 6 de 13

    El modificador de acceso private determina sobre los objetos de una clase, susatributos y mtodos (operaciones) ser inaccesibles por otros objetos. Para asignarun atributo o mtodo private, se debe colocar la palabra reservada private delante

    de la variable de atributo o mtodo.

    Los elementos que tengan como modificador de acceso private, tienen lassiguientes caractersticas:

    Solo pueden ser modificados o visualizados por los mtodos de la propia

    clase.

    No pueden ser modificados o visualizados directamente por otra clase.

    Los mtodos y las variables de atributos declaradas como public sonfrecuentemente denominados como la interface de una clase porque ellosrepresentan los nicos elementos que otra clase puede usar. El detalle de comouna clase completa una operacin dentro de un mtodo, es llamadaimplementacin del mtodo.

    Los objetos pueden acceder a los atributos privados de otro objeto, a travs de losmtodos pblicos de este ltimo objeto.

    Despus que hayamos escrito una clase encapsulando los datos usando elmodificador de acceso private y tenemos los mtodos getter y setter, podemos

    escribir una clase que invoque estos mtodos para acceder a los valores de losatributos del objeto.

    El cdigo de la encapsulacin consiste en declarar los atributos de la clase comoprivate y los mtodos declararlos como public, los cuales sern usados paraacceder a las variables de atributos.

    6.3 Describiendo el alcance de las variables

    Las variables declaradas dentro de un mtodo, un constructor, o un bloque de

    cdigo no pueden ser usados en una clase. El alcance de una variable hace

    referencia al mbito en el cual una variable puede ser usada dentro de un

    programa. Los siguientes criterios explican el alcance de una variable:

    Una variable definida dentro de un mtodo es conocida como variable

    local.

  • 5/22/2018 Java Basico Unidad 6

    7/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 7 de 13

    Una variable local puede solo ser usada dentro del mtodo en el cual este

    definida y existe solo dentro de los lmites de dicho mtodo.

    Una variable definida fuera de un mtodo en una clase como atributo, existe

    a lo largo de la vida til del objeto que se ha creado a partir de dicha clase.

    Una variable declarada en un cicloo una sentencia condicional if es vlida

    solo dentro del ciclo o de la sentencia condicional if.

    El cdigo mostrado en la siguiente figura representa el alcance para la variable

    edad y para la variable nombre. La variable edad est definida fuera de un

    mtodo en la lnea 4 y existe a lo largo de la vida til del objeto que se cree a partir

    de la clase persona. El alcance de la variable edades a nivel de la clase. Por otrolado tenemos la variable nombre que es declarada dentro del mtodo

    muestraNombre()en la lnea 6, por lo que su alcance y uso est limitado dentro

    de dicho mtodo. Referirse a la variable nombredentro de otro mtodo, como el

    getNombre()en la lnea 12 hasta la 14 produce un error de compilacin.

    Como programadores debemos tener siempre presente la habilidad de poder

    identificar las cuestiones de mbito de las variables en todo momento,

    especialmente cuando se utilizan en bucles y sentencias condicionales.

  • 5/22/2018 Java Basico Unidad 6

    8/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 8 de 13

    6.4 Constructores

    Los constructores son mtodos especiales de la clase que llevan el mismo nombre

    de la clase y su funcin es inicializar los datos miembros (variables de atributo) de

    la clase. Los constructores son invocados cuando se instancia una clase creando

    un objeto de la misma.

    Como los dems mtodos un constructor puede ser

    sobrecargado, incluyendo varios constructores en una clase,

    cada cual con el mismo nombre de la clase y una diferente series

    de argumentos.

    Constructor por defecto, el constructor por defecto es creado por el

    compilador del lenguaje de programacin JAVA, si el compilador encuentra en una

    clase que no se ha definido un constructor explcitamente. El constructor por

    defecto no aparece explcitamente en el cdigo. Si una clase contiene un

    constructor definido por el programador el compilador no crea, ni utiliza el

    constructor por defecto.

    Es posible para el programador crear su propio constructor sin argumentos,

    digitando en el cdigo un constructor sin argumentos para su clase.

    Los constructores pueden ser sobrecargados ofreciendo una variedad de forma

    para que los objetos sean creados e inicializados usando una clase simple. El

    siguiente cdigo muestra la representacin de tres constructores para la clase

    empleado.

    public Empleado() { estadoCivil = 'S';}

    public Empleado(String nomEmp, char estCiv) {nombre = nomEmp;estadoCivil = estCiv; }

    public Empleado(String nomEmp,char estCiv,double salario) {nombre = nomEmp;

    estadoCivil = estCiv;sueldo = salario; }

  • 5/22/2018 Java Basico Unidad 6

    9/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 9 de 13

    Ejecutado desde la clase PruebaEmpleadotenemos:

    La salida si ejecutamos el ejemplo anterior seria:

  • 5/22/2018 Java Basico Unidad 6

    10/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 10 de 13

    En el ejemplo anterior tenemos el constructor Empleado() sobrecargado, en el cual

    se crean tres objetos usando los tres constructores de la clase Empleado.

    6.5 Implementando la herencia en JAVA

    La herencia permite crear clases a partir de otras clases, pudiendo los

    programadores definir una clase con miembros comunes (datos miembros y

    funciones miembros), que son variables y mtodos, en una clase y que otras

    nuevas clases hereden estos miembros comunes. Resultando de la herencia una

    jerarqua de clases, donde encontramos una sperclase o clase base y otras

    clases que heredan que se mencionan como subclaseso clases derivadas, por lo

    que:

    Superclase: Esta es la clase base que contiene los elementos comunes a

    varias clases.

    Subclase: Es la clase que hereda o se extiende a partir de la superclase.

    Las sper-clases tambin son conocidas como clase padre y las subclases como

    clases hijas.

    En la programacin con JAVA cada clase puede heredar los miembros solo de

    una sper-clase, es decir NO EXISTE lo que en c++ se llama herencia mltiple,donde una clase hija puede heredar de varias clases padre. Por lo tanto, es

    importante tener en cuenta el mejor uso de la herencia y utilizarlo slo cuando sea

    completamente vlido.

    En la herencia las clases hijas pueden tambin agregar ms miembros o

    sobrescribir los heredados.

    Un enfoque prcticopara determinar si una clase puede ser diseada como una

    clase hija de otra es la regla:

  • 5/22/2018 Java Basico Unidad 6

    11/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 11 de 13

    es-un | es-una

    Si la frase Cliente es una persona tiene sentido, entonces es muy factible que la

    clase Cliente pueda ser una clase hija de la clase Persona.

    Por el contrario si aplicamos esta simple regla a dos clases que no cumplen dicha

    afirmacin, la relacin de herencia no ser factible. Por ejemplo si tenemos la

    clase Automvil y deseamos saber si podemos establecer una herencia con la

    clase Cliente, tenemos Un Automvil es un Cliente vemos que no, por lo que no

    es factible que una clase Automvil herede de una clase Cliente.

    Bsicamente la herencia define una relacin entre las casas donde una clase hija

    comparte los miembros comunes con una clase padre. La herencia define

    entonces una jerarqua de clases, donde una clase hija hereda de una clase padre

    y adems puede agregar nuevos o redefinir alguno de sus elementos.

    A continuacin se presenta la sintaxis necesaria para definir una relacin de

    herencia, utilizando la palabra reservada extends indicamos que una clase

    heredar de otra clase. La sintaxis para la definicin de una subclase o clase hija

    es como sigue:

    [modificador] classnombre_clase extendsnombre_superclase

    Dnde:

    modificador:es el mtodo de acceso a la clase, ej. public

    class:es la palabra reservada para definir a las clases.

    nombre_clase: es el identificador de la subclase o clase hija, es el nombre que

    elige el programador para asignarle a su clase hija.

    extends: es la palabra reservada con la cual definimos la relacin de herencia

    entre la subclase y la superclase.Nombre_superclase: es el identificador de la super-clase o clase padre, es el

    nombre que ha definido el programador cuando defini a la clase padre.

    A continuacin mostramos un ejemplo para la declaracin y uso de la herencia

    tomando como superclase a Clothingy la clase hija o sub clase ser Shirt. La

    superclase Clothing contiene los atributos y mtodos usados que sern

    heredados por todas las subclases que se extiendan a partir de ella. Cada

    subclase heredar estos mtodos y atributos, en nuestro ejemplo extenderemos la

    clase Shirtla cual heredara de Clothing.

  • 5/22/2018 Java Basico Unidad 6

    12/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 12 de 13

    Esta es la superclase Clothing, todas las clases que se extiendan a partir de ella,

    es decir que herenden a partir de ella sern subclases, a continuacin declaramos

    la subclase Shirta partir de nuestra superclase Clothing.

    La clase Shirtse extiende a partir de la clase Clothingheredando sus variables y

    mtodos, pero adems contiene variables y mtodos que son especficos para un

    objeto de Shirt.

  • 5/22/2018 Java Basico Unidad 6

    13/13

    Unidad 6. Constructores y Herencia

    MAESTROS: Romery Alberto y Jos Ml. Amado Pgina 13 de 13

    Abstraccin

    Abstraccin se refiere a la creacin de clases que son generalesy no contienen mtodos con una aplicacin en particular.

    Un buen ejemplo de una clase de abstraccin es la clase

    Artculos. Un Artculoes un concepto abstracto. Por lo general

    usted no va a una tienda y dice: "Quiero comprar un artculo", ya

    que puede referirse a cualquier cosa vendida dentro de una

    tienda.

    Sin embargo, todos los artculos pueden tener algunas

    caractersticas similares en el contexto de un sistema defacturacin, como por ejemplo un ID (cdigo nico de

    identificacin) o un mtodo para mostrar informacin sobre el

    artculo.

    Las clases que son genricas no deben ser totalmente definidas,

    como la clase artculo, ya que ellas hacen referencia a

    elementos abstractos. Las clases que se extienden o heredan de

    una clase abstracta pueden implementar los mtodos vacos de

    la clase abstracta con cdigo especfico para la subclase. Usted

    tendr que pasar ms tiempo en su anlisis y diseo para

    garantizar que su solucin tiene suficiente abstraccin para

    asegurar la flexibilidad.

    Bibliografa

    Perez, G. G. (2008). Aprendiendo JAVA y Programacin orientada a

    objetos. Libro de libre descarga, recuperado el 3 Junio 2013 de:http://www.compunauta.com/forums/linux/programacion/java/ebook.html Sun Microsystems, Inc. (2008). Fundamentals of the Java

    Language. Sun Services, Revisin A.