POO en Java IV: Herencia (Parte 1)

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamaño: px
Comenzar la demostración a partir de la página:

Download "POO en Java IV: Herencia (Parte 1)"

Transcripción

1 Herencia POO en Java IV: Herencia (Parte 1) Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile Es la derivación de una clase a partir de otra existente. El objetivo es la reutilización del software desarrollado. Herencia Actualización: 22 de Agosto de Súperclases y subclases La clase de la cual se deriva otra clase se denomina clase base, súperclase o clase padre. Una clase derivada de una súperclase recibe también el nombre de subclase o clase hija. Vehículo Súperclase Clase base Clase padre Súperclases y subclases La subclases heredan propiedades de su súperclase. Una subclase, respecto de su súperclase: Agrega nuevas propiedades Modifica propiedades heredadas. Vehículo Patente Marca Avanza Camión Subclase Clase derivada Clase hija La herencia aplica en relaciones de naturaleza B es un tipo de A Camión Patente Marca Carga máxima Avanza Activa tolva 3 4

2 Herencia simple Una clase es subclase de una única súperclase. Herencia múltiple Una clase es subclase de más de una súperclase. Vehículos terrestres Vehículos acuáticos Vehículo Camión Vehículos anfibios Java no soporta la herencia múltiple. 5 6 Jerarquías de Herencia Ejemplo (1/2) La herencia organiza clases bases y derivadas en jerarquías de clases. + Universidad + set y get Universidad + Carrera pregrado + set y get Carrera magíster Persona Rut, nombre set y get nombre Profesor + Tesis + set y get Tesis + Especialidad + set y get Especialidad Profesor hora + Horas + set y get Horas 7 Determinar si en las siguientes situaciones existe una relación de herencia entre las clases (indicadas en negrita): Caso 1 Caso 2 Caso 3 Todo Electrodoméstico se enciende y apaga. El Horno microondas además abre y cierra su puerta. Electrodoméstico Horno Microondas Los Bienes raíces tienen un Rol de identificación. Una Casa tiene también un Jefe de hogar y un Negocio tiene una Patente comercial Bien Raíz Casa Negocio X Un Camión tiene Patente. Un Conductor tiene un camión conducido. 8

