Está en la página 1de 8

NETFLIX en JAVA

José Romero
Diagrama de Clase

PELICULA
STREAM NETFLIX
 año: int  titulo : String Netflix() – class
 genero: String
Main(String[] args)
Pelicula()  creador: String
Pelicula(String, String )
Pelicula(String, String, String,int,int)
 duracion: int
getaño():int  visto: booelan
setaño(int):void
toString():String
Stream()
Stream (String, String )
Stream (String,String, String, int)
getTitulo():String
setTitulo(String):void
Serie getGenero():String Visualizable
setGenero(String):void
 nroTemporada : int getCreador():String marcarVisto():void
setCreador(String):void esVisto():boolean
getDuracion():String tiempoVisto():int
Serie()
Serie(String, String ) setDuracion(String):void
Serie(String,int,String,String,int) toString():String
getNroTemporadas():void marcarVisto():void
setNroTemporadas(int):void esVisto():boolean
toString():String tiempoVisto():int

En el diagrama de clases se puede observar que las clases Peliculas y Series son hijas de la
clase principal Stream por ende se aplica la herencia, ya que la mayoría de los métodos en
las clases películas y series son iguales y ara ahorrar codificación se aplica la herencia,
Stream como Padre o principal y Pelicula y Series como hijos.
CLASE PELICULA
package com.JRCompany.Netflix;

public class Pelicula extends Stream{

private int año;

// Constructor default
public Pelicula() {
super();
this.año = 0;
}

// Constructor con título y creador. Los demás campos tienen valor


default
public Pelicula(String titulo, String creador) {
super(titulo, creador);
}

// Constructor con todos los atributos, excepto visto


public Pelicula(String titulo, String genero, String creador, int año,
int duracion) {
super(titulo, genero, creador, duracion);
this.año = año;
}

// Métodos GET y SET de todos los atributos (los demás estan en la clase
padre Stream)
public int getaño() {
return año;
}

public void setaño(int año) {


this.año = año;
}

// Sobreescritura de método toString


@Override
public String toString() {
String info = super.toString() + "\n";
info = info + "Año: " + año;
return info;
}

}
CLASE SERIE
package com.JRCompany.Netflix;

public class Serie extends Stream{

private int nroTemporadas;

// Constructor default
public Serie() {
super();
this.nroTemporadas = 1; // valor 1 por defecto
}

// Constructor con título y creador. Los demás campos tienen valor


default
public Serie(String titulo, String creador) {
super(titulo, creador);
}

// Constructor con todos los atributos, excepto visto


public Serie(String titulo, int nroTemporadas, String genero,
String creador, int duracion) {
super(titulo, genero, creador, duracion);
this.nroTemporadas = nroTemporadas;
}

// Métodos GET y SET de todos los atributos (los demás estan en la


clase padre Stream)
public int getNroTemporadas() {
return nroTemporadas;
}
public void setNroTemporadas(int nroTemporadas) {
this.nroTemporadas = nroTemporadas;
}
// Sobreescritura de método toString
@Override
public String toString() {
String info = super.toString() + "\n";
info = info + "Nro Temporadas: " + nroTemporadas;
return info;
}

}
Clase STREAM
package com.JRCompany.Netflix;

public class Stream implements Visualizable{

private String titulo;


private String genero;
private String creador;
private int duracion;
private boolean visto;

public Stream() { //Primer Constructor (default)


this.titulo= "No Encontrado";
this.genero= "No Encontrado";
this.creador="No Encontrado";
this.duracion=0;
this.visto=false;
}

//Constructor con Titulo y Creador, los demas valores se encuentran


en default
public Stream (String titulo, String creador) {
this.titulo=titulo;
this.creador=creador;
}

//Constructor con todos los atributos decalrados menos Visto


public Stream (String titulo, String genero, String creador, int
duracion) {
this.titulo=titulo;
this.genero=genero;
this.creador=creador;
this.duracion=duracion;
}

//Metodos Gets and Set en la mayoria de los atributos menos en Visto

public String getTitulo() {


return titulo;
}

public void setTitulo(String titulo) {


this.titulo = titulo;
}

public String getGenero() {


return genero;
}

public void setGenero(String genero) {


this.genero = genero;
}
public String getCreador() {
return creador;
}

public void setCreador(String creador) {


this.creador = creador;
}

public int getDuracion() {


return duracion;
}

public void setDuracion(int duracion) {


this.duracion = duracion;
}

// Sobreescritura del metodo String


@Override
public String toString() {
// TODO Auto-generated method stub
String info="titulo"+titulo+"\n";
info = info +"Genero" + genero +"\n";
info = info + "Creador: " + creador + "\n";
info = info + "Duración: " + duracion + " minutos \n";
if(visto) {
info = info + "Visto?: Sí";
}
else {
info = info + "Visto?: No";
}

return info;
}

// Métodos traidos desde la Interfaz e implementados aquí


@Override
public void marcarVisto(){
this.visto = true;
}
@Override
public boolean esVisto(){
return visto;
}
@Override
public int tiempoVisto(){
return duracion;
}

}
CLASE NETFLIX
package com.JRCompany.Netflix;

