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

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

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

Transcripción

1 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 intervengan taxis, turismos particulares, autobuses, aviones, etc, seguramente encontraremos que todos ellos comparten la capacidad de transportar pasajeros, de conocer su posición, etc. Ahora bien, quizás no sea adecuado agrupar a todos ellos en una única categoría, viéndolos como vehículos. Al margen de los aspectos comunes que puedan existir entre todos ellos, algunos aspectos de interés en un taxi podrían no tener sentido referidos a un vehículo particular; por ejemplo, la tarifa a aplicar en un recorrido urbano. Algo parecido podríamos decir si imaginamos una aplicación en la cual intervengan profesores universitarios, estudiantes universitarios de grado, estudiantes universitarios de master, personal administrativo, etc. En tanto que personas, compartirán muchas características, pero también habrá funciones que sólo sean razonables para algunos de ellos. Para evitar la repetición de fragmentos de código en diferentes clases, en P.O.O. se permite establecer una relación entre clases de objetos y organizarlas jerárquicamente, como se muestra en la figura siguiente: 107

2 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica108 Esta relación entre clases se define expĺıcitamente al escribir el texto de cada una de ellas. Cuando entre dos clases A y B, se da la relación A hereda-de B, todas las variables y métodos declarados en la segunda se consideran automáticamente parte también de la primera. De esta manera, los métodos y declaraciones de variables relacionados con las características comunes a taxis, turismos de uso particular, y autobuses, aparecerán solo en la clase Vehiculo. Análogamente, el código relacionado con las características comunes a taxis y turismos de uso particular, pero que no sean compartidas por todos los vehículos, estará en la clase Turismo. A continuación, veremos los aspectos más importantes de la relación hereda-de en java Definición de clases y herencia Programa 8 Definición de la clase Coche 1 package ehu. s t u d e n t ; 3 p u b l i c c l a s s Coche { 5 p r i v a t e S t r i n g p r o p i e t a r i o ; 6 p r i v a t e S t r i n g m a t r i c u l a ; 7 p r i v a t e double c u e n t a K i l o m e t r o s ; 8 9 p u b l i c void v e n d e r ( S t r i n g e l P r o p i e t a r i o ) { 10 p r o p i e t a r i o = e l P r o p i e t a r i o ; 11 } 1 13 p u b l i c void m a t r i c u l a r ( S t r i n g l a M a t r i c u l a ) { 1 m a t r i c u l a = l a M a t r i c u l a ; 15 } p u b l i c void r e c o r r e r ( double kms ){ 18 c u e n t a K i l o m e t r o s = c u e n t a K i l o m e t r o s + kms ; 19 } 0 1 p u b l i c void p r i n t I n f o ( ) { S t r i n g tmp = 3 "Propietario: " + p r o p i e t a r i o + "; " + "Matricula: " + m a t r i c u l a + "; " + 5 "Kms recorridos: " + c u e n t a K i l o m e t r o s + ";" ; 6 System. out. p r i n t l n ( tmp ) ; 7 } 8 } Los objetos de la clase Coche, definida en el programa 8, representan coches con tienen funciones para cambiar el nombre del propietario, o el código de matrícula. Además, un coche puede recorrer la cantidad de kilómetros que se le indique, y proporcionar información diversa, como la distancia total recorrida desde que fué creado. Para definir un nuevo tipo de coches, con algunas prestaciones adicionales, podríamos copiar en una nueva clase todas las variables y métodos declarados en el programa 8, pero

