Sunteți pe pagina 1din 103

IniciacinaJava

1.IntroduccinaJava
2.Programacin
OrientadaaObjetos
3.Fundamentosdel
lenguajeJava

4.Trabajandocon
Objetos
5.ManejodeClases,
MtodosyVariables
6.ConceptosAvanzados
deJava

1.IntroduccinaJava
1.1.Introduccin

1.6.ElAPIdelSDK

1.2.Orgenesehistoriadel
lenguajeJava

1.7.Cmocompilararchivos

1.3.CaractersticasdeJava
1.4.ElSoftware
DevelopmentKitdeJava
1.5.Instalaciny
configuracindelJ2SE
1.4.2

1.8.ElClasspath
1.9.EjecucindeProgramas
enJava
1.10.Resumen

1.1.Introduccin

Hablaremosde:
origenehistoriadeJava
caractersticasquelodiferenciandeotros
lenguajes
instalacindelaplataforma
consejosdecompilacinyejecucin

1.2.Orgenesehistoriadellenguaje
Java

DesarrolladoporSunMicrosystemsen1991

Destinadoaelectrodomsticosdomsticos

Independientedelaplataforma

BasadoenC++

Elproyectosedisolvien1994

SundesarrollaHotJavaconsoportedeapplets

Netscapedasoportealosapplets

1.3.CaractersticasdeJava

Simplicidad:BasadoenC++parafcilaprendizaje

OrientadoaObjetos:Ventajasfrenteaprocedural

Distribuido:Trabajoenred

Robusto:EliminaproblemascomunesenC

Seguro:sandbox

IndependenciadePlataforma(WORE):JVM

Multithreaded:Mltipleshilosdeejecucin

1.4.ElSoftwareDevelopmentKitde
Java

JDKSDK:Herramientasparacompilaryejecutar

J2SE(Java2StandardEdition)

J2ME(Java2MobileEdition)

J2EE(Java2EnterpriseEdition)

1.5.Instalacinyconfiguracindel
J2SE1.4.2
Descarga:
http://java.sun.com/j2se/1.4.2/download.html
Unavezinstalado:
W98/ME:AadiralAutoexec.bat
SETPATH=c:\j2sdk1.4.2\bin;%PATH%
WNT/200/XP:Paneldecontrol/Sistema/
Avanzado/VariablesdeEntorno/Variablesdel
SistemaaadiraPATHlarutadelSDK
Linux:Aadir$HOME/.bashrc
$HOME/bash_profile
exportPATH=/usr/local/j2sdk1.4.2/bin:$PATH

1.6.ElAPIdelSDK

http://java.sun.com/j2se/1.4.2/docs/api/

1.7.Cmocompilararchivos

javacddir_destclasspathcp1:cp2archivo.java
Ej:javacd.MiClase.java

1.8.ElClasspath

Caminosdebsquedadeclasesutilizadas
ComomnimolasdelJavaRunTime:
jdk1.4/jre/lib/rt.jar

1.9.EjecucindeProgramasenJava
javaMiClase
Fallostpicos:
mtodomain()tienequeestardefinido
javaMiClase.class(sobra.class)
sisaltajava.lang.NoClassDefFoundErrorynuestra
clasedefinepackagepaquete.claseshayque
ejecutar:
javapaquete.clases.MiClase

1.10.Resumen
Diseadoparaelectrodomsticos,actualmentepara
aplicacionesdeservidor
Simplicidad,orientacinaobjetos,distribucin,robustez,
seguridad,independenciadeplataforma,multihilo
AlcompilarsegenerabytecodeinterpretadoporlaJVM
SDK:herramientasparacompilaryejecutar.J2SE,J2EE,
J2ME
API:conjuntodeclases
Compilador:javac;ejecucin:java;classpathdefine
caminodebsqueda

2.ProgramacinOrientadaaObjetos
2.1.Introduccin

2.4.Herencia

2.2.Orientacinaobjetos 2.5.Paquetes
2.3.ClasesenJava.
AtributosyMtodos

2.6.Resumen

2.1.Introduccin

Quesonclasesyobjetos

Atributosymtodosenlasclases

Herencia

Paquetes

2.2.Orientacinaobjetos
(1/2)
Ordenador:placa,procesador,memoria,discoduro,etc.

