Você está na página 1de 17

Herencia

La herencia es específica de la programación orientada a objetos, donde


una clase nueva se crea a partir de una clase existente. La herencia (a la que
habitualmente se denomina subclase) proviene del hecho de que la subclase (la
nueva clase creada) contiene los atributos y métodos de la clase primaria. La
principal ventaja de la herencia es la capacidad para definir atributos y métodos
nuevos para la subclase, que luego se aplican a los atributos y métodos
heredados.

Esta particularidad permite crear una estructura jerárquica de clases cada vez más
especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando
desea especializar una clase existente. Como resultado, se pueden adquirir
bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la
compañía que vende estas clases tiende a proteger las datos miembro usando
la encapsulación).

El ejemplo que proponemos es un caso en el que vamos a simular el


comportamiento que tendrían los diferentes integrantes de la selección española
de futbol; tanto los Futbolistas como el cuerpo técnico (Entrenadores, Masajistas,
etc…). Para simular este comportamiento vamos a definir tres clases que van a
representaran a objetos Futbolista, Entrenador y Masajista. De cada unos de ellos
vamos a necesitar algunos datos que reflejaremos en los atributos y una serie de
acciones que reflejaremos en sus métodos. Estos atributos y métodos los
mostramos en el siguiente diagrama de clases:

Como se puede observar, vemos que en las tres clases tenemos atributos
y métodos que son iguales ya que los tres tienen los atributos id, Nombre,
Apellidos y Edad; y los tres tienen los métodos de Viajar y Concentrarse:
A nivel de código tenemos lo siguiente tras ver el diagrama de clases:

public class Futbolista

private int id;

private String Nombre;

private String Apellidos;

private int Edad;

private int dorsal;

private String demarcacion;

// constructor, getter y setter