3 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica109 esa forma de proceder es muy pobre. Otra posibilidad, más interesante, es definir la nueva clase de manera que sea una subclase de la anterior; es decir, estableciendo la relación hereda-de con la clase Coche. En java esto se hace como se indica en el programa siguiente: 3 import ehu. s t u d e n t. Coche ; 5 / 6 Una c l a s e d e f i n i d a mediante h e r e n c i a 7 8 Un CocheConGPS es un Coche que conoce 9 l a s coordenadas de su p o s i c i o n : l a t i t u d y l o n g i t u d 10 / 11 p u b l i c c l a s s CocheConGPS extends Coche 1 { 13 p r i v a t e double l a t i t u d = 0 ; 1 p r i v a t e double l o n g i t u d = 0 ; p u b l i c void cambiarcoordenadas ( double d e l t a L a t i t u d, 17 double d e l t a L o n g i t u d ) 18 { 19 l a t i t u d = l a t i t u d+d e l t a L a t i t u d ; 0 l o n g i t u d = l o n g i t u d+d e l t a L o n g i t u d ; 1 } 3 p u b l i c double l a t i t u d ( ) { return l a t i t u d ; 5 } 6 7 p u b l i c double l o n g i t u d ( ) { 8 return l o n g i t u d ; 9 } p u b l i c void p r i n t I n f o P o s i c i o n ( ) { 3 S t r i n g tmp = "Latitud: " + l a t i t u d + "; Longitud: " + l o n g i t u d ; 33 System. out. p r i n t l n ( tmp ) ; 3 } 35 } El texto: CocheConGPS extends Coche que aparece en la ĺınea 9 es lo que establece la relación hereda-de entre las clases CocheConGPS y Coche. La consecuencia de ello es que cada objeto CocheConGPS poseerá las variables de instancia declaradas en Coche, y se le podrán enviar los mismos mensajes que a cualquier instancia de Coche. Es como si en el programa 8 hubiésemos copiado las declaraciones de métodos y variables que aparecen en la clase Coche. El programa 9 es un ejemplo sencillo de uso de la clase CocheConGPS: crea un objeto y le envía diferentes mensajes. Obsérvese que las ĺıneas 16 a 18 son llamadas a métodos que

