Ukázka jednoduché evidence lidí - Java

Kolekce Ukázka jednoduché evidence lidí - Java

Ukázka jednoduché evidence lidí a jejich řazení podle jména, příjmení a věku pomocí kolekcí a třídy Comparator.

Třída Člověk obsahující základní vlastnosti jako celé jméno a věk daného člověka.

public class Clovek {

        private int vek;
        private String jmeno;
        private String prijmeni;

        public Clovek(String jmeno, String prijmeni, int vek){
                this.jmeno = jmeno;
                this.prijmeni = prijmeni;
                this.vek = vek;
        }

        public int getVek(){
                return vek;
        }

        public String getJmeno(){
                return jmeno;
        }

        public String getPrijmeni(){
                return prijmeni;
        }

        @Override
        public String toString(){
                return (jmeno + " " + prijmeni + " je starý " + vek + " let.");
        }

}

Samotná třída pro Evidenci zaměstnanců využívající třídu Člověk.

public class Evidence {

        private static final Evidence INSTANCE = new Evidence();
        private List<Clovek>zamestnanci;

        private Evidence(){
                zamestnanci = new ArrayList<>();
        }

        public void novyZamestnanec(Clovek c){
                zamestnanci.add(c);
        }

        public void novyZamestnanec(String jmeno, String prijmeni, int vek){
                zamestnanci.add(new Clovek(jmeno, prijmeni, vek));
        }

        public List<Clovek> vratKopii(){
                List<Clovek>kopie = new ArrayList<>(zamestnanci);
                return kopie;
        }

        public void seradPodleJmena(){
                Collections.sort(zamestnanci, new Comparator<Clovek>(){

                        @Override
                        public int compare(Clovek c1, Clovek c2) {
                                return c1.getJmeno().compareTo(c2.getJmeno());
                        }

                });
        }

        public void seradPodlePrijmeni(){
                Collections.sort(zamestnanci, new Comparator<Clovek>(){

                        @Override
                        public int compare(Clovek c1, Clovek c2) {
                                return c1.getPrijmeni().compareTo(c2.getPrijmeni());
                        }

                });
        }

        public void seradPodleVeku(){
                Collections.sort(zamestnanci, new Comparator<Clovek>(){

                        @Override
                        public int compare(Clovek c1, Clovek c2) {
                                if(c1.getVek() < c2.getVek()){
                                        return -1;
                                }else if(c1.getVek() > c2.getVek()){
                                        return 1;
                                }else{
                                        return 0;
                                }
                        }

                });
        }

        public static Evidence getInstance(){
                return INSTANCE;
        }

}

Ukázku použití a zdrojový balíček pro Eclipse přikládám ke stažení.


Galerie

Program byl vytvořen v roce 2012.

 

Stáhnout

Staženo 231x (7.09 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (1)

Program pro vás napsal Fugiczek
Avatar

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Všechny články v sekci
Kolekce v Javě

 

 

Komentáře

Avatar
Kit
Redaktor
Avatar
Kit:

Napadlo mě k příkladu (ke třídě Clovek) udělat jednoduchou testovací metodu. Spouští se jednoduše:

java -ea Clovek

Doporučuje se napsat nejdříve tuto metodu a teprve potom začít psát ostatní metody třídy. Samozřejmě to pro tak primitivní zadání není nezbytné, ale pro složitější třídy se to hodí.

public class Clovek {
    public static void main(String[] args){
        boolean assertsEnabled = false;
        assert assertsEnabled = true;
        if (!assertsEnabled)
            throw new RuntimeException("Assert se zapíná parametrem -ea");

        Clovek adam = new Clovek("Adam", "Bernau", 11);
        assert "Adam".equals(adam.getJmeno()) :
            "Jméno: " + adam.getJmeno();
        assert "Bernau".equals(adam.getPrijmeni()) :
            "Příjmení: " + adam.getPrijmeni();
        assert 11 == adam.getVek() :
            "Věk: " + adam.getVek();
        assert "Adam Bernau je starý 11 let.".equals(adam.toString()) :
            "toString: " + adam.toString();
    }
}
Odpovědět 31.12.2012 18:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na Kit
Fugiczek:

Ano, assert je užitečná věc, jenže 90% lidí tohle klíčové slovo ani nezná a musím se přiznat že ho ani nepoužívám.

 
Odpovědět 31.12.2012 19:21
Avatar
Kit
Redaktor
Avatar
Odpovídá na Fugiczek
Kit:

Proto jsem tady assert vytáhl. TDD je zajímavá technika, když se pochopí její smysl. Dlouho mi nebylo jasné, proč mám nejprve psát test a teprve pak program. A přitom je to tak jednoduché: Do testu opíšu zadání úlohy, co je po mně požadováno, jak se má program chovat. Po spuštění (často už při překladu) mi říká, co ještě nemám hotové.

Ještě k uvedenému testu: Po základním odladění je dobré testovací metodu přemístit do nové třídy testClovek, aby náš výsledný program nebyl zbytečně velký. Dobře napsaný test totiž bývá cca 2× delší než testovaný program.

Odpovědět 31.12.2012 19:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na Kit
Fugiczek:

TDD vypadá zajímavě, o tom si něco počtu, možná s tím bude vývoj aplikací i rychlejší, protože většinou mám aplikaci během chvíle napsanou a zbytek času jen hledám chyby, které mně to vyhazuje.

 
Odpovědět 31.12.2012 19:47
Avatar
Kit
Redaktor
Avatar
Odpovídá na Fugiczek
Kit:

Zpočátku mi TDD znechutily frameworky typu PHPUnit a JUnit. Je to vlastně další jazyk. Netvrdím, že jsou špatné, ale ještě jsem k nim nedozrál. Prostě jsem zjistil, že mé vlastní testy napsané pomocí assert mi přijdou jednodušší a účelnější.

Sekundárním efektem bylo, že mě to donutilo dělat i Dependency Injection, protože pokud je třída třeba závislá na databázi, testuje se dost blbě. Musíš pak dělat různé mocky a stuby - to je dost práce navíc. S dobrým DI se jim dá i vyhnout. Aplikace je pak čistější a uhlazenější.

Odpovědět 31.12.2012 20:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.