manual de prácticas poo (6)

Upload: nancy

Post on 19-Feb-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 Manual de Prcticas POO (6)

    1/32

    MANUAL DE PRCTICAS POO

    Nombre de la asignatura : Programacin Orientada a Objeto !

    Carrera: Ingenier"a en Si tema Com#$taciona%e

    Clave de la asignatura: SCD&'()(

    (Crditos) SATCA1: ) & * + ,

    O-.ETI/O0S1 2ENERAL0ES1 DEL CURSO 0com#etencia e #ec"3ica a de arro%%ar en e%c$r o1

    Disear e implementar objetos de programaci n !ue permitan resolver situaciones reales " deingenier#a

    APORTACI4N AL PER5IL DEL E2RESADO

    $sta asignatura aporta al per%il del &ngeniero en Sistemas Computacionales la capacidad deanali'ar desarrollar implementar " administrar so%t are de aplicaci n orientado a objetos

    cumpliendo con est*ndares de calidad con el %in de apo"ar la productividad " competitividad de lasorgani'aciones+

    TEMARIO

    Unidad ' Introd$ccin a% #aradigma de %a #rogramacin orientado a objeto !

    1+1 $lementos del modelo de objetos: clases objetos abstracci n modularidad encapsulamiento,erencia " polimor%ismo+1+- .enguaje de modelado uni%icado: diagrama de clases+

    Unidad ) C%a e 6 objeto !

    -+1 Declaraci n de clases: atributos mtodos encapsulamiento+-+- &nstanciaci n de una clase+-+/ 0e%erencia al objeto actual+-+ 2todos: declaraci n mensajes paso de par*metros retorno de valores+-+3 Constructores " destructores: declaraci n uso " aplicaciones+-+4 Sobrecarga de mtodos+-+5 Sobrecarga de operadores: Concepto " utilidad operadores unarios " binarios+

    Unidad * 7erencia!

    /+1 De%inici n: clase base clase derivada+/+- Clasi%icaci n: ,erencia simple ,erencia m6ltiple+/+/ 0eutili'aci n de miembros ,eredados+/+ 0e%erencia al objeto de la clase base+/+3 Constructores " destructores en clases derivadas+/+4 0ede%inici n de mtodos en clases derivadas+

    Unidad 8 Po%imor3i mo+

    +1 De%inici n++- Clases abstractas: de%inici n mtodos abstractos implementaci n de clases abstractas

    modelado de clases abstractas++/ &nter%aces: de%inici n implementaci n de inter%aces ,erencia de inter%aces+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 1

  • 7/23/2019 Manual de Prcticas POO (6)

    2/32

    MANUAL DE PRCTICAS POO

    + 7ariables polim r%icas (plantillas): de%inici n uso " aplicaciones++3 0eutili'aci n de c digo+

    Unidad , E

  • 7/23/2019 Manual de Prcticas POO (6)

    3/32

    MANUAL DE PRCTICAS POO

    C%a e

    >na c%a e es una caracteri'aci n abstracta de un conjunto de objetosK todos los objetos similarespertenecen a una clase determinada+ 9or ejemplo un conjunto de objetos tales como cuadradostri*ngulos c#rculos l#neas etc+ 9ertenecen a una clase %igura+ De modo m*s %ormal una clasede%ine variables (datos) " mtodos (operaciones) comunes a un conjunto de objetos+ $n realidaduna clase es un prototipo o generador de un conjunto de objetos+

    9or ejemplo si diseamos una clase c#rculo !ue convierte a un c#rculo en un tipo abstracto de datola clase no proporciona mtodos (%unciones) tales como dibujar mover ampliar contraer borraretc+ Se pueden utili'ar estos mtodos para manipular objetos c#rculo de todas las %ormasesperadas+ .os mtodos son todo lo !ue se necesita conocer sobre la clase c#rculo+

    .a c%a e es el blo!ue de construcci n %undamental de un lenguaje de programaci n orientada aobjetos+ >na clase es un tipo abstracto de datos junto con un conjunto de trans%ormacionespermitidas de dic,o tipo abstracto de datos+ (>n tipo de dato es abstracto si las operaciones de altonivel adecuadas a los tipos de datos est*n aisladas de los detalles de la implementaci n asociadoscon el tipo de datos)

    Ab traccin

    .a abstracci n consiste en captar las caracter#sticas esenciales de un objeto as# como sucomportamiento+ 9or ejemplo los autom viles OPu caracter#sticas podemos abstraer de losautom vilesQ ; lo !ue es lo mismo OPu caracter#sticas semejantes tienen todos los autom vilesQTodos tendr*n una marca un modelo n6mero de c,asis peso llantas puertas ventanas etc+ encuanto a su comportamiento todos los autom viles podr*n acelerar %renar retroceder etc+

    $n los lenguajes de programaci n orientada a objetos el concepto de Clase es la representaci n "el mecanismo por el cual se gestionan las abstracciones+

    9or ejemplo en Bava tenemos:

    public class Automovil R@@ variables@@ mtodos

    Mod$%aridad

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 3

  • 7/23/2019 Manual de Prcticas POO (6)

    4/32

    MANUAL DE PRCTICAS POO

    .a mod$%aridad es la propiedad !ue permite dividir una aplicaci n en partes m*s pe!ueas(llamadas m dulos ) cada una de las cuales debe ser tan independiente como sea posible de laaplicaci n en si " de las restantes partes+

    Enca# $%amiento

    $l encapsulamiento consiste en unir en la Clase las caracter#sticas " comportamientos esto es lasvariables " mtodos+ $s tener todo esto es una sola entidad+ $n los lenguajes estructurados estoera imposible+ $s evidente !ue el encapsulamiento se logra gracias a la abstracci n+

    .a utilidad del encapsulamiento va por la %acilidad para manejar la complejidad "a !ue tendremosa las Clases como cajas negras donde s lo se conoce el comportamiento pero no los detallesinternos " esto es conveniente por!ue nos interesar* conocer !u ,ace la Clase pero no ser*necesario saber c mo lo ,ace+

    7erencia

    .a ,erencia es uno de los conceptos m*s cruciales en la 9;;+ .a ,erencia b*sicamente consisteen !ue una clase puede ,eredar sus variables " mtodos a varias subclases (la clase !ue ,eredaes llamada superclase o clase padre)+ $sto signi%ica !ue una subclase aparte de los atributos "mtodos propios tiene incorporados los atributos " mtodos ,eredados de la superclase+ De estamanera se crea una jerar!u#a de ,erencia+

    9or ejemplo imaginemos !ue estamos ,aciendo el an*lisis de un Sistema para una tienda !uevende " repara e!uipos celulares+

    $n el gr*%ico vemos - Clases m*s !ue posiblemente necesitemos para crear nuestro Sistema+$sas - Clases nuevas se construir*n a partir de la Clase Celular e8istente+ De esa %orma utili'amosel comportamiento de la SuperClase+

    $n general podemos tener una gran jerar!u#a de Clases tal " como vemos en el siguiente gr*%ico:

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 4

  • 7/23/2019 Manual de Prcticas POO (6)

    5/32

    MANUAL DE PRCTICAS POO

    Po%imor3i mo

    $l polimor%ismo se presenta cuando se ,a creado objetos !ue pertenecen a clases !ue ,an sidoderivadas de otras clases+ $n otras palabras el polimor%ismo aparece en las clases derivadas+

    Tambin se dice !ue el polimor%ismo es la propiedad !ue indica literalmente la posibilidad de !ueuna entidad tome muc,as %ormas en trminos pr*cticos el polimor%ismo permite re%erirse a objetosde clases distintas mediante el mismo elemento del programa " reali'ar la misma operaci n dedi%erentes %ormas seg6n sea el objeto !ue se re%erencia en ese momento+ 9or ejemplo cuando sedescribe la clase mam#%eros se puede observar !ue la operaci n comer es una operaci n%undamental en la vida de los mam#%eros de modo !ue cada tipo de mam#%eros debe poder reali'ar la operaci n o %unci n de comer+ 9or otra parte una vaca o una cabra !ue pasta en el campo unnio !ue se come un bomb n o caramelo " un le n !ue devora a otro animal son di%erentes%ormas !ue utili'an los distintos mam#%eros para reali'ar la misma acci n+

    '!) Leng$aje de mode%ado $ni3icado: diagrama de c%a e !

    >n lenguaje de modelado es una notaci n gr*%ica para describir el diseo de so%t are+ As# mismo

    el lenguaje inclu"e reglas para di%erenciar entre dibujos correctos e incorrectos+ $stas reglas sonlas !ue ,acen a >2. un lenguaje de modelado en ve' de solo un mont n de s#mbolos para dibujar+

    Cuando una persona constru"e una casa no levanta muros con%orme se le ocurre+ 2*s bien lo,ace con la a"uda de planos bien detallados+

    $l prop sito de >2. es proveer los planos para el mundo del so%t are+

    .os creadores de >2. conjuntaron tres lenguajes de modelado !ue compet#an entre s# de a,# la>(ni%icado) de >2.

    >n mode%oes una abstracci n de algo con la %inalidad de comprenderlo antes de construirlo "a!ue un modelo omite los detalles no esenciales es m*s sencillo manejarlos !ue manejar laentidad original+

    $sta tcnica es trilateral "a !ue toma en cuenta tres puntos de vista: modelo de objetos modelodin*mico " modelo %uncional+

    a1 E% mode%o de objeto+ $l modelo de objetos es el modelo m*s importante "a !ue en l seidenti%ican las clases dentro del sistema junto con sus relaciones as# como sus atributos "operaciones lo !ue representa la estructura est*tica del sistema+ $l modelo de objetos serepresenta mediante un diagrama de clases+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 5

  • 7/23/2019 Manual de Prcticas POO (6)

    6/32

    MANUAL DE PRCTICAS POO

    b1 E% mode%o din mico+ 0epresenta los aspectos temporales de comportamiento de control delsistema mediante la secuencia de operaciones en el tiempo+

    c1 E% mode%o 3$nciona%+ 0epresenta los aspectos trans%ormacionales de %unci n del sistemamediante la trans%ormaci n de valores de los datos+ Se representa mediante un diagrama de %lujo+

    Cada modelo describe un aspecto del sistema pero contiene re%erencias a los dem*s modelos+ .ocual indica !ue los tres no son totalmente independientes+

    Lo #a o #ara con tr$ir e% mode%o de objeto on %o ig$iente :

    1+ &denti%icaci n de objetos "@o clases+-+ Crear un diccionario de datos+/+ &denti%icaci n de las asociaciones " agregaciones entre los objetos+

    + &denti%icaci n de atributos " enlaces+3+ ;rgani'aci n " simpli%icaci n de las clases empleando ,erencia+4+ 7eri%icaci n de las v#as de acceso necesarias para llevar a cabo las probables consultas+5+ 0eali'ar las iteraciones necesarias para el re%inamiento del modelo+

    + Agrupar las clases en m dulos+

    Mode%o de objeto U Diagrama de modelo de objetos V diccionario de datos+

    8!*! Re#re entacin gr 3ica de% di eBo

    E% diagrama de c%a edescribe los tipos de objetos !ue ,a" en el sistema " las diversas clases derelaciones est*ticas !ue e8isten entre ellos+

    ?a" dos tipos de relaciones est*ticas principales:

    A ociacione (por ejemplo un cliente pude rentar diversos videos)

    S$bti#o (una en%ermera es un tipo de persona)

    .os diagramas de clase tambin muestran los atributos " operaciones de una clase " lasrestricciones a !ue se ven sujetos seg6n la %orma en !ue se conectan los objetos+

    .os diversos mtodos ;; utili'an terminolog#as di%erentes (" con %recuencia antag nicas) paraestos conceptos+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 6

  • 7/23/2019 Manual de Prcticas POO (6)

    7/32

    MANUAL DE PRCTICAS POO

    Mode%ar re%acione entre $ c%a e

    De#endencia

    0elaci n (m*s dbil !ue una asociaci n) !ue muestra la relaci n entre un cliente " el proveedor delservicio utili'ado por un cliente+

    Cliente: es el objeto !ue solicita el servicio Servidor: es el objeto !ue provee el servicio

    solicitador*%icamente la dependencia se muestra con una l#nea discontinua con una punta de %lec,a !ue

    apunta del cliente al proveedor+

    Ejem#%o: resoluci n de una ecuaci n de segundo grado+9ara resolver una ecuaci n de segundo grado ,emos de recurrir a la %unci n rt de la claseMatc> para calcular una ra#' cuadrada+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 7

  • 7/23/2019 Manual de Prcticas POO (6)

    8/32

    MANUAL DE PRCTICAS POO

    Nota: .a clase 2atc, es una clase WdegeneradaX !ue no tiene estado+ $s simplemente unacolecci n de %unciones de c*lculo matem*tico

    9ara resolver una ecuaci n de segundo grado ,emos de recurrir a la %unci n rt de la claseMatc> para calcular una ra#' cuadrada+

    Nota: .a clase 2atc, es una clase WdegeneradaX !ue no tiene estado+ $s simplemente unacolecci n de %unciones de c*lculo matem*tico

    A ociacin

    $s una relaci n estructural !ue describe una cone8i n entre objetos

    ra%icamente se muestra como una l#nea cont#nua !ue une las clases relacionadas entre s#+

    Aun!ue las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos sentidos) enocasiones es deseable ,acerlas unidireccionales (restringir su navegaci n en un solo sentido)+

    r*%icamente cuando la navegaci n es unidireccional la l#nea termina en una punta de %lec,a !ueindica el sentido de la asociaci n+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 8

  • 7/23/2019 Manual de Prcticas POO (6)

    9/32

    MANUAL DE PRCTICAS POO

    Unidad ) C%a e 6 objeto !

    )!' Dec%aracin de c%a e : atrib$to @ m todo @ enca# $%amiento!

    .a programaci n orientada a objetos se basa en la programaci n de clasesK a di%erencia de laprogramaci n estructurada !ue est* centrada en las %unciones+

    >na clase es un molde del !ue luego se pueden crear m6ltiples objetos con similarescaracter#sticas+

    >na clase es una plantilla (molde) !ue de%ine atributos (variables) " mtodos (%unciones)

    .a clase de%ine los atributos " mtodos comunes a los objetos de ese tipo pero luego cada objetotendr* sus propios valores " compartir*n las mismas %unciones+

    Debemos crear una clase antes de poder crear objetos (instancias) de esa clase+ Al crear un objetode una clase se dice !ue se crea una instancia de la clase o un objeto propiamente dic,o+

    .a estructura de una clase es:

    class Ynombre de la claseZ R Yatributos o variables de la claseZ Ymtodos o %unciones de la claseZ YmainZ

    Prob%ema ':

    Con%eccionar una clase !ue permita carga el nombre " la edad de una persona+ 2ostrar los datoscargados+ &mprimir un mensaje si es ma"or de edad (edad[U1 )

    Programa Per ona

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 9

  • 7/23/2019 Manual de Prcticas POO (6)

    10/32

    MANUAL DE PRCTICAS POO

    )!) In tanciacin de $na c%a e!

    >na ve' !ue se tiene de%inida la clase a partir de la cual se crear*n los objetos se est* en laposibilidad de instanciar los objetos re!ueridos+

    9or ejemplo para una clase >suario podemos crear un objeto de la siguiente manera:

    >suario usr1K @@usr1 es una variable del tipo >suariousr1 U ne >suario()K

    .a primera l#nea corresponde a la declaraci n del objeto es decir se declara una variable del tipode objeto deseado+

    .a segunda l#nea corresponde a la iniciaci n del objeto+

    E% o#erador ne

    $l operador ne crea una instancia de una clase asignando la cantidad de memoria necesaria deacuerdo al tipo de objeto+ $l operador ne se utili'a en conjunto con un constructor + $l operador ne regresa una re%erencia a un nuevo objeto+

    Prob%ema ):

    Desarrollar un programa !ue cargue los lados de un tri*ngulo e implemente los siguientesmtodos: iniciali'ar los atributos imprimir el valor del lado ma"or " otro mtodo !ue muestre si ese!uil*tero o no+

    Programa Tri ng$%o

    )!* Re3erencia a% objeto act$a%!

    9ara crear un objeto se deben reali'ar dos operaciones:

    J Declaraci nJ &nstanciaci n

    Dec%aracin de $n objeto

    $n la declaraci n se crea la re%erencia al objeto de %orma similar a c mo se declara una variablede un tipo primitivo+

    .a re%erencia se utili'a para manejar el objeto+

    .a sinta8is general para declarar un objeto en Bava es:

    NombreClase re%erencia;bjetoK

    9or ejemplo para crear un objeto de la clase 9ersona creamos su re%erencia as#:

    9ersona pK

    .a re%erencia tiene como misi n almacenar la direcci n de memoria del objeto+ $n este momento lare%erencia p almacena una direcci n de memoria nula (null)+

    Prob%ema *:

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 10

  • 7/23/2019 Manual de Prcticas POO (6)

    11/32

    MANUAL DE PRCTICAS POO

    Desarrollar una clase !ue represente un punto en el plano " tenga los siguientes mtodos: cargar los valores de 8 e " imprimir en !ue cuadrante se encuentra dic,o punto (concepto matem*ticoprimer cuadrante si 8 e " son positivas si 8\E e "[E segundo cuadrante etc+)

    Programa P$nto

    )!8 M todo : dec%aracin@ men aje @ #a o de #ar metro @ retorno de ?a%ore !

    Cuando uno plantea una clase en lugar de especi%icar todo el algoritmo en un 6nico mtododividimos todas las responsabilidades de las clase en un conjunto de mtodos+

    >n mtodo ,emos visto !ue tiene la siguiente sinta8is:

    public void Ynombre del mtodoZ() R YalgoritmoZ

    7eremos !ue ,a" varios tipos de mtodos:

    2todos con par*metros+

    >n mtodo puede tener par*metros:

    public void Ynombre del mtodoZ(Ypar*metrosZ) R YalgoritmoZ

    .os par*metros los podemos imaginar como variables locales al mtodo pero su valor se iniciali'acon datos !ue llegan cuando lo llamamos+

    9roblema :

    Con%eccionar una clase !ue permita ingresar valores enteros por teclado " nos muestre la tabla demultiplicar de dic,o valor+ inali'ar el programa al ingresar el J1+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 11

  • 7/23/2019 Manual de Prcticas POO (6)

    12/32

    MANUAL DE PRCTICAS POO

    Programa Tab%aM$%ti#%icar

    2todos !ue retornan un dato

    >n mtodo puede retornar un dato:

    public Ytipo de datoZ Ynombre del mtodoZ(Ypar*metrosZ) R YalgoritmoZ return Ytipo de datoZ

    Cuando un mtodo retorna un dato en ve' de indicar la palabra clave void previo al nombre delmtodo indicamos el tipo de dato !ue retorna+ .uego dentro del algoritmo en el momento !ue!ueremos !ue %inalice el mismo " retorne el dato empleamos la palabra clave return con el valor respectivo+

    9roblema 3:

    Con%eccionar una clase !ue permita ingresar tres valores por teclado+ .uego mostrar el ma"or " elmenor+

    Programa Ma6orMenor

    )!, Con tr$ctore 6 de tr$ctore : dec%aracin@ $ o 6 a#%icacione !

    $n Bava podemos de%inir un mtodo !ue se ejecute inicialmente " en %orma autom*tica+ $stemtodo se lo llama constructor+

    $l constructor tiene las siguientes caracter#sticas:

    Tiene el mismo nombre de la clase+ $s el primer mtodo !ue se ejecuta+ Se ejecuta en %orma autom*tica+ No puede retornar datos+ Se ejecuta una 6nica ve'+ >n constructor tiene por objetivo iniciali'ar atributos+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 12

  • 7/23/2019 Manual de Prcticas POO (6)

    13/32

    MANUAL DE PRCTICAS POO

    Prob%ema =:

    Se desea guardar los sueldos de 3 operarios en un vector+ 0eali'ar la creaci n " carga del vectoren el constructor+

    Programa O#erario

    Prob%ema F:

    Con%eccionar una clase !ue represente un empleado+ De%inir como atributos su nombre " susueldo+ $n el constructor cargar los atributos " luego en otro mtodo imprimir sus datos " por 6ltimouno !ue imprima un mensaje si debe pagar impuestos (si el sueldo supera a /EEE)

    Programa Em#%eado5abrica

    Prob%ema G:

    &mplementar la clase operaciones+ Se deben cargar dos valores enteros en el constructor calcular su suma resta multiplicaci n " divisi n cada una en un mtodo imprimir dic,os resultados+

    Programa O#eracione Ca%c$%o

    E% de tr$ctor:

    $l destructor se utili'a para destruir una instancia de una clase " liberar memoria+ $n Bava no ,a"destructores "a !ue la liberaci n de memoria es llevada a cabo por el arbage Collector cuandolas instancias de los objetos !uedan desre%erenciadas+

    )!= Sobrecarga de m todo !

    >n mtodo sobrecargado se utili'a para reutili'ar el nombre de un mtodo pero con di%erentesargumentos (opcionalmente un tipo di%erente de retorno)+ .as reglas para sobrecargar un mtodo

    son las siguientes:.os mtodos sobrecargados deben cambiar la lista de argumentos9ueden cambiar el tipo de retorno9ueden cambiar el modi%icador de acceso9ueden declarar nuevas o m*s amplias e8cepciones>n mtodo puede ser sobrecargado en la misma clase o en una subclase

    7eamos un mtodo !ue se desea sobrecargar:

    9ublic void cambiarTamao(int tamao String nombre %loat patron)R

    .os siguientes mtodos son sobrecargas legales del mtodo cambiarTamao():

    9ublic void cambiarTamao(int tamao String nombre)R

    9ublic int cambiarTamao(int tamao %loat patr n)R

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 13

  • 7/23/2019 Manual de Prcticas POO (6)

    14/32

    MANUAL DE PRCTICAS POO

    9ublic void cambiarTamao(%loat patr n String nombre) t,ro s &;$8ceptionsR

    Cmo in?ocar $n m todo obre cargado:

    .o !ue de%ine !ue mtodo es el !ue se va a llamar son los argumentos !ue se env#an al mismodurante la llamada+ Si se invoca a un mtodo con un String como argumento se ejecutar* elmtodo !ue tome un String como argumento si se manda llamar al mismo mtodo pero con un%loat como argumento se ejecutar* el mtodo !ue tome un %loat como argumento " as#sucesivamente+ Si se invoca a un mtodo con un argumento !ue no es de%inido e ninguna de lasversiones sobrecargadas entonces el compilador arrojar* un mensaje de error+

    $jemplo de una clase con un mtodo sobre cargado:

    Programa Sobrecarga

    La #a%abra re er?ada t>i 6 $#er

    .a palabra reservada t>i permite especi%icar !ue la variable !ue seala (" la seala ,aciendothis.nombreVariable ) es de la misma clase en la !ue se usa+

    .a palabra reservada $#er sirve para indicar !ue una variable o un mtodo es de la superclase(,erencia )+

    Programa U $ario8

    )!F Sobrecarga de o#eradore : Conce#to 6 $ti%idad@ o#eradore $nario 6 binario !

    .a sobrecarga de operadores es la capacidad para trans%ormar los operadores de un lenguajecomo por ejemplo el V J etc+

    Cuando se dice trans%ormar se re%iere a !ue los operandos !ue entran en juego no tienen !ue ser los !ue admite el lenguaje por de%ecto+ 2ediante esta tcnica podemos sumar dos objetos creadospor nosotros o un objeto " un entero en ve' de limitarnos a sumar n6meros enteros o reales por ejemplo+

    Sorprendentemente java no lo incorpora+

    A la ,ora de ,ablar de operadores vamos a distinguir entre dos tipos los unarios " los binarios+ .osunarios son a!uellos !ue solo re!uieren un operando por ejemplo aVV en este caso el operandoes ]a] " el operador ]VV]+ .os operadores binarios son a!uellos !ue necesitan dos operadores por ejemplo aVc a,ora el operador es ]V] " los operandos ]a] " ]c]+ $s importante esta distinci n "a !uela programaci n se ,ar* de %orma di%erente+

    .os operadores !ue podemos sobrecargar son los unarios V J H ^ VV JJK " los binarios V J _ @` \\ [[+ $s importante decir !ue los operadores de comparaci n UU HU \ [ \U [U sepueden sobrecargar pero con la condici n !ue siempre se sobrecargue el complementario esdecir si sobrecargamos el UU debemos sobrecargar el HU

    Unidad * 7erencia!

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 14

  • 7/23/2019 Manual de Prcticas POO (6)

    15/32

    MANUAL DE PRCTICAS POO

    *!' De3inicin: c%a e ba e@ c%a e deri?ada!

    .a ,erencia signi%ica !ue se pueden crear nuevas clases partiendo de clases e8istentes !uetendr*n todos los atributos " los mtodos de su ]superclase] o ]clase padre] " adem*s se le podr*naadir otros atributos " mtodos propios+

    C%a e #adre

    Clase de la !ue desciende o deriva una clase+ .as clases ,ijas (descendientes) ,eredan(incorporan) autom*ticamente los atributos " mtodos de la la clase padre+

    S$bc%a e

    Clase descendiente de otra+ ?ereda autom*ticamente los atributos " mtodos de su superclase+ $suna especiali'aci n de otra clase+ Admiten la de%inici n de nuevos atributos " mtodos paraaumentar la especiali'aci n de la clase+

    $jercicio de ?erencia resuelto:

    .a empresa in%orm*tica W&92 Tec,X necesita llevar un registro de todos sus empleados !ue seencuentran en la o%icina central para eso ,a creado un diagrama de clases !ue debe incluir losiguiente:

    '1 Em#%eado

    Atributos:

    J nombre: tipo cadena (Debe ser nombre " apellido)

    J cedula: tipo cadenaJ edad : entero (0ango entre 1 " 3 aos)J casado: booleanJ salario: tipo numrico doble

    2todos:J Constructor con " sin par*metros de entradaJ 2todo !ue permita mostrar la clasi%icaci n seg6n la edad de acuerdo al siguiente algoritmo:Si edad es menor o igual a -1 9rincipianteSi edad es [U-- " \U/3 &ntermedioSi edad es [/3 Senior+J

    J &mprimir los datos del empleado por pantalla (utili'ar salto de l#nea n para separar los atributos+

    J >n mtodo !ue permita aumentar el salario en un porcentaje !ue ser#a pasado como par*metro almtodo+

    )! Programador ($speciali'aci n de $mpleado)+ Clase !ue ,ereda de $mpleado todos losatributos " mtodos+

    J Atributos:

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 15

  • 7/23/2019 Manual de Prcticas POO (6)

    16/32

    MANUAL DE PRCTICAS POO

    J lineasDeCodigo9or?ora : tipo entero

    J lenguajeDominante: tipo cadena

    J 2todos:

    J Constructor con " sin par*metros de entrada+

    SOLUCION:

    9rimero debe de%inirse la clase $mpleado con los atributos sealados en el e8amen se de%inen losmtodos con las acciones pertinentes+ 9osteriormente se de%ine la clase 9rogramador como ,ija dela clase $mpleado con sus atributos " mtodos correspondientes+ Cuando se ,ace re%erencia a laclase padre se antepone al atributo la palabra super+ .a palabra t,is sirve para re%erenciar el objetoactual+

    Programa Em#%eado

    *!) C%a i3icacin: >erencia im#%e@ >erencia mH%ti#%e!

    ?a" dos tipos de ,erencia: Herencia Simple " Herencia Mltiple + .a primera indica !ue se puedende%inir nuevas clases solamente a partir de una clase inicial mientras !ue la segunda indica !ue sepueden de%inir nuevas clases a partir de dos o m*s clases iniciales+ Bava s lo permite ,erenciasimple+

    7erencia Sim#%e

    7erencia MH%ti#%e

    *!* Re$ti%i acin de miembro >eredado !

    .a reutili'aci n de c digo se re%iere al comportamiento " a las tcnicas !ue garanti'an !ue unaparte o la totalidad de un programa in%orm*tico e8istente se pueda emplear en la construcci n deotro programa+ De esta %orma se aprovec,a el trabajo anterior se economi'a tiempo " se reduce laredundancia+

    .a manera m*s %*cil de reutili'ar c digo es copiarlo total o parcialmente desde el programa antiguoal programa en desarrollo+ 9ero es trabajoso mantener m6ltiples copias del mismo c digo por lo

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 16

  • 7/23/2019 Manual de Prcticas POO (6)

    17/32

    MANUAL DE PRCTICAS POO

    !ue en general se elimina la redundancia dejando el c digo reusable en un 6nico lugar "llam*ndolo desde los di%erentes programas+ $ste proceso se conoce como abstracci n+ .aabstracci n puede verse claramente en las bibliotecas de so%t are en las !ue se agrupan variasoperaciones comunes a cierto dominio para %acilitar el desarrollo de programas nuevos+ ?a"bibliotecas para convertir in%ormaci n entre di%erentes %ormatos conocidos acceder a dispositivosde almacenamiento e8ternos proporcionar una inter%a' con otros programas manipular in%ormaci n de manera conocida (como n6meros %ec,as o cadenas de te8to)+

    Programa /e>"c$%o

    ab tract 0#a%abra c%a?e1!

    >na clase abstracta es a!uella !ue posee al menos un mtodo abstracto+ >n mtodo abstracto esa!ul !ue est* declarado pero !ue no posee implementaci n alguna (es decir no tiene cuerpo)+$st* incompleto+ Debido a esta carencia es imposible declarar objetos de una clase abstracta+O9ara !u sirve entonces una clase abstractaQ >na clase abstracta sirve para establecer un marcode trabajo !ue deben cumplir todas las clases !ue ,ereden de ella+ .as clases !ue ,eredan de ellas# deben dotar de una implementaci n a los mtodos abstractos del padre+ Si no lo ,acenautom*ticamente se convierten tambin en abstractas+ Tambin es posible de%inir una claseabstracta sin !ue posea mtodos abstractos+

    *!8 Re3erencia a% objeto de %a c%a e ba e

    Consideremos las %iguras planas cerradas como el rect*ngulo " el c#rculo+ Tales %iguras compartencaracter#sticas comunes como es la posici n de la %igura de su centro " el *rea de la %iguraaun!ue el procedimiento para calcular dic,a *rea sea completamente distinto+ 9odemos por tantodisear una jerar!u#a de clases tal !ue la clase base denominada Figura tenga las caracter#sticascomunes " cada clase derivada las espec#%icas+

    .a clase Figura es la !ue contiene las caracter#sticas comunes a dic,as %iguras concretas por tanto no tiene %orma ni tiene *rea+ $sto lo e8presamos declarando Figura como una claseabstracta declarando la %unci n miembrorea ab tract +

    .as clases abstractas solamente se pueden usar como clases base para otras clases+ No sepueden crear objetos pertenecientes a una clase abstracta+ Sin embargo se pueden declarar variables de dic,as clases+

    $n el juego del ajedre' podemos de%inir una clase base denominada Pieza con las caracter#sticascomunes a todas las pie'as como es su posici n en el tablero " derivar de ella las caracter#sticasespec#%icas de cada pie'a particular+ As# pues la clasePieza ser* una clase abstracta con una%unci nab tract denominada mover " cada tipo de pie'a de%inir* dic,a %unci n de acuerdo a lasreglas de su movimiento sobre el tablero+

    La c%a eFigura

    .a de%inici n de la clase abstracta Figura, contiene la posici n x e y de la %igura particular de sucentro " la %unci n *rea !ue se va a de%inir en las clases derivadas para calcular el *rea de cada%igura en particular+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 17

    http://profejavaoramas.blogspot.mx/2010/03/abstract-palabra-clave.htmlhttp://profejavaoramas.blogspot.mx/2010/03/abstract-palabra-clave.html
  • 7/23/2019 Manual de Prcticas POO (6)

    18/32

    MANUAL DE PRCTICAS POO

    E% modi3icador de acce o #rotected

    $l modi%icador de acceso protected es una combinaci n de los accesos !ue proporcionan losmodi%icadores public " private+ protected proporciona acceso p6blico para las clases derivadas "acceso privado (pro,ibido) para el resto de clases+

    9or ejemplo si en la clase $mpleado de%inimos:

    c%a $mpleado R #rotected int sueldoK + + +

    Dado !ue un $jecutivo es un $mpleado entonces desde la clase $jecutivo se puede acceder aldato miembro sueldo mientras !ue si se declara private no+

    Programa 5ig$ra

    *!, Con tr$ctore 6 de tr$ctore en c%a e deri?ada !

    Constructores en clases derivadas+

    Al instanciar objetos de clases derivadas se inicia una cadena de invocaciones a constructores enlas cuales el constructor de la clase derivada antes de reali'ar sus propias tareas invoca ("a seaimpl#cita o e8pl#citamente) al constructor de su clase base+ Similarmente si la clase base %uederivada de otra clase el constructor de la clase base debe invocar al constructor de la claseubicada en el siguiente nivel superior de la jerar!u#a " as# sucesivamente+ $l 6ltimo constructor invocado en la cadena es el constructor de la clase ;bject cu"o cuerpo se ejecuta primero+ $lcuerpo del constructor de la clase derivada se ejecuta al %inal+ $l constructor de cada clase baseiniciali'a las variables de instancia !ue el objeto de la clase derivada ,ereda+

    Destructores en clases derivadas+

    Cuando remueve de la memoria un objeto de una clase derivada el recolector de basura invoca aldestructor del objeto+ $sto inicia una cadena de invocaciones a destructores en donde eldestructor de la clase derivada " los destructores de las clases bases directas e indirectas seejecutan en orden inverso al !ue se ejecutaron los constructores esto es primero se ejecuta el

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 18

  • 7/23/2019 Manual de Prcticas POO (6)

    19/32

    MANUAL DE PRCTICAS POO

    destructor de la clase derivada " al %inal se ejecuta el destructor de la clase base ubicada en elnivel superior de la jerar!u#a+ .a ejecuci n de los destructores debe liberar todos los recursos !ueel objeto ad!uiri antes de !ue el recolector de basura reclame la memoria de ese objeto+

    Cuando el recolector de basura invoca al destructor de un objeto de una clase derivada esedestructor reali'a su tarea " despus invoca al destructor de la clase base+ $l proceso se repite,asta !ue se invoca al destructor de la clase ;bject+

    *!= Rede3inicin de m todo en c%a e deri?ada !

    $l lenguaje java permite rede%inir miembros de la clase base en las clases derivadas pero elcompilador emite una advertencia cuando detecta una rede%inici n+ >na advertencia ( arning) esun mensaje del compilador acerca de un posible problema+ Sin embargo en este caso s# se generac digo ejecutable (a di%erencia del mensaje de error)+

    $l siguiente ejemplo muestra c mo reutili'ar los identi%icadores de los campos de la clase base enuna clase derivada+ NO PRO2RAMAR

    // Redef.cs : Ejemplifica la redefinicin de campos en clases derivadas.

    class Punto{

    public int x;

    public int y;

    }

    class Punto ! : Punto{

    public int x ;

    public int y ;

    public int " ;

    }

    class Principal{

    public static void #ain$ % {

    Punto a & ne' Punto$ %; Punto ! b & ne' Punto !$ %;

    a.x & ()) ;a.y & *)) ;

    b.x & )) ;

    b.y & +)) ;

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 19

  • 7/23/2019 Manual de Prcticas POO (6)

    20/32

    MANUAL DE PRCTICAS POO

    b." & ,)) ;

    }

    }

    Unidad 8 Po%imor3i mo

    8!' De3inicin!

    $l polimor%ismo consiste en obtener un mismo mtodo con di%erentes %unciones es decirsuponiendo !ue tengamos una clase Saludo con el mtodo Saludo el cual ser#a su constructorpero en este caso tendr#amos varios constructores pero siempre siguiendo las reglas deindependencia en cuesti n a los par*metros de cada constructor para !ue as# puedan di%erenciarseuno de otro sin embargo cada uno tendr* di%erentes procesos internos en s# mismo+

    Programa Sa%$do

    8!) C%a e ab tracta : de3inicin@ m todo ab tracto @ im#%ementacin de c%a e ab tracta @mode%ado de c%a e ab tracta !>na clase !ue declara la e8istencia de mtodos pero no la implementaci n de dic,os mtodos (osea las llaves R " las sentencias entre ellas) se considera una clase abstracta+

    >na clase abstracta puede contener mtodos noJabstractos pero al menos uno de los mtodosdebe ser declarado abstracto+

    9ara declarar una clase o un metodo como abstractos se utili'a la palabra reservada ab tract +

    abstract class Dra ingR abstract void mi2etodo(int var1 int var-)K

    String mi;tro2etodo( )R +++

    8!* Inter3ace : de3inicin@ im#%ementacin de inter3ace @ >erencia de inter3ace !

    >na inter%ace es una variante de una clase abstracta con la condici n de !ue todos sus mtodosdeben ser asbtractos+ Si la inter%ace va a tener atributos stos deben llevar las palabrasreservadas tatic 3ina% " con un valor inicial "a !ue %uncionan como constantes por lo !ue por convenci n su nombre va en ma"6sculas+

    inter%ace NominaR public static %inal String $290$SA U 9atito S+ A+ K public void detalleDe$mpleado(Nomina obj)K

    >na clase implementa una o m*s inter%aces (separadas con comas ) con la palabra reservadaim#%ement+ Con el uso de inter%aces se puede simular la ,erencia m6ltiple !ue Bava no soporta+

    class $mpleado implements NominaR +++

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 20

  • 7/23/2019 Manual de Prcticas POO (6)

    21/32

    MANUAL DE PRCTICAS POO

    $n este ejemplo la clase $mpleado tiene una clase padre llamada ;bject (impl#citamente) eimplementa a la inter%ace Nomina !uedando el diagrama de clases de la siguiente manera:

    .a clase !ue implementa una inter%ace tiene dos opciones:

    '1 &mplementar todos los mtodos de la inter%ace+

    )1 &mplementar s lo algunos de los mtodos de la inter%ace pero esa clase debe ser una claseabstracta (debe declararse con la palabra ab tract )+

    8!8 /ariab%e #o%imr3ica 0#%anti%%a 1: de3inicin@ $ o 6 a#%icacione !

    $n Bava las variables !ue contienen objetos son variables polim r%icas+ $l trmino polim r%icof (literalmente: muc,as %ormas) se re%iere al ,ec,o de !ue una misma variable puede contener objetos de di%erentes tipos (del tipo declarado o de cual!uier subtipo del tipo declarado)+ $lpolimor%ismo aparece en los lenguajes orientados a objetos en numerosos conte8tos las variablespolim r%icas constitu"en justamente un primer ejemplo+

    8!, Re$ti%i acin de cdigo

    .o primero !ue se les viene a la cabe'a a los estudiantes cuando se les menciona la reutili'aci ndel c digo es el %amoso copiar " pegar lo cual es una de las practicas !ue m*s encarece eldesarrollo de so%t are+ Como todo en Bava el problema se resuelve con las clases+ 9ara reutili'ar el c digo creamos nuevas clases pero en lugar de partir de cero partimos de clases relacionadascon nuestra clase !ue ,an sido "a creadas " depuradas+

    >na %orma de ,acer esto es crear objetos de nuestras clases e8istentes dentro de la nueva clase+$sto se conoce como composici n por!ue la nueva clase est* compuesta de objetos de clasese8istentes+ $stamos reutili'ando la %uncionalidad del c digo " no la %orma+

    ;tra %orma es crear una nueva clase como un tipo de una clase "a e8istente+ Tomamos la %orma dela clase e8istente " aadimos c digo a la nueva sin modi%icar la clase e8istente+ $sta %orma de

    crear nuevos objetos se llamada ,erencia " lo !ue ,acemos es e8tender la clase en la !ue nosbasamos para crear la nueva+Com#o icin:

    0ecordemos !ue la %orma para determinar cu*ndo usar composici n es cuando podemos decir !uenuestra nueva clase Wtiene unX elemento de otro tipo de objetos por ejemplo un cron metro tiene:,oras minutos " segundos es decir !ue una clase Cronometro est* compuesta por otras clasesllamadas: ?oras 2inutos " Segundos+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 21

  • 7/23/2019 Manual de Prcticas POO (6)

    22/32

    MANUAL DE PRCTICAS POO

    Unidad , E

  • 7/23/2019 Manual de Prcticas POO (6)

    23/32

    MANUAL DE PRCTICAS POO

    /) $l programador puede generar una e8cepci n manualmente utili'ando la estructura t,ro + Sinimportar c mo se produjo la e8cepci n se maneja de la misma %orma+

    ,!* Pro#agacin de e )+

    >na e8cepci n no tratada en un blo!ue se propaga ,acia el blo!ue llamante+ $ste mecanismo depropagaci n contin6a mientras no se trate la e8cepci n o se llegue al mtodo de nivel superior+ Sila e8cepci n no se trata en el mtodo de nivel superior se imprime un mensaje de error por consola+

    ,!8 2e tin de e

  • 7/23/2019 Manual de Prcticas POO (6)

    24/32

    MANUAL DE PRCTICAS POO

    .a e8cepci n generada es:

    Agregando el c digo para el manejo de la e8cepci n al mismo programa tenemos:

    A,ora al producirse la e8cepci n sigue las acciones especi%icadas en el blo!ue catc, es este casola acci n consiste en mandar un mensaje+

    Programa Pr$ebaE

  • 7/23/2019 Manual de Prcticas POO (6)

    25/32

    MANUAL DE PRCTICAS POO

    &maginemos una aplicaci n in%orm*tica !ue controla la utili'aci n de los columpios de es!u#s+ .ospases de acceso dispondr*n de un c digo de barras !ue los identi%ica+ $n ciertas ocasiones nosencontraremos con situaciones an malas:

    1+ C digo de barras ilegible-+ C digo de barras no valido (pase caducado)/+ C digo de barras utili'ado en otro columpio en un periodo de tiempo demasiado breve

    Ninguna de las situaciones anteriores se puede detectar utili'ando e8cepciones prede%inidaspor!ue su naturale'a est* estrec,amente relacionada con los detalles de la aplicaci n por lo !uetendremos !ue ,acer uso de e8cepciones de%inidas por nosotros mismos+

    $n 9;; lo m*s adecuado es !ue las e8cepciones sean objetos por lo !ue en Bava de%iniremos lase8cepciones como clases+ Nuestras clases de e8cepci n en general ,eredaran de la claseE

  • 7/23/2019 Manual de Prcticas POO (6)

    26/32

    MANUAL DE PRCTICAS POO

    u%%ered0eader br U ne u%%ered0eader (ne &nputStream0eader (S"stem+in))K

    .ectura " almacenado en una variable:

    dato U br+read.ine()K

    -$33eredReader!readLine01

    .ee una l#nea de te8to ,asta !ue encuentra un car*cter de salto de l#nea ( n) " retorno de carro ( r)+

    Sinta8is:

    String read.ine()

    Programa S$marDato Tec%ado

    =!) C%a i3icacin: Arc>i?o de ten arc,ivobinario !ue solo contiene in%ormaci n de tipo te8tual sin in%ormaci n sobre el %ormato del mismo sedice !ue es un arc,ivo de te8to plano+ ?abitualmente se contraponen los trminos arc,ivo binario "arc,ivo de te8to de %orma !ue los primeros no contienen solamente te8to+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 26

  • 7/23/2019 Manual de Prcticas POO (6)

    27/32

    MANUAL DE PRCTICAS POO

    =!* O#eracione b ica 6 ti#o de acce o!

    Normalmente cuando se codi%ica un programa se ,ace con la intenci n de !ue ese programapueda interactuar con los usuarios del mismo es decir !ue el usuario pueda pedirle !ue realicecosas " pueda suministrarle datos con los !ue se !uiere !ue ,aga algo+ >na ve' introducidos losdatos " las rdenes se espera !ue el programa manipule de alguna %orma esos datos paraproporcionarnos una respuesta a lo solicitado+

    Adem*s en muc,as ocasiones interesa !ue el programa guarde los datos !ue se le ,anintroducido de %orma !ue si el programa termina los datos no se pierdan " puedan ser recuperados

    en una sesi n posterior+ .a %orma m*s normal de ,acer esto es mediante la utili'aci n de %ic,eros!ue se guardar*n en un dispositivo de memoria no vol*til (normalmente un disco)+

    A todas estas operaciones !ue constitu"en un %lujo de in%ormaci n del programa con el e8terior seles conoce como !ntra#a$Sali#a (!$S%+

    $8isten dos tipos de $@SK la!$S estn#ar !ue se reali'a con el terminal del usuario " la !$S atrav&s #e 'ichero en la !ue se trabaja con %ic,eros de disco+

    Todas las operaciones de $@S en Bava vienen proporcionadas por el pa!uete est*ndar de la A9& deBava denominado (ava.io !ue incorpora inter%aces clases " e8cepciones para acceder a todo tipode %ic,eros+

    EntradaJSa%ida e t ndar

    $l acceso a la entrada " salida est*ndar es controlado por tres objetos !ue se creanautom*ticamente al iniciar la aplicaci n:System.in System.out " System.err

    a.) System.in

    $ste objeto implementa la entrada est*ndar (normalmente el teclado)+ .os mtodos !ue nosproporciona para controlar la entrada son:

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 27

  • 7/23/2019 Manual de Prcticas POO (6)

    28/32

    MANUAL DE PRCTICAS POO

    rea#)%* Devuelve el car*cter !ue se ,a introducido por el teclado le"ndolo del bu%%er deentrada " lo elimina del bu%%er para !ue en la siguiente lectura sea le#do el siguientecar*cter+ Si no se ,a introducido ning6n car*cter por el teclado devuelve el valor J1+

    s+ip)n%* &gnora losn caracteres siguientes de la entrada+

    b.) System.out

    $ste objeto implementa la salida est*ndar+ .os mtodos !ue nos proporciona para controlar lasalida son:

    print)a%* &mprimea en la salida donde a puede ser cual!uier tipo b*sico Bava "a !ue Bava,ace su conversi n autom*tica a cadena+

    println)a%* $s idntico a print)a% salvo !ue con println)% se imprime un salto de l#nea al %inalde la impresi n de a +

    c.) System.err

    $ste objeto implementa la salida en caso de error+ Normalmente esta salida es la pantalla o laventana del terminal como con System.out pero puede ser interesante redirigirlo por ejemplo,acia un %ic,ero para di%erenciar claramente ambos tipos de salidas+

    .as %unciones !ue o%rece este objeto son idnticas a las proporcionadas por System.out +

    Ejemplo

    A continuaci n vemos un ejemplo del uso de estas %unciones !ue acepta te8to ,asta !ue se pulsael retorno de carro e in%orma del n6mero de caracteres introducidos+

    Programa C$entaCaractere

    EntradaJSa%ida #or 3ic>ero

    Tipos de ficheros

    $n Bava es posible utili'ar dos tipos de %ic,eros (de te8to o binarios) " dos tipos de acceso a los%ic,eros (secuencial o aleatorio)+

    .os %ic,eros de te8to est*n compuestos de caracteres legibles mientras !ue los binarios puedenalmacenar cual!uier tipo de datos ( int 'loat boolean,... )+

    >na lectura secuencial implica tener !ue acceder a un elemento antes de acceder al siguiente es

    decir de una manera lineal (sin saltos)+ Sin embargo los %ic,eros de acceso aleatorio permitenacceder a sus datos de una %orma aleatoria esto es indicando una determinada posici n desde la!ue leer@escribir+

    S lo vamos a tratar las tres principales:

    File utputStream : ic,ero de salida de te8to+ 0epresenta %ic,eros de te8to para escritura alos !ue se accede de %orma secuencial+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 28

  • 7/23/2019 Manual de Prcticas POO (6)

    29/32

    MANUAL DE PRCTICAS POO

    File-nputStream : ic,ero de entrada de te8to+ 0epresenta %ic,eros de te8to de s lo lecturaa los !ue se accede de %orma secuencial+

    an#om"ccessFile : ic,ero de entrada o salida binario con acceso aleatorio+ $s la basepara crear los objetos de tipo %ic,ero de acceso aleatorio+ $stos %ic,eros permiten multitud de

    operacionesK saltar ,acia delante " ,acia atr*s para leer la in%ormaci n !ue necesitemos en cadamomento e incluso leer o escribir partes del %ic,ero sin necesidad de cerrarlo " volverlo a abrir enun modo distinto+

    Generalidades

    9ara tratar con un %ic,ero siempre ,a" !ue actuar de la misma manera:

    1+ Se abre el %ic,ero+ 9ara ello ,a" !ue crear un objeto de la clase correspondiente al tipo de%ic,ero !ue vamos a manejar " el tipo de acceso !ue vamos a utili'ar:

    TipoDeFichero obj = new TipoDeFichero ruta )!

    Donde ruta es la ruta de disco en !ue se encuentra el %ic,ero o un descriptor de %ic,ero v*lido+ $ste%ormato es v*lido e8cepto para los objetos de la clase an#om"ccessFile (acceso aleatorio) paralos !ue se ,a de instanciar de la siguiente %orma:

    "andom#ccessFile obj = new "andom#ccessFile ruta$ modo )!

    Donde mo#o es una cadena de te8to !ue indica el modo en !ue se desea abrir el %ic,eroK r paras lo lectura o r para lectura " escritura+

    -+ Se utili'a el %ic,ero+ 9ara ello cada clase presenta di%erentes mtodos de acceso para escribir oleer en el %ic,ero+

    /+ esti n de e8cepciones (opcional pero recomendada) Se puede observar !ue todos losmtodos !ue utilicen clases de este pa!uete deben tener en su de%inici n una cl%usulathrows&'E(ception. .os mtodos de estas clases pueden lan'ar e8cepciones de esta clase (o sus ,ijas)en el transcurso de su ejecuci n " dic,as e8cepciones deben de ser capturadas " debidamentegestionadas para evitar problemas+

    + Se cierra el %ic,ero " se destru"e el objeto+ 9ara cerrar un %ic,ero lo !ue ,a" !ue ,acer esdestruir el objeto+ $sto se puede reali'ar de dos %ormas dejando !ue sea el recolector de basurade Bava el !ue lo destru"a cuando no lo necesite (no se recomienda) o destru"endo el objetoe8pl#citamente mediante el uso del procedimiento c lose)% del objeto:

    obj.close )

    a clase File'utputStream

    2ediante los objetos de esta clase escribimos en %ic,eros de te8to de %orma secuencial+

    9resenta el mtodo /rite)% para la escritura en el %ic,ero+ 9resenta varios %ormatos:

    int /rite) int c %* $scribe el car*cter en el %ic,ero+ int /rite) byte a01 %* $scribe el contenido del vector en el %ic,ero+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 29

  • 7/23/2019 Manual de Prcticas POO (6)

    30/32

    MANUAL DE PRCTICAS POO

    int /rite) byte a01, int o'', int len %* $scribe len caracteres del vector a en el %ic,erocomen'ando desde la posici n o'' +

    a clase File&nputStream

    2ediante los objetos de esta clase leemos de %ic,eros de te8to de %orma secuencial+

    9resenta el mtodo rea#)% para la lectura del %ic,ero+ $ste mtodo se puede invocar de varias%ormas+

    int rea#)%* Devuelve el siguiente car*cter del %ic,ero+

    int rea#) byte a01 %* .lena el vector a con los caracteres le#dos del %ic,ero+ Devuelve la longitud delvector !ue se ,a llenado si se reali' con 8ito o h1 si no ,ab#a su%icientes caracteres en el %ic,eropara llenar el vector+

    int rea#) byte a01, int o'', int len %* .ee len caracteres del %ic,ero insert*ndolos en el vector a +

    Todos ellos devuelven J1 si se ,a llegado al %inal del %ic,ero (momento de cerrarle)+

    $l siguiente ejemplo muestra el %ic,ero de te8to $carta.txt en pantalla:

    9rograma CrearCarta

    a clase "andom#ccessFile

    2ediante los objetos de esta clase utili'amos %ic,eros binarios mediante un acceso aleatorio tantopara lectura como para escritura+ $n estos %ic,eros ,a" un #ndice !ue nos dice en !u posici n del%ic,ero nos encontramos " con el !ue se puede trabajar para posicionarse en el %ic,ero+

    2todos de despla'amiento

    Cuenta con una serie de %unciones para reali'ar el despla'amiento del puntero del %ic,ero+ ?a" !uetener en cuenta !ue cual!uier lectura o escritura de datos se reali'ar* a partir de la posici n actualdel puntero del %ic,ero+

    long getFilePointer)%2 Devuelve la posici n actual del puntero del %ic,ero+

    voi# see+) long l %2 Coloca el puntero del %ic,ero en la posici n indicada porl + >n %ic,ero siempreempie'a en la posici n E+

    int s+ip3ytes) int n %2 &ntenta saltarn b"tes desde la posici n actual+

    long length)%2 Devuelve la longitud del %ic,ero+

    voi# set4ength) long l%2 $stablece a l el tamao de este %ic,ero+

    File5escriptor getF5)%2 Devuelve el descriptor de este %ic,ero+

    2todos de escritura

    .a escritura del %ic,ero se reali'a con una %unci n !ue depende el tipo de datos !ue se deseeescribir+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 30

  • 7/23/2019 Manual de Prcticas POO (6)

    31/32

    MANUAL DE PRCTICAS POO

    voi# /rite) byte b01, int ini, int len %2 $scribe len caracteres del vector b+ voi# /rite) int i %2 $scribe la parte baja de i (un b"te) en el %lujo+ voi# /rite3oolean) boolean b %2 $scribe el boolean b como un b"te+ voi# /rite3yte) int i %2 $scribe i como un b"te+ voi# /rite3ytes) String s %2 $scribe la cadena s tratada como b"tes no caracteres+ voi# /rite6har) int i %2 $scribe i como 1 b"te+ voi# /rite6hars) String s %2 $scribe la cadena s + voi# /rite5ouble) #ouble # % K Convierte# a long " le escribe como b"tes+ voi# /riteFloat) 'loat ' %2 Convierte ' a entero " le escribe como b"tes+ voi# /rite-nt) int i % K $scribei como b"tes+ voi# /rite4ong) long v %2 $scribe v como b"tes+ voi# /riteShort) int i %2 $scribe i como - b"tes+ voi# /rite78F) String s %2 $scribe la cadena s utili'ando la codi%icaci n >T J +

    .os mtodos !ue escriben n6meros de m*s de un b"te escriben el primero su parte alta+

    2todos de lectura

    .a lectura del %ic,ero se reali'a con una %unci n !ue depende del tipo de datos !ue !ueremos leer+

    boolean rea#3oolean)%2 .ee un b"te " devuelve 'alse si vale E o true sino+byte rea#3yte)%2 .ee " devuelve un b"te+char rea#6har)%2 .ee " devuelve un caracter+#ouble rea#5ouble)%2 .ee b"tes " devuelve un #ouble +'loat rea#Float)%2 .ee b"tes " devuelve un 'loat +voi# rea#Fully) byte b01 %2 .ee b"tes del %ic,ero " los almacena en un vector b+voi# rea#Fully) byte b01, int ini, int len %2 .ee len b"tes del %ic,ero " los almacena en un vector b+int rea#-nt)%2 .ee b"tes " devuelve un int +long rea#4ong)%2 .ee b"tes " devuelve un long +short rea#Short)%2 .ee - b"tes " devuelve un short +int rea#7nsigne#3yte)%2 .ee 1 b"te " devuelve un valor de E a -33+

    int rea#7nsigne#Short)%2 .ee - b"tes " devuelve un valor de E a 433/3+String rea#78F)%2 .ee una cadena codi%icada con el %ormato >T J +int s+ip3ytes)int n%2 Salta n b"tes del %ic,ero+

    Si no es posible la lectura devuelven 9: +

    =!8 Manejo de objeto #er i tente

    Conce#to obre #er i tencia de objeto

    $s la capacidad del programador para conseguir !ue sus datos sobrevivan a la ejecuci n delproceso !ue los creo de %orma !ue puedan ser reutili'ados en otro proceso+

    $s la capacidad de un lenguaje de programaci n para almacenar " recuperar el estado de losobjetos de %orma !ue sobrevivan a los procesos !ue los manipulan+

    9ersistencia: Nos re%erimos como datos persistentes a a!uellos !ue son utili'ados por unaaplicaci n " cu"a e8istencia debe mantenerse m*s all* del ciclo de vida de la aplicaci n+ $jemplo:crear una clase Cliente utili'arla " guardarla (persistirla) en memoria no vol*til+

    .OS9 RI2O-ERTO 7ERNNDE AL-UR;UER;UE 31

  • 7/23/2019 Manual de Prcticas POO (6)

    32/32

    MANUAL DE PRCTICAS POO

    2uc,as aplicaciones Bava necesitan tratar con datos persistentes+ $n la ma"or#a de los casos estosigni%ica encararse con una base de datos relacional posiblemente un base de datos obsoleta (oantigua) o un Sistema de 2anejo de ases de Datos (D 2S) est*ndar industrial+

    3