Vývojářský blog Tomáše Jechy

Tisk článku Tisk článku

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

[Zpět na blog]

Datum: 27. 7. 2009 12:05       Autor: Tomáš Jecha       Zobrazeno: 3413x

Kategorie: Aplikace, Život, vesmír a vůbec


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)


> Na začátek

 

Hodnocení:

Hlasů: 7
Zvolte své hodnocení

Tomáš Jecha

Tomáš Jecha již několikátým rokem získal ocenění Microsoft MVP. V současné době pracuje ve společnosti AVAST jako architekt a vývojář interních systémů. Působí také jako lektor a konzultant v počítačové škole Gopas. V současné době se zajímá především o SQL Server a technologie nad .NET Frameworkem 4. Společně s Tomášem Hercegem napsal tento web a stará se o jeho administraci.

Podpořte vznik dalších článků
RSS Feed RSS Feed

Diskuse

1 

Reverzní inženýrství

Datum: 21.6.2009 0:53
Autor: Jan Novák
Hodnocení autora: 235
Příspěvků: 783
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..
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Reverzní inženýrství

Datum: 21.6.2009 10:08
Autor: Tomáš Jecha
Hodnocení autora: 697
Příspěvků: 1285
Kdybych tomu vymyslel rozumné názvy, tak to bude až moc jednoduché :-).
 
           [Odpovědět]
 
Hodnocení: 2 Čekejte, prosím...

Správná odpověď

Datum: 27.7.2009 10:55
Autor: Honza Dědek
Hodnocení autora: 210
Příspěvků: 793
Není už čas zveřejnit správnou odpověď?:) Docela by mě zajímala;)
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...

Re: Správná odpověď

Datum: 27.7.2009 13:47
Autor: Tomáš Jecha
Hodnocení autora: 697
Příspěvků: 1285
OK :-) Díky za připomenutí.
 
           [Odpovědět]
 
Hodnocení: 0 Čekejte, prosím...
1 
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.