Discoduro:discossuperpuestos,cabezalectora,circuito
controlador,etc.

Eltodoestcompuestoporpiezasycadapiezaporpartes
mspequeas

Siseestropeaundiscoduroyexistenestndaresparala
conexin(indep.fabricante)sinproblema.

Objeto(discoduro),funcin(almacenardatos),atributos(los
datos),interfaz(IDE,SCSI)

2.2.Orientacinaobjetos
(2/2)
Objetos:
Realizanunatareaporssolos
Proporcionanencapsulacin
Sonreutilizables
Proporcionanescalabilidad(elprogramapuede
crecer)ymodularidad(divisinenbloquespara
fcilcomprensin)

2.3.ClasesenJava.Atributosy
Mtodos(1/4)

Escribimosclases(abstraccin,plantilla)noobjetos
(realizacin)

2.3.ClasesenJava.Atributosy
Mtodos(2/4)
classCoche{
booleanestadoMotor=false;
Stringcolor;
Stringmodelo;
...

2.3.ClasesenJava.Atributosy
Mtodos(3/4)
...
voidarrancar(){
if(estadoMotor==true)
System.out.println(Cocheyaarrancado);
else{
estadoMotor=true;
System.out.println(Arrancado);
}
}
...

2.3.ClasesenJava.Atributosy
Mtodos(4/4)
...
voiddetener(){
if(estadoMotor==false)
System.out.println(Cocheyadetenido);
else{
estadoMotor=false;
System.out.println(Detenido);
}
}
}//findelaclaseCoche

2.4.Herencia
(1/2)

Todaclaseexistedentrodeunajerarqua
EnJava,todaclasetieneunaysolounaclasepor
encima(herenciasimple)
Laclaseheredamtodosypropiedadesdesu
superclase
Cadasubclaseextiendeyconcretalafuncionalidady
caractersticasdesusuperclase,seespecializa
EnJavatodaslasclasesheredandeObject

2.4.Herencia
(2/2)
classAnimal{
floatpeso;
voidcomer(){}
}
classMemiferoextendsAnimal{
booleansangreCaliente;
voidparir(){}
voidamamantar(){}
}

2.5.Paquetes

conjuntodeclaseseinterfacesrelacionados

unaformadecrearlibreras

APIJava,packagejava

import

Pordefectosiempreseincluyejava.langsinnecesidad
delimport

2.6.Resumen

ProgramasJava:compuestosporobjetos
independientesquesecomunicanentres
Objetos:tienenatributos(susvariables)ymtodos
(comportamiento)
Clases:abstraccindeobjetos(plantillas)
Todaclaseheredaatributosymtodosdesu
superclase(cabezadepirmidejava.lang.Object)
Paquetes:agrupacindeclases

3.FundamentosdellenguajeJava
3.1.Introduccin

3.5.Instrucciones

3.2.Comentarios

3.6.Expresionesy
Operadores
3.3.VariablesyTiposde
Datos
3.7.ControldeFlujo
3.4.Literales

3.8.Resumen

3.1.Introduccin

Introduciremoslaherramientasparaescribir
programasenJava
Veremoslasintaxisdelasinstrucciones,variables,
tiposdedatos,literales,operadoresyflujode
programa

3.2.Comentarios

/*Comentariosde
variaslneas*/
intvariable;//Comentariodefinaldelnea
/**
*ComentariodeJavadoc
*@paramparametroDescripción
*/

3.3.VariablesyTiposdeDatos

Zonasdememoriadondealmacenarvalores

Tienen:tipo,nombreyvalor

Antesdeutilizarlashayquedefinirlas

3.3.1.Elnombredelavariable

Sepuedendefinirencualquierparte(peromejoral
principio)

Primercarcter:letra,guinbajo(_)odlar($)

Apartirdelsegundo:tambinpermitenmeros

Casesensitive

Pornorma,laprimeraletraenminscula

Separarpalabrasconletramayscula

3.3.2.Laasignacin

intnumroEntero,numero2Entero=3;

intx=4,y=5,z=6;

booleanmotorEnMarcha=true;

Stringtexto;
texto=Estoesunacadenadetexto;

3.3.3.Eltipo

