SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Let's Rock Java


Fundamentos de Java Enterprise Edition
con JDeveloper

Eudris Cabrera Rodriguez

Ingeniero Telemático
Senior Software Developer
Skype:eudriscabrera
LinkedIn:http://www.linkedin.com/in/eudriscabrera

Noviembre 2011, Santiago de los Caballeros, R. D.
Objetivos



Enseñar conceptos fundamentales de la programación
orientada a objeto con Java
Agenda
 ● Paradigma de Orientación a Objetos: Conceptos Avanzados
    ○ Clases, Objetos, Palabras Reservadas,Atributos
    ○ Herencia Simple de Java
    ○ Jerarquías de Clases.
    ○ Sobreescritura de métodos.
    ○ Métodos con Parametros y Sobrecarga de Métodos.
    ○ Clases Abstractas, Interfaces y Polimorfismo.
Programación orientada a objetos
La Programación Orientada a Objetos (POO u OOP según sus siglas en
inglés) es un paradigma de programación que usa objetos y sus
interacciones para diseñar aplicaciones y programas de computadora.

Está basado en varias técnicas, incluyendo herencia, modularidad,
polimorfismo y encapsulamiento. Su uso se popularizó a principios de la
década de 1990.
 Actualmente son muchos los lenguajes de programación que soportan
la orientación a objetos.
Programación orientada a objetos
Conceptos fundamentales

La programación orientada a objetos es una nueva forma de programar
que trata de encontrar una
solución a estos problemas. Introduce nuevos conceptos, que superan y
amplían conceptos antiguos ya
conocidos.

Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de
objeto concreto. La instanciación es la lectura de estas definiciones y la
creación de un objeto a partir de ellas.
Programación orientada a objetos
Objeto: entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (métodos).

Se corresponde con los objetos reales del mundo que nos rodea, o a
objetos internos del sistema (del programa). Es una instancia a una
clase.

Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya
ejecución se desencadena tras la recepción de un "mensaje". Desde el
punto de vista del comportamiento, es lo que el objeto puede hacer. Un
método puede producir un cambio en las propiedades del objeto, o la
generación de un "evento" con un nuevo mensaje para otro objeto del
sistema.
Programación orientada a objetos
Evento: un suceso en el sistema (tal como una interacción del usuario
con la máquina, o un mensaje enviado por un objeto).

El sistema maneja el evento enviando el mensaje adecuado al objeto
pertinente. También se puede definir como evento, a la reacción que
puede desencadenar un objeto, es decir la acción que genera.

Mensaje: una comunicación dirigida a un objeto, que le ordena que
ejecute uno de sus métodos con ciertos parámetros asociados al evento
que lo generó.
Programación orientada a objetos
Propiedad o atributo: contenedor de un tipo de datos asociados a un
objeto (o a una clase de objetos), que hace los datos visibles desde
fuera del objeto y esto se define como sus        características
predeterminadas, y cuyo valor puede ser alterado por la ejecución de
algún método.

Estado interno: es una variable que se declara privada, que puede ser
únicamente accedida y alterada por un método del objeto, y que se
utiliza para indicar distintas situaciones posibles para el objeto (o clase
de objetos).

No es visible al programador que maneja una instancia de la clase.
Programación orientada a objetos
Componentes de un objeto:atributos, identidad, relaciones y métodos.
Representación de un objeto: un objeto se representa por medio de
una tabla o entidad que esté compuesta por sus atributos y funciones
correspondientes.

En comparación con un lenguaje imperativo, una "variable", no es más
que un contenedor interno del atributo del objeto o de un estado interno,
así como la "función" es un procedimiento interno del método del objeto.
Definición de una clase


Para definir una clase en Java, consideramos la siguiente sintaxis:
Código:
<control de acceso> class <nombre clase>
{
<atributos>
<constructores>
<métodos>
}
Definición de una clase

donde:
tipo de dato puede ser cualquiera, incluyendo otra clase.
control de acceso puede ser: private, public o protected
Nota: Veamos que los controles de acceso, son tal y como están
escritos(en idioma ingles), que
traducidos dicen:
private = privado (declaramos una propiedad o evento privado)
public = publico (declaramos una propiedad, o evento publico, que
puede ser llamado desde
otra clase)
protected = protegido (una propiedad de solo lectura, que no se puede
modificar)
Class, Public, Private,Protected... son palabras reservadas del lenguaje
Java, y otros...
}
Métodos:
Un método es un procedimiento propio de un objeto, un método cumple
una función y retorna (o no) un resultado, por ejemplo:

