Sunteți pe pagina 1din 85

Java Mdulo 1

Introduccin y Fundamentos del


lenguaje de programacin Java

Contenido

Introduccin
Caractersticas del lenguaje.
Variables y Tipos de Datos.
Estructuras de Control
Ciclos iterativos.
Introduccin a la POO.

Introduccin

Introduccin (I)

Creado en 1991 por Sun Microsystems (James


Gosling) para dispositivos electrnicos:
calculadoras, microondas y la televisin
interactiva.

Escasa potencia de clculo


Poca memoria
Distintas CPUs

Consecuencias:

Lenguaje sencillo que genera cdigo reducido


Lenguaje que independiente de la plataforma

Introduccin (II)

Lenguaje de progamacin para


computadores/internet desde 1995.
Sun describe Java como un lenguaje simple,
orientado a Objetos, distribuido, interpretado,
robusto, seguro, de arquitectura neutral, portable,
de alto rendimiento, multihilos, y dinmico
Ejecucin de Java como:

Aplicacin independiente
Applet (dentro del navegador al cargar la pgina Web)
Servlet (ejecutado en servidor de internet, sin interfaz
grfica).

Introduccin (III)

JDK (Java Development Kit): programas y librerias para


desarrollar, compilar y ejecutar programas Java.
Versiones:

Java 1.0: 212 clases organizadas en 8 paquetes


Java 1.1: 504 clases, 23 paquetes. Mejoras a la JVM.
Java 1.2 (Java 2): 1520 clases, 59 paquetes. Plataforma
muy madura . Apoyado por grandes empresas: IBM,
Oracle, Inprise, Hewtlett-Packard, Netscape, Sun.
Java 1.3 (Java Enterprise Edition). Java comienza a
ser una plataforma de desarrollo profesional
??? Java MicroEdition

Caractersticas de Java

Caractersticas de Java I

Lenguaje de fcil uso orientado a objetos


Lenguaje compilado e interpretado
Facilita un entorno interpretado:
Velocidad de desarrollo (no de ejecucin)
Portabilidad del cdigo
Ejecucin multitareas
Cambios dinmicos en tiempo de ejecucin
Seguridad del cdigo.

La mquina Virtual Java - JVM (I)

Es una mquina hipottica que emula por software una


mquina real. Es definida por una especificacin.
Conjunto de instrucciones de mquina
(C.O.) + Operandos
Pila
Memoria
...
El compilador genera bytecodes (instrucciones de cdigo
maquina para la JVM)
El interprete tarduce y ejecuta los bytecodes para cada
mquina especfica.

La mquina Virtual Java (II)


Cdigo fuente
Compilador Java
Byte-codes
Macintosh JVM

Win32 JVM

UNIX JVM

Cdigo mquina
Macintosh

Cdigo mquina
Win32

Cdigo mquina
UNIX

Compilador e intrprete de
Java (I)

El compilador analiza la sintaxis del cdigo fuente (con


extensin .java). Si no hay errores, genera bytecodes
> javac <Nombre>.java

El intrprete es la Mquina Virtual de Java que ejecuta


los bytecodes (*.class) creados por el compilador.
> java <Nombre> (sin extensin)
> java <Nombre> arg1 arg2

Compilador e intrprete de Java (II)


Codigo fuente

HelloWorld.java

java HelloWorld
ejcutar

compilar

javac HelloWorld.java

HelloWorld.class

bytecode

Garbage Collection

La memoria reservada dinmicamente que No se vaya a


usar ms debe ser liberada.
En otros lenguajes, esta liberacin debe realizarla el propio
programador.
La JVM dispone de un proceso que rastrea las operaciones
de memoria: el Garbage Collector.

Verifica y libera la memoria que no se necesita

Se ejecuta automticamente

Puede variar segn la implementacin de la JVM.

Seguridad del Cdigo

La JVM verifica los bytecodes asegurando que:

El cdigo se ajusta a las especificaciones de la JVM.

No hay violaciones de acceso restringido.

Los tipos de los parmetros son correctos para todo el


cdigo.

No existen conversiones ilegales de datos (ej. de


enteros a apuntadores).

Formato de los archivos fuente

Declaracin de paquete (opcional)

Instrucciones de importacin(opcional)

package <nombrePaquete>

import <nombrePaquetes>

Declaracin de clase o interfaz

[<mod>] class <NombreClase> {.....}

Un programa Simple
public class ProgramaSimple
{
public static void main(String[] args)
{
System.out.println("Este es + un programa simple");

System.exit(0);
}
}