Tipoprimitivo(boolean,char,byte,short,int,long,
float,double)

Claseointerfaz

Arraydeelementos(distintodelaclaseArray)

3.4.Literales

Formadeespecificarunvalor
Tipos:deentero,depuntoflotante,decaracteres,de
cadenas,etc

3.4.1.Literalesdeenteros

intentero=65535;//Valordecimal

intentero=0xFFFF;//Valorhexadecimal(0x)

intentero=0177777;//Valoroctal(0)

longenteroLargo=22L;//Entero64bits(L)

3.4.2.Literalesdepuntoflotante

doubleflotanteLargo=5.34;//Notacindecimal

doubleflotanteLargo=3.00e+8;//Notacincientfica

floatflotanteCorto=5.34F;//Notacindecimal32bits

floatflotanteCorto=3.00e+8F;//Cientficade32bits

Pordefectocualquierliteraldepuntoflotanteesde
tipodouble.Siqueremosqueseafloathayque
especificarloconF

3.4.3.Literalesdecaracteres

Sedefinenutilizandocomillassimples
charcarcter='a';
AdmitencaracteresdeescapeASCIIoUnicode
charsaltoLinea='\n';

3.4.4.Literalesdecadena

Conjuntodecaracteresysecuenciasdeescapeentre
comillasdobles
NormalmenteserninstanciasdelaclaseString
Stringcadena=Estoesunacadena;
Stringcadena=Cadenacon\comillas\dentro;

3.5.Instrucciones
(1/2)

SintaxismuysimilaraCoC++

Todaslasinstruccionesaparecendentrodeunbloque

Unbloqueestodoaquelloqueestentre{y}

Todaslasinstruccionesfinalizancon;conexcepcin
delassentenciasdecontroldeflujo
Alcancedevariableslimitadoasubloque

3.5.Instrucciones
(2/2)
classClaseEjempo{
intvariable=1;
voidmetodo(){
if(variable==1)
System.out.println(Lavariablevale1);
else{
System.out.println(Lavariablevale0);
}
}
}

3.6.ExpresionesyOperadores.
Preferencia(1/2)

Expresin=instruccinquedevuelveunvalor
Lasexpresionesutilizanoperadores(definenla
operacinarealizarentrelosoperandos)

Existeunarelacindeprioridadentreoperandos

Aigualprioridadseevalandeizquierdaaderecha

Paracambiarlaprioridadseutilizanlosparntesis

3.6.ExpresionesyOperadores.
Preferencia(2/2)
Pri. Operador Operandos
1
++, Aritmticos
1
!
Booleano
1
~
Entero
1
(tipo) Cualquiera
2
*,/,% Aritmticos
3
+,
Aritmticos
3
+
String
4
<<
Entero
4
>>
Entero
5 <,<=,>,>= Aritmticos
5 instanceof Objeto
6
==,!= Tiposprimitivos

Descripcin
Incrementoydecremento
ComplementoLgico
Complementoenbinario
Casting
Multiplicacin,divisin,mdulooresiduo
Adicinysustraccin
Concatenacindecadenas
Desplazamientodebitshacialaizqueirda
Desplazamientodebitshacialaderecha
Comparacinnumrica
Comparacindetipo
Igualdadodesigualdaddevalor

3.7.ControldeFlujo

Sentenciasquepermitenmodificarelflujodeejecucin
delosprogramas

3.7.1.ifelse
(1/2)
if(condicion)
instruccinobloquedeinstrucciones;
else
instruccinobloquedeinstrucciones;
Donde:
condicin:Expresinbooleana

3.7.1.ifelse
(2/2)
classControlFlujo{
publicstaticvoidmain(Sringargs[]){
Stringcadena1=hola;
Stringcadena2=hola;
Stringcadena3;
if(cadena1.equals(cadena2)){
System.out.println(Cadenasiguales);
cadena3=cadena2;
System.out.println(Cadena3:+cadena3);
}
else
System.out.println(Cadenasdistintas);
}
}

3.7.2.Elcondicionalswitch
(1/2)

Permitecompararunavariableconvariosvalores
Lavariableescomparadaconcadaunodelosvalores
yseejecutanlassentenciasdeaquellosquecoincidan
Seadmiteelvalorpordefectodefaultquecoincidecon
cualquiercosa
Lavariabledebeserdeuntipoprimitivoquepuedaser
convertidoaint

