Sie sind auf Seite 1von 11

Curso: Programando con Java para

Android
Tarea: Netflix (Semana 2)
Autor: Luis Jos Melndez Ruiz
Fecha: 27-03-2016

Diagrama de Clases

Se puede apreciar que las clases Pelicula y Serie son


subclases o clases hijas de la clase Stream (es decir, se
aplica la Herencia).
Adems la clase Stream implementa los mtodos
declarados en la Interface Visualizable (utilizando dicha
Interfaz).
Por otro lado, la clase ejecutable Netflix se utiliza para la
creacin de los objetos y su manipulacin en el mtodo
main().
En todas las clases se puede apreciar el nombre de la clase,
el tipo: si es una clase o una interfaz, el package al que
pertenecen, los atributos y los mtodos creados y sobreescritos (@Override).
A continuacin se adjunta por escrito el cdigo de las 5
clases: Pelicula, Serie, Stream, Visualizable y Netflix.
Adems te dejo algunas ideas de cmo ejecutar el
programa:

1. Puedes copiar el cdigo de cada clase que encontrars


en las siguientes pginas. Para esto abre tu IDE
favorito (Eclipse, Netbeans, JDeveloper, u otro) y crea
un nuevo proyecto. Crea las clases Pelicula, Serie,
Stream, Visualizable y Netflix. Copia el cdigo
respectivo. Luego compila y ejecuta el proyecto.
2. Existe una carpeta llamada netflix en el archivo .zip
junto con este documento que contiene el cdigo ya
escrito para su ejecucin. Copia dicha carpeta a tu
disco C. Ahora tienes dos opciones:
a) Puedes usar los archivos .java copiando la totalidad
de la carpeta al directorio src del Workspace de
Eclipse o IDE de tu preferencia. Y desde ah
compilarlos y ejecutarlos, o
b) Puedes ejecutar directamente desde la Consola de
Windows / Terminal de Linux. Para esto abre la
consola o terminal. En la consola dirgete a tu disco
C. Una vez en ah, escribe lo siguiente: java
netflix.Netflix
Deberas tener algo como esto:

Clase Pelicula

(subclase o clase hija de Stream)

package netflix;
/*
* @autor: LUIS JOSE MELENDEZ RUIZ
* @fecha: 27-03-2016
*
*/
public class Pelicula extends Stream {
// Atributos (los dems estan en la clase padre Stream)
private int anio; // Ejemplo: 1990
// Constructor default
public Pelicula() {
super();
this.ao = 0;
}
// Constructor con ttulo y creador. Los dems 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 anio, int duracion) {
super(titulo, genero, creador, duracion);
this.anio = anio;
}
// Mtodos GET y SET de todos los atributos (los dems estan en la clase padre Stream)
public int getAnio() {
return anio;
}
public void setAnio(int anio) {
this.anio = anio;
}
// Sobreescritura de mtodo toString
@Override
public String toString() {
String info = super.toString() + "\n";
info = info + "Ao: " + anio;
return info;
}
}

Clase Serie

(subclase o clase hija de Stream)

package netflix;
/*
* @autor: LUIS JOSE MELENDEZ RUIZ
* @fecha: 27-03-2016
*
*/
public class Serie extends Stream {
// Atributos (los dems estan en la clase padre Stream)
private int nroTemporadas;
// Constructor default
public Serie() {
super();
this.nroTemporadas = 1; // valor 1 por defecto
}
// Constructor con ttulo y creador. Los dems 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;
}
// Mtodos GET y SET de todos los atributos (los dems estan en la clase padre Stream)
public int getNroTemporadas() {
return nroTemporadas;
}
public void setNroTemporadas(int nroTemporadas) {
this.nroTemporadas = nroTemporadas;
}
// Sobreescritura de mtodo toString
@Override
public String toString() {
String info = super.toString() + "\n";
info = info + "Nro Temporadas: " + nroTemporadas;
return info;
}
}

Clase Stream

