buscador

Visita

martes, 12 de julio de 2016

📍Actividad 11: Implementación 👨‍💻 de la Herencia en Java ☕️

Bienvenido al Blog, en esta oportunidad desarrollaremos un tema Teórico Practico sobre programación orientado a objetos, para entender sobre cómo desarrollar un sistema con el lenguaje java veremos acerca de  Implementación 👨‍💻 de la Herencia    en ☕️ Java.

 Sobre el contenido …

  •     El contenido de este blog tiene como fuente el curso Fundamentos de programación de Oracle.
  •      Con algunos agregados del autor "EL INFORMATICO IBERO"👷
Indice :

  • Herencia
  • Abstracción
  • Clases del API de Java

Herencia

Caso de estudio

  • Utilizaremos el siguiente caso para ilustrar conceptos intermedios del análisis y el diseño OO.
  • El máximo responsable de DirectClothing, Inc. ha decidido que la compañía amplíe su línea de productos para incluir gorros, calcetines y pantalones.  La decisión le lleva a darse cuenta de que necesitará cambiar el sistema de introducción de pedidos previamente desarrollado. Como consecuencia, DirectClothing le ha contratado para poner al día el citado sistema de forma que incorpore estos tipos de productos.
  • A fin de poder desarrollar las clases necesarias para hacer la actualización, deberá realizar un breve análisis del nuevo sistema y determinar que los gorros, los calcetines y los pantalones son los únicos objetos nuevos que van a introducirse (en el dominio del problema). Además recibe la siguiente información:
    • Sólo se venderán gorros y calcetines de talla única.
    • Los modelos de pantalones serán distintos para hombres y mujeres.
    • Los pantalones se venderán en colores azul y tostado, mientras que los gorros, los calcetines y las camisas se venderán en rojo, azul y verde.

A continuación, deberá diseñar el nuevo sistema modelando las clases que se utilizarán para crear estos objetos. En las dos figuras siguientes se ilustran las nuevas clases y la clase Shirt previamente definida.

Estas nuevas clases tienen muchas de las características de la clase Shirt. Por ejemplo, todas tienen ID, precios y descripciones. Todas tienen operaciones para calcular un ID y mostrar los datos. Sin embargo, el método de salida a la pantalla de cada subclase presenta diferente contenido.

Es posible eliminar la necesidad de duplicar esta información en cada clase implementando un concepto de la programación OO denominado herencia.

Superclases y subclases

  • La herencia permite a los programadores poner miembros comunes (variables y métodos) en una clase y hacer que otras clases hereden esos miembros comunes.
  • La clase que contiene miembros comunes a otras clases se denomina superclase o clase de nivel superior.
  • Las clases que heredan miembros de la superclase se denominan subclases o clases subordinadas.
  • La herencia da como resultado una jerarquía de clases de la tecnología Java similar a la clasificación taxonómica que se utiliza en biología, por ejemplo, “La ballena azul es una subclase de la ballena”.

Superclases y subclases

En la figura siguiente se ilustra una jerarquía de ballenas.

“Sangre caliente” es un atributo de la superclase mamíferos. La frase “respira aire” representa una actividad que también forma parte de la superclase mamíferos. La cola y las aletas son atributos específicos de las ballenas, que es una subclase de los mamíferos.

Comprobación de las relaciones entre superclases y subclases

En el lenguaje Java, cada clase puede heredar miembros de una sola clase, por lo que es muy importante sopesar la mejor forma de usar la herencia y utilizarla sólo cuando sea completamente válida o inevitable.

Algunos lenguajes de programación, como C++, permiten a una clase heredar de diferentes superclases. Este concepto se denomina herencia múltiple. El lenguaje Java no admite la herencia múltiple porque su implementación puede resultar confusa para los programadores. En su lugar, el lenguaje Java utiliza el concepto de interfaz.

