\

Školení Návrhové vzory, OOP a UML


 Tuesday, September 21, 2004
Malá programátorská hádanka

Máte následující kód:

class

Test :  BaseTest

{

private string m_rene;

public Test() : base ()

{

m_rene = "Rene";

}

public override void WriteName()

{

Console.WriteLine(m_rene);

Console.Read();

}

}

Metoda WriteName vypíše za určitých podmínek jen prázdný řetězec - víte kdy? ;)

Update: A víte, jak se bude chovat stejný kód po přepsání do C++?



Tuesday, September 21, 2004 3:32:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [25]  Programátorské hádanky


Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
Pokud bude volana z konstruktoru BaseTest ?
Tuesday, July 19, 2005 11:01:36 AM (Central Europe Standard Time, UTC+01:00)
Vyborne:) Velmi rychla odpoved...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
Rikal jsem si, ze odpovim si zkusebne odpovim, ale vidim, ze jsem trochu pomalej..

Take to bylo docela snadne :-).
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
Ano, mne to prijde taky jednoduchy, ale strizlivym odhadem tak 95% uchazecu o praci na vyvoj v jazyce C# s tim bude mit problemy.... Vychazim z toho, ze spusta expertu nezna treba ani operator as, natoz aby se zabyvala dedicnosti
Jsem rad, ze ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
V C++ sa vyvolanim metody WriteName z konstruktoru BaseTest zavola metoda v triede BaseTest a nie v triede Test.
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
To Andrej:
Ano, take spravne, vidim, ze si budu muset vymyslet nejake vetsi zapeklitosti;)
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
Ale to je velmi zaujimava moznost zdroja chyb:)

V tejto suvislosti by ma zaujimalo ako sa v C# da z konstruktoru BaseTest zavolat metodu WriteName v triede BaseTest a nie overridnutu v triede Test?
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
no, musim rici, ze operator "as" z C# neznam z hlavy take, coz tedy bude asi tim, ze 70% kodu pisu v VB.NET. To ze pretypovani mohu udelat v C# x ruznymi zpusoby, ktere se lisi v podstate jen mirou pohodlnosti ("e as type" je ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
To bohuzel neni zadnym elegantnim zpusobem mozne.
Jedno z reseni
public BaseTest()
{

DoSomeWork();
}



public virtual void WriteName()
{
DoSOmeWork();
}

private void DoSomeWork()
{

}
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
To Michal: Kdyz mi nekdo rekne, ze programuje 2 roky v C# a nezna ani jeho klicova slova, tak je to empiricky overeny spolehlivy indikator, ze vetsinou neumi vubec nic - ani algoritmizovat, ani nezna syntaxi JEDINEHO jazyka, dedicnost a ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
Zalezi samozrejme na situaci a predchozim tvrzenim uchazece. Ale ja se podobnym otazkam snazim vyvarovat, anebo jsou pro me pouze k dokresleni a dopotvrzeni znalosti uchazece.

Nejvice casu obvykle venuji algoritmizaci, zpusobu prace, ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
No, Rene, kdyz nekdo tvrdi, ze programuje 2 roky v C# a nezna nejake to klicove slovo, tak se da 100% rici, ze keca, ze se vytahuje, precenuje apod. Ale tezko uz, ze neumi algoritmizovat, pripadne ze nezna syntaxi jineho jazyka :-)
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
To Petr Zahradnik: Ja jsme nepsal o syntaxi JINEHO jazyka, ale JEDINEHO jazyka (myslen C#).
Ten komentar jsem nenapsal uplne dobre - chtel jsem tim rict, ze kdyz u uchazece, ktery sam o sobe tvrdi, jaky je "advanced" vyvojar s dlouholetou ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
Pridam taky zkusenost s novymi lidmi. Stale hledame nove lidi na praci s mssql - datove sklady a aplikace nad nimi. Nechceme moc, staci solidni znalost sql a najaky ten c#. Ovsem drtiva vetsina lidi mssql vubec nevidela!!! Dalsi z nich na nem meli ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
>Ale to co jsem chtel rict: vetsina si klidne prijde na pohovor a neumi z pozadovaneho vubec, ale vubec nic.

Ono je to mnohdy zpusobeno spise psychykou uchazece ze ve vypjatych situacich (pohovor takovou urite je) proste vypina mozek a neni ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
To Rene - Jo tak, C# == JEDINY JAZYK, no dobra :-) Ale jo, vicemene s Tebou souhlasim, kdyz nekdo dela borce v necem, co neumi, da se ocekavat, ze toho vazne moc neumi ani jinde. Ale zase muze byt trema apod. - nevim, ja na pohovory nechodim, ani ...
Tuesday, July 19, 2005 11:01:37 AM (Central Europe Standard Time, UTC+01:00)
:) "C# == JEDINY JAZYK"
Ehm, ehm, teda Petre z tebe by byl opravdu vyborny demagog
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
Rene, no tak pockat, to jsi psal Ty, ze tim jedinym jazykem myslis C#, ne? Jsem snad natvrdly nebo mi neco unika? :-)
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
Asi jsme se opravdu nepochopili. Tim jedinym jsem myslel, ze jde o jediny jazyk, kteri uchazeci uvedou v seznamu jazyku, ktere ovladaji.
Pojem "Jedinym" jsem tedy nepoužil ve smyslu jedinecnost jayzka C#, ale spise jako upozorneni na to, ...
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
Jo takhle :-) No tak pak uz je zcela jasno :-) Tak to jo...
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
Nuz, asi idem s krizom po funuse, ale dovolim si male filozofovanie o tej hadanke ;-). [pre C# verziu]

Ad.1:
Podla mna nezalezi na tom, ci sa metoda WriteName zavola z konstruktora BaseTest alebo Test. Zakazdym sa totiz vola "prekryta" ...
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
To Marek Samaj:
Ad 1) To mate pravdu, ale kod tridy Test byl dan a v nem volani WriteName neni.
Ad 2) O tride BaseTeset nic nevite - muze byt abstraktni, nemusi nic vypisovat atd.
Ad 3) Mam rad explicitni styl, proto volam base v kodu sam.
Ad 4) ...
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
Dovolil by som si malu poznamku k
Ad 4) Nemela. Volani virtualnich metod z konstruktoru neni doporucovano - zkuste si nainstalovat fxCop;)

To je pravda predovsetkym pre C++. V C# by som toto doporucenie nevidel takto kriticky. Velmi sa mi paci ...
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
To Robo:
Nebezpecne je to i v C#. Vami uvadeny priklad je pekny, ale co kdyz metoda CreateColumnCollection() bude chtit pracovat s promennymi, ktere jsou inicializovany v konstruktoru?
Dle meho C# timto obchazi princip konstruktoru, protoze dovoluje ...
Tuesday, July 19, 2005 11:01:38 AM (Central Europe Standard Time, UTC+01:00)
Samozrejme, ze svojim sposobom mate pravdu. Chcel som len upozornit, ze netreba zatracovat volanie virtualnych metod z konstruktoru, lebo niekedy daju sa tymto sposobom velmi elegantne riesit problemy, ale samozrejme clovek stale musi si byt isty, ...
Comments are closed.