Lasentenciabreakfuerzalasalidadelswitch

Losvaloresdebenserconstantes(ovariablesfinal)

3.7.2.Elcondicionalswitch
(2/2)
classUsoDeSwitch{
publicstaticvoidmain(Stringargs[]){
inta=3;
switch(a){
case1:
System.out.println(Es1);
break;
case2:
System.out.println(Es2);
break;
default:
System.out.println(Noes1ni2);
}
}
}

3.7.3.Bucleswhileydowhile
(1/2)
classUsoDeWhile{
publicstaticvoidmain(Stringargs[]){
inta=0,b=10;
while(a<10&&b>0){
System.out.println(a:+a+yb:+b);
a++;b;
}
}
}

3.7.3.Bucleswhileydowhile
(2/2)
classUsoDeDoWhile{
publicstaticvoidmain(Stringargs[]){
inta=0,b=10;
do{
System.out.println(a:+a+yb:+b);
a++;b;
}while(a<10&&b>0);
}
}

3.7.4.Buclesfor
classUsoDeFor{
publicstaticvoidmain(Stringargs[]){
inta,b=10;
for(a=0;a<10;a++){
System.out.println(a:+a+yb:+b);
b;
}
}
}

7.8.Resumen

Todavariabletienetipo,nombreyvalor
Lostipospuedenser:unodelos8primitivos,unaclase,unarray
deelementos
Losliteralesdefinenlaformaenqueespecificamosunvalordeuna
variable

Lasinstruccionesseagrupanenbloques

Unaexpresinesunainstruccinquedevuelveunvalor

Sepuedenconcatenarcadenasmedianteel+

Sentenciascondicionales:ifelse,switch

Sentenciasrepetitivas:while,dowhile,for

4.TrabajandoconObjetos
4.1.Introduccin

4.5.Conversinmediante
Casting

4.2.Creaciny
DestruccindeObjetos 4.6.Arrays
4.3.Invocacinde
VariablesyMtodos

4.7.Trabajandocon
cadenasdecaracteres

4.4.Mtodos
Constructoresdeuna
Clase

4.8.Resumen

4.1.Introduccin

Aprenderemosacrear,destruirytrabajarconobjetos.
Aprenderemosainvocaralosmtodosyatributos,
veremosqueeselcastingyestudiaremoslosarraysy
lascadenasdecaracteres

4.2.CreacinyDestruccindeObjetos

Instancia=Objeto
Instanciarunaclase=crearunobjetoapartirdedicha
clase
Cocheferrari=newCoche();
DefineunavariabledetipoCoche,denombreferrariy
quealmacenaunainstanciadelaclaseCoche.
Elconstructordelaclasepuedeadmitirparmetros.

Recolectordebasura:nosenecesitadestruirobjetos

4.3.InvocacindeVariablesyMtodos

Unaclase,porssola,nopuedeejecutarse.Debe
tenerunmtodomainquecreeunobjetodelaclaseo
debeserllamadadesdeotraclase
Todoslosmtodoshayquedefinirlosdentrodela
clase,inclusoelmain
Podemosaccederaunapropiedadmediante
objeto.propiedad
Podemosinvocarunmtodomediante
objeto.metodo(parmetros)

4.4.MtodosConstructoresdeuna
Clase

Inicializaunnuevoobjeto
Eloperadornew:
reservamemoriaparaelobjeto
inicializalasvariablesdeinstanciadelobjeto
invocaalmtodoconstructor

Javadefineunconstructorpordefectosinparmetros

Unconstructornodevuelveningntipo(nivoid)

Unconstructortieneelmismonombrequesuclase

4.5.ConversinmedianteCasting

Elcastingpermitecambiarelvalordeunobjetootipoprimitivo
aotrotipodiferente
Paratiposprimitivossilaconversinesdeuntipoms
grandeaunomspequeoestimplcita:
intx=3;
floaty=x;
Encasocontrariohayqueespecificarelcasting:
floatx=100f;
inty=(int)x;
LasconversionesentreObjetossolamentesepermitensi
existenrelacionesdeherencia

4.6.Arrays
(1/2)