La forma de comprobar si un vínculo de herencia propuesto es válido es utilizar la expresión “es un/una”. La frase “una Camisa es una Prenda de vestir” expresa un vínculo de herencia válido. La frase “un Gorro es un Calcetín” expresa un vínculo de herencia incorrecto.

En el caso estudiado, camisas, pantalones, gorros y calcetines son tipos de prendas de vestir. Por tanto, Prendas es un buen nombre para la superclase de estas subclases (tipos) de prendas de vestir.

Modelado de las superclases y subclases

Después de identificar la relación entre la superclase y las subclases, puede remodelar todas sus clases. Las subclases sólo contendrán características propias de ellas mismas.

En las tres figuras siguientes se muestran las nuevas clases, la clase Shirt definida anteriormente y la superclase Clothing.


Las características comunes a todas las subclases están en la superclase Clothing.

Declaración de una superclase

Los siguientes ejemplos de código contienen una superclase Clothing. La clase Clothing contiene los métodos utilizados por todas las subclases, por ejemplo las clases Shirt o Pants. Cada subclase heredará estos métodos.


Utilice la palabra clave extends para indicar que una clase hereda miembros de otra clase. Para indicar que una clase es una subclase de otra, utilice la sintaxis siguiente en la declaración de la clase:


Donde:

La palabra clave modificador_clase es opcional (como indican los corchetes) y puede ser public, abstract o final. Si no se incluye modificador_clase en la declaración de clase, ésta adopta automáticamente un valor predeterminado que algunas veces se denomina “nivel de paquete” y permite acceder únicamente a otras clases del mismo paquete.

La palabra clave class indica al compilador que el bloque de código contiene una declaración de clase.

NombreSubClase es el nombre asignado a la subclase.

La palabra clave extends indica al compilador que se trata de una subclase de otra clase.

NombreSuperClase es el nombre de la superclase ampliada por esta subclase.

Ejemplo de declaración de subclase

Por ejemplo, el código siguiente contiene una clase Shirt que amplía la clase Clothing.

La clase Shirt amplía la clase Clothing al heredar de ella. Observe que la clase Shirt sólo contiene las variables y los métodos específicos de un objeto Shirt.

Abstracción

Una de las características de una buena solución programada en Java es que la jerarquía de las clases que se cree sea muy generalizada en la parte superior a fin de dejar espacio para posteriores añadidos más concretos.

La abstracción en el análisis y el diseño

La abstracción se refiere a la creación de clases que son muy generales y no contienen métodos con una implementación concreta o código del cuerpo del método.

Un buen ejemplo de clase abstracta es la clase Item (artículo). Un artículo es un concepto abstracto (normalmente no se entra en una tienda para decir “quiero comprar un artículo”) que puede referirse a cualquier elemento vendido en una tienda.

Sin embargo, todos los artículos podrían tener características similares en un sistema de introducción de pedidos, por ejemplo, un ID o un método para ver la información sobre el artículo.

Las clases que son genéricas y no pueden definirse por completo, como es el caso de la clase Item, se conocen como clases abstractas. Las clases que amplían una clase abstracta pueden implementar métodos vacíos de la clase abstracta con código específico de la superclase.

Es posible que le interese dedicar más tiempo al análisis y el diseño para asegurarse de que su solución tenga el suficiente nivel de abstracción como para garantizar la flexibilidad.

Clases del API de Java

Como programador con escasos conocimientos de Java, una de sus primeras tareas será familiarizarse con las clases del API de Java. Las clases del lenguaje Java se agrupan en paquetes según su funcionalidad. Por ejemplo, todas las clases relacionadas con el núcleo del lenguaje Java se encuentran en el paquete java.lang, que contiene clases fundamentales para la programación en Java tales como String, Math e Integer.

Existen dos categorías de clases en el API de Java: aquellas a las que es posible hacer referencia de forma implícita en cualquier código que escriba (como la clase System utilizada para acceder al método println) y aquellas que es preciso importar o calificar en su totalidad.