int sumaDos(int param, int, param2){
return (param+param2);
}

Es como una función, un concepto muy propio de los lenguajes de
procedimientos , pero un método es propio de un objeto
Constructores:
En Java, la creación de un objeto debe realizarse a través de
constructores, éstos son un tipo especial de método que se deben definir
como parte de la clase.

●   Un constructor posee las siguientes características:
●   Es un método que lleva el mismo nombre de la clase.
●   Se invoca una sola vez, cuando se crea un nuevo objeto
●   Puede usarse para inicializar los atributos (también llamadas
    variables de instancia) de un objeto. Sin embargo, puede no contener
    instrucción alguna, en este caso, su propósito es permitir la
    obtención de memoria para las variables de instancia.
●
●   Puede incluir parámetros
●   Una clase puede incluir varios constructores con distintas
    definiciones de parámetros formales.
Constructores:
Para definir un constructor se debe considerar la siguiente sintaxis:
Código:
public class MiClase{
    public MiClase(){
    //constructor
    }
}
Un constructor siempre debe ser definido como público, de manera que
sea posible, para cualquier objeto, crear objetos de cualquiera otra clase
(definida como pública).

Esto llevado al plano de las definiciones de clases, cualquier método que
lo requiera podrá crear un objeto de la clase que sea,según las
necesidades que se tengan en virtud del problema a resolver.
Encapsulamiento y ocultación de la
información
Encapsulamiento:
Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto
permite aumentar la cohesión de los componentes del sistema.

Algunos autores confunden este concepto con el principio de ocultación,
principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un
módulo natural, y cada tipo de objeto expone una interfaz a otros objetos
que especifica cómo pueden interactuar con los objetos de la
clase.
Encapsulamiento y ocultación de la
información
Esto asegura que otros objetos no pueden cambiar el estado interno de
un objeto de maneras inesperadas, eliminando efectos secundarios e
interacciones inesperadas.

Algunos lenguajes relajan esto, permitiendo un acceso directo a los
datos internos del objeto de una manera controlada y limitando el grado
de abstracción.

La aplicación entera se reduce a un agregado o rompecabezas de
objetos.
Encapsulamiento y ocultación de la
información
En otras palabras un objeto puede cumplir con ciertas funciones sin que
se conozca su estructura interna, un programador puede crear objeto que
resuelva determinado problema y alguien mas puede usarlo solo
ocupándose de su implementación, un objeto bien estructurado puede
ser portado a otra parte del diseño del software o a otro proyecto sin
preocuparse de adaptarlo para ese determinado proyecto (reutilización),
me gustaba la analogía de un reproductor de CD's, un usuario puede
escuchar un disco solo conociendo la forma de uso del aparato sin tener
que prestar la mínima atención a su funcionamiento interno.

Sin embargo los objetos pueden comunicarse entre si mismos o con el
usuario por interfaces definidas por el programador.
Herencia
Una clase puede ser "hija" de otra clase y a la vez esa clase puede ser
"padre" de otra, al derivar una clase de otra esta toma sus atributos y
comportamientos (dependiendo del nivel de acceso).

Al desarrollar podemos crear algunas clases un poco generales y
derivarla en algunas otras un poco mas especializadas.

Por ejemplo un "Perro" tiene propiedades como orejas , ojos etc.. Y
derivan en razas como "Rottweiler", "Chihuahua" , todos derivan de la
clase perro y heredan sus atributos y comportamientos (se mueven,
ladran), pero tienen sus respectivas distinciones (uno mide mas y se
podria comer al otro..) .

En la mayoría de los lenguajes se usa la palabra reservada extends para
indicar que una clase hereda de
otra.
Herencia Simple de Java
Un objeto puede extender las características de otro objeto y de ningún
otro, es decir, que solo puede heredar o tomar atributos de un solo padre
o de una sola clase.

Lenguajes como Java, Ada y C# sólo permiten herencia simple mientras
que otros como C++, Python permiten herencia múltiple.