Elementos del Lenguaje

Elementos del lenguaje

Caracteristicas del lenguaje


Declaraciones
Tipos de Datos
Operadores
Estructuras de control
Clases y Objetos
Paquetes

Caracteristicas del lenguaje

Sensible a maysculas/misnsculas
Comentarios
Lenguaje de formato libre
Identificadores
Palabras reservadas
Variables y constantes
Convenciones de nomenclatura
Tiene reglas sobre los tipos de datos

Sensible a
maysculas/minsculas

Se distingue entre maysculas y


minsculas.
Los identificadores Papa, papa y PAPA
son diferentes.
Todas las palabras reservadas del lenguaje
van en minsculas.

Comentarios
// comentario
Los caracteres desde // hasta el final de la lnea son
ignorados.
/* comentario */
Los caracteres entre /* y */ son ignorados
/** comentario */
Los caracteres entre /** y */son ignorados y se
incluyen en la generacin autmatica de la
documentacin.

Lenguaje de formato libre

La disposicin de los elementos dentro del cdigo es libre


Instrucciones: lnea simple de cdigo terminada en ;
Bloque de cdigo: Conjunto de sentencias agrupadas entre
llaves.
{
X = x + 1;
Y = y + 1;
}

Java permite espacios en blanco entre elementos del cdigo


X1 = y
* delta;
X2 = (y-1) * delta;

Palabras Reservadas

Palabras con un significado especial para el compilador


Ejemplos:

Nombres de tipos bsicos: boolean, char, double, int,


Indicadores de controls: do, if, else, for, while,
Class, interface, extends, implements
package, import
this, super
Modificadores de acceso: public, private, protected
Constantes: true, false, null
Etc

Variables y Constantes

Variable: Zona de memoria cuyos valores van a


cambiar durante la ejecucuin.
Declaracin:

<tipo> <variable>;

<tipo> <var1>, <var2>, ..., <varn>;

<tipo> <var1> = <valor>;

Variables y Constantes

Ejemplos de declaracin de variables:

Constantes: Zona de memoria cuyos valores no


cambian
Declaracin:

int x,y,z;
int x = 9;
boolean terminar = false;
Cliente c1 = new Cliente();

final <tipo> <variable> = <valor>;

Ejemplo: final double PI = 3.14159;

Asignaciones

Se utiliza el operador de asignacin =

<tipo> <variable> = <valor>;


<tipo> <variable>;
<otras instrucciones>...
<variable> = <valor>;

La parte izquierda siempre debe ser una variable


La parte derecha puede ser un literal, una
variable, una expresin, una funcin o una
combinacin de todos.

int x = 4; //Declaracion con asignacin


x = 9;
//Se asume que x est definida

Tipos de Datos y Operadores

Tipos de Datos

Java define dos tipos de datos

Los tipos primitivos son ocho agrupados en


cuatro categoras:

Tipos primitivos
Tipos referencia

Lgico: boolean
Texto: char
Entero:byte, short, int, long
Real: float, double

Los tipos referencia son apuntadores a objetos.

Tipos de Datos

Tipos primitivos:

t
n
i
un
s
e
No

boolean true o false


char unicode! (16 bits)
byte entero de 8 bits con signo.
short
entero de 16 bits con signo.
int
entero de 32 bits con signo.
long entero de 64 bits con signo.
float,double IEEE 754 floating point

Tipos de datos Referencia

Un tipo referencia guarda un apuntador a la direccin


donde se ubica el objeto (32 bits).
Slo puede almacenar objetos de su propio tipo.
Ejemplo:
Cuadrado cuad1, cuad2;
Circulo circ1;
cuad1 = new Cuadrado();
circ1 = cuad1;
// Error de compliacin
cuad2 = cuad1;
// Ok

Todas las clases son de tipo referencia.


El valor que toma por defecto una variable de tipo
referencia es null.

Cadenas de Caracteres

La clase String permite manejar cadenas de caracteres.

El literal string debe ir entre comillas dobles .

Se puede crear una cadena de caracteres de dos formas:

String nombre = new String(Pepe);

String nombre = Pepe;

Para concatenar dos cadenas se usa el operador +.

No se guarda el carcter fin de cadena.

Conversiones de tipos

La conversin de tipos (casting) debe realizarse entre


tipos de la misma naturaleza: numricos o referencia.
Al convertir un tipo a un tamao ms pequeo se puede
perder la informacin del los bits de mayor peso.