Clases disponibles de forma implícita

En todos los programas es posible hacer referencia de forma implícita a todas las clases del paquete java.lang. Este concepto significa que no necesita mencionar el paquete ni la clase cuando utilice la clase.

Importación y calificación de clases

La mayoría de las clases del API de Java no están disponibles de forma implícita para usarlas en los programas. Es preciso utilizar sentencias de importación o hacer referencia a ellas utilizando sus nombres totalmente calificados (nombre del paquete y la clase) para todos los paquetes que quiera utilizar en sus programas. Estos paquetes incluyen los siguientes:

  • El paquete java.awt contiene clases que componen las herramientas AWT (abstract windowing toolkit). Se utiliza para construir y manejar la interfaz gráfica de usuario (GUI) de la aplicación.
  • El paquete java.applet contiene clases que proporcionan comportamiento específico de los applets.
  • El paquete java.net contiene clases para realizar operaciones relacionadas con la red tales como las conexiones de sockets y URL.
  • El paquete java.io contiene clases que manejan la entrada/salida (E/S) de archivos, por ejemplo, la lectura o escritura en una unidad de disco duro.
  • El paquete java.util contiene clases utilitarias para tareas tales como la generación de números aleatorios, la definición de propiedades del sistema y el uso de funciones relacionadas con las fechas y el calendario.

Hay dos formas de hacer que estas clases estén disponibles para un programa:

  • Puede importar la clase utilizando la sentencia import.
  • Puede hacer referencia a ella utilizando un nombre de clase con todos sus calificadores.

Sentencia import

Puede utilizar sentencias import para facilitar la lectura del código ya que estas sentencias acortan el código que debe escribir para hacer referencia explícita a una clase del API de Java. Hay dos formas de sentencias de importación:

Donde:

La palabra clave import permite hacer referencia a las clases del API de Java utilizando un nombre abreviado.

nombre_paquete es el nombre del paquete en el que se encuentra la clase.

NombreClase es el nombre de una clase concreta que se va a importar. Si no se especifica ningún nombre de clase, podrán utilizarse todas las clases del paquete en el programa.

Como alternativa, puede sustituir NombreClase por un asterisco (*) a fin de poder hacer referencia a cada clase del paquete por su nombre de clase concreto.

La sentencia import resulta confusa para muchos programadores porque sugiere que en realidad están eligiendo las clases que se combinarán en su programa durante la compilación. Por el contrario, puede utilizar las sentencias import para clarificar el código al lector porque estas sentencias acortan el código que debe escribirse para hacer referencia a un método de una clase.

Por ejemplo, la clase siguiente importa el paquete java.awt para posibilitar a la clase el acceso a las clases de interfaz gráfica de AWT.

Especificación del nombre totalmente calificado

En lugar de especificar el paquete java.awt, puede hacer referencia a la clase Button mediante el nombre java.awt.Button a lo largo de todo el programa.

Por ejemplo, a continuación figura una declaración de clase que utiliza el nombre calificado al especificar su superclase. La sintaxis del nombre calificado es como sigue:

Donde:

nombre_paquete es el nombre del paquete en el que se encuentra la clase.

NombreClase es el nombre de una clase concreta a la que se está haciendo referencia.

Por ejemplo, en la siguiente declaración de clase se utiliza el nombre calificado para ampliar la clase Button.

Muchas gracias por la visita al blog, en este capitulo, se acaban todo lo que es teoria en cuanto a los fundamentos del lenguaje de Programación Java en las publicaciones futura de desarrollaran algunas punto de programación con codigo java nativo, java swing y java web con los framework. adicional a ellos de desarrollara algunas fundamentos de base de datos oracle 11 y/o 12.

Suscribanse al canal de Youtube. Ir a canal de YouTube y Espero sus donaciones pulsando el boton DONAR.

No hay comentarios.:

Publicar un comentario

Raul Tamani A. ©. Imágenes del tema de fpm. Con tecnología de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!