La cual consiste en que un objeto puede extender las características de
uno o más objetos, es decir, puede tener varios padres.

Algunos diseñadores de lenguajes han preferido no admitir la herencia
múltiple por las posibles coincidencias en nombres de métodos o datos
miembros.
Control de Acceso
Cuando se crea una nueva clase en Java, se puede especificar el nivel
de acceso que se quiere para las variables de instancia y los métodos
definidos en la clase:

public
Cualquier clase desde cualquier lugar puede acceder a las variables y
métodos de instacia públicos.

protected
Sólo las subclases de la clase y nadie más puede acceder a las variables
y métodos de instancia protegidos.

private

Las variables y métodos de instancia privados sólo pueden ser accedidos
desde dentro de la clase. No son accesibles desde las subclases.
Control de Acceso
friendly (sin declaración específica)
void MetodoDeMiPaquete(){}

Por defecto, si no se especifica el control de acceso, las variables y
métodos de instancia se declaran friendly (amigas), lo que significa que
son accesibles por todos los objetos dentro del mismo paquete, pero no
por los externos al paquete. Es lo mismo que protected.

Los métodos protegidos (protected) pueden ser vistos por las clases
derivadas, como en C++, y también, en Java, por los paquetes
(packages). Todas las clases de un paquete pueden ver los métodos
protegidos de ese paquete. Para evitarlo, se deben declarar como private
protected , lo que hace que ya funcione como en C++ en donde sólo se
puede acceder a las variables y métodos protegidos de las clases
derivadas.
VARIABLES Y METODOS ESTATICOS
En un momento determinado se puede querer crear una clase en la que
el valor de una variable de instancia sea el mismo (y de hecho sea la
misma variable) para todos los objetos instanciados a partir de esa clase.
Es decir, que exista una única copia de la variable de instancia. Se usará
para ello la palabra clave static.

class Documento extends Pagina {
static int version = 10;
}

El valor de la variable version será el mismo para cualquier objeto
instanciado de la clase Documento .

Siempre que un objeto instanciado de Documento cambie la variable
version , ésta cambiará para todos los objetos.
THIS Y SUPER
Al acceder a variables de instancia de una clase, la palabra clave this
hace referencia a los miembros de la propia clase.

Si se necesita llamar al método padre dentro de una clase que ha
reemplazado ese método, se puede hacer referencia al método padre
con la palabra clave super
Jerarquías de Clases
Todas las clases en Java derivan de alguna clase anterior. La clase raíz
del árbol de la jerarquía de clases de Java es la clase Object, definida en
el paquete java.lang. Cada vez que se desciende en el árbol de
jerarquía, las clases van siendo más especializadas.

Cuando se desee que nadie pueda derivar de una clase, se indica que es
final; y lo mismo con los métodos, si no se desea que se puedan
sobreescribir, se les antepone la palabra clave final.
Sobreescritura de métodos
Una subclase hereda todos los métodos de su superclase que son
accesibles a dicha subclase a menos que la subclase sobreescriba los
métodos.

Una subclase sobreescribe un método de su superclase cuando define
un método con las mismas características ( nombre, número y tipo de
argumentos) que el método de la superclase.

Las subclases emplean la sobreescritura de métodos la mayoría de las
veces para agregar o modificar la funcionalidad del método heredado de
la clase padre.
Sobrecarga de Metodos
La sobrecarga de métodos es la creación de varios métodos con el
mismo nombre pero con diferentes firmas y definiciones. Java utiliza el
número y tipo de argumentos para seleccionar cuál definición de método
ejecutar.

Java diferencia los métodos sobrecargados con base en el número y tipo
de argumentos que tiene el método y no por el tipo que devuelve.

Tambien existe la sobrecarga de constructores: Cuando en una clase
existen constructores múltiples, se dice que hay sobrecarga de
constructores.
Clases Abstractas
Una clase abstracta es una clase de la cual no se pueden instanciar
objetos, de estas clases solo se puden heredar otras, en desarrollo se
utilizan simplemente para derivar a otras clases mas especializadas.

En los lenguajes que implementan este tipo de clases se utiliza la palabra
reservada abstract para indicarlas.