(superclase o clase padre de

Pelicula y Serie)
package netflix;
/*
* @autor: LUIS JOSE MELENDEZ RUIZ
* @fecha: 27-03-2016
*
*/
public class Stream implements Visualizable {
// Atributos
private String titulo;
private String genero;
private String creador;
private int duracion; // Ejemplo: 97 (indica una duracin de 97 minutos)
private boolean visto; // Ejemplo: true o false
// Constructor default
public Stream() {
this.titulo = "No definido";
this.genero = "No definido";
this.creador = "No definido";
this.duracion = 0;
this.visto = false; // valor FALSE por defecto
}
// Constructor con ttulo y creador. Los dems campos tienen valor default
public Stream(String titulo, String creador) {
this.titulo = titulo;
this.creador = creador;
}
// Constructor con todos los atributos, excepto visto
public Stream(String titulo, String genero, String creador, int duracion) {
this.titulo = titulo;
this.genero = genero;
this.creador = creador;
this.duracion = duracion;
}
// Mtodos GET y SET de todos los atributos, excepto 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 de mtodo toString
@Override
public String toString() {
// TODO Auto-generated method stub
String info = "Titulo: " + titulo + "\n";
info = info + "Gnero: " + genero + "\n";
info = info + "Creador: " + creador + "\n";
info = info + "Duracin: " + duracion + " minutos \n";
if(visto) {
info = info + "Visto?: S";
}
else {
info = info + "Visto?: No";
}
return info;
}
// Mtodos 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 Visualizable

(Interface implementada en

Stream)
package netflix;
/*
* @autor: LUIS JOSE MELENDEZ RUIZ
* @fecha: 27-03-2016
*
*/
public interface Visualizable {
// Este mtodo cambiar el atributo de visto a true
public void marcarVisto();
// Este mtodo devolver el estado del atributo visto
public boolean esVisto();
// Este mtodo devolver el tiempo en minutos/segundo que se visualiz el video
public int tiempoVisto();
}

Clase Netflix

(clase ejecutable)

package netflix;
/*
* @autor: LUIS JOSE MELENDEZ RUIZ
* @fecha: 27-03-2016
*
*/
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","Catstrofe, Drama","James Cameron",1997,210);
peliculas[2] = new Pelicula("The godfather","Gngsters, Drama","Francis Ford
Coppola",1972,178);
peliculas[3] = new Pelicula("Las vacaciones de Mr. Bean","Comedia, Road
movie","Steve Bendelack",2007,90);
peliculas[4] = new Pelicula("The Ring","Suspenso, Misterio","Gore Verbinski",2002,145);
// Creo los objetos Serie
series[0] = new Serie("Smallville",9,"Sci-fi","Alfred Gough",45);
series[1] = new Serie("Game of Thrones",5,"Fantasa, Medieval","David Benioff",65);
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("The Suite life on Deck",3,"Teens","Danny Kallis",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 Pelculas 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 lnea
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 lnea
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 ms temporadas y la pelcula del ao ms
reciente. Muestro en pantalla toda su informacin
int indiceSerieMasTemporadas = 0;
int indicePeliculaMasReciente = 0;
int nroTemporadas = series[0].getNroTemporadas();
int ao = peliculas[0].getAnio();
for(int i=0; i<5; i++) {
// Aqu obtengo el indice de la pelcula ms reciente
if(peliculas[i].getAnio() > ao) {
ao = peliculas[i].getAnio();
indicePeliculaMasReciente = i;
}
// Aqu obtengo el indice de la serie con ms temporadas
if(series[i].getNroTemporadas() > nroTemporadas) {
nroTemporadas = series[i].getNroTemporadas();
indiceSerieMasTemporadas = i;
}
}
// Se muestra la informacion utilizando el mtodo toString().
System.out.println(""); // Para hacer un salto de lnea
System.out.println("***** Pelcula ms reciente ***** ");
System.out.println(peliculas[indicePeliculaMasReciente].toString());
System.out.println(""); // Para hacer un salto de lnea
System.out.println("***** Serie con ms temporadas ***** ");
System.out.println(series[indiceSerieMasTemporadas].toString());
}
}

Eso sera todo!


Si deseas contactarme puedes enviar un email a:
lmelendezruiz@gmail.com
Por si tienes algn comentario, duda o sugerencia.
Gracias por tu atencin.

Das könnte Ihnen auch gefallen