Pages

Herencia y Poliformismo

He aqui la herencia de mi proyecto.

No incluyo la relacion de herencia de los Servlets, porque aclaro que ya esta definida la Clase HttpServlet y no es codificacion propia.


La clase Articulo la deje con propiedades para poder heredarla y obtener una clase derivada mas reducida y que sea de contenido parecido, como el autor no lo requiero en mis clases hijas lo deje private.

public class Articulo {

 protected String nombre;
 private String autor;
 protected float  precio;
 protected String estado;
 
 public String getNombre() {
  if(nombre == null){
   nombre = "Sin nombre especificado";
   return nombre; 
  }else{
   return nombre;
  }
 }
 public void setNombre(String nombre) {
  this.nombre = nombre;
 }
 public String getAutor() {
  if(autor == null){
   autor = "Sin autor especificado";
   return autor; 
  }else{
   return autor;
  }
 }
 public void setAutor(String autor) {
  this.autor = autor;
 }
 public String getEstado() {
  if(estado == null ){
   estado = "regular";
   return estado; 
  }else{
   return estado;
  }
 }
 public void setEstado(String estado) {
  if(estado == "bueno"){
   this.estado = estado;
  }else if(estado == "malo"){
   this.estado = estado;
  }else if(estado == "regular"){
   this.estado = estado;
  }
 }
 
 public float getPrecio() {
  return precio;
 }
 public void setPrecio(float precio) {
  this.precio = precio;
 }
 
 public Articulo llenaDatos(Object obj)  {

  if(obj instanceof Articulo){
   Articulo UserObject = (Articulo)obj;
    
    setNombre(UserObject.getNombre());
    setAutor(UserObject.getAutor());
    setPrecio(UserObject.getPrecio());
    setEstado(UserObject.getEstado());

   
    return UserObject;
  
  }else{

   return this;
  }
 }
}


Clase que hereda de Articulo
public class ArticuloGadget extends Articulo {

 private String comentario;
 
 public String getComentario() {
  if(comentario == null){
   this.comentario = "sin comentarios";
   return this.comentario;
  }else {
   return comentario;
  }
 }
 
 public void setComentario(String comentario) {
  this.comentario = comentario;
 }
 
 
}

El polimorfismo aplica en mi clase CarroWeb.
ya que puede aplicar que remueva o agrege determinado tipo de Articulo.
Este es la parte de la clase que lo implementa.
public class CarroWeb {

        private List listadoLibros;
 private List listadoGadgets;
 private Float total, nuevaCantidad;
 private String respuesta;
 private RemovedorDatos rm;
 private String usuario;

public void Agrega(Articulo libro){
   listadoLibros.add(libro); 
 }
 
 public void Agrega(ArticuloGadget gadget){
  listadoGadgets.add(gadget);
 }

 
 
 public void Remueve(Articulo libro){
  if(listadoLibros.contains(libro)){
   for(Articulo item : listadoLibros){
    if(item.getNombre() == libro.getNombre()){
     listadoLibros.remove(item);
    }
   }
  }
 }

 public void Remueve(ArticuloGadget gadget){
  if(listadoGadgets.contains(gadget)){  
   for(ArticuloGadget item : listadoGadgets){
    if(item.getNombre() == gadget.getNombre()){
     listadoGadgets.remove(item);
    }
   }
  }
 }
}

You liked this post? Subscribe via RSS feed and get daily updates.

0 comentarios:

Publicar un comentario