abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:44 | Nová verze

    Byl vydán Mozilla Firefox 125.0.1, první verze z nové řady 125. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vypíchnout lze podporu kodeku AV1 v Encrypted Media Extensions (EME). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 125.0.1 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    dnes 16:44 | Nová verze

    Valkey, tj. svobodný fork již nesvobodného Redisu, byl vydán v první stabilní verzi 7.2.5.

    Ladislav Hagara | Komentářů: 0
    dnes 15:11 | IT novinky

    Společnost Espressif Systems oznámila, že rodinu SoC ESP32 brzy rozšíří o ESP32-H4 s IEEE 802.15.4 a Bluetooth 5.4 (LE) s podporou protokolů Thread 1.3, Zigbee 3.0 a Bluetooth Mesh 1.1.

    Ladislav Hagara | Komentářů: 2
    dnes 13:11 | Zajímavý software

    Kevin Bentley zveřejnil na GitHubu zdrojové kódy počítačové hry Descent 3 z roku 1999: "Někdo se nedávno zeptal, zda budou zveřejněny zdrojové kódy Descent 3. Oslovil jsem svého bývalého šéfa (Matt Toschlog) z Outrage Entertainment a ten mi to povolil. Budu pracovat na tom, aby se to znovu rozběhlo a hledám spolusprávce." [Hacker News]

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Bezpečnostní upozornění

    Byla vydána verze 0.81 telnet a ssh klienta PuTTY. Opravena je kritická bezpečnostní chyba CVE-2024-31497 obsažena ve verzích 0.68 až 0.80. Používáte-li klíč ECDSA NIST P521 a použili jste jej v PuTTY nebo Pageantu, považujte jej za kompromitovaný.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | Komunita

    Hra MineClone2 postavena nad voxelovým herním enginem Minetest byla přejmenována na VoxeLibre.

    Ladislav Hagara | Komentářů: 0
    včera 19:11 | IT novinky

    Společnosti Avast Software s.r.o. byla pravomocně uložena pokuta ve výši 351 milionů Kč. Tu uložil Úřad pro ochranu osobních údajů za neoprávněné zpracování osobních údajů uživatelů jejího antivirového programu Avast a jeho rozšíření internetových prohlížečů (Browser Extensions), k čemuž docházelo prokazatelně po část roku 2019.

    … více »
    Ladislav Hagara | Komentářů: 9
    včera 15:55 | Zajímavý článek

    Bylo vydáno do češtiny přeložené číslo 714 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Pozvánky

    V sobotu 20. dubna lze navštívit Maker Faire Jihlava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Zajímavý software

    Knihovna pro potlačení šumu RNNoise byla vydána ve verzi 0.2. Kvalitu potlačení lze vyzkoušet na webovém demu.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (62%)
     (13%)
     (2%)
     (23%)
    Celkem 443 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: JAVA - priklady

    4.1.2010 10:21 Pavel
    JAVA - priklady
    Přečteno: 5295×
    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 :-)

    Řešení dotazu:


    Odpovědi

    Řešení 1× (krtek007)
    4.1.2010 10:50 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Upravil jsem formátování dotazu, aby byly jednotlivé úkoly oddělené.

    Ohledně těch dvou úkolů se podívejte na java.lang.Comparable a java.util.Comparator. Pro programování v Javě je vůbec vhodné přečíst si JavaDoc k často používaným balíkům (java.lang, java.util, java.io, java.text) a alespoň anotaci všech tříd v těchto balíkách, abyste měl přehled aspoň o tom základním, co vám runtime knihovna Javy poskytuje.
    4.1.2010 11:53 the human Yeoman
    Rozbalit Rozbalit vše Re: JAVA - priklady
    implementuj Comparable ;)
    4.1.2010 11:55 the human Yeoman
    Rozbalit Rozbalit vše Re: JAVA - priklady
    jee - reaguju na odpoved, navic spravnou ... no nic, ignorujte me pls ;)
    4.1.2010 15:21 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    tak uz sem si nec o 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
    4.1.2010 12:03 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    na to Comparable se samozrejme podivam, ale ve skole jsme to nedelali :-( (a ani to neni nikde v osnovach)..... takze bych uprednostnil nejake(jednodussi) reseni (vrchol toho co jsme delali byl spojovy seznam, ArrayList,.......) takze by po me asi nemeli chtit nejake "komparatoty" :-).....napada Vas nake jednodussi reseni??

    ja kdyz sem delal neco podobneho(semestralni praci - jednoduchou databazi), tak sem si kazdy Objekt me tridy "prevedl" do Stringu (kde byli vsechny jeho clenske promenne) a ten jsem pak radil....jenze to bylo urcite dost hloupe resene....

    diky za rady :-)
    4.1.2010 12:26 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Jednodušší řešení neexistuje. To, co jsem napsal, je přesně podle vámi napsaného zadání. Když se podíváte na JavaDoc java.lang.Comparable, najdete tam, že implementace této třídy je právě ono „přirozené řazení“ – a o tom se píše v zadání.
    4.1.2010 12:54 kulik
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Dost zalezi na tom co je to za skolu, dneska uz se obcas dokonce pozaduje, aby clovek zvladl i neco, co se pri vyuce nedelalo :-) Jinak jak uz nekdo psal, jednodussi reseni nez komparator asi neni. Prevest objekt na string a ten pak tridit neni snad primo hloupe, ale dobre reseni to rozhodne neni.
    4.1.2010 13:28 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    tak mi zrejme nezbyva nic jineho nez to co ste doporucili......

    jinak jen pro informaci: sem prvnim rokem a FEL CVUT....

    diky za rady :-)
    MaFy avatar 4.1.2010 14:40 MaFy | skóre: 24 | blog: kecy | Praha
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Nevim, na ktere katedre, ale na Kybernetice tu Javu neuci uplne dobre...
    Lidé se dělí do 10 skupin. Na ty, co rozumí binárnímu kódu a na ty ostatní...
    4.1.2010 15:03 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ja sem na novem programu Kybernetika a Robotika :-)...... to zda to uci dobre nebo spatne nemohu dost dobre posoudit, protoze programovani moc nerozumim.....muzu jen rict, ze cviceni me bavi: s ucitelem byla sranda, rad na cokoli odpovi,...a myslim, ze sem se toho za tech par tydnu celkem dost naucil.....:-)

    Jinak o vyuku techto predmetu(spojenych s programovanim) se stara katedra informatiky, ne?
    4.1.2010 15:23 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    tak uz sem si nec o 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
    4.1.2010 15:45 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Získáte jí tak jak jste získal ten věk: přetypováním. A tu celou kaskádu ifů si můžete ušetřit, stačí tam dát return jmeno.compareToIgnoreCase(jmeno2).
    In Ada the typical infinite loop would normally be terminated by detonation.
    4.1.2010 15:58 kuka
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Nelze mit dve stejne metody compareTo. Na jina razeni nez prirozene je treba vytvorit vhodny Comparator. Nepouzivej pro telefonni cislo int, ale String (jednak nejde o "skutecne" cislo, protoze pro nej nemaji zadny smysl aritmeticke operace, jednak se ti tam nevejde napr. cislo ze zahranici). Je nejaky duvod proc nepouzivat generika (napr. stara verze prekladace)? Pokud ne, tak je pouzivej.
    4.1.2010 16:39 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    to ze nesmim mit dve "stejnojmenne" metody je mi jasne(navic prekladac to ani nedovoli)....dal sem to tam jen pro ukazku....

    nakonec sem to vyresil trochu jinak:

    trida Propiska: http://pastebin.com/m3fdec390 trida Test: http://pastebin.com/m5cfff431

    je to resene spravne?? nebo byste neco zmenili??

    diky za rady
    4.1.2010 17:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Za prvé, vkládejte prosím zdrojáky jako přílohy přímo na Abíčko, ať s dotazem zůstanou. Ty odkazy na Pastebin přestanou dříve či později fungovat, a ten dotaz pak nebude dávat smysl.

    Za druhé, je divné míchat dohromady přístup přímo přes členskou proměnnou a přístup přes getter. Buď chcete mít možnost v potomcích metody přetížit a porovnávat podle přetížených metod, pak používejte gettery. Nebo chcete porovnávat důsledně podle hodnot v tomto typu, pak používejte přístup přímo přes členské proměnné (který je také o fous rychlejší). Ale kombinovat to bez nějaké logiky svědčí akorát o tom, že nevíte, co chcete.

    Za třetí, zcela vám chybí test, zda druhý objekt je také typu Propiska. Lepší je použít generika, pak to za vás pohlídá kompilátor, pak ale stejně potřebujete udělat test na null.

    Za čtvrté, stav by měl být zřejmě výčtový typ (enum).

    Za páté, soustava tolika do sebe vnořených ifů by ve vás vždy měla vyvolat podezření, že je na tom kód něco špatně. Zkusil bych třeba tohle:
    if (other == null) {
      return -1;
    }
    
    assert this.nazevFirmy != null;
    int result = this.nazevFirmy.compareTo(other.nazevFirmy);
    if (result != 0) {
      return result;
    }
    
    assert this.barva != null;
    result = this.barva.compareTo(other.barva);
    if (result != 0) {
      return result;
    }
    
    assert this.barvaPisma != null;
    result = this.barvaPisma.compareTo(other.barvaPisma);
    if (result != 0) {
      return result;
    }
    
    assert this.stav != null;
    result = this.stav.compareTo(other.stav);
    return result;
    
    5.1.2010 07:11 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Za šesté nazvat něco "pomocna" je zhovadilost :P

    Jinak ty asserty jsou zde myslím špatně. Z logiky věci vyplývá že,
    int result = 0;
    
    if (this.nazevFirmy != null) {
        result = this.nazevFirmy.compareTo(other.nazevFirmy);
    } else if (other.nazevFirmy != null) {
        result = 1;
    }
    
    if (result != 0) {
        return result;
    }
    
    ...
    
    nebo kompaktněji
    int result = (this.nazevFirmy  != null) ? this.nazevFirmy.compareTo(other.nazevFirmy)
               : (other.nazevFirmy != null) ? 1
                                            : 0;
    
    In Ada the typical infinite loop would normally be terminated by detonation.
    5.1.2010 07:54 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ty asserty jsou přesně podle původního kódu (který nepředpokládal nullové hodnoty), jenom v tom původním kódu chyběly. Pokud tam prázdné hodnoty mohou být, pak je samozřejmě nutné s nimi počítat.
    5.1.2010 08:14 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Aha, v tom případě bych to ale nechal chcípnout na normální nullpointerex. A nebo bych assertoval obě strany, abych neporušil kontrakt na antisymetričnost.
    In Ada the typical infinite loop would normally be terminated by detonation.
    5.1.2010 08:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Podle mne pokud předpokládám, že ta hodnota nemůže být prázdná, má ten předpoklad být v kódu vyjádřen assertem (a příslušně zdokumentován v JavaDocu).
    5.1.2010 09:00 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Výsledek bude stejný - výjimka. Akorát s assertem budou dvě výjimky, podle stavu assertions on/off. Výjimky jako NPE jsou na to, aby se tyhle předpoklady nemusely explicitně předpokládat. :)

    Pokud už chcete někam nějakou blbuvzdornost strkat, tak by to mohl být spíše konstruktor a setter.
    In Ada the typical infinite loop would normally be terminated by detonation.
    5.1.2010 10:13 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Výsledek je v tomto případě a se současnými kompilátory stejný, ale ten program pokaždé znamená trochu něco jiného.

    V případě bez assertů je kontrakt metody takový, že nemá žádné požadavky na vstupní parametry, a v té metodě je chyba – neošetřený případ, kdy některá z hodnot bude prázdná. Pokud někdo tuto metodu zavolá na objekt s prázdnou hodnotou, dojde k výjimce, a je to chyba programátora této metody.

    Pokud se použijí asserty (a zdokumentuje se to v JavaDocu, kompilátor zatím s asserty pracovat neumí), je součástí kontraktu metody to, že hodnoty nejsou prázdné. Pokud někdo zavolá metodu na objekt s prázdnými hodnotami, je to chyba volajícího. Některé budoucí verze kompilátorů snad budou umět na takové chyby upozornit už v době překladu.
    5.1.2010 11:23 kulik
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Asserty nemaji s kontraktem nic spolecneho, jejich ucel je jiny. Nikdo nebude zkoumat zdrojaky metod, aby se dozvedel, s jakymi parametry je muze nebo nemuze volat (to mozna u neverejnych metod, tam ale o kontraktu nema prilis smysl mluvit).
    5.1.2010 11:32 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Účel assertů je právě popsat kontrakt (nebo aspoň jeho část) strojově zpracovatelným způsobem. Problém je, že současné asserty v Javě se ověřují až za běhu, a jsou tak obecné, že bude problém kontrolovat je v době kompilace – na to by se líp hodily nějaké anotace (také už se takové anotace někde používají, třeba Idea umí používat anotace @Null a @NotNull). Ale je potřeba si uvědomit, kdy se asserty do Javy přidaly.
    5.1.2010 13:41 kulik
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ja mam (myslim logicky) na mysli prave to, co asserty v jave jsou, nikoliv to co nejsou nebo co jsou nekde jinde. A v soucasnosti assery v jave neslouzi k popisu kontraktu a ani tak nebyly pri zavedeni do jazyka mysleny.
    5.1.2010 16:05 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Podle vás je assert jenom syntaktický cukr místo
    if (Boolean.getBoolean("assertion.enabled") && !(expr)) {
      throw new AssertionError(…);
    }
    
    ? K čemu by bylo dobré něco takového do jazyka zavádět?
    5.1.2010 20:59 kulik
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Nejde ani tak o to, co to je podle mne, ale co to je podle autoru. Doporucuji precist si to na strankach Sunu.
    6.1.2010 11:43 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Na odkazované stránce autoři kupodivu píší o tom samém, co jsem psal já.
    6.1.2010 17:45 kulik
    Rozbalit Rozbalit vše Re: JAVA - priklady
    To si vubec nemyslim, nicmene alespon se ukazuje, ze si v tomto tezko porozumime a dalsi diskuse je asi zbytecna.
    5.1.2010 14:42 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    v té metodě je chyba – neošetřený případ, kdy některá z hodnot bude prázdná
    Jenže ve Vašem případě je ten případ stejně špatně/dobře ošetřen. Buď null je platná hodnota, a pak se to může řešit extra porovnáním tak, jak jsem navrhoval. A nebo null platná hodnota není. A v případě vstupu neplatné hodnoty se vyhazuje výjimka. A je už jen na úzusu jestli vyhodíte NPE nebo jinou, akorát že kvůli NPE nemusíte psát další řádky kódu, čímžto má marginální výhodu.

    Pokud chcete něco dokumentovat, můžete napsat do dokumentace jednu větu: žádné z polí nesmí být null. Slabé povahy takový guard ještě můžou chtít vynutit v konstruktoru/setteru jak jsem řekl.
    In Ada the typical infinite loop would normally be terminated by detonation.
    5.1.2010 15:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Vy pořád píšete o běhu na produkčním prostředí. Já píšu o vývoji. V Javě je snaha co nejvíc kontrol přesunout do vývoje, nejlépe do fáze kompilace, nebo alespoň testů. Pokud nedodržíte kontrakt a do metody přijímající jako parametr int budete cpát String, taky dostanete za běhu výjimku – ale je snaha to odchytit dřív, konkrétně tohle už v době kompilace. assert má stejný význam, akorát současné kompilátory asserty nijak nekontrolují. Na produkčním prostředí můžete mít assert vypnutý a kód může normálně projít (ne tento konkrétně, ale jiný kód chráněný assertem).
    A v případě vstupu neplatné hodnoty se vyhazuje výjimka.
    Jenže je podstatné, jestli programátor tu neplatnou hodnotu kontroluje, nebo jestli si dá jako podmínku, že na vstupu neplatná hodnota nesmí být, a pak už ji nekontroluje. Test s ifem a vyhozením výjimky je první případ, assert nebo třeba deklarace typů parametrů metody je druhý případ – programátor hodnoty na vstupu nekontroluje a předpokládá že jsou správně. A deklarovaný typ nebo assert jsou jen nápověda pro nástroje, které tuhle kontrolu udělají za programátora, který danou metodu využívá – přičemž u deklarace typu parametru tu kontrolu umí udělat už kompilátor, u assertů to udělat (zatím) neumí a je to ponecháno až na JVM.
    5.1.2010 16:40 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    OK, chápu Vaši pointu. Co se týče vývoje a testování tak striktně řečeno by mělo být posílání nullů do té funkce součástí testu a výsledek by měl odpovídat specifikaci (ať už je jakákoliv).

    To o čem mluvíte je přesunutí dalších kontrol na úroveň jazyka - tak, jako je statická typová kontrola, může být i statická kontrola na nenulové objekty. Potíž je ale v tom, co říkáte, totiž že toto vlastnost jazyka není. (Např. v jazyce Ada 2005 můžete u proměnné toto vyjádřit.) Tudíž je momentálně uvedený assert ekvivalentem testu s NPE a je momentálně zbytečné ho používat. Až to bude součástí jazyka, nebo bude aspoň známo, kdy bude a jak přesně to bude fungovat, je možné o tom polemizovat. Čistě syntakticky by ale bylo lepší aby guardy parametrů byly u jejich deklarace a ne někde v těle funkce.
    In Ada the typical infinite loop would normally be terminated by detonation.
    5.1.2010 17:25 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Potíž je ale v tom, co říkáte, totiž že toto vlastnost jazyka není.
    Není to vlastnost současných kompilátorů, vlastnost jazyka to je od verze 1.4. Problém assertů v Javě je ten, že jsou tak obecné, že kompilátor nemůže umět vyhodnotit všechny možné případy. Ale nenulovost by umět vyhodnocovat mohl. A možná to už i nějaké nástroje na statickou kontrolu kódu dělají.

    Ani kompilátor od Sunu ve všem neodpovídá plně specifikaci Javy (tj. že by využíval všechny možnosti dané jazykem) – třeba takovou anotaci @SuppressWarnings jednapětkový kompilátor od Sunu ignoroval, přestože byla součástí runtime knihovny (a u Javy se rozdíl mezi jazykem a runtime knihovnou stírá).
    Tudíž je momentálně uvedený assert ekvivalentem testu s NPE a je momentálně zbytečné ho používat.
    Funkčně ano, ale sémanticky to ekvivalentní není.

    Souhlasím s vámi, že dnes není prakticky rozdíl*) v chování aplikace když použiju assert nebo klasický if a vyhození výjimky. Ale význam toho kódu je odlišný a je podle mne škoda se toho významového rozdílu zbavovat.

    *) samozřejmě až na to, že s vypnutými assertions je instrukce assert ekvivalentní prázdné instrukci, takže se ušetří provedení pár instrukcí.
    Čistě syntakticky by ale bylo lepší aby guardy parametrů byly u jejich deklarace a ne někde v těle funkce.
    Ano, to jsem psal a zmiňoval jsem anotace, které ovšem v Javě 1.4, kde byly zavedeny asserty, nebyly.
    5.1.2010 20:54 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Problém assertů v Javě je ten, že jsou tak obecné, že kompilátor nemůže umět vyhodnotit všechny možné případy.

    No, ano. A tudíž je to z hlediska detekce při kompilaci k ničemu. Kdyby raději vzali ten jeden případ a dotáhli ho do dokonalosti. Java má vůbec zajímavou historii pokusů a omylů.
    Ano, to jsem psal a zmiňoval jsem anotace, které ovšem v Javě 1.4, kde byly zavedeny asserty, nebyly.

    Anotace mi přijdou jako takový úlet kde se kompenzují všechny problémy, které by se měly řešit jinde. Druhý úlet podobného rázu je pak "programování v snippetech", jak to dovolují "moderní IDE".
    In Ada the typical infinite loop would normally be terminated by detonation.
    5.1.2010 21:16 kulik
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ne opravdu to neni vlastnost jazyka od verze 1.4. Je presne definovano, co aserce jsou a rozhodne nejsou urcene ke kontrole nejakych invariantu behem prekladu. V nekterych pripadech by to slo, ale proste aserce to k tomuto ucelu neslouzi. Mozna ze jednou nekdo vymysli, jak je k tomuto ucelu pouzivat (ja o tom pochybuji), ale zatim to tak jednoduse neni. Sam asercim fandim, ale napriklad vyse uvadene umisteni aserce tesne pred radek, na kterem pri poruseni aserce ihned dojde k NPE, postrada smysl. Kdyz uz, tak by melo mozna vyznam umistit vsechny aserce tykajici se vstupu na zacatek metody, pak by to plnilo urcitou dokumntacni funkci. Aserce si precte pouze programator a ten by mel tak jako tak videt, ze na pristim radku dojde k NPE (pokud to nevidi, tak mu stejne zadna aserce nepomuze) a vysledkem je pouze prodlouzeni a tim zneprehledneni kodu.
    6.1.2010 11:48 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ne opravdu to neni vlastnost jazyka od verze 1.4. Je presne definovano, co aserce jsou
    Doporučuju přečíst si ten dokument, který jste odkazoval.
    rozhodne nejsou urcene ke kontrole nejakych invariantu behem prekladu.
    To jsem taky nikde nepsal, já jsem psal o vývoji.
    Sam asercim fandim, ale napriklad vyse uvadene umisteni aserce tesne pred radek, na kterem pri poruseni aserce ihned dojde k NPE, postrada smysl. … Aserce si precte pouze programator a ten by mel tak jako tak videt, ze na pristim radku dojde k NPE
    Předpoklady je nutné do kódu napsat hned, když se píše – až ten jednoduchý kód na dva řádky natáhnete na deset řádků, už nikoho nenapadne assert tam doplňovat. Stejně tak to nikoho nenapadne v okamžiku, kdy přístup přes členskou proměnnou nahradí voláním metody a možnost vyhození NPE přestane být tak zjevná.
    6.1.2010 11:55 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ještě mne k tomu napadla jedna věc – assert v kódu zároveň znamená něco jako komentář „vím o tom, že tahle podmínka musí být splněna“. Takže když budu číst výše uvedený kód bez assertů, budu muset začít hledat, jestli ty hodnoty opravdu nemohou být prázdné, nebo jestli je v tom příslušném kódu chyba, nebo jestli je záměr vyhazovat NPE (a chybí to třeba v dokumentaci). Když je tam assert napsaný, vím, že neřešení prázdných hodnot byl autorův záměr.
    6.1.2010 13:36 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Já raději používám komentáře, nikoliv něco jako komentáře :-)
    In Ada the typical infinite loop would normally be terminated by detonation.
    6.1.2010 15:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Jenže komentář vám nevyhodí za běhu výjimku, když nastane ta situace, která podle assertu nastat nikdy neměla… A neumožní ani žádné jiné strojové zpracování.
    6.1.2010 17:02 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Takže když budu číst
    a
    strojové zpracování
    jsou dvě různé věci.

    A já pro lidi píšu lidsky a už jsme si ujasnili, že asserty jsou strojově momentálně na prd. A když už mluvíme o strojovém zpracování tak si dovolím ještě dvě poznámky.

    Za prvé proboha proč musím do JavaDocu opisovat jména parametrů (případně jejich typy), když to v zápětí píšu do deklarace. Vemte si příklad z perlovského Getopt::Euclid.

    Za druhé divil byste se co všechno lze relativně spolehlivě stojove zpracovat. Bylo by stokrát příjemnější kdybych mohl psát "jméno nesmí být null" do komentáře a dostal z toho varování překladače, pokud tam někde budu cpát null, než abych strkal na dvacet míst kódu nějaké kryptogramy a počítač mi je překládal do češtiny.
    In Ada the typical infinite loop would normally be terminated by detonation.
    7.1.2010 07:22 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: JAVA - priklady
    už jsme si ujasnili, že asserty jsou strojově momentálně na prd
    Pokud váš kód nikdy nespouštíte. Pokud jej spouštíte například v testech, můžete spoustu porušení kontraktu odhalit už během testů. A i když se na chybu přijde až během normálního testování, pořád assert pomůže najít skutečné místo vzniku chyby (zatímco když necháte program běžet dál, může někdy spadnout až za dost dlouho, a původní příčinu pak budete dlouho hledat).
    7.1.2010 06:11 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Po takmer desatroci programovania v Jave je assert pre mna okrem ineho aj indikator kvality kodu. Zatial co uplnu nepritomnost assertov nehodnotim nijako -- niektori ho proste pausalne nepuzivaju -- zriedkave pouztie assertov v zriedkavych koplikovanych castiach kodu hodnotim ako pozitivnu snahu programatora zaviest prisnejsiu kontrolu seba sameho. Ak je vsak kod prepchaty assertami, vidim to ako varovny signal, ze autor nebol schopny urobit natolko robustny dizajn, aby mu vobec sam doveroval.

    MaFy avatar 4.1.2010 17:48 MaFy | skóre: 24 | blog: kecy | Praha
    Rozbalit Rozbalit vše Re: JAVA - priklady
    V tom programu jsem byl taky. Nevim, kdo to presne zajistuje, ale kantor na prednasky byl divny, ale na cvika jsem mel fajn kantora, to je pravda... Ale ta Java proste nic moc. Mozna to je jen muj nazor, protoze jsem Javu znal jeste predtim, tak me to treba tolik neoslovilo...
    Lidé se dělí do 10 skupin. Na ty, co rozumí binárnímu kódu a na ty ostatní...
    4.1.2010 20:34 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    to ja musim rict, ze me naopak Java docela zaujala.....ale ono asi hodne zalezi na ucitelich..... rekl bych, ze to byl nejlepsi(a zrejme nejuzitecnejsi) predmet prvniho semestru, ale ukaze se na zkouzce......btw jaka byla zkouzka??a vubec: jake bylo cele studium??nebo stale studujes?? :-)

    MaFy avatar 4.1.2010 20:38 MaFy | skóre: 24 | blog: kecy | Praha
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Nemohu posoudit, protoze jsem nedosel ani prvni semestr.... Nastoupil jsem vloni v zari. No a Javu uz jsem pouzival o rok driv, takze cvika pohoda, matiku jsem daval, a to ostatni celkem nuda - hlavne ta robotika. Roboty ze stavebnice pro deti od osmi let mi uplne nenavozovala pocit vysokoskolaka. Uvazoval jsem o zmene predmetu. Nakonec jsem se rozhodl radikalneji. Nechal jsem to plavat, abych se mohl naplno venovat praci a v zari si to dam kombinovane..
    Lidé se dělí do 10 skupin. Na ty, co rozumí binárnímu kódu a na ty ostatní...
    4.1.2010 21:18 HANZ
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Nazdar taky jsem prvním ročníkem na felu a chtěl bych vědět jak jsi se připravoval na zkoušku z prg? já třeba vůbes nevím co josu to metody set a get?
    4.1.2010 21:45 Pavel
    Rozbalit Rozbalit vše Re: JAVA - priklady
    no tak to si asi v pr.... kdyz nevis ani tohle :-D.....copak ste to nedelali na cvicenich(nebo prednaskach???)na jakem si programu??

    na druhou stranu take nevim co od toho mam ocekavat:-(.....

    ucil sem se z materialu co jsou na eduwebu(je to celkem pekne zpracovane), dale primo od zdroje napr: http://java.sun.com/docs/books/tutorial/ , pak ucebnice Pavla Herouta,.....

    na netu je mraky informaci, zdrojaku,,.....

    5.1.2010 19:18 Peta
    Rozbalit Rozbalit vše Re: JAVA - priklady
    Ahoj prosimte mohl by jsi nekam upnout co jsi vytvořil??? moc dík

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.