Zdrojový kód z prednášky 16.11.2011

Trieda Dvd (súbor Dvd.java).

public class Dvd {
        private String nazovFilmu = "";
        private String[] herci;
        private String[] zanre;
        private int dlzkaFilmu;
        private double hodnotenie;

        /*
         * konštruktor bez parametrov - je potrebné ho napísať, ak ho chceme používať,
         * lebo sa negeneruje implicitný, ak už nejaký konštruktor v triede je
         */

        public Dvd() {

        }

        public Dvd(String nazovFilmu, String[] herci, String[] zanre,
                        int dlzkaFilmu, double hodnotenie) {
                setNazovFilmu(nazovFilmu);
                this.herci = herci;
                this.zanre = zanre;
                setDlzkaFilmu(dlzkaFilmu);
                this.hodnotenie = hodnotenie;
        }

        public String toString() {
                StringBuilder sb = new StringBuilder();
                sb.append(nazovFilmu+ "\n");
                sb.append("dlzka filmu je "+ dlzkaFilmu + "\n");
                sb.append("hodnotenie:" + hodnotenie + "\n");
                sb.append("Herci: ");
                for (int i = 0; i < herci.length; i++) {
                        sb.append(herci[i]+",");
                }
                sb.append("\nZanre: ");
                for (int i = 0; i < zanre.length; i++) {
                        sb.append(zanre[i]+",");
                }
                sb.append("\n=====================");
                return sb.toString();
        }

        public boolean mamZaner(String zaner) {
                for (int i = 0; i < zanre.length; i++) {
                        if (zaner.equals(zanre[i])) {
                                return true;
                        }
                }
                return false;
        }

        public void setNazovFilmu(String nazovFilmu) {
                if (nazovFilmu != null)
                        this.nazovFilmu = nazovFilmu;
        }

        public void setDlzkaFilmu(int dlzkaFilmu) {
                if (dlzkaFilmu < 0)
                        dlzkaFilmu = 0;
                this.dlzkaFilmu = dlzkaFilmu;
        }

        public String getNazovFilmu() {
                return nazovFilmu;
        }

        public String[] getHerci() {
                return herci;
        }

        public void setHerci(String[] herci) {
                this.herci = herci;
        }

        public String[] getZanre() {
                return zanre;
        }

        public void setZanre(String[] zanre) {
                this.zanre = zanre;
        }

        public double getHodnotenie() {
                return hodnotenie;
        }

        public void setHodnotenie(double hodnotenie) {
                this.hodnotenie = hodnotenie;
        }

        public int getDlzkaFilmu() {
                return dlzkaFilmu;
        }
}

Trieda DvdNaPredaj (súbor DvdNaPredaj.java) ukazuje použitie rodičovského konštruktora (z triedy Dvd).

public class DvdNaPredaj extends Dvd {

        double cena;

        public DvdNaPredaj(double cena) {
                super();
                this.cena = cena;
        }

        public DvdNaPredaj(String nazovFilmu, String[] herci, String[] zanre,
                        int dlzkaFilmu, double hodnotenie, double cena) {
                super(nazovFilmu, herci, zanre, dlzkaFilmu, hodnotenie);
                this.cena = cena;
        }
}

Trieda ZoznamDvd (súbor ZoznamDvd.java) predstavuje triedu, ktorá sa stará o pole Dvd-čiek.

public class ZoznamDvd {

        private Dvd[] filmy;

        public ZoznamDvd() {
                filmy = new Dvd[0];
        }

        public void vlozNoveDvd(Dvd dvd) {
                Dvd[] novePole = new Dvd[filmy.length+1];
                System.arraycopy(filmy, 0, novePole, 0, filmy.length);
                novePole[filmy.length] = dvd;
                filmy = novePole;
        }

        public void vypisVsetko() {
                for (int i = 0; i < filmy.length; i++) {
                        System.out.println(filmy[i].toString());
                }
        }

