POO en Java IV: Herencia (Parte 1)

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 fguidi@ucv.cl 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 fguidi@ucv.cl 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 fguidi@ucv.cl 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 fguidi@ucv.cl 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado DIAGRAMAS DE CLASES RELACIONES ENTRE CLASES Una vez que tengamos todas nuestras clases, será necesario que estas se asocien, con el fin de mostrar la

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

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

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

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

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

DIAGRAMA DE CLASES EN UML

DIAGRAMA DE CLASES EN UML DIAGRAMA DE CLASES EN UML Mg. Juan José Flores Cueto jflores@usmp.edu.pe Ing. Carmen Bertolotti Zuñiga cbertolotti@usmp.edu.pe INTRODUCCIÓN UML (Unified Modeling Language) es un lenguaje que permite modelar,

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

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

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

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

Curso de Python Inicial

Curso de Python Inicial Logo IAA-CSIC Curso organizado por el Gabinete de Formación del CSIC Curso de Python Inicial Clases Contenidos 1. Paradigmas de la Programación 2. Programación Orientada a objetos 3. Clases 4. Objetos

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

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

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

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

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: 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

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa

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

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

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

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

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

19. Packages o paquetes

19. Packages o paquetes Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir

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

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

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

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

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

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

Introducción al UML. Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación

Introducción al UML. Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación Introducción al UML Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación Contenido Qué es UML?. Diagramas Utilizados en UML. Ejemplos. Qué es UML UML es un Lenguaje de Modelado

Más detalles

TEMA 7: DIAGRAMAS EN UML

TEMA 7: DIAGRAMAS EN UML TEMA 7: DIAGRAMAS EN UML Diagramas en UML El bloque de construcción básico de UML es un Diagrama Introducción a UML 2 1 Modelo de Casos de Uso (MCU) Todos los casos de uso constituyen el MCU que describe

Más detalles

Clases y Objetos. Informática II Ingeniería Electrónica

Clases y Objetos. Informática II Ingeniería Electrónica Clases y Objetos Informática II Ingeniería Electrónica Los Tipos de Datos Hasta ahora, en un programa podemos usar para representar variables a: Tipos fundamentales : enteros (int), caracteres (char),

Más detalles

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS Los lenguajes de consulta constituyen una funcionalidad importante de los SGBDOO. El usuario puede recuperar los datos especificando simplemente las condiciones

Más detalles

8. Sentencia return y métodos

8. Sentencia return y métodos 92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente

Más detalles

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5 Índice Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5 Crear diagrama de clases 5 Crear elementos 7 Editar elementos

Más detalles

M III ABSTRACCIÓN Y CLASIFICACIÓN

M III ABSTRACCIÓN Y CLASIFICACIÓN M III ABSTRACCIÓN Y CLASIFICACIÓN COMPLEJIDAD Y ABSTRACCIÓN La abstracción en el desarrollo del programario En todo el proceso de abstracción siempre hay una parte de la situación o del problema que se

Más detalles

Inteligencia Artificial II. Razonamiento con ontologías

Inteligencia Artificial II. Razonamiento con ontologías Inteligencia Artificial II Curso 2008 09 Trabajo de curso Razonamiento con ontologías Antonio Jiménez Mavillard Enunciado Una ontología es una representación formal de un determinado dominio o área de

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

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos 2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven

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

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 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

Curso de Doctorado: Tecnologías de Objetos

Curso de Doctorado: Tecnologías de Objetos Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez-Schofield http://webs.uvigo.es/jbgarcia/ Implementación

Más detalles

Capítulo 6. Introducción a la POO

Capítulo 6. Introducción a la POO Capítulo 6. Introducción a la POO 6. 1. Clases, Objetos y Métodos Definición La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a cómo expresaríamos las cosas en

Más detalles

Pilares de la Orientación a Objetos

Pilares de la Orientación a Objetos Pilares de la Orientación a Objetos Pilares de la Orientación a Objetos Abstracción Relaciones Herencia Encapsulamiento Abstracción La Abstracción es la propiedad que permite seleccionar las características

Más detalles

Diagrama de Clases. Diagrama de Clases