4 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica110 Programa 9 Uso de la clase CocheConGPS 3 / Ejemplo de uso de una c l a s e d e f i n i d a por h e r e n c i a 5 / 6 p u b l i c c l a s s DemoCocheConGPS { 7 8 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 9 CocheConGPS coche = new CocheConGPS ( ) ; / metodos en CocheConGPS / 1 coche. cambiarcoordenadas ( , 0. 0 ) ; 13 coche. p r i n t I n f o P o s i c i o n ( ) ; 1 15 / metodos en Coche / 16 coche. v e n d e r ( "X.X.X" ) ; 17 coche. m a t r i c u l a r ( "PMM -000" ) ; 18 coche. p r i n t I n f o ( ) ; 19 } 0 } no están declarados en CocheConGPS, sino en Coche, pero, a pesar de eso, se escriben igual que si esos métodos hubiesen sido declarados en CocheConGPS. En programación, se dice que una clase como CocheConGPS es una subclase o clase derivada de Coche, de la cual hereda todas sus variables y métodos. Asímismo, se dice que Coche es la superclase de la clase derivada. Gracias a este mecanismo de herencia, los objetos de una clase son capaces de comportarse como lo harían los objetos de la superclase correspondiente. De hecho, al definir una clase como subclase de otra, los métodos de la superclase pueden usarse también para definir sus métodos. Por ejemplo, podría ser más razonable definir el método cambiarcoordenadas de manera que se incremente también el cuentakilómetros de un coche: p r i v a t e double l o n g i t u d = 0 ; p u b l i c void cambiarcoordenadas ( double d e l t a L a t i t u d, double d e l t a L o n g i t u d ) { / a c t u a l i z a r c u e n t a K i l o m e t r o s con l a d i s t a n c i a r e c o r r i d a a l cambiar de coordenadas. Por s i m p l i c i d a d, e l a l g o r i t m o a u t i l i z a r se s u s t i t u y e por l o s i g u i e n t e, que s o l o es una buena a p r o x i m a c i o n en l o que se r e f i e r e a l a l a t i t u d : un grado de l o n g i t u d en e l ecuador es mas l a r g o que c e r c a de l o s Polos! / double d i s t a n c i a = Math. abs ( l a t i t u d () d e l t a L a t i t u d ) / aproximado / Math. abs ( l o n g i t u d () d e l t a L o n g i t u d ) 110; / i n c o r r e c t o /

5 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica111 / llamada a l metodo de l a s u p e r c l a s e / r e c o r r e r ( d i s t a n c i a ) ; l a t i t u d = l a t i t u d+d e l t a L a t i t u d ; Redefinición de métodos: overriding Cuando se define una clase como subclase de otra puede ser interesante cambiar el comportamiento asociado con algunos de los métodos de la superclase. Por ejemplo, para definir un nuevo tipo de coches, representando taxis, parece conveniente definir una nueva clase por herencia a partir de la clase Coche: class Taxi extends Coche {... Ahora bien, quizás no sea razonable que los taxis se comportan exactamente igual que los coches, en lo que al comportamiento heredado de la clase Coche se refiere. Por ejemplo, porque cuando un taxi hace un recorrido baja la bandera al empezar el recorrido y la vuelve a subir cuando el recorrido se termina. Esto sugiere que la clase Taxi debiera definirse de manera que el método recorrer tenga en cuenta ese aspecto. Programa 30 Métodos heredados: redefinición 3 import ehu. s t u d e n t. Coche ; 5 / 6 Una c l a s e d e f i n i d a mediante h e r e n c i a 7 con r e d e f i n i c i o n de metodos heredados 8 / 9 p u b l i c c l a s s Taxi extends Coche 10 { 11 / heredado de Coche / 1 p u b l i c void r e c o r r e r ( double kms ){ 13 System. out. p r i n t l n ( inicia carrera" ) ; 1 p r i n t I n f o ( ) ; / metodo r e c o r r e r heredado de Coche / 17 super. r e c o r r e r ( kms ) ; System. out. p r i n t l n ( fin de carrera" ) ; 0 } 1 } El programa 30 muestra una definición de la clase Taxi conforme a lo dicho. Por ser una subclase de Coche, la clase Taxi hereda un método con la cabecera siguiente: p u b l i c void r e c o r r e r ( double kms )

6 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica11 Por otra parte, el programa incluye también un método con esa misma cabecera; es decir, que coinciden el nombre y los parámetros declarados. En situaciones como ésta se dice que la clase Taxi redefine (overrides) el método recorrer. En consecuencia, cuando un objeto Taxi reciba el mensaje correspondiente, no se ejecutará el método heredado sino el incluido en la propia clase. Obsérvese, no obstante, que en la nueva versión de recorrer se usa también el método heredado, aunque la instrucción de llamada correspondiente tiene un formato algo peculiar: super.recorrer(... ); 7.. Polimorfismo La relación hereda-de no es solamente un mecanismo para la definición de nuevas clases, sino que tiene también influye en la relación entre objetos y clases. Pensar, como hemos hecho hasta ahora, que cada uno de los objetos creados por un programa pertenece a una única clase, es una visión algo limitada de las cosas. En P.O.O.se considera que todas las instancias de una clase son también instancias de su superclase (en java todas las clases de una aplicación son subclases de alguna otra; los detalles se dejan para después). Volviendo a la figura de la página 7, eso quiere decir que los taxis son, a todos los efectos, turismos, y que tanto taxis como autobuses son también vehículos. Una consecuencia de esto es que las variables de un programa pueden designar objetos de diferentes tipos durante la ejecución del programa. Esto ocurrirá, por ejemplo, al ejecutarse el programa siguiente: 3 import ehu. s t u d e n t. Coche ; 5 / 6 Ejemplo de a s i g n a c i o n a l a misma v a r i a b l e 7 de o b j e t o s de d i f e r e n t e s c l a s e s. 8 / 9 p u b l i c c l a s s E j e m p l o V a r i a b l e P o l i m o r f i c a { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 1 Coche coche = n u l l ; 13 1 / 15 A coche se l e pueden a s i g n a r coches 16 de d i f e r e n t e s t i p o s!!! 17 / 18 coche = new Coche ( ) ; 19 coche = new CocheConGPS ( ) ; 0 coche = new Taxi ( ) ; 1 / metodos en Coche / 3 coche. v e n d e r ( "X.X.X" ) ; coche. m a t r i c u l a r ( "PMM -000" ) ;

7 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica113 5 coche. p r i n t I n f o ( ) ; 6 } 7 } Como se ve en ese programa, a una variable de tipo referencia como coche se le puede asignar, tanto un objeto de la clase indicada al declarar la variable (es decir, Coche), como de cualquiera de sus subclases: Taxi... CocheConGPS Lo que ocurre, en definitiva, es que todos los objetos creados por ese programa son instancias de Coche: las instancias de Taxi y CocheConGPS son instancias de Coche, ya que ambas clases heredan de Coche. Algo parecido ocurre también al definir el resultado de un método. En el programa siguiente, cada vez que una FactoriaDeCoches recibe el mensaje fabricarcochenuevo devuelve un coche de nueva creación que unas veces es un Coche, otras veces es un CocheConGPS, y otras un Taxi. En cualquier caso, siempre es una instancia, directa o indirectamente, de Coche, conforme al tipo de resultado declarado por el método fabricarcochenuevo. 3 import ehu. s t u d e n t. Coche ; 5 / 6 Una c l a s e para c o n s t r u i r coches de d i f e r e n t e s t i p o s. 7 / 8 p u b l i c c l a s s FactoriaDeCoches { 9 10 p r i v a t e i n t n = 0 ; 11 1 / 13 Devuelve un nuevo coche. 1 / 15 p u b l i c Coche f a b r i c a r C o c h e N u e v o ( ) 16 { 17 Coche elcoche = n u l l ; i f ( n == 0) { 0 elcoche = new Coche ( ) ; 1 } e l s e i f ( n == 1){ CocheConGPS cochecongps = new CocheConGPS ( ) ; 3 elcoche = cochecongps ; } e l s e { 5 Taxi t a x i = new Taxi ( ) ; 6 elcoche = t a x i ; 7 } 8 n = ( n+1) % 3 ; 9 return elcoche ; 30 } 31 }

8 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica Ligadura dinámica Programa 31 Ligadura dinámica 3 import ehu. s t u d e n t. Coche ; 5 / 6 Ejemplo de p o l i m o r f i s m o y l i g a d u r a dinamica. 7 / 8 p u b l i c c l a s s E j e m p l o P o l i m o r f i s m o { 9 10 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 11 FactoriaDeCoches f a c t o r i a = new FactoriaDeCoches ( ) ; 1 13 f o r ( i n t i = 0 ; i < 1 0 ; i ++){ 1 Coche c = f a c t o r i a. f a b r i c a r C o c h e N u e v o ( ) ; 15 / c puede s e r de d i f e r e n t e s c l a s e s / / Qué método se e j e c u t a a q u í? / 18 c. v e n d e r ( "X.X.X" + i ) ; 19 c. m a t r i c u l a r ( "PMM -" + i ) ; 0 1 / Qué método se e j e c u t a a q u í? / c. r e c o r r e r ( i ) ; 3 } System. out. p r i n t l n ( "PE" == ( "PE" + "" ) ) ; 5 } 6 } Aparentemente, el programa 31 es muy sencillo. Se crea un número de instancias de Coche y se usan las funciones que poseen para establecer quién es el propietario, cuál es el código de matrícula, etc. Seguramente, estará claro que los mensajes enviados en las ĺıneas 18 y 19, dan lugar a la ejecución de los métodos vender y matricular de la clase Coche. Ahora bien, refiriéndonos a la asignación en la ĺınea 1, hay que recordar que el tipo de coche creado por la FactoriaDeCoches es variable. En algunas iteraciones, el coche creado será una instancia de Coche o de CocheConGPS, mientras que en otras será una instancia de Taxi. En los dos primeros casos, el mensaje enviado en esa ĺınea dará lugar a la ejecución del método recorrer de la clase Coche. Sin embargo, como la clase Taxi tiene redefinido el método recorrer, cuando el coche creado sea una instancia de Taxi, se ejecutará el método de dicha clase. Como puede verse, la repetición de una misma instrucción puede dar lugar a la ejecución de diferentes piezas de código en cada ocasión. Y solo en el momento mismo de ejecutar esa instrucción se decide cuál es el método elegido. En P.O.O., se usa el término ligadura dinámica o dynamic binding para referirse a ese mecanismo que pospone hasta el momento de ejecutar una llamada, la elección del método a ejecutar.