        public void vypisPodlaZanru(String zaner) {
                for (int i = 0; i < filmy.length; i++) {
                        if (filmy[i].mamZaner(zaner))
                                System.out.println(filmy[i]);
                }              
        }

        public void vymazDvd(Dvd dvd) {
                Dvd[] novePole = new Dvd[filmy.length-1];
                int pozicia = 0;
                while(filmy[pozicia] != dvd) {
                        if (pozicia == novePole.length) {
                                return;
                        }
                        novePole[pozicia] = filmy[pozicia];
                        pozicia++;
                }
                for(int i = pozicia+1; i < filmy.length; i++) {
                        novePole[i-1] = filmy[i];
                }
                filmy = novePole;
        }

        public void vymazDvd(String nazovFilmu) {
                int pozicia = 0;
                while ((pozicia < filmy.length) && (! filmy[pozicia].getNazovFilmu().equals(nazovFilmu))) {
                        pozicia++;     
                }
                if ((pozicia < filmy.length))
                        vymazDvd(filmy[pozicia]);
        }
}

Trieda Spustac (súbor Spustac.java)

/* Matrix:
 * Herci:               Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss
 * Žánre:             Akčný, Sci-Fi
 * Hotnotenie:  8.7
 * Dĺžka:             136
 *
 * The Shawshank Redemption:
 * Herci:               Tim Robbins, Morgan Freeman
 * Žánre:             Dráma
 * Hotnotenie:  9.2
 * Dĺžka:             142
 *
 * Fontána pre Zuzanu: 
 * Herci:               Eva Vejmělková, Jiří Bábek, Robo Grigorov
 * Žánre:             Dráma, Romantika, Muzikál
 * Hotnotenie:  6.3
 * Dĺžka:             81
 *
 * Pacho, hybský zbojník:
 * Herci:               Jozef Kroner, Marián Labuda
 * Žánre:             Komédia
 * Hotnotenie:  8.5
 * Dĺžka:             91
 */


public class Spustac {

        public static void main(String[] args) {
                Dvd pacho = new Dvd();
                pacho.setNazovFilmu("Pacho, hybský zbojník");
                pacho.setHodnotenie(8.5);
                pacho.setDlzkaFilmu(91);
                String[] herci = {"Jozef Kroner", "Marián Labuda"};
                pacho.setHerci(herci);
                String[] zanre = {"Komédia"};
                pacho.setZanre(zanre);

                String[] herci2 = {"Eva Vejmělková", "Jiří Bábek", "Robo Grigorov"};
                String[] zanre2 = {"Dráma", "Romantika", "Muzikál"};
                Dvd fontana = new Dvd("Fontána pre Zuzanu", herci2, zanre2, 81, 6.3);

                String[] herci3 = {"Tim Robbins", "Morgan Freeman"};
                String[] zanre3 = {"Dráma"};
                Dvd shawshank = new Dvd("The Shawshank Redemption", herci3, zanre3, 142, 9.2);

                String[] herci4 = {"Keanu Reeves", "Laurence Fishburne", "Carrie-Anne Moss"};
                String[] zanre4 = {"Akčný", "Sci-Fi"};
                Dvd matrix = new Dvd("The Matrix", herci4, zanre4, 136, 8.7);

                ZoznamDvd zoznam = new ZoznamDvd();
                zoznam.vlozNoveDvd(pacho);
                zoznam.vlozNoveDvd(fontana);
                zoznam.vlozNoveDvd(shawshank);
                zoznam.vlozNoveDvd(matrix);
//              zoznam.vypisVsetko();
//              System.out.println("========");
//              zoznam.vymazDvd("The Matrix");
//              zoznam.vypisVsetko();
//              System.out.println("========");
//              zoznam.vymazDvd("Pacho");
//              zoznam.vypisVsetko();
                zoznam.vypisPodlaZanru("Dráma");       
        }
}