Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałNatalia Kowalewska Został zmieniony 7 lat temu
1
Rachunek Lambda + Obiektowość część 1. – motywacja
na podstawie: [1] A Lambda Calculus of Objects and Method Specialization [2] Matching [for] the Lambda Calculus of Objects
2
Plan Prezentacji Przykłady motywujące
Formalizm: Rachunek Lambda z Obiektami System Typów dla powyższego
3
Przykłady motywujące
4
JavaScript, Przykład 1. Metody niezdefiniowane w obiekcie (message-not-understood)
5
JavaScript, Przykład 2. Specjalizacja metod klasowych (method specialization)
cp:
6
Cele 1. papieru zamodelować rozszerzanie obiektów...
… pamiętając o specjalizacji metod zrozumieć jak zmienia się znaczenie metody w zależności od zmiany this / self przy dziedziczeniu analiza znaczenia metody w oderwaniu od miejsca deklaracji
7
Cel: formalizm – abstrakcja obiektowości
Środek: rachunek lambda rozszerzony o obiekty
8
Klasy vs Prototypy obiektowość
tworzenie obiektów wg klas (class-based) Java, Python, Smalltalk, ... tworzenie obiektów wg instancji (delegation-based, prototype-based) JavaScript, Self, ...
9
Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)
10
Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects) Przykład
11
Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)
Funkcyjna forma rozszerzania obiektów: : Object → Method → Object
12
Rachunek lambda + obiekty (Untyped Lambda Calculus of Objects)
Modelowanie self za pomocą λ-abstrakcji (funkcji):
13
obserwacje na temat Rachunku Lambda z Obiektami
14
Wzajemnie rekursywne metody (mutually recursive methods)
chcemy wykrywać takie błędy: x niezdefiniowane!: ok: problem gdy 2 metody: m() {n()}, n() {m()} są wzajemnie rekursywne
15
Rachunku Lambda z Obiektowością
System typów dla Rachunku Lambda z Obiektowością Przykład wyprowadzenia
18
Reguły typowania obiektów
czyli specjalizacja raz jeszcze (ale teraz formalniej)
19
Java, Przykład 2. Specjalizacja metod klasowych (method specialization)
cp:
20
Reguły typowania obiektów
21
Interpretacja metody poza kontekstem jej definicji
22
Specjalizacja metod klasowych – inne prace
like Current zaproponowane do języka Eiffel Przykład 2.: nie trzeba rzutować cp.move() z Point na ColoredPoint W.R. Cook. A proposal for making Eiffel type- safe. W European Conf. on Object-Oriented Programming, strony 57–72, 1989.
23
Specjalizację metod opisano także w:
J.C. Mitchell. Toward a typed foundation for method specialization and inheritance. W Proc. 17th ACM Symp. on Principles of Programming Languages, strony 109–124, Styczeń 1990.
24
obserwacje na temat Systemu Typów dla Rachunku Lambda z Obiektami
25
[1] pokazuje poprawność systemu typów
[1]: problem "czy typowalne termy są równe" jest nierozstrzygalny w tym systemie typów
26
pytania?
27
Bibliografia [1] Kathleen Fisher, Furio Honsell, John C. Mitchell. A Lambda Calculus of Objects and Method Specialization W Nordic Journal of Computing, 1(1):3–37 1994 [2] Viviana Bono, Michele Bugliesi. Matching [for] the Lambda Calculus of Objects W Theoretical Computer Science, 212(1-2):101–140 1999
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.