Coleccindeelementosordenados

EnJava,losarrayssonobjetos

Todossuselementosdebenserdelmismotipo

Sedefinencomo:
Stringcadenas[];
o
String[]cadenas;
Sepuedeninicializarenladefinicin:
Stringcadenas[]={cadena1,cadena2};
oinicializarsolamenteelnmerodeelementos
Stringcadenas[]=newString[2];

4.6.Arrays
(2/2)

Lasposicionesvande0alnmerodeeltosmenosuno
Aloselementosseaccedeporndice:
cadenas[2]=cad1;
Parasabersulongitudseutilizaelatributolength:
intlogitud=cadenas.length;
Paracopiarunarraypodemosutilizar:
System.arraycopy(oriben,iniceorigen,destino,indicedestino,num
eroelementos)
Arraysmultidimensionales:
intmatriz[][]=newint[10][10];

4.7.Trabajandoconcadenasde
caracteres

Lascadenassonsecuenciasdecaracteres

SeutilizalaclaseString

Sepuedenconcatenarconeloperador+

CualquierobjetossepuedeconvertiraString
intedad=27;
Stringinforme=Laedades+edad;
Paracompararcadenasseutilizaelmtodoequals()o
equalsIgnoreCase()
EnelAPIhaymuchasfuncionestiles(substring,length,...)

4.8.Resumen

Parainstanciarunaclaseseutilizanew
Paraaccederasuspropiedadesymtodosseutilizala
notacindepuntos

Elconstructoresunmtodoespecialparainicializarunobjeto

Sepuedeutilizarlaconversindetipos(casting)

UnarrayesunacoleccindeobjetosordenadosyenJavase
unObjeto
TodaslascadenasdecaracteressoninstanciasdeString

5.ManejodeClases,MtodosyVariables
(1/2)
5.1.Introduccin
5.2.TiposdeVariables
5.3.Alcancedelas
Variables
5.4.Modificadores
5.5.ControldeAcceso.
Tiposdeproteccin

5.6.Finalizacinde
clases,mtodosy
variables
5.7.Mtodos
5.8.Pasandoargumentos
desdelalneade
comandos

5.ManejodeClases,MtodosyVariables
(2/2)
5.9.Mtodosdeclasee
instancia

5.14.Superposicinde
Mtodos

5.10.Anlisisdelmtodo 5.15.Sobrecargade
main
constructores
5.11.Polimorfismo
5.12.ThisySuper
5.13.Sobrecargade
Mtodos

5.16.Superposicinde
constructores
5.17.Resumen

5.1.Introduccin

Veremosque,segnsuubicacinenelcdigo,existen
variostiposdemtodosyvariablesconuntipouotro
dealcance
Estudiaremoselcontroldeaccesoaclases,mtodosy
variables

Veremosladefinicinformaldemtodos

Explicaremoselconceptodepolimorfismo

5.2.TiposdeVariables

Local:dentrodeladefinicindeunmtodo.Slo
vlidaparaelcdigocontenidoenesemtodo
DeInstancia:sedeclaranfueradelosmtodos
(generalmentealprincipio).Vlidaparatodala
instancia(sepuedeusardesdecualquiermtodo)
DeClase:sedeclaraalprincipiodelaclase.Vlida
paratodaslasinstancias.Seutilizalapalabra
reservadastaticensudefinicin

5.3.AlcancedelasVariables

Alcance=zonadelcdigodondesepuedeusar
Alllamaraunavariable:
Javabuscaladefinicinenelmbito(bloque)
actual,comopuedeserunbucle
Sinolaencuentravasubiendohastallegarala
definicindelmtodo(variablelocal)
Sinolaencuentrabuscaunadeinstanciaode
clase
Sinolaencuentrasubealasuperclaseabuscarla

5.4.Modificadores

Sonpalabrasreservadasquepermitenmodificarladefiniciny
elcomportamientodelasclases,mtodosyvariables
Losmsimportantes:
public,protected,privateparaelcontroldeacceso
staticparacrearmtodosyvariablesdeclase
abstractparacrearclase,mtodosyvariablesabstractas
finalparaindicarquefinalizalaimplementacindeuna
clase,mtodoovariable

5.5.ControldeAcceso.Tiposde
proteccin