public class Netflix {

public static void main(String[] args) {

// Creo dos arrays de 5 elementos. Uno de Peliculas y otro de


Series
Pelicula [] peliculas = new Pelicula[5];
Serie [] series = new Serie[5];

// Creo los objetos Pelicula


peliculas[0] = new Pelicula("Armageddon","Sci-fi","Michael
Bay",1998,153);
peliculas[1] = new Pelicula("Titanic","Catástrofe, Drama","James
Cameron",1997,210);
peliculas[2] = new Pelicula("La Roca","Accion, Accion","Sean
Connery",1996,200);
peliculas[3] = new Pelicula("Las vacaciones de Mr. Bean","Comedia,
Road movie","Steve Bendelack",2007,90);
peliculas[4] = new Pelicula("Locademia de
Policia","Comedia,Policia","Bubba Smith",1979,145);

// Creo los objetos Serie


series[0] = new Serie("The Big Bang Theory",12,"Comedia","Chuck
Lorre",50);
series[1] = new Serie("SWAT",3,"Policial","Sean Murray",75);
series[2] = new Serie("Friends",10,"Comedia","Martha Kauffman",22);
series[3] = new Serie("CSI: Miami",8,"Policial, Drama","Jerry
Bruckheimer",45);
series[4] = new Serie("Los Simpson",25,"Animado","Marc
Groening",24);

// Se marcan como vistas algunas peliculas y series


peliculas[0].marcarVisto();
peliculas[2].marcarVisto();
peliculas[4].marcarVisto();

series[1].marcarVisto();
series[3].marcarVisto();

// En esta parte se mostrará una lista de las Películas y Series


que se visualizaron y un detalle de los minutos visualizados
int minVistosPeliculas = 0;
int minVistosSeries = 0;
int totalMinVistos = 0;

System.out.println("***** Lista de Peliculas y Series Visualizadas


*****");
System.out.println(""); // Para hacer un salto de línea
for(int i=0; i<5; i++) {
if(peliculas[i].esVisto()) {
System.out.println("[Pelicula] " +
peliculas[i].getTitulo() + " (" + peliculas[i].getDuracion() + " minutos)");
minVistosPeliculas += peliculas[i].getDuracion();
}
if(series[i].esVisto()) {
System.out.println("[Serie] " + series[i].getTitulo()
+ " (" + series[i].getDuracion() + " minutos)");
minVistosSeries += series[i].getDuracion();
}

totalMinVistos = minVistosPeliculas + minVistosSeries;

System.out.println(""); // Para hacer un salto de línea


System.out.println("Minutos Vistos [Peliculas]: " +
minVistosPeliculas);
System.out.println("Minutos Vistos [Series]: " + minVistosSeries);
System.out.println("Tiempo total: " + totalMinVistos + " minutos");

// En esta parte se indicará la Serie con más temporadas y la


película del año más reciente. Muestro en pantalla toda su información
int indiceSerieMasTemporadas = 0;
int indicePeliculaMasReciente = 0;
int nroTemporadas = series[0].getNroTemporadas();
int año = peliculas[0].getaño();

for(int i=0; i<5; i++) {


// Aquí obtengo el indice de la película más reciente
if(peliculas[i].getaño() > año) {
año = peliculas[i].getaño();
indicePeliculaMasReciente = i;
}

// Aquí obtengo el indice de la serie con más temporadas


if(series[i].getNroTemporadas() > nroTemporadas) {
nroTemporadas = series[i].getNroTemporadas();
indiceSerieMasTemporadas = i;
}
}

// Se muestra la informacion utilizando el método toString().


System.out.println(""); // Para hacer un salto de línea
System.out.println("***** Película más reciente ***** ");

System.out.println(peliculas[indicePeliculaMasReciente].toString());
System.out.println(""); // Para hacer un salto de línea
System.out.println("***** Serie con más temporadas ***** ");
System.out.println(series[indiceSerieMasTemporadas].toString());

}
}

INTERFACE VISUALIZACIÓN
package com.JRCompany.Netflix;

public interface Visualizable {

public void marcarVisto(); //cambiara el atributo de visto a true

public boolean esVisto(); // devolvera el estado del atributo a true

public int tiempoVisto(); // devolvera el tiempo Visto

También podría gustarte