Programátorská hádanka - řešení

Tomáš Jecha       27. 7. 2009       Offtopic       6726 zobrazení

Dnes jsem vymyslel jednu programátorskou hádanku. Zajímalo by mě, zda ji někdo vyřeší, nepatří mezi ty nejlehčí :-). Tady je:

Tři programátoři Jack, John a Jeff píšou aplikaci pro evidenci zakázek jedné menší firmy. Rozhodnou se, že projekt se bude skládat ze 3 assembly (dll knihoven):

  • datová vrstva
  • vrstva business objektů
  • prezenční vrstva

Indicie:
(1) Třída A používá třídu ComboBox.
(2) Třída B, I a J používá třídu DbCommand.
(3) Jeff nepsal žádné rozhraní.
(4) Třída C implementuje rozhraní H.
(5) Třída B používá třídu F.
(6) Internal rozhraní H psal John.
(7) Třída I je internal a psal ji Jack, stejně jako třídu A.
(8) Třídy A a C jsou ve stejné assembly.
(9) Třídy J a E používají třídu I.
(10) Třídu public B a rozhraní H psal stejný vývojář.
(11) Internal třída F je v jiné assembly než třída A a I, ale psal ji stejný vývojář.
(12) Jack při psaní projektu neudělal žádnou chybu.

Otázka:
Který z programátorů by si zasloužil výchovný pohlavek a proč?

Pokud přijdete na odpověď, zkuste si ji nechat zatím pro sebe - jen mi pošlete mail na jechtom[uzenáč]seznam.cz a já přidám příspěvek, že jste úspěšně úlohu vyřešili.

Řešitelé:

  • 21.6.2009 00:20 - správné řešní Marek Eichler
  • 22.6.2009 20:15 - správné řešní Pavel Veselý
  • 23.6.2009 10:10 - správné řešní Rudolf Franěk
  • 23.6.2009 10:46 - správné řešní vlko a stopo
  • 23.6.2009 20:44 - správné řešní Tomáš Beránek
  • 23.6.2009 23:11 - správné řešní Martin Vích

Řešení

Slib zveřejnit řešení se mi vytratil z hlavy, omlouvám se a děkuji Honzovi za upomenutí. Jak to tedy bylo? Použiji řešení od Martina Vicha, které mi přišlo jako jedno z nejsrozumitelnějších (jen jsem do závorek přidal komentáře a čísla bodů, podle kterých lze jednotlivá tvrzení podpořit):


Chybu udělal John, protože použil třídu DbCommand v business vrstvě a obchází tak datovou vrstvu, který by měla jako jediná komunikovat s databází.


Třída A - prezenční vrstva, protože ComboBox (1)
Třída I - datová vrstva, protože DbCommand (2)
Třída F - business vrstva, protože je v jiné assembly než A a I (11)
Všechny tyto třídy psal Jack, takže jsou dobře. (12, 7, 11)


B implementuje F, která je internal, takže je v business vrstvě (k internal třídě totiž nelze přistoupit z jiné assembly). (5, 11)
B používá DbCommand, což je v business vrstvě chyba (s databází má komunikovat jen datová vrstva). (2)
B a rozhraní H psal jeden člověk, takže to musí být John. (6, 10)

 

hodnocení článku

0 bodů / 2 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Programátorská hádanka

Není už čas zveřejnit správnou odpověď?:) Docela by mě zajímala;)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

OK :-) Díky za připomenutí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Programátorská hádanka

Jak jsem uviděl jména těch tříd a interfaců, hned jsem si vzpoměl jaká legrace je rozebírat obfuskovanou assembly :) Ale řešení mě přitom bohužel nenapadlo..

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Kdybych tomu vymyslel rozumné názvy, tak to bude až moc jednoduché :-).

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback