Prog. Aprendiendo POO

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introducción

  • La idea de esta página es la de mostrar muchos de los conceptos de la POO siguiendo el desarrollo de un ejercicio.




Clases

  • Un programador novato (PN) decide introducirse en el mundo de POO y tratar de implementar una solución informática para la gestión de los vehículos de la empresa de transporte donde trabaja.
Decide usar como lenguaje de programación Java.
  • El problema que al que está intentando dar solución es el siguiente: Necesita almacenar información sobre los diferentes vehículos disponibles en la Compañía.
Entre esta información está el año de compra del vehículo, su matrícula y su marca.
  • El PN decide implementar en una clase la información necesaria.
Recuerda que las clases no son más que abstracciones de las propiedades de los objetos sin dar ningún valor concreto.
Por convención, las clases tienen que estar definidas en singular y la la primera letra en mayúscula así como las primeras letras de las siguientes palabras si el nombre está formado por varias.
Más tarde utiliza la clase creada previamente en otra clase llamada 'Principal', una que se va a ejecutar (dispone del método main)
Dentro de esta clase, el PN creará los cuatro vehículos que tiene la empresa en este momento y le asignará los siguientes valores:
Prog ej novato 1.jpg
  • Una vez hecho esto, el PN compila sus clases (Vehiculo y Principal) y ejecuta la clase Principal, creando 4 instancias de la clase Coche.


Ejercicio 1: Implementar la solución.

Solución Ejercicio 1



Métodos sin parámetros

  • Comprueba que no le haya dado errores, pero permanece con la duda de que si habrá guardado los valores de forma correcta, por lo que es necesario que se muestren estos valores.
Para imprimir los valores, necesita un procedimiento (método) que los saque a la pantalla.
Entonces decide crear dentro de la clase Vehiculo, un método que imprima la información Puede hacer un único método que imprima el año, matrícula y marca a la vez, pero decide crear tres métodos, uno para cada tipo de información a imprimir, de nombre imprimirAno, imprimirMatricula, imprimirMarca, porque necesita mostrar la información en forma individualizada.
  • Una vez escritos, decide probarlos, para ver si muestran la información correcta,
Para esto modifica la clase Principal, haciendo que cada objeto de la clase Vehículo llame a cada uno métodos.


Ejercicio 2: Implementar la solución.

Solución Ejercicio 2



Herencia

  • El PN está bastante satisfecho con lo que se ha logrado hasta ahora, pero esto fue solo una pequeña parte de lo que tienes que hacer.
Digamos que su empresa se dedica al transporte de 'dinero', y dos de sus vehículos son furgonetas. Cada una de ellas es capaz de transportar una cantidad de dinero.
Además, cada furgonete lleva consigo un número de vigilantes jurados
  • Esta información es necesaria almacenarla.
Ante esta situación, el PN decide crear una nueva clase, Furgoneta, con los procedimientos de la clase Vehículo y los nuevos atributos (cantidad de dinero y número de vigilantes jurados).
Pero cuando iba a comenzar a implementar esta solución, aparece el Programador Experto, alguien que ha trabajado en Java durante muchos años, y viendo lo que iba a hacer, le explica que en Java, al ser un lenguaje de POO se puede implementar algo que se denomina Herencia.
  • La herencia se da entre dos clases y es un tipo de relación jerárquica. Existe otra que es la de pertenencia.
En la herencia, hacemos que una clase (subclase) pueda hacer uso de todos los métodos y atributos definidos en la clase de la que va a heredar (superclase).
  • Con esta gran ventaja, el PN decide crear una subclase Furgoneta de la superclase Vehiculo.
Dentro de la nueva clase implementa los nuevos atributos (cantidad de dinero y número de vigilantes jurados), ya que son atributos de la clase Furgoneta, que no tiene la clase Vehículo.
  • Por otro lado, como el PN querrá mostrar la información de estos dos nuevos atributos, también crea, dentro de la clase Furgoneta, dos métodos para mostrar estos atributos del nombre 'imprimirDinero', 'imprimirJurados'.






-- Ángel D. Fernández González -- (2016).