Elcontroldeaccesoserefierealavisibilidaddeuna
clase,variableomtodo.
Encapsulacin
Cuatronivelesdeproteccin:
pblico
paquete
protegido
privado

5.5.1.ProteccinFriendlyodePaquete

Sonvisiblesatodaslasdemsclasesdelmismo
paquete,peronofueradel
Eslaproteccinpordefectocuandonoseespecifica

5.5.2.ProteccinPblica

Sonvisiblesatodaslasdemsclases,dentroofuera
delaclaseopaqueteactual
Seutilizalapalabrareservadapublic

NOTA:cuandotengamosmsdeunadefinicinde
claseenelmismoarchivojava,solamenteunade
ellaspodrserpblicayelarchivojavadeber
llamarseigualqueesaclase

5.5.3.ProteccinPrivada

Sonaccesiblesnicamentepormtodosdelamisma
clase.
Seutilizalapalabrareservadaprivate
Existeuntipoespecialdeclasesquepuedenser
privadas,lasclasesinternas

5.5.3.1.ClasesInternas

Esaquellaqueestdefinidadentrodeotraclase
Puedenaccederalaimplementacindelaclase
creadora(incluyendolosprivados)
Puedenocultarseaotrasclasesdelmismopaquete
classClasePrincipal{
privateatributo1;
publicmetodo(){}
privateclassClaseInterna{
//desdeaqupodemosaccederaatributo1
}
}

5.5.4.ProteccinProtegida

Sonaccesiblesportodaslasclasesdentrodelpaquete
yporsussubclases,aunqueestnfueradel
Seutilizalapalabrareservadaprotected

5.6.Finalizacindeclases,mtodosy
variables

Lafinalizacinpermitebloquearlaimplementacinde
unaclase,variableomtodo.
Seespecificautilizandolapalabrareservadafinal
generalmenteacontinuacindeunmodificadorde
proteccin.

5.6.1.Finalizacindevariable

Seconvierteenunaconstante
finalinta=6;

5.6.2.Finalizacindemtodo

Evitaqueunmtodopuedasersuperpuesto
publicfinalvoidmetodoInmutable(){}

Lautilizacindemtodosfinalesaceleralaejecucin
delprogramaporqueelcompiladornotieneque
buscarladefinicindeesemtodoenlassubclases

5.6.3.Finalizacindeclase

Evitaqueunaclasetengasubclases
publicfinalclassClaseFinal{}

ElAPIJavatieneclasesfinalesparaevitarquese
puedanextender
Salvoporeficiencianoloharemos

5.7.Mtodos
(1/2)

Definenlafuncionalidaddeunobjeto

Constande:

unoovariosmodificadores(public,static,final,etc)

elObjetooTipoPrimitivoquedevuelve

elNombredelmtodo

unconjuntodeParmetros

lapalabrareservadathrows(severmsadelante)

elCuerpodelmtodo

5.7.Mtodos
(2/2)

Firma(signature)delmtodo:nombredelmtodo+
conjuntodeparmetros
Cuandounmtodonodevuelvenadadebe
especificarseeltipovoid
Pasodeparmetros:
Lostiposprimitivossepasanporvalor
Losobjetossepasanporreferencia

5.8.Pasandoargumentosdesdela
lneadecomandos

publicstaticvoidmain(Stringargs[]){...}

args.length:Nmerodeargumentos

args[0]:Primerargumento

if(args[0].equals(version))...

5.9.Mtodosdeclaseeinstancia

Losmtodosdeclaseestndisponiblesparacualquier
instanciadeesaclaseoparaotrasclases,
independientementedesiexiste,ono,una
instanciadeesaclase

publicstaticintcalculaDerivada(Stringecuacion){}

doublecoseno=Math.cos(Math.PI);

5.10.Anlisisdelmtodomain

Entodaaplicacin,almenosdebedeexistirunaclaseque
tengaunmtodomain
publicstaticvoidmain(Stringargs[])
public:elmtodomaindebeestaraccesibledesdefueradela
claseparapoderinvocarloalarrancarlaaplicacin
static:esunmtododeclase,estdisponible
independientementedequeestonoinstanciadalaclase
void:nodevuelvenada
main:siempresellamaas(yaseexplicaronlosparmetros
delalneadecomandos)