9 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica La clase Object En java y otros lenguajes de programación, todas las clases de una aplicación son subclases de alguna otra. Cuando una clase no indica expĺıcitamente cuál es su superclase, esa superclase es una clase primitiva de java llamada java.lang.object Así pues, podemos definir una clase como se suele hacer muchas veces: class Coche {... o bien indicar expĺıcitamente que la superclase es Object: Overriding y colecciones class Coche extends Object {... La clase Object no es de mucha utilidad en sí misma. Sin embargo tiene métodos con las cabeceras siguientes: y puesto que public boolean equals(object o) public int hashcode() public String tostring() todas las instancias de una clase son también instancias de Object esos métodos son heredados también en cualquier otra clase que se defina. Los dos primeros juegan un papel muy importante en el comportamiento de los diferentes tipos de colecciones existentes. Como su propio nombre indica, el método equals sirve para saber si un objeto es igual a otro, y podría usarse así: Object uno = new Object ( ) ; Object o t r o = new Object ( ) ; boolean t e s t = uno. e q u a l s ( o t r o ) ; // es f a l s e Coche uno = new Coche ( ) ; Coche o t r o = new Coche ( ) ; boolean c e r t e z a = uno. e q u a l s ( uno ) ; // es t r u e boolean duda = uno. e q u a l s ( o t r o ) ; // es f a l s e ; s e r í a mas r a z o n a b l e t r u e? Conforme a la implementación de equals en Object, un objeto únicamente es igual a sí mismo. Solamente en aquéllas clases en las cuales ese método esté adecuadamente redefinido se obtendrá un resultado más acorde con lo intuitivamente esperado. La importancia de ese método para el buen funcionamiento de los diferentes tipos de colecciones es obvia. Por ejemplo, una lista decide si contiene o no a un objeto dado, examinando si ese objeto es igual a alguno de sus elementos. Por lo que se refiere al método hashcode, aunque es usado muy raramente, juega un papel muy importante en el rendimiento de algunos tipos de aplicaciones y conjuntos (aunque no se

10 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica116 ha mencionado, además de las clases TreeSet<T> y TreeMap<K, V>, hay otras más con funciones parecidas). Omitiendo detalles, una clase debe redefinir este método de tal manera que el código devuelto por dos objetos sea el mismo si el resultado del método equals es true. El programa 3 define una subclase de CartaBarajaInmutable para corregir algunas deficiencias de esta clase. En particular, la nueva clase hará posible construir listas de cartas con un comportamiento más acorde con lo intuitivamente esperable. Por ejemplo, la ejecución de las instrucciones siguientes: C a r t a B a r a j a unasoros = new C a r t a B a r a j a ( 0, 0 ) ; C a r t a B a r a j a otroasoros = new C a r t a B a r a j a ( 0, 0 ) ; A r r a y L i s t <CartaBaraja > l i s t a = new A r r a y L i s t <CartaBaraja >(); l i s t a. add ( unasoros ) ; l i s t a. add ( unascopas ) ; boolean e s t a A s O r o s E n L i s t a = l i s t a. c o n t a i n s ( otroasoros ) ; se completará asignando el valor true a estaasorosenlista. Para ello es necesario redefinir los métodos citados arriba. Obsérvese que en la definición de equals se examina si el objeto recibido como parámetro es una instancia de CartaBaraja. Caso de ser así, es necesario hacer una conversión de tipos, ya que si las ĺıneas 35 y 36 se sustituyesen por algo parecido: r = ( g e t S u i t ( ) == o. g e t S u i t ( ) ) && ( g e t F i g u r e ( ) == o. g e t F i g u r e ( ) ) ; el texto sería rechazado por el compilador.

11 Tema 7. Definición de clases: Herencia, polimorfismo, ligadura dinámica117 Programa 3 Redefiniendo equals y hashcode 3 import ehu. s t u d e n t. C a r t a B a r a j a I n m u t a b l e ; 5 / 6 Ejemplo de r e d e f i n i c i o n de metodos heredados de Object 7 8 N e c e s a r i o s para e l uso de c o l e c c i o n e s. 9 / 10 p u b l i c c l a s s C a r t a B a r a j a extends C a r t a B a r a j a I n m u t a b l e 11 { 1 / 13 Construye un nuevo n a i p e. 1 / 15 p u b l i c C a r t a B a r a j a ( i n t cdgsuit, i n t c d g F i g u r e ) 16 { / e j e c u t a r c o n s t r u c t o r a de l a s u p e r c l a s e / 19 super ( cdgsuit, c d g F i g u r e ) ; 0 1 } 3 / Devuelve t r u e s i e l n a i p e es i g u a l a l o b j e t o o. 5 / 6 p u b l i c boolean e q u a l s ( Object o ) 7 { 8 boolean r = f a l s e ; 9 / o puede s e r de e s t a c l a s e... / 30 i f ( o i n s t a n c e o f C a r t a B a r a j a ) 31 { / s i l o e s... / 3 / CASTING se a s i g n a o a una v a r i a b l e de e s t e t i p o / 33 C a r t a B a r a j a c a r t a = ( C a r t a B a r a j a ) o ; 3 / ahora ya se pueden u s a r l o s metodos de e s e o b j e t o / 35 r = ( g e t S u i t ( ) == c a r t a. g e t S u i t ( ) ) && 36 ( g e t F i g u r e ( ) == c a r t a. g e t F i g u r e ( ) ) ; 37 } 38 return r ; 39 } 0 1 / Devuelve un e n t e r o : e l c o d i g o hash d e l o b j e t o 3 El c o d i g o hash de dos o b j e t o s i g u a l e s debe s e r i g u a l. 5 / 6 p u b l i c i n t hashcode ( ) { 7 i n t hc = ( g e t S u i t ( ) ) + g e t F i g u r e ( ) ; 8 return hc ; 9 } 50 }

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

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

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

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

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

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

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

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

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

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

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

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

POO en Java IV: Herencia (Parte 1)

POO en Java IV: Herencia (Parte 1) Herencia POO en Java IV: Herencia (Parte 1) Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Es la derivación de una clase a partir de otra existente.

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

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

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

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

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

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

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 3. Herencia y Polimorfismo Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

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

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS CURSO: JAVA BASICO PROFESOR: EMERSON CASTAÑEDA SANABRIA TEMA: Programación Orientada a Objetos OBJETIVOS: Familiarizarse con la Programación

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

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

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

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

b c b c b b a a c a a c b c c b b c b c d c c c b

b c b c b b a a c a a c b c c b b c b c d c c c b INSTRUCCIONES: El EXAMEN TEÓRICO se divide en dos parciales. El PRIMER PARCIAL corresponde a las unidades 1 a 5. El SEGUNDO PARCIAL corresponde a las unidades 6 a 9. Aquellos alumnos que aprobaron el examen

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

Conceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases

Conceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases Fundamentos de la Programación Orientada a Objetos Objetos y Clases Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense

Más detalles

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

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

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

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

Clases y objetos. Objeto Instancia de una clase: Unidad atómica que encapsula estado y comportamiento.

Clases y objetos. Objeto Instancia de una clase: Unidad atómica que encapsula estado y comportamiento. Clases y objetos Clase Implementación de un tipo de dato. Una clase sirve tanto de módulo como de tipo - Tipo: Descripción de un conjunto de objetos (equipados con ciertas operaciones). - Módulo: Unidad

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

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

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

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas Departamento de Informática PROGRAMACIÓN DIDÁCTICA Curso 11-12 1 CONSEJERÍA DE EDUCACIÓN I.E.S. NERVIÓN Departamento de Informática CICLO FORMATIVO: TÉCNICO SUPERIOR EN DESARROLLO DE APLICACIONES MULTIPLATAFORMA.

Más detalles

3. DIAGRAMAS DE CLASES...19 3.1. INTRODUCCIÓN... 19 3.2. DIAGRAMAS DE CLASES... 19 3.2.1. Perspectivas...20 3.2.2. Clases...20 3.2.2.1.

3. DIAGRAMAS DE CLASES...19 3.1. INTRODUCCIÓN... 19 3.2. DIAGRAMAS DE CLASES... 19 3.2.1. Perspectivas...20 3.2.2. Clases...20 3.2.2.1. 3. DIAGRAMAS DE CLASES...19 3.1. INTRODUCCIÓN... 19 3.2. DIAGRAMAS DE CLASES... 19 3.2.1. Perspectivas...20 3.2.2. Clases...20 3.2.2.1. Compartimento del nombre...21 3.2.2.2. Compartimento de la lista

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

FORMACIÓN Principios de la programación orientada a objetos

FORMACIÓN Principios de la programación orientada a objetos FORMACIÓN Principios de la programación orientada a objetos En un mercado laboral en constante evolución, la formación continua de los profesionales debe ser una de sus prioridades. En Galejobs somos conscientes

Más detalles

Tema 1. Introducción a los TAD

Tema 1. Introducción a los TAD Tema 1. Introducción a los TAD Objetivos En este tema nos ocupamos inicialmente del concepto de abstracción, dedicando la mayor atención a la abstracción de datos, estudiando aspectos relacionados con

Más detalles

BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS. Dámaso López Aragón

BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS. Dámaso López Aragón BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS Dámaso López Aragón Introducción En la actualidad, la orientación a objetos es una nueva forma de comprender los problemas y modelar el negocio de una empresa,

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

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

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

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

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

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones. Refactorización Definición Refactorización (n) Cambio realizado a la estructura interna del software para hacerlo más fácil de comprender y más fácil de modificar sin cambiar su comportamiento observable.

Más detalles

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software 2. Conceptos básicos Hoy en día las aplicaciones son demasiado voluminosas y complejas para ser manejadas por una sola persona. Las aplicaciones de software son complejas porque modelan la complejidad

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

Introducción a la P.O.O. Patrick Hernández Cuamatzi

Introducción a la P.O.O. Patrick Hernández Cuamatzi Introducción a la P.O.O. Patrick Hernández Cuamatzi Introducción } Debemos diferenciar entre Programación Orientada a Objetos (P.O.O.) y Lenguaje Orientado a Objetos (L.O.O.). } La P.O.O. es una filosofía,

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Variables y Tipos de Datos PRÁCTICA NÚM. [ 1 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

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

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

Capítulo 4 Características generales del lenguaje (III)

Capítulo 4 Características generales del lenguaje (III) Novedades de Visual Basic 9.0 Registrado para Capítulo 4 Características generales del lenguaje (III) Introducción En este capítulo continuamos con las novedades de Visual Basic 9.0,

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

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

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

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para

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

Tipos de variables en Visual Basic (integer, single, double, string, object, etc.). Ejemplos. (CU00308A)

Tipos de variables en Visual Basic (integer, single, double, string, object, etc.). Ejemplos. (CU00308A) aprenderaprogramar.com Tipos de variables en Visual Basic (integer, single, double, string, object, etc.). Ejemplos. (CU00308A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión: 2029

Más detalles

Arreglos. // Incluir E/S y Librerías Standard #include #include

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h> Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en

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

MODULO DE PROGRAMACION JAVA Nivel Básico-Intermedio

MODULO DE PROGRAMACION JAVA Nivel Básico-Intermedio MODULO DE PROGRAMACION JAVA Nivel Básico-Intermedio Objetivo general: Introducir al participante en los conceptos y herramientas más importantes del lenguaje javo para la programación de objetos. Duración

Más detalles

Dentro del.net los eventos se utilizan para notificar a nuestros objetos que se ha producido algún tipo de hecho al que nos hemos suscrito.

Dentro del.net los eventos se utilizan para notificar a nuestros objetos que se ha producido algún tipo de hecho al que nos hemos suscrito. Eventos ala.net Recientemente ha surgido en los grupos de C# una duda sobre si los eventos que usa el.net son del mismo tipo que los que nosotros podemos crear y usar. La respuesta obvia y evidente es

Más detalles

Introducción a Protégé

Introducción a Protégé FACULTAD DE INFORMÁTICA LICENCIATURA EN DOCUMENTACIÓN SISTEMAS DE REPRESENTACIÓN Y PROCESAMIENTO AUTOMÁTICO DEL CONOCIMIENTO Práctica 1 1ª Parte Introducción a Protégé Febrero 2003 1. Objetivo La presente

Más detalles

TEMA 5. EXCEPCIONES EN JAVA... 1 5.1 DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN... 2 5.2 TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS... 10 5.

TEMA 5. EXCEPCIONES EN JAVA... 1 5.1 DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN... 2 5.2 TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS... 10 5. TEMA 5. EXCEPCIONES EN JAVA... 1 5.1 DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN... 2 5.2 TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS... 10 5.3 TRABAJANDO CON EXCEPCIONES: DECLARACIÓN, CONSTRUCCIÓN,

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

Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Sesión 1: Introducción al Lenguaje Java

Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Sesión 1: Introducción al Lenguaje Java Lenguaje Java Sesión 1: Introducción al Lenguaje Java 2012-2013 Depto. Ciencia de la Computación e IA Índice Introducción a Java Conceptos de POO Elementos de un programa Java Herencia, interfaces, polimorfismo

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

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

Curso de programación Java III Artículo publicado originalmente en la revista Sólo Programadores

Curso de programación Java III Artículo publicado originalmente en la revista Sólo Programadores Curso de programación Java III Artículo publicado originalmente en la revista Sólo Programadores Hasta ahora en este curso de programación Java hemos introducido los tipos de datos primitivos del lenguaje

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

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

PROGRAMACION ORIENTADA A OBJETOS CON PHP

PROGRAMACION ORIENTADA A OBJETOS CON PHP PROGRAMACION ORIENTADA A OBJETOS CON PHP COMO SE DEFINE EN PHP La programación orientada a objetos es una metodología de programación avanzada y bastante extendida, en la que los sistemas se modelan creando

Más detalles

Tema 4. Clases y objetos en C++ 4.1. Introducción

Tema 4. Clases y objetos en C++ 4.1. Introducción Tema 4 Clases y objetos en C++ 4.1. Introducción A lo largo del curso nos hemos encontrado con varias situaciones en las que era necesario trabajar con datos para los que no existía un tipo predefinido

Más detalles

Generics y Visual Basic.NET

Generics y Visual Basic.NET Por Guillermo Guille Som Visual Basic MVP desde 1997 www.elguille.info Generics y Visual Basic.NET Es mucho lo que se ha escrito (y seguramente se seguirá escribiendo) sobre esta nueva característica de

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