No hay conversin automatica con el tipo boolean!

La sintaxis es: (<tipo>) <expresion>

Ejemplo: int i = (int) 1.345;

Operadores (I)

Unarios: +. -

Aritmticos: +, -, *, /, % (resto de la divisin).

De Asignacin: =, +=, -=, *=, %=


<var> += <exp> <var> = <var> + <exp>

Operadores incrementales: ++, -

Precediendo a la variable: ++<var>, --<var>

siguiendo la variable: <var>++, <var>--

elacionales: ==. !=, <, >, <=, >=,

Operadores (II)

Operadores relacionales: == (igual). != (distinto), <, >,


<=, >=,
Operadores booleanos: && (AND), || (OR), ! (NOT), &
(AND), | (OR).

&& y || realizan evaluacin perezosa

& y | siempre evalan los dos operadores

El operador instanceof: <objeto> instanceof


<clase> determina si un objeto pertenece a una clase.

Operadores (III)

Operador condicional: ?
<expBooleana> ? <valor1> : <valor2>
permite bifurcaciones condicionales sencillas.

Operadores a nivel de Bits: &, |, ^, ~, <<, >>, >>>

op1 >> n, desplaza los bits de op1 (con signo) a la derecha n


posiciones.

op1 >>> n, desplaza los bits de op1 (sin signo) a la derecha n


posiciones.

op1 ^ op2, O exclusivo.

~op1 , NOT a nivel de bit (complemento).

Precedencia de operadores

Los operadores binarios se evalan de izaquierda a derecha,


excepto los operadores de asignacin.
1.

Sufijos: .

[] ()

2.

Unarios: ++

--

3.

Creacion y casting: new

4.

Multiplicativos: *

5.

Aditivos: +

6.

Desplazamientos: << >>

7.

Relacionales: < > <= >= == !=


Bits: &
^ |
Lgicos: &&
||
Condicional: ?
:
Asignacin: = op= (*= /= %= += - etc.)

8.
9.
10.
11.

! ~
/

(tipo)exp
%

>>>

Estructuras de control

Estructuras de Control

Las estructuras de control del flujo de ejecucin


permiten tomar decisiones y realizar un bloque de
instrucciones repetidas veces.
Hay 2 tipos principales:

Condicionales: if , switch
Lazos: for, while, do while

Otras instrucciones que permiten interrumpir el flujo


normal de ejecucin son break y continue.

La instruccin if

Ejecuta un conjunto de instrucciones en funcin de la


expresin de comparacin (booleana)
if (<exprBooleana>)
<instruccion1>;
[else <instruccin2>];
if ( exprBooleana ) <bloque1>;
[else <bloque2>];

Ejemplo: if (a>b) x = a;
else x = b;
El else es opcional
if ( x[i] > max ) max = x[i];

La instruccin switch

Comparacin de igualdad mltiple con la misma