5.11.Polimorfismo

Eslacapacidaddeutilizarunobjetodeunasubclase
comosifueraunobjetodelaclasebase
Permiteescribircdigoquedesconoceparcialmente
lascaractersticasdelosobjetosconlosquetrabaja
(cdigodesacoplado)

5.12.ThisySuper

Relacionadasconlaherenciayelalcancedelas
variables
this:permitereferirsealasvariablesymtodosdela
instanciaascomopasarelpropioobjetocomo
argumento
super:similarathis,peroserefierealasuperclasedel
objeto

5.13.SobrecargadeMtodos

Consisteencrearvariosmtodosconelmismo
nombreperocondistintasfirmas(signature)o
definiciones

5.14.SuperposicindeMtodos

Sonmtodosdesubclasesconlamismafirmaquelos
correspondientesdelasuperclase
Permiteamplicarlafuncionalidaddelosmtodosdela
superclase
Java,aligualqueconlasvariables,buscarprimeroel
mtodoenlaclaseysinoloencuentrasubira
buscarloalasuperclase
Parallamaralaimplementacindelasuperclase:
super.metodo(parametros);

5.15.Sobrecargadeconstructores

Seutilizaigualqueelrestodemtodos
Sinosedefineningnconstructor,existeel
constructorpordefecto(sinparmetros)
Sisedefinealgnconstructor,nicamenteestn
disponibleslosdefinidos(yanoestelconstructorpor
defectosinosedefineexplcitamente)
Paraejecutarunconstructordesdeotro:
this(parametros);

5.16.Superposicindeconstructores

Comolosconstructoresdebentenerelmismonombre
delaclaseesimposiblerealizarlasuperposicin
Peropodemosaprovecharelconstructordelaclase:
super(argumentos);

5.17.Resumen

Tiposdevariables:locales,deinstanciaydeclase
Modificadores:modificanladefinicinycomportamiento.Destacanlosde
controldeacceso(public,private,protectedyfriendly)

Finalizacin:permitebloquearlaimplementacin

Firma:tipodevuelto+nombremtodo+parmetros

Polimorfismo:usarunobjetodesubclasecomosifuesedelaclasebase(cdigo
desacoplado)

this:serefierealobjetoactual

super:serrefierealasuperclase

sobrecarga:variosmtodosconelmismonombreperodistintafirma

superposicin:permiteredefinirlosmtodosenlassubclases

6.ConceptosAvanzadosdeJava
6.1.Introduccin

6.4.Interfaces

6.2.Abstraccindeclases 6.5.EntradaSalida(E/S)
ymtodos
6.6.Resumen
6.3.Excepciones

6.1.Introduccin

Enestecaptuloveremoslaabstraccindeclases,las
interfaces,elcontrolygestindeinterrupcionesyla
entradasalida(E/S)

6.2.Abstraccindeclasesymtodos
(1/2)

Clasesabstractas:

nopuedentenerinstancias

sirvendereferencias

generalmenteenlapartesuperiordelajerarquadeclases
deJava.

puedencontenermtodosconcretosyabstractos

Mtodosabstractos:

firmadelmtodonicamente,sinsuimplementacin

nopuedenexistirfueradeunaclaseabstracta

6.2.Abstraccindeclasesymtodos
(2/2)

Siunaclasecontieneunmtodoabstractodeberser
definidacomoabstracta
Parasudefinicinseanteponeabstract
Sirvenparaobligaraquelassubclasesimplementen
losmtodos

6.3.Excepciones

Sirvenparapermitiraunprogramarecuperarsedelos
erroresdeunaformaelegante
Permitenalosprogramassertolerantesafallos
Lasexcepcionessonclases(ExceptionyError
heredandeThrowable)

6.3.1.Capturadeexcepciones
(1/2)

Todaslasexcepcionesheredandejava.lang.Exception
Elcdigosusceptibledegenerarexcepcionesseencierra
entretryycatch
catchadmitecomoparmetroeltipodeexcepcinacapturar
finally:esunbloqueopcionaldespusdelcatch.Permite
realizartareasquedebenserejecutadasindependientemente
delcomportamientodeerrores(comocerrarunaconexinde
basededatos)

