Autor: Juan Pablo Fuentes
Formador de programación y bases de datos
Prueba polimorfismo Television
Television[] tls={new Television("Miro"),
new ColorTelevision("MediaMarkt",5)};
for(Television t:tls){
System.out.println(t);
}
Clase ColorTelevision
package com.entertaiment;
public class ColorTelevision extends Television {
public ColorTelevision(String proveedor) {
super(proveedor);
}
public ColorTelevision(String proveedor, int color) {
super(proveedor);
colorTv=color;
}
private int colorTv;
public ColorTelevision(String marca, int volumen, String proveedor) {
super(marca, volumen, proveedor);
// TODO Auto-generated constructor stub
}
public String getMarca(){
return super.getMarca()+" TV!";
}
public String toString(){
return super.toString()+" | "+colorTv;
}
}
Clase equipo (Composición)
public class Equipo {
private Persona jefe;
private Persona coordinador;
private Persona[] miembros = new Persona[3];
public Equipo(String jefe, String coordinador, String emp1, String emp2, String emp3) {
this.jefe = new Persona(jefe);
this.coordinador = new Persona(coordinador);
this.miembros[0] = new Persona(emp1);
this.miembros[1] = new Persona(emp2);
this.miembros[2] = new Persona(emp3);
}
/**
* @return the jefe
*/
public Persona getJefe() {
return jefe;
}
/**
* @param jefe
* the jefe to set
*/
public void setJefe(Persona jefe) {
this.jefe = jefe;
}
public void setJefe(String jefe) {
this.jefe = new Persona(jefe);
}
/**
* @return the coordinador
*/
public Persona getCoordinador() {
return coordinador;
}
/**
* @param coordinador
* the coordinador to set
*/
public void setCoordinador(Persona coordinador) {
this.coordinador = coordinador;
}
/**
* @return the miembros
*/
public Persona[] getMiembros() {
return miembros;
}
/**
* @param miembros
* the miembros to set
*/
public void setMiembros(Persona[] miembros) {
this.miembros = miembros;
}
public String toString() {
String res = "";
if (jefe != null) {
res += "Jefe: "+jefe.toString()+ "\n";
}
if (coordinador != null) {
res += "Coordinador:"+ coordinador.toString()+ "\n";
}
for (Persona m : miembros) {
if (m != null) {
res += m.toString()+ " | ";
}
}
return res;
}
}
Clase Television v 4.0
public class Television {
private String marca = "";
private int volumen = 6;
private String proveedor;
private String modelo;
/**
* @return the modelo
*/
public String getModelo() {
return modelo;
}
/**
* @param modelo the modelo to set
*/
public void setModelo(String modelo) {
if (modelo.startsWith("TV") || modelo.indexOf("LG")>=0 || modelo.matches("[A-Za-z]{4}[0-9]{3}")){
this.modelo = modelo;
}
}
public static final int MIN_VOLUME = 0;
public static final int MAX_VOLUME = 100;
public static final String[] VALID_BRANDS = { "Sony", "Zenith", "Hitachi", "RCA" };
public Television(String marca, int volumen, String proveedor) {
setMarca(marca);
setVolumen(volumen);
setProveedor(proveedor);
}
public Television(String proveedor) {
this("LG", 6, proveedor);
}
/**
* @return the proveedor
*/
public String getProveedor() {
return proveedor;
}
/**
* @param proveedor
* the proveedor to set
*/
private void setProveedor(String proveedor) {
this.proveedor = proveedor;
}
/**
* @return the marca
*/
public String getMarca() {
return marca;
}
/**
* @param marca
* the marca to set
*/
public void setMarca(String marca) {
for (String m : VALID_BRANDS) {
if (marca.equals(m)) {
this.marca = marca;
return;
}
}
}
/**
* @return the volumen
*/
public int getVolumen() {
return volumen;
}
/**
* @param volumen
* the volumen to set
*/
public void setVolumen(int volumen) {
volumen = Math.min(volumen, Television.MAX_VOLUME);
volumen = Math.max(volumen, Television.MIN_VOLUME);
this.volumen = volumen;
}
public String toString(){
return marca+"|"+modelo+"|"+volumen+"|"+proveedor;
}
}
Validación marca con array
public void setMarca(String marca) {
for (String m : VALID_BRANDS) {
if (marca.equals(m)) {
this.marca = marca;
return;
}
}
}
String vs StringBuffer vs StringBuilder
Cambio validación marca
public void setMarca(String marca) {
if (marca.equals("Sony") || marca.equals("Zenith") || marca.equals("Hitachi") || marca.equals("RCA")){
this.marca = marca; }
}
Test Referencias y debug
public class TestRefTest {
public static void main(String[] args) {
TestRef c1=new TestRef();
TestRef c2=new TestRef();
c1.numero=3;
c1.texto="c1";
c2.numero=30;
c2.texto="c2";
System.out.println(c1.toString());
System.out.println(c2.toString());
TestRef c3=c1;
System.out.println(c3.toString());
c3.texto="c3";
System.out.println(c1.toString());
System.out.println(c1==c3);
c3.cambiar2(c1);
System.out.println(c1.toString());
c3.texto="c2";
System.out.println(c1==c3);
//Destruir objetos
c1=null;
c3=null;
for(int i=0;i<10;i++){
System.out.println(i);
}
}
}
La clase:
public class TestRef {
public int numero;
public String texto;
public String toString(){
return numero+"|"+texto;
}
public void cambiar(TestRef c){
c=null;
}
public void cambiar2(TestRef c){
c.texto="CAMBIADO";
}
}
Television con métodos estáticos
public class Television {
private String marca="LG";
private int volumen=6;
private String proveedor;
public static final int MIN_VOLUME = 0;
public static final int MAX_VOLUME = 100;
public Television(String marca, int volumen, String proveedor){
setMarca(marca);
setVolumen(volumen);
setProveedor(proveedor);
}
public Television(String proveedor){
this("LG",6, proveedor);
}
/**
* @return the proveedor
*/
public String getProveedor() {
return proveedor;
}
/**
* @param proveedor the proveedor to set
*/
private void setProveedor(String proveedor) {
this.proveedor = proveedor;
}
/**
* @return the marca
*/
public String getMarca() {
return marca;
}
/**
* @param marca the marca to set
*/
public void setMarca(String marca) {
this.marca = marca;
}
/**
* @return the volumen
*/
public int getVolumen() {
return volumen;
}
/**
* @param volumen the volumen to set
*/
public void setVolumen(int volumen) {
volumen=Math.min(volumen, Television.MAX_VOLUME);
volumen=Math.max(volumen, Television.MIN_VOLUME);
this.volumen = volumen;
}
}
Ejemplo de uso:
public class TelevisionTest {
public static void main(String[] args) {
Television tv1=new Television("ww",4,"Miro");
tv1.setVolumen(-5);
tv1.setMarca("Sony");
System.out.println(tv1.getVolumen());
System.out.println(tv1.getMarca());
Television tv2=new Television("Mediamarkt");
tv2.setVolumen(1335);
System.out.println(tv2.getVolumen());
System.out.println(tv2 .getMarca());
}
}