variable.
switch(<variable>) {
case literal1:[<cjtoInstrucc1>;]
[break;]
case literal2:[<cjtoInstrucc2>;]
[break;]

case literaln:[<cjtoInstruccn>;]
[break;]
[default: <cjtoInstrucc>;]

Ejemplo switch
switch(opcion) {
case 1:AbrirArchivo();
break;
case 2:ImprimirArchivo();
break;
case 3:ImprimirDatos();
break;
case 4:CerrarArchivo();
break;
case 5:
default: terminarPrograma();
}

El lazo for

Permite la ejecucin repetida de un grupo de


instrucciones con mayor control
for ( <inicializacin>;
<expBooleana>; <actualizacin> )
{ <grupo de instrucciones> ; }
<inicializacin>, asignacin de valores iniciales de
las variables que intervienen en la expresin
<expBooleana>, condicin boolena
<actualizacin>, asignacin de un nuevo valor de las
variables de <inicializacin>

El lazo While

El grupo de instrucciones se ejecuta


mientras se cumpla la expresin booleana.
while ( expBooleana )
{
<grupoInstrucciones> ;
}

Equivalencia for-while
for ( <inicializacin>; <expBooleana>; <actualizacin> )
{
<grupo de instrucciones> ;
}

Equivale a:

<inicializacin>
while ( expBooleana )
{
<grupoInstrucciones> ;
<actualizacin>;
}

Ejemplo
for( k=0; k<n; k++ ) { <s>; }
K=0
while ( k<n )
{
<s> ;
k++;
}

Realizan el las instrucciones en la secuencia de


instrucciones s, n veces.

El lazo Do-While

El conjunto de instrucciones se ejecuta mientras se


cumpla la expresin booleana
do
{
<grupoInstrucciones> ;
}
while ( expBooleana )
El conjunto de instrucciones se ejecuta al menos 1 vez.

Las instrucciones break y


continue.

La instruccin break causa la terminacin


inmediata de un lazo o instruccin switch (sin
ejecutar el resto de las instrucciones).

Vlido para for, while, do while y switch

La sentencia continue causa la terminacin


inmediata de una iteracin de un ciclo.

Vlido para for, while y do while

Programacin Orientada a
Objetos

Paradigmas de programacin

Paradigma estructurado o procedural: Los programas se dividen


en procedimientos independientes con acceso total a los datos
comunes.

Algortimos + Estructuras de Datos = Programas

Paradigma orientado a objetos: Los datos se consideran la parte


ms importante del programa. Los objetos modelan las
caractersticas de los problemas del mundo real, su
comportamiento ante estas caracteristicas y su forma de interactuar
con otros elementos

Objetos + mensajes = Programas

Ejemplo: Tomarse un caf en


la panadera

Procedural:

El cliente entra el la
panadera
El cliente pasa detrs
de la barra
El cliente prepara la
cafetera
El cliente se sirve el
caf
El cliente se bebe el
caf.

OO:

El cliente entra en la
panadera
El cliente pide un caf
al cafetero
El cafetero prepara
el caf.
El cafetero sirve el
caf al cliente.
El cliente se bebe el
caf.

Conceptos de la Orientacin a
Objetos

Clases: Patrones que indican como construir objetos


Objetos: Instancias de las clases en tiempo de
ejecucin.
Miembros de la clase:

Atributos: Caractersticas o propiedades de los objetos


(o clases). Pueden ser variables de tipos simples o
referencias a otros objetos
Mtodos: Comportamientos de los objetos. Son
funciones que operan sobre los atributos de los objetos.

Caractersticas de la OO

Cada objeto tiene caractersticas reconocibles.


Ejemplo: un empleado tiene Nombre, CI, sueldo,
Cada objeto es nico. Ejemplo: el empleado1 es Juan
Prez, con CI 1.456.786 gana 890.000 Bs.
Los objetos almacenan informacin (sus
caractersticas)
Los objetos realizan operaciones sobre sus atributos.

Definicin de Clase

Sintaxis

Class <NombreClase> {
// Declaracion de atributos
<tipo> <var>;
// Declaracin de mtodos
<tipo> <nombreMetodo> ( <argumentos> )
{ }
}

El nombre del archivo debe coincidir con el de la


clase definida en l.
Se recomienda definir una clase por cada archivo
Java.

Ejemplo de Clase
public class Circulo {
// Atributos
double radio;
String color;
// Metodos
void asigRadio( ){ }
double area( ){}
}

Creacin de un objeto

Se usa la palabra reservada new


<refObjeto> = new <NombreClase>();

Ejemplo:
Circulo miCirculo;
miCirculo = new Circulo();

Acceso a los miembros de un


Objeto

A travs del operador punto (.) se puede acceder tanto


a los atributos como a los mtodos.
<refObjeto>.<atributo>
<refObjeto>.<metodo>()

Ejemplo:
Circulo miCirculo = new Circulo();
miCirculo.radio = 10;
miCirculo.color = azul;
miCirculo.area();

Mtodos

Son el equivalente a los procedimientos de los lenguajes no


OO. Un mtodo es un bloque de cdigo definido dentro de
una clase que proporciona un mecanismo para realizar una
accin.

Un mtodo tiene acceso a todos los atributos de su clase.

Un mtodo puede invocar otros mtodos

En Java no se puede definir un mtodo dentro de otro.

La ejecucin de todos los programas se inicia en el mtodo


main.

Definicin de mtodos (I)

Sintaxis para la definicin de un mtodo:


<tipoRetorno> <nombreMetodo>(< parametros >...)
{ <instrucciones>...}

La declaracin de un mtodo tiene cuatro partes bsicas:


El tipo del valor de retorno del mtodo (tipo). Si no devuelve
ningun valor debe ser void.
El nombre del mtodo (nombreMetodo)
Una lista de parmetros (parametros). Casa parmetro tiene la
forma <tipo> <argumento>. Se separan con comas.
El cuerpo del mtodo (instrucciones).

Definicin de mtodos (II)


<instrucciones>, Conjunto de instrucciones que
implementan la tarea que debe realizar el mtodo.

Si devuelve un valor debe finalizar con la sentencia


return
return

<valor>;

<valor> Debe ser del mismo <tipoRet> con que se ha


declarado el mtodo.

El cdigo se ejecuta hasta alcanzar la instruccin return (si


devuelve un valor) o hasta el final del mtodo.
Se pueden declarar variables locales si son necesarias.

Ejemplos de Mtodos
public class Circulo
{
// Atributos
double radio;
String color;
// Metodos
void asigRadio( )
{ }
double area( ){}
}

double obtRadio( ){
return radio;
}
void asigRadio(int nuevoRadio){
radio = nuevoRadio;
}
public double Area( ) {
return radio*radio*Math.PI;
}

Parametros

Las variables en la lista de parmetros se separan con


comas.
Los parametros de la lista en la especificacin del
mtodo, son llamados parmetros formales.
Cuando un mtodo es llamado, estos parmetros
formales son reemplazados por los parmetros
actuales.
Los parmetros actuales deben ser equivalentes en
tipo, orden y nmero a los parametros formales.

Parmetros - Ejemplo
num = 3
ch = obj.calc (2, num, Hola Mundo");

char calc (int num1, int num2, String mensaje)


{
int sum = num1 + num2;
char result = mensaje.charAt (sum);
return result;
}

Paso de parametros por valor

Cuando es invocado un mtodo con un


parmetro de tipo primitivo, tal como int, el
valor del parmetro actual es pasado al mtodo.
El valor actual de la variable fuera del mtodo
no es afectado, independientemente de los
cambios hechos al parmetro formal dentro del
mtodo.

Parametros por valor - Ejemplo


class PruebaPasoPorValor {
public static void main(String[] args) {
int times = 3;
System.out.println(Antes del llamado, la variable
times es+times);
nPrintln(Bienvenido a Java!,times);
System.out.println(Despues del llamado, la variable
times es + times);
}
static void nPrintln(String mensaje, int n) {
while (n > 0) {
System.out.println(n = +n);
System.out.println(mensaje);
n--;
}
}
}

Paso de parametros por


referencia

Se pueden pasar objetos a mtodos como


parmetros actuales
Cuando se pasa un objeto al mtodo la referencia
del objeto es pasado al parmetro formal
Cualquier cambio al objeto local que ocurra
dentro del mtodo afectar al objeto original que
fue pasado como argumento.

Parametros por referencia -Ejemplo


class PruebaPasoPorReferencia {
public static void main(String[] args){
Circulo miCirculo;
miCirculo = new Circulo(5.0, "blanco");
imprimeCirculo(miCirculo);
colorCirculo(miCirculo, "negro");
imprimeCirculo(miCirculo);
}
public static void colorCirculo( Circulo c, String color) {
c.color = color;
}
public static void imprimeCirculo(Circulo c) {
System.out.println("El rea del circulo de radio " +
c.getRadio( ) + " es " +c.Area());
System.out.println("El color del Circulo es " +c.color);
}
}

Parametros por referencia Ejemplo (cont.)


class Circulo {
private double radio;
String color;
public Circulo(double r, String c){
radio = r;
color = c;
}
public double getRadio( ){
return radio;
}
public double Area( ){
return radio*radio*Math.PI;
}
}

Alcance de las variables (I)

En java se dispone de tres tipos de variables:

Las variables miembro pertenecientes a una clase.


Argumentos de un mtodo de la clase.
Variables locales de un mtodo de la clase.

Los argumentos trabajan como variables locales.


class Ejemplo {
int x;

// variable miembro

metodo (int y){ // argumento


int z;

// variable local

x = y + z;
}
}

Alcance de las variables (II)

Las variables miembros son visibles desde


cualquier parte de la clase.
Los argumentos y variables locales solo son
visibles dentro del mtodo al que pertenece, dejan
de existir al finalizar el mtodo.
Dentro de un mtodo, si coincide el identificador
de un argumento o variable local con el de una
variable miembro, slo se accede a la variable del
mtodo.

Ejemplo
class A {
int x;
void metodo (int y){
int x=2;
y = 3*x + y - x;
println(y);
}
}

main
{
int arg = 4;
A obj = new A();
obj.x = 1;
obj.metodo(arg);
println(arg);
println(obj.x);
}

La referencia this

Se emplea para referirse al objeto actual


dentro de un mtodo.
Con this se hace accesible una variable
miembro cuyo identificador coincide con una
variable local.

Constructores (I)

Un constructor es un tipo especial de mtodo que


permite construir un objeto de una clase.
Ejemplo:
class Circulo {
public Circulo(){}
public Circulo(double r){}
public Circulo(double r, String c){}
}

Se utilizan junto con la palabra reservada new


Circulo c1 = new Circulo(27);

Constructores (II)

Los constructores se pueden sobrecargar y


son opcionales
Si no se define ningn constructor, Java
proporciona uno por defecto.
Si se define un constructor con argumentos
se pierde el constructor por defecto
Normalmente en el constructor se
inicializan las variables miembro.

Destructores

En Java no hay destructores como en C++


El garbage collector es el encargado de liberar la
memoria.

Cuando se detecta objetos no referenciados


Al final de un bloque que haya utilizado objetos.

Caractersticas de la POO

Ms conceptos de OO

Encapsulamiento: Permite la proteccin de


ciertas partes de un objeto del acceso desde
otros objetos externos
Herencia: Jerarqua de clases basada en la
agrupacin de atributos o mtodos comunes
Polimorfismo: Tratamiento generalizado a
todas las clases pertenecientes a una jerarqua
de herencia.

Encapsulamiento

El encapsulamiento consiste en la agrupacin de


datos y su tratamiento en una misma estructura.
Permite la proteccdin de la manipulacin externa
de algunas partes de los objetos.
Un objeto suele tener datos y mtodos privados,
de acceso restringido.
Fuerza al usuario a usar una interfaz para acceder
a los datos.
Hace que el cdigo sea ms fcil de mantener

Modificadores para restringir el


acceso (I)

La definicin de los miembros de una clase se


puede ampliar aadiendo modificadores al
principio.:
[modificador]<tipo> <identificador>;
[modificador]<tipo> <nombre>(<args>)
{...}

Los modificadores permiten acceder a los


datos o mtodos de manera restringida

Modificadores para restringir el


acceso (II)
public. El miembro de la clase es accesible desde
cualquier parte del cdigo.
private. El miembro de la clase slo es accesible
desde cdigo perteneciente a la propia clase.
protected(o friendly). Slo las subclases de la
clase y nadie ms pueden acceder a las variables y
mtodos.

Herencia (I)

Jerarquia de clases basada en agrupar atributos


y/o mtodos comunes
Las clases descendientes se llaman subclases.
Las clases ascendientes se llaman superclases.
Las subclases heredan caractersticas y mtodos
de las superclases (excepto los constructores)

Herencia (II)

Supongamos que tenemos la clase Jefe y la clase


Secretaria definidas como:

Jefe {<int><numEmpleado>, <String><nombre>,


<int><numDepart>, <int><numSupervisados>}
Secretaria {<int><numEmpleado>, <String><nombre>,
<int><numDepart>, <Jefe><trabajaPara>}

Las partes comunes se pueden agrupar en una


misma clase, manteniendo las otras dos con las
partes no comunes y heredando de esta nueva clase
con la palabra reservada extends.

Ejemplo herencia
public class Articulo {
// clase padre
public float precio=0;
...
public void setPrecio(float elPrecio) {
precio = elPrecio;
}
...
public float getPrecio() {
return precio;
}
}
//los mtodos y atributos de Articulo son heredados a Pelicula
public class Pelicula extends Articulo {// clase hijo

public void setDescripcion(String descrip) {


descripcion = descrip;
}
...
public String getDescripcion() {
return descripcion;
}

Relacin de Contenido

Una clase puede tener referencias a objetos de


otras clases.
Se diferencia de la herencia en que es necesario
instanciarlos por separado.
Responde afirmativamente a la pregunta:
<contenedor> tiene un <contenido>?

Mtodos virtuales

Una subclase puede modificar los mtodos


que ha heredado de las superclase,
manteniendo los mismos nombres, tipos de
retorno y listas de argumentos.
class
int
}
class
int
int
}

Empleado {
calcularVacaciones() {...}
Jefe extends Empleado {
numSupervisados,
calcularVacaciones() {...}

Polimorfismo

Un mtodo con el mismo nombre, tipo de retorno


y lista de parmetros puede ser aplicado a objetos
de diferentes clases.
Uso, trabajar con la clase ms general:

Parmetros polimrficos
Colecciones heterogneas
Empleado e1 = new Empleado();
Empleado e2 = new Jefe();
Empleado e1 = new Secretaria();
e2.numSupervisados = 15; // ERROR
((Jefe)e2).numSupervisados = 15;

S-ar putea să vă placă și