Estadistica
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, o aviones, etc, seguramente encontraremos que todos ellos comparten la capacidad de transportar pasajeros, de conocer su posici´n, etc. Ahorabien, quiz´s no sea adecuado agrupar a o a todos ellos en una unica categor´ vi´ndolos como veh´ ´ ıa, e ıculos. Al margen de los aspectos comunes que puedan existir entre todos ellos, algunos aspectos de inter´s en un taxi podr´ no e ıan 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 unaaplicaci´n en la cual intervengan o profesores universitarios, estudiantes universitarios de grado, estudiantes universitarios de master, personal administrativo, etc. En tanto que personas, compartir´n muchas caracter´ a ısticas, pero tambi´n habr´ funciones que s´lo sean razonables para algunos de ellos. Para evitar la e a o repetici´n de fragmentos de c´digo en diferentes clases, en P.O.O. sepermite establecer una o o relaci´n entre clases de objetos y organizarlas jer´rquicamente, como se muestra en la figura o a siguiente:
107
´ ´ Tema 7. Definicion de clases: Herencia, polimorfismo, ligadura dinamica108 Esta relaci´n entre clases se define expl´ o ı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 lasvariables y o m´todos declarados en la segunda se consideran autom´ticamente parte tambi´n de la primera. e a e De esta manera, los m´todos y declaraciones de variables relacionados con las caracter´ e ısticas comunes a taxis, turismos de uso particular, y autobuses, aparecer´n solo en la clase Vehiculo. a An´logamente, el c´digo relacionado con las caracter´ a o ısticas comunes a taxis y turismos de usoparticular, pero que no sean compartidas por todos los veh´ ıculos, estar´ en la clase Turismo. a A continuaci´n, veremos los aspectos m´s importantes de la relaci´n hereda-de en java. o a o
7.1.
Definici´n de clases y herencia o
Programa 28 Definici´n de la clase Coche o
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
package ehu . s t u d e n t ; p u b l ic c l a s s Coche { private String p r o p i e t a r i o ; private String matricula ; p r i v a t e double c u e n t a K i l o m e t r o s ; public void vender ( S t r i n g e l P r o p i e t a r i o ) { propietario = elPropietario ; } public 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 ) { matricula = laMatricula ; } p u b l i c v o i d r e c o r r e r ( double kms ) { c u e n t aK 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 ; } public void p r i n t I n f o (){ S t r i n g tmp = " Propietario : " + p r o p i e t a r i o + "; " + " Matricula : " + m a t r i c u l a + "; " + "Kms recorridos : " + c u e n t a K i l o m e t r o s + ";" ; System . o u t . p r i n t l n ( tmp ) ; } }
Los objetos de la clase Coche, definida en el programa 28, representan cochescon tienen funciones para cambiar el nombre del propietario, o el c´digo de matr´ o ıcula. Adem´s, un coche a puede recorrer la cantidad de kil´metros que se le indique, y proporcionar informaci´n diversa, o o como la distancia total recorrida desde que fu´ creado. e Para definir un nuevo tipo de coches, con algunas prestaciones adicionales, podr´ ıamos copiar en una nueva clase todas las variablesy m´todos declarados en el programa 28, pero e
´ ´ Tema 7. Definicion de clases: Herencia, polimorfismo, ligadura dinamica109 esa forma de proceder es muy pobre. Otra posibilidad, m´s interesante, es definir la nueva a clase de manera que sea una subclase de la anterior; es decir, estableciendo la relaci´n o hereda-de con la clase Coche. En java esto se hace como se indica en el programa...
Regístrate para leer el documento completo.