Una clase abstracta debe tener uno o mas métodos abstractos, y estos
métodos deben ser implementados en las clases derivadas.
Interfaces

Una interfaz es una clase únicamente para implementación
en otras, en una interfaz se indican los prototipos de los
métodos que debería tener un objeto pero el cuerpo del
mismo debe ser escrito en las clases que la implementan, en
los lenguajes que lo implementan se utiliza la palabra
reservada interface para indicar una interfaz e implements
para su implementación.
Clases final
Las clases final son clases que no se pueden heredar, es la ultima parte
de la estructura de clases, en loslenguajes que las implementan se utiliza
la palabra reservada final.

En los lenguajes como java pueden existir métodos finales, un método
que se declara final no puede ser sobrescrito en clases derivadas.
Polimorfismo
El polimorfismo se refiere a la posibilidad de definir múltiples clases con
funcionalidad diferente, pero con métodos o propiedades denominados
de forma idéntica, que pueden utilizarse de manera intercambiable
mediante código cliente en tiempo de ejecución.

Ya vimos una forma de polimorfismo al sobrecargar un método. otra
forma de polimorfismo se logra a través del uso de subtipos.
Metodo Nativos
Java proporciona un mecanismo para la llamada a funciones C y C++
desde nuestro código fuente Java.
Para definir métodos como funciones C o C++ se utiliza la palabra clave
native.
    public class Fecha {
    int ahora;
    public Fecha() {
    ahora = time();
    }
    private native int time();
    static {
    System.loadLibrary( "time" );
    }
    }
Metodo Nativos
Una vez escrito el código Java, se necesitan ejecutar los pasos siguientes para
poder integrar el código C o C++:
 ● Utilizar javah para crear un fichero de cabecera (.h)
 ● Utilizar javah para crear un fichero de stubs , es decir, que contiene la
    declaración de las funciones
 ● Escribir el código del método nativo en C o C++, es decir, rellenar el código
    de la función,
 ● completando el trabajo de javah al crear el fichero de stubs
 ● Compilar el fichero de stubs y el fichero .c en una librería de carga dinámica
    ( DLL en Windows '95 o libXX.so en Unix)
 ● Ejecutar la aplicación con el appletviewer

Más adelante trataremos en profundidad los métodos nativos, porque añaden
una gran potencia a Java,al permitirle integrar a través de librería dinámica
cualquier algoritmo desarrollado en C o C++, lo cual,entre otras cosas, se utiliza
como método de protección contra la descompilación completa del código Java.
PREGUNTAS ?
WE ROCK JAVA !!!

Contenu connexe

Tendances

Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a ObjetosJuan Carlos Riva
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y ObjetosKudos S.A.S
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesSorey García
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)Roberto Rojas
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )brayan0015
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a ObjetosLuis Berganza
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaJulio César Rojas Maza
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetosdesimartinez
 

Tendances (20)

Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
POO sencillito
POO sencillitoPOO sencillito
POO sencillito
 
Poo presentacion
Poo presentacionPoo presentacion
Poo presentacion
 
Clases en java
Clases en javaClases en java
Clases en java
 
P.O.O.
P.O.O.P.O.O.
P.O.O.
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 
Curso de Java Intermedio
Curso de Java IntermedioCurso de Java Intermedio
Curso de Java Intermedio
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para Dummies
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )
 
S2-Representación Gráfica
S2-Representación GráficaS2-Representación Gráfica
S2-Representación Gráfica
 
Pilares de la POO
Pilares de la POOPilares de la POO
Pilares de la POO
 
Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a Objetos
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y java
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetos
 

En vedette

Trabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personalTrabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personalRosalmy Villarroel
 
Tema 6 capacitacion del personal
Tema 6 capacitacion del personal Tema 6 capacitacion del personal
Tema 6 capacitacion del personal Rosalmy Villarroel
 
Trabajo practico nº 2 oropel irusta
Trabajo practico nº 2 oropel irustaTrabajo practico nº 2 oropel irusta
Trabajo practico nº 2 oropel irustaonix2208
 
Narendra wagle is a chemical technologist and has worked in various capacities
Narendra wagle is a chemical technologist and has worked in various capacitiesNarendra wagle is a chemical technologist and has worked in various capacities
Narendra wagle is a chemical technologist and has worked in various capacitiesRashid Arhaan
 
Trabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personalTrabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personalRosalmy Villarroel
 
La importancia de la lengua oral en el aula
La importancia de la lengua oral en el aula La importancia de la lengua oral en el aula
La importancia de la lengua oral en el aula Rode Huillca Mosquera
 
Proyecto de grado_postres_el_patriarca
Proyecto de grado_postres_el_patriarcaProyecto de grado_postres_el_patriarca
Proyecto de grado_postres_el_patriarcaPostres El Patriarca
 
La relación jurídica
La relación jurídicaLa relación jurídica
La relación jurídicaferchoaster
 
Ad training fractured u.-newest-12-13
Ad training fractured u.-newest-12-13Ad training fractured u.-newest-12-13
Ad training fractured u.-newest-12-13jsnyder42
 
Estandares historia definitivos. Educación Media
Estandares historia definitivos. Educación MediaEstandares historia definitivos. Educación Media
Estandares historia definitivos. Educación MediaANA HENRIQUEZ ORREGO
 
Fases Del Proceso Penal
Fases Del Proceso PenalFases Del Proceso Penal
Fases Del Proceso Penalbcolina
 
ComunicacióN Intercelular 29 Mayo
ComunicacióN Intercelular 29 MayoComunicacióN Intercelular 29 Mayo
ComunicacióN Intercelular 29 Mayocelv
 
Creación de Empresa (Teoría de la Organización)
Creación de Empresa (Teoría de la Organización) Creación de Empresa (Teoría de la Organización)
Creación de Empresa (Teoría de la Organización) Hector Goitia
 

En vedette (20)

Trabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personalTrabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personal
 
Tema 6 capacitacion del personal
Tema 6 capacitacion del personal Tema 6 capacitacion del personal
Tema 6 capacitacion del personal
 
Trabajo practico nº 2 oropel irusta
Trabajo practico nº 2 oropel irustaTrabajo practico nº 2 oropel irusta
Trabajo practico nº 2 oropel irusta
 
Telefonia IP
Telefonia IPTelefonia IP
Telefonia IP
 
Narendra wagle is a chemical technologist and has worked in various capacities
Narendra wagle is a chemical technologist and has worked in various capacitiesNarendra wagle is a chemical technologist and has worked in various capacities
Narendra wagle is a chemical technologist and has worked in various capacities
 
Trabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personalTrabajo sobre capacitacion de personal
Trabajo sobre capacitacion de personal
 
Catálogo plan de cuentas
Catálogo plan de cuentasCatálogo plan de cuentas
Catálogo plan de cuentas
 
Pausa activa
Pausa activaPausa activa
Pausa activa
 
Equipos de trabajo
Equipos de trabajoEquipos de trabajo
Equipos de trabajo
 
La importancia de la lengua oral en el aula
La importancia de la lengua oral en el aula La importancia de la lengua oral en el aula
La importancia de la lengua oral en el aula
 
Proyecto de grado_postres_el_patriarca
Proyecto de grado_postres_el_patriarcaProyecto de grado_postres_el_patriarca
Proyecto de grado_postres_el_patriarca
 
Folder calculo 1 pd
Folder calculo 1 pdFolder calculo 1 pd
Folder calculo 1 pd
 
La relación jurídica
La relación jurídicaLa relación jurídica
La relación jurídica
 
Ad training fractured u.-newest-12-13
Ad training fractured u.-newest-12-13Ad training fractured u.-newest-12-13
Ad training fractured u.-newest-12-13
 
Estandares historia definitivos. Educación Media
Estandares historia definitivos. Educación MediaEstandares historia definitivos. Educación Media
Estandares historia definitivos. Educación Media
 
Texto bsico de_tica
Texto bsico de_ticaTexto bsico de_tica
Texto bsico de_tica
 
Fases Del Proceso Penal
Fases Del Proceso PenalFases Del Proceso Penal
Fases Del Proceso Penal
 
ComunicacióN Intercelular 29 Mayo
ComunicacióN Intercelular 29 MayoComunicacióN Intercelular 29 Mayo
ComunicacióN Intercelular 29 Mayo
 
Creación de Empresa (Teoría de la Organización)
Creación de Empresa (Teoría de la Organización) Creación de Empresa (Teoría de la Organización)
Creación de Empresa (Teoría de la Organización)
 