6.3.1.Capturadeexcepciones
(2/2)
try{
//CdigoquepuedagenerarErrores("Exception's")
}catch(Tipo1id1){
//Manejar"Exception's"paralaClaseTipo1
}catch(Tipo2id2){
//Manejar"Exception's"paralaClaseTipo2
}catch(Tipo3id3){
//Manejar"Exception's"paralaClaseTipo3
}finally{
//Actividadesquesiempreocurren
}

6.3.2.LanzandoExcepciones
(1/2)

Enlafirmadelmtododebeespecificarselaolas
excpcionesquepuedelanzarutilizandolapalabra
reservadathrows
Dentrodelcuerpodelmtodoselanzarnutilizandola
palabrareservadathrow

6.3.2.LanzandoExcepciones
(2/2)
publicStringleerFichero(Stringfichero)throws
IOException,FileNotFoundException{
...
thrownewFileNotFoundException(Noseha
encontradoelarchivo);
}

6.3.3.Creandonuestraspropias
excepciones(1/2)
publicclassMiExcepcionextendsException{
publicMiExcepcion(){}
publicMiExcepcion(Stringmensaje){
super(mensaje);
System.out.println(Saliendodelsistema);
//Otrasacciones
}
}

6.3.3.Creandonuestraspropias
excepciones(2/2)

classUsoDeExcepciones{
voidfuncion(inta)throwsMiExcepcion{
if(a==1)thrownewMiExcepcion(Sehaproducidouna
excepcinpropia.);
}
publicstaticvoidmain(Stringargs[]){
UsoDeExcepcionesuso=newUsoDeExcepciones();
try{
uso.funcion(1);
}catch(MiExcepcionm){
System.out.println(Excepcin:+m.getMessage());
}
}
}

6.3.4.Transfiriendoexcepciones
classUsoDeExcepciones2{
voidfuncion(inta)throwsMiExcepcion{
if(a==1)thrownewMiExcepcion(error);
}
voidpasarMarron(intvar)throwsMiExcepcion{
funcion(var);//Otrocdigo
}
publicstaticvoidmain(Stringargs[]){
UsoDeExcepciones2uso=newUsoDeExcepciones2();
try{
uso.pasrMarron(1);
}catch(MiExcepcionm){
System.out.println(m.getMessage());
}
} }

6.4.Interfaces
(1/2)

Solucinalaherenciasimple
Interfaz:Claseenlaquesoloseespecificacomportamiento,
nicamentesedefinenfirmasdemtodosyconstantes
Sedicequeunaclaseimplementaunainterfazcuando
implementatodossusmtodos(estobligada)
Paradefinirunainterfaz,seanteponelapalabrainterfaceal
nombredelaclase

Solamentepuedenserpblicasoconproteccindepaquete

Losmtodossonpublicyabstract(noseespecifica)

Lasvariablessonpublic,staticyfinal(noseespecifica)

6.4.Interfaces
(2/2)

Nosepuedencrearinstanciasdeunainterfaz(aligualqueenlas
clasesabstractas)
Unainterfazpuedeheredardeunaovariasinterfaces(extends
Interfaz1,Interfaz2)herenciamltipledeinterfaces.
Laimplementacinseindicaconimplements(similaralextends
delaherencia).Mltiplesimplementacionesseseparanporcomas
Lasubclasedeunaclasequeimplementaunainterfaz,tambin
implementalainterfaz

6.5.EntradaSalida(E/S)

LaclaseSystem:

clasefinal(nosepuedeinstanciar)delpaquetejava.lang

in:flujodeentrada(InputStream)

err:flujodondeseredireccionanloserrores(OutputStream)

out:flujodesalida(OutputStream)

Salidaporpantalla
System.out.println();
Entradaporteclado
Stringtexto=(newBufferedReader(new
InputStreamReader(System.in))).readLine();

6.6.Resumen

Lasclasesymtodosabstractosnopueden
instanciarse.Seutilizaelmodificadorabstract
CuandounprogramaJavafallalanzaexcepciones.
Capturndolasmediantetrycatchpodemoscrear
cdigotoleranteafallos
Lasinterfacessonclasesqueespecificanun
comportamiento
JavaposeefuncionesdeE/S

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