Ahoj,
blizi se mi zkouzka z programovani(1. rocnik VS), a narazil sem na jedno ukazkove zadani(viz. nize), tak bych chtel poprosit o "nastineni reseni".....neco bych take vymyslel, jen me zajima, jak by to resili zkusenejsi a lepsi programatori nez jsem ja.......
diky
1. [5 bodů] Vytvořte třídu Clovek reprezentující jednoho člověka s vlastnostmi jméno, příjmení a věk. Pro všechny atributy napište setry a getry.
2. [5 bodů] Pro třídu Clovek vhodně zastiňte metody toString - vrátí iformaci o osobě, equals - dvě osoby jsou stejné, pokud se shodují jejich jména, příjmení i věk, vhodně zvolte metodu hashCode.
3. [5 bodů] Třídu Clovek doplňte o možnost přirozeného řazení - implementujte vhodné rozhraní. Nejprve řaďte podle příjmení, při jejich shodě podle jména a při shodě podle věku.
4. [5 bodů] Vytvořte třídu umožňující řadit lidi podle věku, při jejich shodě podle příjmení a potom podle jména.
5. [5 bodů] Vytvořte třídu reprezentující frontu zákazníků (použijte zřetězený seznam) - instancí třídy člověk. Tato fronta bude mít metody pro vložení Clovek-a, vybrání z čela a zjištění, zda je fronta prázdná.
1., 2. a 5. je mi celkem jasna, ale u zbylych, si nejsem jist, co by bylo nejvhodnejdi pouzit.........?
predem diky za rady :-)
Fórum › Java
JAVA - priklady
To Foowie : diky :-)
AHoj, diky za typ :-)
tak uz sem si neco zkusil vytvorit.....vytvotil sem si Tridu clovek s clenskymi promennynmi jmeno, prijemni, vek, telefoni cislo + setry a getry + zastinil metody toString(), implementoval sem rozhrani Comparable, implentoval jeho metodu int compareTo()......
ve druhe tride vytvorim List "Cloveku" :-D a radim ho... vse je OK a funguje(pokud radim podle veku),
jen se mi nejak nedari to seradit podle jmena -
nevim, jak mam ziskat tu clenskou promenmou jmeno.....?? :-(
diky za rady :-)
trida Clovek: http://pastebin.com/m317ab129
trida Test: http://pastebin.com/m6e4cc751
Máš 2 možnoti:
1) Místo Comparable budeš implementovat Comparable<Clovek> - pokud jste se učili co jsou to generické typy
2) Přetypuješ Object na Clovek a přistoupíš k property přímo, nebo přes getter - když pracuješ mimo třídu Clovek:
public int compareTo(Object clovek) {
Clovek mujClovek = (Clovek)clovek;
mujClovek.getJmeno() ...
"3. [5 bodů] Třídu Clovek doplňte o možnost přirozeného řazení - implementujte vhodné rozhraní. Nejprve řaďte podle příjmení, při jejich shodě podle jména a při shodě podle věku."
Podle zadání 3. máš udělat řazení dle příjmení. Pokud bude příjmení shodné, má se dále rozhodovat podle jména a pak podle věku. Ty, co se koukám, rozhoduješ jenom podle jména.
/**
* razeni dle jmena
* @param clovek
* @return
*/
public int compareTo(Object clovek) {
String jmeno = this.jmeno;
String jmeno2 = ((Clovek)clovek).jmeno;
if (jmeno.compareToIgnoreCase(jmeno2) == 0) {
return 0; <-- chyba, tady má být rozhodování podle dalšího parametru ...
} else if (jmeno.compareToIgnoreCase(jmeno2) > 0) {
return 1;
} else {
return -1;
}
}
"4. [5 bodů] Vytvořte třídu umožňující řadit lidi podle věku, při jejich shodě podle příjmení a potom podle jména."
Na tohle musíš vytvořít (novou) třídu, která bude implementovat Comparator. Viz google - "java comparator"
To Foowie :
tak uz sem to nak vyresil(jen sem se presne nedrzel zadani ale zakomponoval jsem to do jiz hotove tridy Propiska - nechtelo se mi delat novou tridu.....):
trida Propiska: http://pastebin.com/m3fdec390
trida Test: http://pastebin.com/m5cfff431
je to resene spravne?? nebo byste neco zmenili??
diky za rady
Pokud jde o razeni doporucoval bych org.apache.commons.lang.builder.CompareToBuilder
private static final Comparator<Clovek> CLOVEK_COMPARATOR = new Comparator<Clovek>() {
@Override
public int compare(Clovek o1, Clovek o2) {
return new CompareToBuilder()
.append(o1.vek, o2.vek)
.append(o1.prijmeni, o2.prijmeni)
.append(o1.jmeno, o2.jmeno).toComparison();
}
};
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/builder/CompareToBuilder.html
Reseni: http://pastebin.com/m53f793c4
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Poptávám JAVA programátora pro tvorbu JAVA testu — založil Mailando
Příklady na C# — založil OndraT
C++ priklady — založil noob
Priklady — založil Andrea
Moderátoři diskuze