public void Concentrarse() {


...

public void Viajar() {

...

public void jugarPartido() {

...

public void entrenar() {

...

public class Entrenador

private int id;

private String Nombre;

private String Apellidos;

private int Edad;


private String idFederacion;

// constructor, getter y setter

public void Concentrarse() {

...

public void Viajar() {

...

public void dirigirPartido() {

...

public void dirigirEntreno() {

...

public class Masajista


{

private int id;

private String Nombre;

private String Apellidos;

private int Edad;

private String Titulacion;

private int aniosExperiencia;

// constructor, getter y setter

public void Concentrarse() {

...

public void Viajar() {

...

public void darMasaje() {

...

}
Lo que podemos ver en este punto es que estamos escribiendo mucho código
repetido ya que las tres clases tienen métodos y atributos comunes, de ahí y como
veremos enseguida, decimos que la herencia consiste en "sacar factor común"
para no escribir código de más, por tanto lo que haremos será crearnos una clase
con el "código que es común a las tres clases" (a esta clase se le denomina en la
herencia como "Clase Padre o SuperClase") y el código que es especifico de cada
clase, lo dejaremos en ella, siendo denominadas estas clases como "Clases
Hijas", las cuales heredan de la clase padre todos los atributos y métodos públicos
o protegidos. Es muy importante decir que las clases hijas no van a heredar nunca
los atributos y métodos privados de la clase padre, así que mucho cuidado con
esto. En resumen para que veáis la ventaja de la herencia, tenemos ahora una clase
padre con 'n' líneas de código y tres clases hijas con 'a', 'b' y 'c' líneas de códigos
respectivamente, por tanto si notas, hemos reducido nuestro código en '2n' líneas
menos ya que antes teníamos '(n+a)+(n+b)+(n+c)' líneas de código y ahora tras
aplicar herencia tenemos 'n+a+b+c' líneas, aunque también es cierto que tenemos
una clase más, pero veremos un poco más adelante la ventaja de tener esa clase
padre. En resumen, al "sacar factor común" y aplicar herencia, tenemos las
siguientes clases:
A nivel de código, las clases quedarían implementadas de la siguiente forma:

public class SeleccionFutbol

protected int id;

protected String Nombre;

protected String Apellidos;

protected int Edad;

// constructor, getter y setter

public void Concentrarse() {

...

public void Viajar() {

...

public class Futbolista extends SeleccionFutbol

private int dorsal;


private String demarcacion;

public Futbolista() {

super();

// getter y setter

public void jugarPartido() {

...

public void entrenar() {

...

public class Entrenador extends SeleccionFutbol

private String idFederacion;

public Entrenador() {
super();

// getter y setter

public void dirigirPartido() {

...

public void dirigirEntreno() {

...

public class Masajista extends SeleccionFutbol

private String Titulacion;

private int aniosExperiencia;

public Masajista() {

super();

}
// getter y setter

public void darMasaje() {

...

Como podéis observar ahora queda un código mucho más limpio, estructurado y
con menos líneas de código, lo que lo hace más legible, cosa que es muy
importante y lo que todavía lo hace más importante es que es un código
reutilizable, lo que significa que ahora si queremos añadir más clases a nuestra
aplicación como por ejemplo una clase Médico, Utiller@, Jefe/a de prensa etc.
que pertenezcan también al equipo técnico de la selección Española, lo podemos
hacer de forma muy sencilla ya que en la clase padre (SeleccionFutbol) tenemos
implementado parte de sus datos y de su comportamiento y solo habrá que
implementar los atributos y métodos propios de esa clase.

Instanciación

Una instancia (en inglés, instance) es la particularización, realización específica u


ocurrencia de una determinada clase, entidad (modelo entidad-relación) o prototipo.

En general, cuando se ejecuta un programa en un computador, se dice que éste se


instancia. En los lenguajes de programación orientada a objetos un objeto es una
instancia de una clase. Esto es, un miembro de una clase que tiene atributos en
lugar de variables. En un contexto del mundo real, podríamos pensar en "Casa"
como una clase y en un chalet como una instancia de esta e incluso otro chalet u
otro tipo de casa como puede ser un apartamento como otra instancia. En este caso
no importa el tipo de casa, si fuese de nuestro interés modelarlo y especificarlo,
diferenciaríamos entre un chalet y un apartamento con dos clases, entidades o
prototipos diferentes, c.f. herencia (informática).
EJEMPLO:
//Constructor de Perro.
public Perro(String nombre, String color, int edad){
this.nombre = nombre;
this.color = color;
this.edad = edad;
}

//Métodos de Perro.
public void comer(){
System.out.println(nombre + " comiendo.");
}

public void morder(){


System.out.println(nombre + " mordiendo.");
}
}//Fin clase Perro

Para crear ahora objetos de la clase Perro es tan sencillo como:

dogo = new Perro();

danes= new Perro();

NetBeans

Es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje


de programación Java. Existe además un número importante de módulos para
extenderlo. NetBeans IDE2 es un producto libre y gratuito sin restricciones de uso.

NetBeans es un proyecto de código abierto de gran éxito con una gran base de
usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en
todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans
en junio de 2000 y continúa siendo el patrocinador principal de los proyectos
(Actualmente Sun Microsystems es administrado por Oracle Corporation).

La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir


de un conjunto de componentes de software llamados módulos. Un módulo es un
archivo Java que contiene clases de java escritas para interactuar con las APIs de
NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las
aplicaciones construidas a partir de módulos pueden ser extendidas agregándole
nuevos módulos. Debido a que los módulos pueden ser desarrollados
independientemente, las aplicaciones basadas en la plataforma NetBeans pueden
ser extendidas fácilmente por otros desarrolladores de software.

El NetBeans IDE soporta el desarrollo de todos los tipos de aplicación Java (J2SE,
web, EJB y aplicaciones móviles). Entre sus características se encuentra un
sistema de proyectos basado en Ant, control de versiones y refactoring.

NetBeans IDE 6.5.2, la cual fue publicada el 19 de noviembre de 2008, extiende


las características existentes del Java EE (incluyendo Soporte a Persistencia, EJB
3 y JAX-WS). Adicionalmente, el NetBeans Enterprise Pack soporta el desarrollo
de Aplicaciones empresariales con Java EE 5, incluyendo herramientas de
desarrollo visuales de SOA, herramientas de esquemas XML, orientación a web
servicies (for BPEL), y modelado UML. El NetBeans C/C++ Pack soporta
proyectos de C/C++, mientras el PHP Pack, soporta PHP 5.

Modularidad. Todas las funciones del IDE son provistas por módulos. Cada
módulo provee una función bien definida, tales como el soporte de Java, edición,
o soporte para el sistema de control de versiones. NetBeans contiene todos los
módulos necesarios para el desarrollo de aplicaciones Java en una sola descarga,
permitiéndole al usuario comenzar a trabajar inmediatamente.

Sun Studio, Sun Java Studio Enterprise, y Sun Java Studio Creator de Sun
Microsystems han sido todos basados en el IDE NetBeans.

Desde julio de 2006, NetBeans IDE es licenciado bajo la Common Development


and Distribution License (CDDL), una licencia basada en la Mozilla Public
License (MPL). En octubre de 2007, Sun anunció que NetBeans desde entonces se
ofrecerá bajo licenciamiento dual de Licencia CDDL y la GPL versión 2.

Algunas de las características de la aplicación son:

 Gestión de la interfaz de usuario ( menús y barras de herramientas )


 Gestión de configuración de usuario
 Gestión de almacenamiento (guardar o cargar algún tipo de dato)
 Gestión de ventana
 Marco Asistente (soporta diálogos paso a paso)
 Librería visual de Netbeans
 Herramientas de desarrollo integrado

Java

Es un lenguaje de programación de propósito general, concurrente, orientado a


objetos que fue diseñado específicamente para tener tan pocas dependencias de
implementación como fuera posible. Su intención es permitir que
los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en
cualquier dispositivo (conocido en inglés como WORA, o "write once, run
anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma
no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de
los lenguajes de programación más populares en uso, particularmente para
aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios
reportados.

El lenguaje de programación Java fue originalmente desarrollado por James


Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y
publicado en 1995 como un componente fundamental de la plataforma Java de
Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero tiene
menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java
son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en
cualquier máquina virtual Java (JVM) sin importar la arquitectura de la
computadora subyacente.
La compañía Sun desarrolló la implementación de referencia original para
los compiladores de Java, máquinas virtuales, y librerías de clases en 1991 y las
publicó por primera vez en 1995. A partir de mayo de 2007, en cumplimiento con
las especificaciones del Proceso de la Comunidad Java, Sun volvió a licenciar la
mayoría de sus tecnologías de Java bajo la Licencia Pública General de GNU.
Otros también han desarrollado implementaciones alternas a estas tecnologías de
Sun, tales como el Compilador de Java de GNU y el GNU Classpath.

Características

 Lenguaje totalmente orientado a Objetos. Todos los conceptos en los que


se apoya esta técnica, encapsulación, herencia, polimorfismo, etc., están
presentes en Java.
 Disponibilidad de un amplio conjunto de bibliotecas. Como ya se
mencionó anteriormente, Java es algo más que un lenguaje. La programación
de aplicaciones con Java se basa no solo en el empleo del juego de
instrucciones que componen el lenguaje, sino, fundamentalmente, en la
posibilidad de utilizar el amplísimo conjunto de clases que Sun pone a
disposición del programador y con las cuales es posible realizar prácticamente
cualquier tipo de aplicación.
 Lenguaje simple. Java posee una curva de aprendizaje muy rápida. Resulta
relativamente sencillo escribir applets interesantes desde el principio. Todos
aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que
se han eliminado ciertas características, como los punteros. Debido a su
semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque
sea de forma elemental, resulta muy fácil aprender Java. Los programadores
experimentados en C++ pueden migrar muy rápidamente a Java y ser
productivos en poco tiempo.
 Distribuido. Java proporciona una colección de clases para su uso en
aplicaciones de red, que permiten abrir sockets y establecer y aceptar
conexiones con servidores o clientes remotos, facilitando así la creación de
aplicaciones distribuidas.
 Interpretado y compilado a la vez. Java es compilado, en la medida en que
su código fuente se transforma en una especie de código máquina,
los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte,
es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre
cualquier máquina a la cual se hayan portado el intérprete y el sistema de
ejecución en tiempo real (run-time).
 Robusto. Java fue diseñado para crear software altamente fiable. Para ello
proporciona numerosas comprobaciones en compilación y en tiempo de
ejecución. Sus características de memoria liberan a los programadores de una
familia entera de errores (la aritmética de punteros), ya que se ha prescindido
por completo de los punteros, y la recolección de basura elimina la necesidad
de liberación explícita de memoria.
 Seguro (?). Dada la naturaleza distribuida de Java, donde las applets se bajan
desde cualquier punto de la Red, la seguridad se impuso como una necesidad
de vital importancia. A nadie le gustaría ejecutar en su ordenador programas
con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se
implementaron barreras de seguridad en el lenguaje y en el sistema de
ejecución en tiempo real.
 Indiferente a la arquitectura. Java está diseñado para soportar aplicaciones
que serán ejecutadas en los más variados entornos de red, desde Unix a
Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas
distintas y con sistemas operativos diversos. Para acomodar requisitos de
ejecución tan diversos o variopintos, el compilador de Java genera bytecodes:
un formato intermedio indiferente a la arquitectura diseñado para transportar
el código eficientemente a múltiples plataformas hardware y software. El resto
de problemas los soluciona el intérprete de Java.
 Portable. La indiferencia a la arquitectura representa sólo una parte de su
portabilidad. Además, Java especifica los tamaños de sus tipos de datos
básicos y el comportamiento de sus operadores aritméticos, de manera que los
programas son iguales en todas las plataformas. Estas dos últimas
características se conocen como la Máquina Virtual Java (JVM).
 Alto rendimiento.
 Multihebra. Hoy en día ya se ven como terriblemente limitadas las
aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta
sincronización de múltiples hilos de ejecución (multithreading) a nivel de
lenguaje, especialmente útiles en la creación de aplicaciones de red
distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede
interactuar con el usuario mientras otro presenta una animación en pantalla y
otro realiza cálculos.
 Dinámico. El lenguaje Java y su sistema de ejecución en tiempo real son
dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son
necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda,
procedente de fuentes muy variadas, incluso desde la Red.
 Produce applets. Java puede ser usado para crear dos tipos de programas:
aplicaciones independientes y applets. Las aplicaciones independientes se
comportan como cualquier otro programa escrito en cualquier lenguaje, como
por ejemplo el navegador de Web HotJava, escrito íntegramente en Java. Por
su parte, las applets son pequeños programas que aparecen embebidos en las
páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de
ejecutar acciones muy complejas, como animar imágenes, establecer
conexiones de red, presentar menús y cuadros de diálogo para luego
emprender acciones, etc.

Java Development Kit o (JDK)

Es un software que provee herramientas de desarrollo para la creación


de programas en Java. Puede instalarse en una computadora local o en una unidad
de red.

En la unidad de red se pueden tener las herramientas distribuidas en varias


computadoras y trabajar como una sola aplicación.

JDK en Windows

En los sistemas operativos Microsoft Windows sus variables de entorno son:

 JAVAPATH: es una ruta completa del directorio donde está instalado JDK.
 CLASSPATH: son las bibliotecas o clases de usuario.
 PATH: variable donde se agrega la ubicación de JDK.

Los programas más importantes que se incluyen

 appletviewer.exe: es un visor de applets para generar sus vistas previas, ya


que un applet carece de método main y no se puede ejecutar con el programa
java.
 javac.exe: es el compilador de Java.
 java.exe: es el masterescuela (intérprete) de Java.
 javadoc.exe: genera la documentación de las clases Java de un programa

Você também pode gostar