3 Ejemplo (2/2) Determinar si en las siguientes situaciones existe una relación de herencia entre las clases (indicadas en negrita): Caso 4 Caso 5 Caso 6 Implementación de jerarquías de herencia Para crear una subclase a partir de una superclase, en Java la subclase debe declararse: Los Archivos Multimediales pueden ser Imágenes o Música. Las imágenes pueden ser a Color o Blanco y Negro. Un Avión tiene Fuselaje, Alas y Motores. Una Gaviota vuela. Una Abeja vuela y además tiene aguijón. public class NombreSubclase extends NombreSuperclase Ejemplo: Multimedia Música Imagen Color B/N X X Persona public class extends Persona 9 10 Implementación de jerarquías de herencia: ejemplo Implementación de jerarquías de herencia Implementar las clases Persona y, de acuerdo con lo siguiente: public class extends Persona { Persona Atributos: - RUT - Nombre Atributos: - RUT - Nombre - Rol UCV Operaciones: -set y get RUT - set y get Nombre Operaciones: -set y get RUT - set y get Nombre - set y get Rol UCV NOTA: Supondremos, por el momento, todos los miembros públicos. public String rut; public String nombre; public Persona() { rut = " "; nombre = ""; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; Súperclase public String rolucv; public () { rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return rut + nombre + rolucv; Subclase 11 12

4 Miembros heredados (verdad parcial) Una subclase hereda de su súperclase (por el momento): Variables de instancia públicas Métodos públicos Todos los anteriores pueden ser utilizados en la subclase como si hubieran sido declarados en ella. POO en Java IV: Herencia (Parte 2) Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile Actualización: 22 de Agosto de Presentación Hemos visto: La definición de herencia (y la relación subyacente entre tipos ) El concepto de súperclase y subclase La definición de jerarquía de herencia La declaración de una subclase en Java La extensión de clases que poseen miembros públicos. Veremos: Un problema de diseño e implementación con herencia, utilizando miembros públicos. Se desarrollará una extensión del sistema desarrollado en el problema. Ejercicio Implemente las clases Vehículo, Autobús y Camión, dados los siguientes antecedentes: Todo Vehículo tiene patente y marca. Los Autobuses y los Camiones son Vehículos. Todo Autobús tiene cantidad de asientos. Todo Camión tiene carga en toneladas

5 Análisis Jerarquía de clases Implementación Vehículo: public class Vehiculo{ Vehículo Patente, marca Asientos Autobús Camión Carga public String patente; public String marca; public void setpatente(string p){ patente = p; public String setmarca(string m){ marca = m; public String getpatente(){ return patente; public String getmarca(){ return marca; Implementación Autobús Implementación Camión: public class Autobus extends Vehiculo{ public int asientos; public class Camion extends Vehiculo{ public int carga; public void setasientos(int a){ asientos = a; public int getasientos(){ return asientos; public void setcarga(int c){ carga = c; public int getcarga(){ return carga; 19 20

6 Uso de las clases desarrolladas Entonces una aplicación podría realizar lo siguiente: public class Ejemplo { public static void main( String arg[]){ Autobus bus1 = new Autobus(); bus1.setpatente( AX1313 ); bus1.setmarca( Mercedes ); bus1.setasientos( 40 ); Camion cam1 = new Camion(); cam1.setpatente( BX1515 ); cam1.setmarca( Iveco ); cam1.setcarga( 2000 ); Métodos heredados de Vehículo Métodos heredados de Vehículo Una extensión al problema Suponga que se desea agregar al sistema un Camión con compartimientos, el cual posee patente, marca, carga máxima y una cantidad de compartimientos. Este camión es capaz de calcular la capacidad de carga por compartimiento (equivalente a la carga total, dividida por la cantidad de compartimientos). Además provee un método que retorna un String de descripción, compuesto por Marca + Cantidad de compartimientos Qué se debe hacer? Análisis El Camión con compartimientos es una subclase de Camión. Implementación Camión con compartimientos: public class CamionCompartimientos extends Camion{ Asientos Autobús Compartimientos Vehículo Camión Patente, marca Camión con compartimientos Carga public int compartimientos=1; public void setcompartimientos(int c){ compartimientos = c; public int getcompartimientos(){ return compartimientos; public int getcargacompartimiento(){ return carga/compartimientos; public String getdescripción(){ return marca + compartimientos; carga: es heredado (desde Camión) marca: es heredado (desde Vehículo)

7 Uso de la nueva clase public class Ejemplo2 { public static void main( String arg[]){ CamionCompartimientos cam2 = new CamionCompartimientos(); cam2.setpatente( CX1818 ); cam2.setmarca( Ford ); cam2.setcarga( 2500 ); cam2.setcompartimientos( 5 ); Métodos heredados de Vehículo Método heredado de Camión System.out.println( cam2.getcargacompartimiento() ); System.out.println( cam2.getdescripción() ); POO en Java IV: Herencia (Parte 3) Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile Actualización: 22 de Agosto de Presentación Hemos visto: Los conceptos funamentales asociados a la herencia. La implementación de subclases en Java, en presencia de miembros públicos en la súperclase. Veremos: La implementación de subclases en Java, cuando la súperclase posee variables de instancia privadas. La relación entre constructores de súperclases y subclases. La relación de las clases con la clase Object. Repaso: extensión de una clase con miembros públicos public String rut; public String nombre; public Persona() { rut = " "; nombre = ""; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; public class extends Persona { public String rolucv; public () { rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return rut + nombre + rolucv; Súperclase Subclase 27 28

8 Miembros heredados (verdad parcial) Una subclase hereda de su súperclase (por el momento): Variables de instancia públicas Métodos públicos Todos los anteriores pueden ser utilizados en la subclase como si hubieran sido declarados en ella. Miembros no heredados Una subclase no hereda: Propiedades privadas Constructores Los miembros no heredados no pueden aparecer en el código de la subclase Miembros no heredados: variables de instancia privadas Miembros no heredados: variables de instancia privadas No funciona: private String rut; private String nombre; public Persona() { rut = " "; nombre = ""; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; public class extends Persona { private String rolucv; public () { rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return rut + nombre + rolucv; Las variables privadas no son heredadas, por lo que no pueden aparecer en el código de la subclase. Sin embargo se puede hacer uso indirecto de ellas en la subclase, a través de los métodos públicos de manipulación implementados en la respectiva súperclase. Error: no pueden ser accesadas directamente (No compila) 31 32

9 Miembros no heredados: variables de instancia privadas Ejemplo correcto: private String rut; private String nombre; public Persona() { rut = " "; nombre = ""; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; public class extends Persona { private String rolucv; public () { rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return getrut() + getnombre() + rolucv; Miembros no heredados: constructores Los constructores no son heredados, por lo que cada subclase debe tener su(s) propio(s) constructor(es). Sin embargo en los constructores se puede invocar al constructor de la superclase con la instrucción: super( lista parámetros ) La instrucción super debe ser la primera instrucción del constructor. Esto sí funciona Uso de super en constructores Ejemplo 1: Uso de super en constructores Ejemplo 2: public class extends Persona { public class extends Persona { private String rut; private String nombre; public Persona(String r, String n) { rut = r; nombre = n; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; private String rolucv; public () { super( , N/A ); rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return getrut() + getnombre() + rolucv; private String rut; private String nombre; public Persona(String r, String n) { rut = r; nombre = n; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; private String rolucv; public (String r, String n, String l) { super( r, n ); rolucv = l; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return getrut() + getnombre() + rolucv; 35 36

10 Herencia y constructores: la verdad parcial Herencia y constructores Todo subclase debe incluir una referencia super a algún constructor de la superclase. Si no se incluye la referencia super, Java incluye automáticamente una referencia al constructor sin parámetros de la superclase. Es decir incluye: super() Notar que se produce un error cuando no existe un constructor sin parámetros en la superclase y se omite la referencia super en la subclase por qué? Dos clases equivalentes: public class extends Persona { private String rolucv; public () { super(); rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return getrut() + getnombre() + rolucv; public class extends Persona { private String rolucv; public () { rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public String quiénsoy(){ return getrut() + getnombre() + rolucv; Herencia y constructores: Atención! Qué pasa en el siguiente caso? private String rut; private String nombre; public Persona(String r, String n) { rut = r; nombre = n; public void setrut(string r){ rut = r; No compila Java return incluye rut; automáticamente una public referencia void setnombre(string super(), pero a n){ nombre = n; un constructor inexistente en la súperclase. return nombre; public class extends Persona { private String rolucv; public () { rolucv = "; public void setrolucv(string r){ rolucv = r; public String getrolucv(){ return rolucv; public () { super(); rolucv = "; public String quiénsoy(){ return getrut() + getnombre() + rolucv; 39 Herencia y constructores: la verdad total En Java toda clase extiende otra clase. Las clases que no declaran extender a otras, extienden a la clase Object (del package java.lang). Object es la superclase (directa o indirecta) de todas las clases. Todas las clases son subclases de Object o de otra subclase. Por lo tanto: todos los constructores incluyen (explícitamente o no) una referencia al constructor de su superclase. 40

11 Herencia y constructores: la verdad total Object Vehículo Persona Bien Raíz POO en Java IV: Herencia (Parte 4) Camión Profesor Casa Negocio Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile pregrado magíster Profesor hora Actualización: 22 de Agosto de Presentación Hemos visto: Implementación de jerarquías de herencia con variables de instancia públicas y privadas. Invocación de constructores de súperclases mediante super. La clase Object como la súperclase de toda jerarquía de herencia en Java. Veremos: Un ejercicio de desarrollo de una jerarquía de herencia con variables de instancia privadas, y con referencias explícitas a constructor de la súperclase. La representación de clases y jerarquías de herencia mediante diagramas de clases de UML. Ejercicio: Implementar las siguientes clases Un videojuego tiene Personajes. Cada personaje tiene un nombre (String) y un nivel propio de energía (int). Además implementan el método alimentarse, que recibe por parámetro una cantidad de energía (int) con el que incrementa el nivel propio de energía. Los personajes pueden ser: Guerreros: tienen además un arma (String). Al momento de la instanciación reciben su nombre, arma y nivel propio de energía inicial. Los guerreros tienen un método combatir que recibe por parámetro la cantidad de energía a gastar en el ataque, la cual es descontada de su nivel propio de energía. El método combatir retorna el arma y la cantidad de energía del ataque concatenados. Magos: tienen además un poder (String). Al momento de la instanciación reciben su nombre y poder. Los magos son siempre creados con un nivel propio de energía igual a 100. Proveen un método encantar, que disminuye en 2 unidades el nivel propio de energía y que retorna el poder del mago

12 Análisis y diseño Análisis y diseño La clase Personaje: Personaje Visibilidad privada (-)! Visibilidad pública (+)! - nombre: String - energía: int Personaje +getnombre(): String +getenergia(): int +alimentarse(energianueva:int) +consumirenergia(gastoenergia:int) +Personaje(nombre:String, energia:int) Nombre de la clase! Variables de instancia! Métodos y constructores! -arma: String Guerrero - nombre: String - energía: int +getnombre(): String +getenergia(): int +alimentarse(energianueva:int) +consumirenergia(gastoenergia:int) +Personaje(nombre:String, energia:int) -poder: String Mago Los constructores van subrayados! +combatir(energ:int):string +Guerrero(nombre:String, energía:int, arma:string) +encantar():string +Mago(nombre:String, poder:string) Implementación Clase Personaje: public class Personaje{ private String nombre; private int energia; public Personaje(String nombre, int energia){ this.nombre = nombre; this.energia = energia; return nombre; public int getenergia(){ return energia; - nombre: String - energía: int public void alimentarse(int energianueva){ energia = energia + energianueva; Personaje +getnombre(): String +getenergia(): int +alimentarse(energianueva:int) +consumirenergia(gastoenergia:int) +Personaje(nombre:String, energia:int) public void consumirenergia(int gastoenerg){ energia = energia - gastoenerg; 47 Implementación Clase Guerrero: public class Guerrero extends Personaje{ private String arma; -arma: String Personaje Guerrero +combatir(energ:int):string +Guerrero(nombre:String, energía:int, arma:string) public Guerrero(String nombre, int energia, String arma){ super(nombre, energia); this.arma = arma; public String combatir(int energ){ actualizaenergia( -1*energ ); return arma + energ; 48

13 Implementación Clase Mago: Personaje Mago Uso de las clases Ejemplo: public class Mago extends Personaje{ private String poder; public Mago(String nombre, String poder){ super(nombre, 100); this.poder = poder; public String encantar(){ actualizaenergia( -2 ); return poder; -poder: String +encantar(energ:int):string +Mago(nombre:String, poder:string) Guerrero g1 = new Guerrero( Alfa, 50, Burbujitas de jabón ); g1.combatir( 2 ); System.out.println( El nivel de energía de + g1.getnombre() + es + g1.getenergia() ); Mago m1 = new Mago( Harry, Quemar ); m1.encantar(); System.out.println( El nivel de energía de + m1.getnombre() + es + m1.getenergia() ); Presentación POO en Java IV: Herencia (Parte 5) Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile Hemos visto: Implementación de jerarquías de herencia con variables de instancia públicas y privadas e invocación de constructores de súperclases mediante super. La clase Object como la súperclase de toda jerarquía de herencia en Java. La notación del Diagrama de Clases de UML para clases y relaciones de herencia. Veremos: Tratamiento de variables que referencian subtipos. Sobreescritura de métodos. Uso del operador instanceof para conocer el tipo de un objeto. Casting en jerarquías de herencia. Clases con miembros protegidos (protected). Actualización: 22 de Agosto de

14 Referencias, tipos y subtipos Referencias, tipos y subtipos Persona Tesista Una variable de referencia puede referenciar objetos del mismo tipo de la variable (esto ya lo sabíamos). Ejemplo: Persona p = new Persona(); Una variable de referencia puede referenciar objetos de cualquier subtipo de la variable. Ejemplos: Persona p = new (); Persona p = new Tesista(); Dado que toda clase es subclase directa o indirecta de la clase Object, una variable de este tipo puede referenciar objetos de cualquier tipo. Ejemplos: Object o = new Persona(); Object o = new Tesista(); Object o = new Lavadora(); En consecuencia, un arreglo de tipo Object puede almacenar cualquier tipo de objeto en sus posiciones: Object[] arr = new Object[10]; arr[1] = new Persona(); arr[2] = new Tesista(); arr[3] = new Lavadora(); Referencias, tipos y subtipos Reconocimiento de clases: operador instanceof Persona Tesista Una variable de referencia de un determinado tipo NO puede referenciar objetos de un súpertipo. Por lo anterior, las siguientes asignaciones NO son válidas: a = new Persona(); Tesista t = new (); Tesista t = new Persona(); El operador instanceof permite reconocer la clase a la que pertenece un objeto referenciado desde una variable determinada. Formato: NombreVar instanceof NombreClase Ejemplo: if( pers instanceof Persona ) System.out.println( La variable pers referencia a una Persona ); else System.out.println( La variable pers no referencia a una Persona ); 55 56

15 Operador instanceof y herencia Operador instanceof: ejemplo Todo objeto es instancia de la clase a la que pertenece, como también instancia de su superclase. Suponer: Persona Persona p1 =null: Profesor p2 = new Profesor(); p3 = new (); if( p1 instanceof Persona ) --> false! Electrodoméstico Lavadora Un objeto de la clase lavadora es también un electrodoméstico Profesor if( p2 instanceof Profesor ) --> true! if( p2 instanceof Persona ) --> true! if( p2 instanceof ) --> false! if( p3 instanceof ) --> true! if( p3 instanceof Persona ) --> true! if( p3 instanceof Profesor ) --> false! Operador instanceof: ejemplo Persona personas = new Persona[100]; // Supongamos que aquí se ingresan // al arreglo Personas, s // y Tesistas. Persona Tesista //Aquí se muestra la cantidad de tesistas cantidadtesistas = 0; for(int i=0; i< personas.length; i++) if( personas[i] instanceof Tesista ) cantidadtesistas++; System.out.println( Hay + cantidadtesistas + tesistas ); Sobreescritura de métodos Un método declarado e implementado en una súperclase puede ser reimplementado en una subclase. Esto se denomina sobreescritura de métodos. Conceptualmente significa que la subclase realiza la misma operación de la súper clase, pero de un modo distinto. Esto es un caso de polimorfismo. private String rut; private String nombre; return rut; return nombre; public String identificarse(){ return rut + nombre; //otros miembros de la clase public class extends Persona { private String carrera; public String identificarse(){ return getrut() + getnombre() + carrera; //otros miembros de la clase 59 60

16 Sobreescritura de métodos Consideremos estas clases en los siguientes ejemplos: private String rut, nombre; public Persona(String r, String n){ rut = r; nombre = n; return rut; return nombre; public String identificarse(){ return rut + nombre; public class extends Persona { private String carrera; public (String r, String n, String c){ super(r,n); carrera = c; public String identificarse(){ return getrut() + getnombre() + carrera; Qué ocurre en las siguientes situaciones? Persona a = new Persona( 100, Matías ); System.out.println( a.identificarse() ); a 100 Matías getrut() getnombre() identificarse() b = new ( 100, Matías, Ind ); System.out.println( b.identificarse() ); b 100 Matías Ind getrut() getnombre() identificarse() 100Matías public String identificarse(){ return rut + nombre; 100MatíasInd public String identificarse(){ return getrut() + getnombre() + carrera; Qué ocurre en la siguiente situación? Sobreescritura de métodos Persona a = new ( 100, Matías, Ind ); System.out.println( a.identificarse() ); a 100 Matías Ind getrut() getnombre() identificarse() public String identificarse(){ 100MatíasInd return getrut() + getnombre() + carrera; private String rut, nombre; public Persona(String r, String n){ rut = r; nombre = n; return rut; return nombre; public String identificarse(){ return rut + nombre; public class extends Persona { private String carrera; public (String r, String n, String c){ super(r,n); carrera = c; public String identificarse(){ return getrut() + getnombre() + + carrera; Java resuelve en tiempo de ejecución la asociación entre la variable de referencia y el método que debe invocar, en función del objeto que se encuentre referenciado en ella. Persona a = new ( 100, Matías, Ind ); System.out.println( a.identificarse() ); 100MatíasInd 63 64

17 Sobreescritura de métodos Herencia y acceso a miembros de una clase Persona a = new ( 100, Matías, Ind ); System.out.println( a.identificarse() ); El compilador Java es responsable de verificar que el método pertenezca al tipo de dato declarado por la variable. El intérprete Java es responsable de identificar y ejecutar la implementación del método correspondiente al tipo de objeto referenciado en el momento por la variable. private String rut; private String nombre; public setdatos(string r, String n) { rut = r; nombre = n; return rut; return nombre; Esto debe funcionar: Persona a = new Persona(); a.setdatos( , Luis ); b = new (); b.setdatos( , Pamela ); b.matricularse( Industrial ); public class extends Persona { private String carrera; public String matricularse( String c){ carrera = c; Herencia y acceso a miembros de una clase Casting private String rut; private String nombre; public setdatos(string r, String n) { rut = r; nombre = n; return rut; return nombre; public class extends Persona { private String carrera; public String matricularse( String c){ carrera = c; private String rut; private String nombre; public setdatos(string r, String n) { rut = r; nombre = n; return rut; return nombre; public class extends Persona { private String carrera; public String matricularse( String c){ carrera = c; Esto funciona? Persona c = new (); c.setdatos( , Luis ); c.matricularse( Comercial ); Error: el compilador determina que este método no pertenece a Persona. Sin embargo la variable contiene referencia a un, que es un tipo de Persona (y que posee este método). Es necesario introducir un casting para indicar al compilador que el objeto referenciado en la variable es efectivamente una instancia de : Persona c = new (); c.setdatos( , Luis ); ( ()c ).matricularse( Industrial ); 67 68

18 Casting El casting no convierte objetos, simplemente explicita el tipo de objeto referenciado en una variable. Profesor Persona Persona a = new Profesor(); Profesor b = a; // ERROR Persona a = new Profesor(); Profesor b = (Profesor) a; // OK c = () a; // ERROR Persona a = new Persona(); Profesor b = (Profesor) a; // ERROR c = () a; // ERROR Miembros protegidos de una clase El modificador de visibilidad protected, permite declarar visibilidad protegida en variables de instancia y métodos. Los miembros de una clase con visibilidad protegida son sólo accesibles desde la misma clase o desde cualquier subclase de ella (no son accesibles desde otras clases). a = new (); Profesor b = (Profesor) a; // ERROR Miembros protegidos de una clase Miembros protegidos de una clase Por lo tanto, una subclase hereda de su superclase: Variables de instancia protegidas y públicas Métodos protegidos y públicos Ejemplo: protected String rut; protected String nombre; public Persona(String r, String n) { rut = r; nombre = n; public void setrut(string r){ rut = r; return rut; public void setnombre(string n){ nombre = n; return nombre; public class extends Persona { private String rolucv; public () { super( , N/A ); rolucv = "; public String quiénsoy(){ return rut + nombre + rolucv; 71 72

19 Identificación de superclases Contexto: se está desarrollando una aplicación que trabaja con CD s, DVD s y discos de vinilo. POO en Java IV: Herencia (Parte 6) Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile Problema: se establece que a pesar de tener sus propios atributos, todos ellos disponen de código, sello discográfico y autor. Se desea evitar duplicidad de código. Decisión: se determina la conveniencia de crear la clase ProductoMusical, que agrupa las propiedades comunes de los tres tipos de productos. CD ProductoMusical código sello autor DVD Vinilo Actualización: 22 de Agosto de 2011 La superclase aparece por factorización de propiedades comunes 74 Clases abstractas En el ejemplo anterior la clase ProductoMusical es abstracta (no representa entidades presentes en el dominio). Esta condición se explicita en el diseño, declarando la clase como abstracta. ProductoMusical {abstract código sello autor public abstract class ProductoMusical { private int código; private String sello;... Clases abstractas Otro ejemplo: un software trabaja con distintas figuras geométricas, todas ellas polígonos, con algunas propiedades en común (ej. cantidad de lados). Polígono CD DVD Vinilo Una clase abstracta no puede ser instanciada, ha sido diseñada sólo para ser extendida

20 Clases abstractas Métodos abstractos Polígono public abstract class Poligono { protected int lados; public void setlados(int l){ lados = l;... Supongamos que en el ejemplo anterior todos los polígonos deben proveer un método de cálculo de área. Conflicto de fuerzas en diseño: Todos los polígonos deben proveer el método, por lo tanto debiese aparecer a nivel de la superclase Polígono. La operación del método depende de cada polígono concreto (ej. área de cuagrado: lado 2, área de triángulo base * altura /2, etc.), por lo tanto no puede establecerse una lógica común a nivel de superclase. Solución: declarar método como abstracto en la superclase. Polígono public class Cuadrado extends Poligono { private int longitud; public void setlongitud(double l) { longitud = l; Métodos abstractos Métodos abstractos Un método abstracto es un método que se declara en una superclase, pero sin proveer implementación. La implementación de un método abstracto se difiere para sus subclases. Una clase que declara uno o más métodos abstractos es necesariamente abstracta (y debe ser declarada como tal). Si una subclase no provee implementación para un método abstracto que hereda de su superclase, es necesariamente abstracta (y debe ser declarada como tal). Polígono public abstract class Poligono { protected int lados; public int setlados(int l){ lados = l; public abstract double getarea();... public class Cuadrado extends Poligono { private double longitud; public void setlongitud(double l) { longitud = l; public double getarea(){ return longitud*longitud;

21 Consecuencias del uso de métodos abstractos Si una superclase declara algún método abstracto, entonces: Las subclases concretas deben implementarlo. Las variables de referencia declaradas del tipo de la superclase pueden recibir invocaciones al método abstracto, sin necesidad de casting. Ejemplo: Polígono figura = new Triángulo(); double sup = figura.getarea(); getarea() fue declarado como método abstracto en Polígono. 81

Java: Clases Abstractas e Interfaces

Java: Clases Abstractas e Interfaces Clases abstractas e interfaces Java: Clases Abstractas e Interfaces Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl A nivel conceptual,

Más detalles

Universidad de Cantabria corcuerp@unican.es

Universidad de Cantabria corcuerp@unican.es Herencia Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender los conceptos de herencia Comprender la forma de derivar una

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia

Más detalles

Introducción a la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Definición de clases: Herencia, polimorfismo, ligadura dinámica Tema 7 Definición de clases: Herencia, polimorfismo, ligadura dinámica Con alguna frecuencia es necesario definir clases de objetos entre las cuales hay elementos comunes. En una aplicación en la cual

Más detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida } REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Encapsulamiento: Control de Acceso Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes

Más detalles

POLIMORFISMO "una interfaz, múltiples métodos".

POLIMORFISMO una interfaz, múltiples métodos. "una interfaz, múltiples métodos". 20/02/2007 Polimorfismo 2 Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple)

Más detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense

Más detalles

Diagramas de Clase en UML 1.1

Diagramas de Clase en UML 1.1 Diagramas de Clase en UML. Francisco José García Peñalvo Licenciado en Informática. Profesor del Área de Lenguajes y Sistemas Informáticos de la Universidad de Burgos. fgarcia@.ubu.es Carlos Pardo Aguilar

Más detalles

HERENCIA. Corina Flores Villarroel. corina@memi.umss.edu.bo UMSS - Programa MEMI

HERENCIA. Corina Flores Villarroel. corina@memi.umss.edu.bo UMSS - Programa MEMI HERENCIA Corina Flores Villarroel corina@memi.umss.edu.bo UMSS - Conceptos Entre los conceptos a saber: Herencia Subtipos Sustitución Variables polimórficas Introducción La programación OO tiene características

Más detalles

Ejercicios de evaluación de fundamentos de programación en Java

Ejercicios de evaluación de fundamentos de programación en Java Ejercicios de evaluación de fundamentos de programación en Java Jorge Martínez Ladrón de Guevara Editorial EME ISBN 978-84-96285-40-8 Contenido 1. Introducción a Java... 1 Test de evaluación...1 Ejercicios...4

Más detalles

Programación Orientada a Objetos en C#.NET CAPÍTULO 5 H E R E N C I A. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.

Programación Orientada a Objetos en C#.NET CAPÍTULO 5 H E R E N C I A. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu. CAPÍTULO 5 H E R E N C I A 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Qué ventajas ofrece la herencia a un programador? Cuál es la diferencia entre herencia simple y herencia múltiple?

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

Más detalles

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B) APRENDERAPROGRAMAR.COM INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha revisión:

Más detalles

Programación en Java. Programación en OO

Programación en Java. Programación en OO Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,

Más detalles

Prácticas de Programación

Prácticas de Programación Prácticas de Programación Tema 1. Introducción al análisis y diseño de programas Tema 2. Clases y objetos Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad

Más detalles

Fundamentos de Programación Orientada a Objetos ( POO ) - Parte 3 Desarrollo de Software

Fundamentos de Programación Orientada a Objetos ( POO ) - Parte 3 Desarrollo de Software República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Trimestre I Fundamentos de Programación Orientada a Objetos ( POO ) - Parte 3 1 Pilares fundamentales de la programación

Más detalles

INDICE. 2.2. Uso de la composición (I). Preservación de la ocultación... 11. 3.3. Utilización de miembros heredados (I). Atributos...

INDICE. 2.2. Uso de la composición (I). Preservación de la ocultación... 11. 3.3. Utilización de miembros heredados (I). Atributos... TEMA 9 INDICE 1. Relaciones entre clases.... 4 1.1. Composición... 5 1.2. Herencia... 6 1.3. Herencia o composición?... 7 2 Composición... 9 2.1. Sintaxis de la composición.... 9 Ejercicio resuelto...

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar

Más detalles

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases PHP y MySQL Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases Herencia de Objetos La herencia permite crear muchas clases que son similares entre si, sin tener

Más detalles

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos: Tutorial de UML Introducción: El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y

Más detalles

Programación Concurrente y de Tiempo Real Guión de Prácticas 3: Reutilización de Clases: Modelo de Herencia en Java

Programación Concurrente y de Tiempo Real Guión de Prácticas 3: Reutilización de Clases: Modelo de Herencia en Java Programación Concurrente y de Tiempo Real Guión de Prácticas 3: Reutilización de Clases: Modelo de Herencia en Java Natalia Partera Jaime Alumna colaboradora de la asignatura Índice 1. Herencia en la Programación

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase Java: Clases y Objetos Clases La unidad fundamental de programación en Java es la clase Un programa Java está formado por un conjunto de clases Una clase es una plantilla que describe un conjunto de objetos

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

9. Objetos y clases. 9.1. Clases

9. Objetos y clases. 9.1. Clases Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java

Más detalles

Estructura de las Aplicaciones Orientadas a Objetos Herencia de clases

Estructura de las Aplicaciones Orientadas a Objetos Herencia de clases Estructura de las Aplicaciones Orientadas a Objetos Herencia de clases Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS GUIA PROGRAMACIÓN ORIENTADA A OBJETOS 1. Por qué la P.O.O? R= A medida que se van desarrollando los lenguajes, se va desarrollando también la posibilidad de resolver problemas más complejos. En la evolución

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas: OBJETIVO: El estudiante elaborará diagramas de clases en UML que apliquen relaciones de herencia y polimorfismo MATERIAL Y EQUIPO NECESARIO: Se recomienda la utilización de software para elaborar diagramas

Más detalles

1. Qué tipos de relación hay entre las siguientes clases?

1. Qué tipos de relación hay entre las siguientes clases? Ejercicios Tema 8: Herencia 1. Qué tipos de relación hay entre las siguientes clases? Personal de la Universidad PAS Profesor 1 n Estudiante a) herencia y asociación b) herencia y dependencia c) dependencia

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

Herencia e Interfaces

Herencia e Interfaces Herencia Introducción En C# cualquier dato es un objeto porque todos los tipos derivan implícitamente de este tipo, y heredan los métodos y campos definidos en dicha clase. Cada nuevo tipo tiene todo lo

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

Notación UML para modelado Orientado a Objetos

Notación UML para modelado Orientado a Objetos 1 Notación UML para modelado Orientado a Objetos 2 Notación UML para modelado Orientado a Objetos Índice 1.1. Qué es UML?.. 3 1.2. Por qué interesa UML en la asignatura de Programación Orientada a Objetos?3

Más detalles

Tema: Patrones de Diseño.

Tema: Patrones de Diseño. Programación II. Guía 13 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Patrones de Diseño. Objetivos Específicos Implementar la aplicación de patrones de diseño como herramientas

Más detalles

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos Tema 3: Genericidad en Java Tema 3: Genericidad en Java Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Definición y Ventajas de la

Más detalles

Orientación a Objetos en Java

Orientación a Objetos en Java Orientación a Objetos en Java I. Programación Basada en objetos II. Programación orientada a objetos M. Carmen Fernández Panadero Raquel M. Crespo García Contenidos Polimorfismo

Más detalles

CONCEPTOS FUNDAMENTALES DE LA ORIENTACION A OBJETOS

CONCEPTOS FUNDAMENTALES DE LA ORIENTACION A OBJETOS CAPITULO 3 CONCEPTOS FUNDAMENTALES DE LA ORIENTACION A OBJETOS 3.1. QUE ES LA PROGRAMACIÓN ORIENTADA A OBJETOS? La POO no es un lenguaje de programación. La POO es una nueva manera de "atacar" los problemas

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

Patrones para persistencia (I) Ingeniería del Software II

Patrones para persistencia (I) Ingeniería del Software II Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura

Más detalles

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31

Más detalles

COMPETENCIA DE VIDA ARTIFICIAL Diseño Completo

COMPETENCIA DE VIDA ARTIFICIAL Diseño Completo COMPETENCIA DE VIDA ARTIFICIAL INTRODUCCIÓN Teniendo en cuenta que el desarrollo del código es en el lenguaje Java y en base a un Diseño Orientado a Objetos, se detallan a continuación los lineamientos

Más detalles

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla

Más detalles

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario

Más detalles

Half the battle is knowing what problem to solve. La Programación Orientada a Objetos: Introducción. De Problemas a Soluciones. Los Requerimientos

Half the battle is knowing what problem to solve. La Programación Orientada a Objetos: Introducción. De Problemas a Soluciones. Los Requerimientos De Problemas a Soluciones La Programación Orientada a Objetos: Introducción Half the battle is knowing what problem to solve Data Structures and Algorithms (AA Aho, JE Hopcroft & JD Ullman) Prof Franco

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Diagramas de clases de UML

Diagramas de clases de UML Qué es UML? UML ( Unified Modeling Language ) es un lenguaje visual para crear modelos de sistemas. Diagramas de clases de UML Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad

Más detalles

Tema: Herencia Simple y Múltiple en C++.

Tema: Herencia Simple y Múltiple en C++. Programación II. Guía 9 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Herencia Simple y Múltiple en C++. Objetivos Específicos Crear clases a través de la herencia de clases

Más detalles

Arquitectura y Lenguaje Java

Arquitectura y Lenguaje Java Arquitectura y Lenguaje Java 1 Introducción El lenguaje de programación Java así como su arquitectura se diseñaron para resolver problemas que se presentan en la programación moderna. Se inició como parte

Más detalles

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica Duración: 3 semanas aprox. Índice General: 1. Clases y objetos en Java: el modelo TIENE UN(A) 2. El principio POO

Más detalles

15. Parámetros o argumentos

15. Parámetros o argumentos Programación orientada a objetos con Java 161 15. Parámetros o argumentos Objetivos: a) Profundizar en el concepto de parámetro de una clase e indicar su mecanismo de funcionamiento. b) Interpretar el

Más detalles

El lenguaje de programación Java

El lenguaje de programación Java Departament d Arquitectura de Computadors El lenguaje de programación Java Java (I) Orientado a objetos Ejecutado por una maquina virtual Independiente de la plataforma Multithreaded Orientado a la red

Más detalles

Práctica 4: Herencia. Objetivos:

Práctica 4: Herencia. Objetivos: Práctica 4: Herencia Objetivos: Como se implementa la herencia en Java (superclase - clase descendiente). Utilizar super. Redefinición de métodos Clase Object Clase System Clases abstractas 1. Herencia.

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

Programación Orientada a Objetos en JAVA

Programación Orientada a Objetos en JAVA Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36 Orientación a Objetos OO es un paradigma de modelación y programación

Más detalles

11. Algunas clases estándar de Java (II)

11. Algunas clases estándar de Java (II) 122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación

Más detalles

Tema: Clases y Objetos en C++.

Tema: Clases y Objetos en C++. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C++. Objetivos Específicos Aplicar clases, objetos, propiedades, métodos y mensajes. Poner en práctica

Más detalles

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML Carlos Fontela cfontela@fi.uba.ar Temario Excepciones en Java Colecciones e iteradores En Java 1.4 y.net 1.1 Genericidad Desde Java

Más detalles

Multitarea en Java. Rafa Caballero - UCM

Multitarea en Java. Rafa Caballero - UCM Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single

Más detalles

Clases abstractas e interfaces

Clases abstractas e interfaces Clases abstractas e interfaces Clases abstractas Una clase abstracta es una clase que no se puede instanciar se usa únicamente para definir subclases Cuándo es una clase abstracta? En cuanto uno de sus

Más detalles

Tecnología de Programación

Tecnología de Programación Tecnología de Programación Clase 4 Diego C. Martínez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur PHP Clientes y servidores... MiPagina ...

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

Tema: Sobrecarga de Operadores.

Tema: Sobrecarga de Operadores. Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen

Más detalles

Introducción al lenguaje JAVA

Introducción al lenguaje JAVA Universidad Autónoma de Tlaxcala Introducción al lenguaje JAVA M.C.. José Juan Hernández ndez Mora Segunda Sesión 1. Arreglos 2. Matrices 3. Clases en Java 4. Clases de Usuario en Java 5. Objetos definidos

Más detalles

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de 2005. Certamen Final

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de 2005. Certamen Final Certamen Final 1. Se tiene una aplicación Java que muestra dos botones. Cuando presionamos el botón de la izquierda, incrementa el número mostrado en el botón de la derecha. Cuando presionamos el botón

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase? PRTIIPNT: MPRS: H: xamen de iagnóstico Programador Java Instrucciones: Lea cada pregunta cuidadosamente y marque la(s) respuesta(s) que sean correctas. 1) ada la siguiente clase: 1. class rrayopy3{ 2.

Más detalles

RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas.

RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas. 1. PREGUNTA: Una clase puede manejar objetos? RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas. 2. PREGUNTA:

Más detalles

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta. Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA raul@laeff.inta.es Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun

Más detalles

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu. CAPÍTULO 8 E V E N T O S 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Quéesunevento? Paraquésirve? Qué temas se deben dominar para implementar aplicaciones con eventos? Qué se requiere

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones (pastrana@lcc.uma.es) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles

Objetos y Clases en Java. ELO 329: Diseño y Programación Orientados a Objetos

Objetos y Clases en Java. ELO 329: Diseño y Programación Orientados a Objetos Objetos y Clases en Java ELO 329: Diseño y Programación Orientados a Objetos 1 Elementos de Análisis y Diseño orientado a objetos Notación y relaciones entre clases: Las clases son abstracciones para los

Más detalles

Introducción. Herencia y Polimorfismo. Ejemplos (I) Ejemplos (II) Control de Acceso. Herencia

Introducción. Herencia y Polimorfismo. Ejemplos (I) Ejemplos (II) Control de Acceso. Herencia Introducción Herencia y Polimorfismo Se pueden definir jerarquías de clases, con clases generales que definen el comportamiento común a unos objetos y clases específicas que sólo añaden o redefinen el

Más detalles

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08 Tema 2 Técnicas básicas de POO Técnicas de Programación - Curso 2007/08 Contenido Principios de POO Encapsulación Herencia Polimorfismo Ejemplos Técnicas básicas Delegación Uso de interfaces Interfaces

Más detalles

Metodología y Tecnología de la Programación

Metodología y Tecnología de la Programación Metodología y Tecnología de la Programación Curso 2008/09 Tema 7 Tipos de Datos Abstractos Temario 7.1 Concepto de Tipo de Datos Abstracto 7.2 Clasificación de Tipos de Datos Abstractos 7.3 Especificación

Más detalles

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO Contenido Introducción... 1 Concepto de la Herencia... 2 Relación de

Más detalles

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases Herencia 3.- Herencia La herencia nos permite definir datos y métodos que son generales (comunes a distintas clases) por separado de las que son particulares a cada clase. Esto se logra definiendo lo que

Más detalles

Tema 3: Herencia en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle

Tema 3: Herencia en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle Tema 3: Herencia en Java Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle Índice Introducción Herencia y creación Herencia y Ocultamiento de la Información Redefinición de características

Más detalles

Capítulo 10. Subtipos y Herencia.

Capítulo 10. Subtipos y Herencia. Capítulo 10. Subtipos y Herencia. Lenguajes de Programación Carlos Ureña Almagro Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad de Granada Curso 2009-10 Autor:

Más detalles

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4 Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4 by S. Muñoz-Gutiérrez stalinmunoz@yahoo.com, informes@grupolinda.org Grupo LINDA Facultad de Ingeniería UNAM México Octubre-Diciembre 2009 Identificando

Más detalles

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES 1 Objetivo del caso JUnit 2 Poder utilizar JUnit para realizar

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

1 HILOS (THREADS) EN JAVA

1 HILOS (THREADS) EN JAVA 1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los

Más detalles

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. Práctica 3 mtp metodoloxía e tecnoloxía da programación Objetivos: Duración: Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. 1 semana 1.- Identificadores Los identificadores

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles