Metody realizacji języków programowania/MRJP Ćwiczenia 5: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 42: | Linia 42: | ||
'''end'''; | '''end'''; | ||
== Zadanie == | == Zadanie - realizacja mechanizmu "super" == | ||
== Zadanie - tłumaczenie | Wiele obiektowych języków programowania posiada mechanizm umożliwiający wywołanie metody, którą aktualna metoda przedefiniowuje. Np. : | ||
class A; | |||
procedure pisz; | |||
begin | |||
write('A') | |||
end; | |||
end; | |||
class B extends A; | |||
procedure pisz; | |||
begin | |||
write('B oraz'); | |||
super.pisz | |||
end; | |||
end; | |||
Umieszczenie, jako odbiorcy komunikatu, słowa "super" oznacza tu, że chcemy wywołać metodę z nadklasy. | |||
Zaproponuj sposób realizacji tego machanizmu i podaj tłumaczenie "super.pisz" z powyższego przykładu. | |||
== Zadanie - tłumaczenie metod == | |||
Przetłumacz treść metody ...: | |||
class A; | |||
end; | |||
class B extends A; | |||
end; | |||
class C extends B; | |||
end; |
Wersja z 19:11, 26 wrz 2006
Zadanie - tłumaczenie funkcji
Przy założeniu, że mamy do czynienia z językiem bez struktury blokowej (w rekordzie aktywacji nie ma SL) przetłumacz na kod NMW treść funkcji g z poniższego przykładu:
function f(w:integer; var x:integer):integer; begin ... end; function g(y:integer; var z:integer):integer; var a:integer; begin g:=y; a:=z; z:=f(a,a) end;
Zadanie - struktura blokowa
Zakładając, że poniższy fragment programu jest napisany w języku ze strukturą blokową, przetłumacz treść procedury r:
procedure p(a:integer); procedure q(var b:integer); var c:integer; procedure s(d:integer); begin ... end; procedure r; var e:integer; begin e:=a+b; b:=c; s(b); q(e) end; begin ... end; begin ... end;
Zadanie - realizacja mechanizmu "super"
Wiele obiektowych języków programowania posiada mechanizm umożliwiający wywołanie metody, którą aktualna metoda przedefiniowuje. Np. :
class A; procedure pisz; begin write('A') end; end; class B extends A; procedure pisz; begin write('B oraz'); super.pisz end; end;
Umieszczenie, jako odbiorcy komunikatu, słowa "super" oznacza tu, że chcemy wywołać metodę z nadklasy.
Zaproponuj sposób realizacji tego machanizmu i podaj tłumaczenie "super.pisz" z powyższego przykładu.
Zadanie - tłumaczenie metod
Przetłumacz treść metody ...:
class A; end;
class B extends A; end;
class C extends B; end;