Mercadotecnia
MercadotecniaMercadotecnia
Mercadotecnia
 

Similaire à Fundamentos de Java Enterprise Edition con JDeveloper

Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosAgapito26
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalJose Angel Rodriguez
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosronnyme21
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetosguest160f88
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetosguest160f88
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetosAngel Ordoñez
 
Programacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos AcostaProgramacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos AcostaMarcos Acosta
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosjuliomancerotroya
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradavnslgars
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetoslindacajaperuiz
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosmaikitejeda
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosalexmoncada21
 

Similaire à Fundamentos de Java Enterprise Edition con JDeveloper (20)

Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos original
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetos
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetos
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Programacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos AcostaProgramacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos Acosta
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Cspr
CsprCspr
Cspr
 
Cspr
CsprCspr
Cspr
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Poo
PooPoo
Poo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Programacion orientada a objeto
Programacion orientada a objeto Programacion orientada a objeto
Programacion orientada a objeto
 

Dernier

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Dernier (20)

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

Fundamentos de Java Enterprise Edition con JDeveloper

  • 1. Let's Rock Java Fundamentos de Java Enterprise Edition con JDeveloper Eudris Cabrera Rodriguez Ingeniero Telemático Senior Software Developer Skype:eudriscabrera LinkedIn:http://www.linkedin.com/in/eudriscabrera Noviembre 2011, Santiago de los Caballeros, R. D.
  • 2. Objetivos Enseñar conceptos fundamentales de la programación orientada a objeto con Java
  • 3. Agenda ● Paradigma de Orientación a Objetos: Conceptos Avanzados ○ Clases, Objetos, Palabras Reservadas,Atributos ○ Herencia Simple de Java ○ Jerarquías de Clases. ○ Sobreescritura de métodos. ○ Métodos con Parametros y Sobrecarga de Métodos. ○ Clases Abstractas, Interfaces y Polimorfismo.
  • 4. Programación orientada a objetos La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
  • 5. Programación orientada a objetos Conceptos fundamentales La programación orientada a objetos es una nueva forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes: Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
  • 6. Programación orientada a objetos Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase. Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
  • 7. Programación orientada a objetos Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera. Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
  • 8. Programación orientada a objetos Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método. Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
  • 9. Programación orientada a objetos Componentes de un objeto:atributos, identidad, relaciones y métodos. Representación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes. En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.
  • 10. Definición de una clase Para definir una clase en Java, consideramos la siguiente sintaxis: Código: <control de acceso> class <nombre clase> { <atributos> <constructores> <métodos> }
  • 11. Definición de una clase donde: tipo de dato puede ser cualquiera, incluyendo otra clase. control de acceso puede ser: private, public o protected Nota: Veamos que los controles de acceso, son tal y como están escritos(en idioma ingles), que traducidos dicen: private = privado (declaramos una propiedad o evento privado) public = publico (declaramos una propiedad, o evento publico, que puede ser llamado desde otra clase) protected = protegido (una propiedad de solo lectura, que no se puede modificar) Class, Public, Private,Protected... son palabras reservadas del lenguaje Java, y otros... }
  • 12. Métodos: Un método es un procedimiento propio de un objeto, un método cumple una función y retorna (o no) un resultado, por ejemplo: int sumaDos(int param, int, param2){ return (param+param2); } Es como una función, un concepto muy propio de los lenguajes de procedimientos , pero un método es propio de un objeto
  • 13. Constructores: En Java, la creación de un objeto debe realizarse a través de constructores, éstos son un tipo especial de método que se deben definir como parte de la clase. ● Un constructor posee las siguientes características: ● Es un método que lleva el mismo nombre de la clase. ● Se invoca una sola vez, cuando se crea un nuevo objeto ● Puede usarse para inicializar los atributos (también llamadas variables de instancia) de un objeto. Sin embargo, puede no contener instrucción alguna, en este caso, su propósito es permitir la obtención de memoria para las variables de instancia. ● ● Puede incluir parámetros ● Una clase puede incluir varios constructores con distintas definiciones de parámetros formales.
  • 14. Constructores: Para definir un constructor se debe considerar la siguiente sintaxis: Código: public class MiClase{ public MiClase(){ //constructor } } Un constructor siempre debe ser definido como público, de manera que sea posible, para cualquier objeto, crear objetos de cualquiera otra clase (definida como pública). Esto llevado al plano de las definiciones de clases, cualquier método que lo requiera podrá crear un objeto de la clase que sea,según las necesidades que se tengan en virtud del problema a resolver.
  • 15.
  • 16. Encapsulamiento y ocultación de la información Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente. Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase.
  • 17. Encapsulamiento y ocultación de la información Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
  • 18. Encapsulamiento y ocultación de la información En otras palabras un objeto puede cumplir con ciertas funciones sin que se conozca su estructura interna, un programador puede crear objeto que resuelva determinado problema y alguien mas puede usarlo solo ocupándose de su implementación, un objeto bien estructurado puede ser portado a otra parte del diseño del software o a otro proyecto sin preocuparse de adaptarlo para ese determinado proyecto (reutilización), me gustaba la analogía de un reproductor de CD's, un usuario puede escuchar un disco solo conociendo la forma de uso del aparato sin tener que prestar la mínima atención a su funcionamiento interno. Sin embargo los objetos pueden comunicarse entre si mismos o con el usuario por interfaces definidas por el programador.
  • 19. Herencia Una clase puede ser "hija" de otra clase y a la vez esa clase puede ser "padre" de otra, al derivar una clase de otra esta toma sus atributos y comportamientos (dependiendo del nivel de acceso). Al desarrollar podemos crear algunas clases un poco generales y derivarla en algunas otras un poco mas especializadas. Por ejemplo un "Perro" tiene propiedades como orejas , ojos etc.. Y derivan en razas como "Rottweiler", "Chihuahua" , todos derivan de la clase perro y heredan sus atributos y comportamientos (se mueven, ladran), pero tienen sus respectivas distinciones (uno mide mas y se podria comer al otro..) . En la mayoría de los lenguajes se usa la palabra reservada extends para indicar que una clase hereda de otra.
  • 20. Herencia Simple de Java Un objeto puede extender las características de otro objeto y de ningún otro, es decir, que solo puede heredar o tomar atributos de un solo padre o de una sola clase. Lenguajes como Java, Ada y C# sólo permiten herencia simple mientras que otros como C++, Python permiten herencia múltiple. La cual consiste en que un objeto puede extender las características de uno o más objetos, es decir, puede tener varios padres. Algunos diseñadores de lenguajes han preferido no admitir la herencia múltiple por las posibles coincidencias en nombres de métodos o datos miembros.
  • 21. Control de Acceso Cuando se crea una nueva clase en Java, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los métodos definidos en la clase: public Cualquier clase desde cualquier lugar puede acceder a las variables y métodos de instacia públicos. protected Sólo las subclases de la clase y nadie más puede acceder a las variables y métodos de instancia protegidos. private Las variables y métodos de instancia privados sólo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases.
  • 22. Control de Acceso friendly (sin declaración específica) void MetodoDeMiPaquete(){} Por defecto, si no se especifica el control de acceso, las variables y métodos de instancia se declaran friendly (amigas), lo que significa que son accesibles por todos los objetos dentro del mismo paquete, pero no por los externos al paquete. Es lo mismo que protected. Los métodos protegidos (protected) pueden ser vistos por las clases derivadas, como en C++, y también, en Java, por los paquetes (packages). Todas las clases de un paquete pueden ver los métodos protegidos de ese paquete. Para evitarlo, se deben declarar como private protected , lo que hace que ya funcione como en C++ en donde sólo se puede acceder a las variables y métodos protegidos de las clases derivadas.
  • 23. VARIABLES Y METODOS ESTATICOS En un momento determinado se puede querer crear una clase en la que el valor de una variable de instancia sea el mismo (y de hecho sea la misma variable) para todos los objetos instanciados a partir de esa clase. Es decir, que exista una única copia de la variable de instancia. Se usará para ello la palabra clave static. class Documento extends Pagina { static int version = 10; } El valor de la variable version será el mismo para cualquier objeto instanciado de la clase Documento . Siempre que un objeto instanciado de Documento cambie la variable version , ésta cambiará para todos los objetos.
  • 24. THIS Y SUPER Al acceder a variables de instancia de una clase, la palabra clave this hace referencia a los miembros de la propia clase. Si se necesita llamar al método padre dentro de una clase que ha reemplazado ese método, se puede hacer referencia al método padre con la palabra clave super
  • 25. Jerarquías de Clases Todas las clases en Java derivan de alguna clase anterior. La clase raíz del árbol de la jerarquía de clases de Java es la clase Object, definida en el paquete java.lang. Cada vez que se desciende en el árbol de jerarquía, las clases van siendo más especializadas. Cuando se desee que nadie pueda derivar de una clase, se indica que es final; y lo mismo con los métodos, si no se desea que se puedan sobreescribir, se les antepone la palabra clave final.
  • 26. Sobreescritura de métodos Una subclase hereda todos los métodos de su superclase que son accesibles a dicha subclase a menos que la subclase sobreescriba los métodos. Una subclase sobreescribe un método de su superclase cuando define un método con las mismas características ( nombre, número y tipo de argumentos) que el método de la superclase. Las subclases emplean la sobreescritura de métodos la mayoría de las veces para agregar o modificar la funcionalidad del método heredado de la clase padre.
  • 27. Sobrecarga de Metodos La sobrecarga de métodos es la creación de varios métodos con el mismo nombre pero con diferentes firmas y definiciones. Java utiliza el número y tipo de argumentos para seleccionar cuál definición de método ejecutar. Java diferencia los métodos sobrecargados con base en el número y tipo de argumentos que tiene el método y no por el tipo que devuelve. Tambien existe la sobrecarga de constructores: Cuando en una clase existen constructores múltiples, se dice que hay sobrecarga de constructores.
  • 28. Clases Abstractas Una clase abstracta es una clase de la cual no se pueden instanciar objetos, de estas clases solo se puden heredar otras, en desarrollo se utilizan simplemente para derivar a otras clases mas especializadas. En los lenguajes que implementan este tipo de clases se utiliza la palabra reservada abstract para indicarlas. Una clase abstracta debe tener uno o mas métodos abstractos, y estos métodos deben ser implementados en las clases derivadas.
  • 29. Interfaces Una interfaz es una clase únicamente para implementación en otras, en una interfaz se indican los prototipos de los métodos que debería tener un objeto pero el cuerpo del mismo debe ser escrito en las clases que la implementan, en los lenguajes que lo implementan se utiliza la palabra reservada interface para indicar una interfaz e implements para su implementación.
  • 30. Clases final Las clases final son clases que no se pueden heredar, es la ultima parte de la estructura de clases, en loslenguajes que las implementan se utiliza la palabra reservada final. En los lenguajes como java pueden existir métodos finales, un método que se declara final no puede ser sobrescrito en clases derivadas.
  • 31. Polimorfismo El polimorfismo se refiere a la posibilidad de definir múltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de forma idéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución. Ya vimos una forma de polimorfismo al sobrecargar un método. otra forma de polimorfismo se logra a través del uso de subtipos.
  • 32. Metodo Nativos Java proporciona un mecanismo para la llamada a funciones C y C++ desde nuestro código fuente Java. Para definir métodos como funciones C o C++ se utiliza la palabra clave native. public class Fecha { int ahora; public Fecha() { ahora = time(); } private native int time(); static { System.loadLibrary( "time" ); } }
  • 33. Metodo Nativos Una vez escrito el código Java, se necesitan ejecutar los pasos siguientes para poder integrar el código C o C++: ● Utilizar javah para crear un fichero de cabecera (.h) ● Utilizar javah para crear un fichero de stubs , es decir, que contiene la declaración de las funciones ● Escribir el código del método nativo en C o C++, es decir, rellenar el código de la función, ● completando el trabajo de javah al crear el fichero de stubs ● Compilar el fichero de stubs y el fichero .c en una librería de carga dinámica ( DLL en Windows '95 o libXX.so en Unix) ● Ejecutar la aplicación con el appletviewer Más adelante trataremos en profundidad los métodos nativos, porque añaden una gran potencia a Java,al permitirle integrar a través de librería dinámica cualquier algoritmo desarrollado en C o C++, lo cual,entre otras cosas, se utiliza como método de protección contra la descompilación completa del código Java.