Informace níže se nevztahují k současnému semestru.
Úlohy na procvičení
Virtuální metody
Co vypíše následující program? Jaké jsou typy proměnných b
, d
a d2
?
namespace dedicnost;
class Base
{
public void A() { Console.WriteLine("Base.A"); }
public virtual void B() { Console.WriteLine("Base.B"); }
public virtual void C() { Console.WriteLine("Base.C"); }
}
class Derived : Base
{
public new void A() { Console.WriteLine("Derived.A"); }
public override void B() { Console.WriteLine("Derived.B"); }
public new void C() { Console.WriteLine("Derived.C"); }
}
class Program
{
static void Main(string[] args)
{
var b = new Base();
var d = new Derived();
b.A();
b.B();
b.C();
d.A();
d.B();
d.C();
var d2 = (Base)d;
d2.A();
d2.B();
d2.C();
}
}
Učební výstupy
Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.
- chápat význam klíčových slov
virtual
aoverride
v kontextu virtuálních metod- umět vysvětlit, jak jsou virtuální metody implementované pomocí tabulky virtuálních metod (VMT)
- umět vysvětlit pojmy “dědičnost” a “kompozice” v objektově orientovaném programování
- umět implementovat diskrétní simulaci (discrete event simulation) podle zadaného popisu
- vhodně reprezentovat události a jejich kalendář
- vytvořit model zadaného problému (jeho reprezentaci pomocí programu)