Diagrama de Clases. Diagrama de Clases Diagrama de Clases 1 Diagrama de Clases El propósito de este diagrama es el de representar los objetos fundamentales del sistema, es decir los que percibe el usuario y con los que espera tratar para completar

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

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++ 5.- Herencia Múltiple. Un hecho natural es que una persona tenga más de un pariente mayor, esta situación también se puede dar en la herencia de clases, naturalmente este tipo de herencia involucra un

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 8 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante ÍNDICE ÍNDICE... 1 1. INTRODUCCIÓN... 1 1.1 EJERCICIO 1: HERENCIA Y POLIMORFISMO I... 1 1.2 EJERCICIO

Más detalles

BASE DE DATOS RELACIONALES

BASE DE DATOS RELACIONALES BASE DE DATOS RELACIONALES Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya

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

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

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

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

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010 INTRODUCCION Un concepto fundamental que debemos tener en cuenta a la hora de modelar la realidad por medio de objetos es que los mismos no son entidades aisladas. Los objetos interactúan entre ellos constantemente

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

Relaciones entre clases: Diagramas de clases UML

Relaciones entre clases: Diagramas de clases UML Relaciones entre clases: Diagramas de clases UML Las relaciones existentes entre las distintas clases nos indican cómo se comunican los objetos de esas clases entre sí: Los mensajes navegan por las relaciones

Más detalles

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

Capítulos 2 y 5: Modelación con UML y Modelo Objeto Capítulos 2 y 5: Modelación con UML y Modelo Objeto Asignando Responsabilidades 2 Responsabilidades son obligaciones de un objeto, o comportamiento relacionado a su rol en el sistema Qué hace un objeto?

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

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

Tema 5. Diseño detallado.

Tema 5. Diseño detallado. Ingeniería del Software II 2011 Tema 5. Diseño detallado. Diseño del Software. Los requisitos y el análisis orientado a objetos se centran en aprender a hacer lo correcto: Entender los objetos de nuestro

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

CONTENIDOS. 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno

CONTENIDOS. 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno CONTENIDOS 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno 2. Redefinición de métodos. 3. Jerarquía de clases. 4. Ejecución de los pasos de mensajes con Herencia. 5. Problemas con

Más detalles

6.8 La Arquitectura del Sistema. [Proceso]

6.8 La Arquitectura del Sistema. [Proceso] 6.8 La Arquitectura del Sistema. [Proceso] En el Caso de Estudio se ha hecho énfasis en los objetos del Dominio del problema, ya que representan la esencia del sistema y definen su comportamiento. Sin

Más detalles

Constructores y Destructores

Constructores y Destructores Ya se ha apuntado que C++ no permite crear objetos sin dar un valor inicial apropiado a todas sus variables miembro. Esto se hace por medio de unas funciones llamadas constructores, que se llaman automáticamente

Más detalles

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario Empleo de módulos y Procedimientos Procedimientos definidos por el usuario Según lo que hemos visto hasta ahora, Visual Basic, almacena el código en módulos. Hay tres clases de módulos: formularios (.frm),

Más detalles

TEMA 8: DIAGRAMA DE CLASE EN UML

TEMA 8: DIAGRAMA DE CLASE EN UML TEMA 8: DIAGRAMA DE CLASE EN UML Diagramas en UML El bloque de construcción básico de UML es un Diagrama Introducción a UML 2 1 Diagrama de Clase Los diagramas de clases son los más utilizados en el modelado

Más detalles

Solución de No conformidades

Solución de No conformidades Solución de No conformidades Documento de Construcción Solución de No conformidades 1 Tabla de Contenido Diagrama Del Proceso... 2 Sub Proceso Acción Correctiva... 3 Ejecutar Plan De Acción... 4 Proceso

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

Ejercicios del tema 7: Clases y objetos

Ejercicios del tema 7: Clases y objetos Metodología y Tecnología de la Programación ESI-UCLM Ejercicios del tema 7: Clases y objetos 1. a) Diseñe e implemente en Java una clase para trabajar con triángulos isósceles. Para ello, defina las variables

Más detalles

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos SESION5: BASE DE DATOS PLANILLAS Ejercicio Nº : Realizar aumentos en una Tabla de Sueldos Veamos pues. En la hoja de calculo se tiene la Tabla de Sueldos de varios empleados (aquí ahora vemos solo empleados,

Más detalles

CURSO 2º GRUPO Junio 2011

CURSO 2º GRUPO Junio 2011 APELLIDOS NOMBRE Nº Mat. UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA UNIVERSITARIA DE INGENIERÍA TÉCNICA INDUSTRIAL Departamento El.A.I. ASIGNATURA INFORMÁTICA INDUSTRIAL Calificación CURSO 2º GRUPO Junio

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