SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Scenario
In a first person shooter:
enemies tend to change their behavior when they become aware of the
player’s presence (and then again when they empty their magazines),
under the hood, they are typically represented by objects and
references pointing at them are often spread across the whole memory.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 2 / 14
Problem
How to represent enemies?
Single class with a typecode—clumsy.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 3 / 14
Problem
How to represent enemies?
Single class with a typecode—clumsy.
Multiple classes, events and pointer redirection—too complicated, not
feasible.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 3 / 14
Problem
How to represent enemies?
Single class with a typecode—clumsy.
Multiple classes, events and pointer redirection—too complicated, not
feasible.
The strategy pattern.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 3 / 14
Reclassification
Change of a class of an object during its lifetime.
Not implemented in current industrial programming languages.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 4 / 14
Issues
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
Issues
Implementation (flexible and efficient).
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
Issues
Implementation (flexible and efficient).
Type safety.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
Issues
Implementation (flexible and efficient).
Type safety.
Halfway executed methods invoked on the reclassified object.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
Issues
Implementation (flexible and efficient).
Type safety.
Halfway executed methods invoked on the reclassified object.
Overall design: cleanliness, consistency and interaction with
other features of the language.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
The Strategy Pattern
Implementation: indirect pointers.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 6 / 14
The Strategy Pattern
Implementation: indirect pointers.
Envelope defines its own type.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 6 / 14
The Strategy Pattern
Implementation: indirect pointers.
Envelope defines its own type.
Halfway executed methods continue their execution on the original
object—they are not aware of the replacement. However, they may
damage the context.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 6 / 14
Smalltalk’s become:
Implementation: redirect pointer referencing class object.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
Smalltalk’s become:
Implementation: redirect pointer referencing class object.
No type safety (as in the rest of the language).
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
Smalltalk’s become:
Implementation: redirect pointer referencing class object.
No type safety (as in the rest of the language).
Halfway executed methods continue their execution—it is up to the
programmer to make sure they cause no harm.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
Smalltalk’s become:
Implementation: redirect pointer referencing class object.
No type safety (as in the rest of the language).
Halfway executed methods continue their execution—it is up to the
programmer to make sure they cause no harm.
Overall design in sync with the rest of the language.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
Gilgul
Implementation: indirect pointers.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 8 / 14
Gilgul
Implementation: indirect pointers.
Optionally, an exception is raised when reclassifying an object with
methods on the stack. When all methods invoked on that objects are
unwound, the last one is restarted.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 8 / 14
Gilgul
Implementation: indirect pointers.
Optionally, an exception is raised when reclassifying an object with
methods on the stack. When all methods invoked on that objects are
unwound, the last one is restarted.
Reclassification is a global issue—indirectly or directly reclassifying
methods should either be side-effect free or abortable/restartable.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 8 / 14
Fickle
Three types of classes: normal, root and state.
Root classes can only inherit from normal classes.
Root classes can only be parents to state classes.
State classes can only inherit from root classes or state classes.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
Fickle
Three types of classes: normal, root and state.
Root classes can only inherit from normal classes.
Root classes can only be parents to state classes.
State classes can only inherit from root classes or state classes.
State classes can not be used as field types.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
Fickle
Three types of classes: normal, root and state.
Root classes can only inherit from normal classes.
Root classes can only be parents to state classes.
State classes can only inherit from root classes or state classes.
State classes can not be used as field types.
Methods have to declare root classes of directly or indirectly
reclassified objects.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
Fickle
Three types of classes: normal, root and state.
Root classes can only inherit from normal classes.
Root classes can only be parents to state classes.
State classes can only inherit from root classes or state classes.
State classes can not be used as field types.
Methods have to declare root classes of directly or indirectly
reclassified objects.
Static types of variables change conservatively to accommodate
for the effects of reclassification.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
Example
root class Player {
bool brave;
abstract Weapon kissed(){Player}
}
state class Frog extends Player {
Vocal pouch;
Weapon kissed(){Player}{this⇓Prince; sword = new Weapon}
}
state class Prince extends Player {
Weapon sword;
Weapon kissed(){Player}{sword}
}
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 10 / 14
Example (II)
bool play(Player p, Frog f){Player} {
f.pouch; // correct
p.kissed();
f.pouch; // incorrect
p.brave; //correct
}
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 11 / 14
Predicate Classes
Combination of multiple dispatch with automatic reclassification.
An object is reclassified once a predicate is fulfilled.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 12 / 14
Typing Issues of Predicate Classes
The system uses multimethods.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
Typing Issues of Predicate Classes
The system uses multimethods.
It guarantees no method invocation is ambiguous.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
Typing Issues of Predicate Classes
The system uses multimethods.
It guarantees no method invocation is ambiguous.
Compiler raises an error if it can not deduce no ambiguity can occur.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
Typing Issues of Predicate Classes
The system uses multimethods.
It guarantees no method invocation is ambiguous.
Compiler raises an error if it can not deduce no ambiguity can occur.
A programmer may provide an additional information which helps to
dispel suspicions of ambiguity using disjoint and cover primitives.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
See
Sophia Drossopoulou, Ferruccio Damiani, Mariangiola Dezani-Ciancaglini,
and Paola Giannini. More Dynamic Object Reclassification: FickleII.
ACM Transactions on Programming Languages and Systems 24, 2 (March
2002). 153–191. http://doi.acm.org/10.1145/514952.514955
Craig Chambers. Predicate Classes. Proceedings of the 7th European
Conference on Object-Oriented Programming (ECOOP ’93), Oscar
Nierstrasz (Ed.). Springer-Verlag, London, UK. 268–296.
Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 14 / 14

Mais conteúdo relacionado

Destaque

Destaque (17)

Encapsulation
EncapsulationEncapsulation
Encapsulation
 
Functional Concepts
Functional ConceptsFunctional Concepts
Functional Concepts
 
Flow Control
Flow ControlFlow Control
Flow Control
 
Multiple Inheritance
Multiple InheritanceMultiple Inheritance
Multiple Inheritance
 
Subtyping
SubtypingSubtyping
Subtyping
 
Prototype Languages
Prototype LanguagesPrototype Languages
Prototype Languages
 
Multiple Dispatch
Multiple DispatchMultiple Dispatch
Multiple Dispatch
 
Garbage Collection
Garbage CollectionGarbage Collection
Garbage Collection
 
T+L Copy2
T+L Copy2T+L Copy2
T+L Copy2
 
Every Consumer is a Business user is a Consumer
Every Consumer is a Business user is a ConsumerEvery Consumer is a Business user is a Consumer
Every Consumer is a Business user is a Consumer
 
Inheritance
InheritanceInheritance
Inheritance
 
What Would You Say
What Would You SayWhat Would You Say
What Would You Say
 
Type Systems
Type SystemsType Systems
Type Systems
 
M2MSys ITIL Executive Summary
M2MSys ITIL Executive SummaryM2MSys ITIL Executive Summary
M2MSys ITIL Executive Summary
 
What Would You Say
What Would You SayWhat Would You Say
What Would You Say
 
Setup1
Setup1Setup1
Setup1
 
België Nederland
België NederlandBelgië Nederland
België Nederland
 

Semelhante a Reclassification

Object? You Keep Using that Word
Object? You Keep Using that WordObject? You Keep Using that Word
Object? You Keep Using that WordKevlin Henney
 
Ontology Building and its Application using Hozo
Ontology Building and its Application using HozoOntology Building and its Application using Hozo
Ontology Building and its Application using HozoKouji Kozaki
 
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...Julien PLU
 
MLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for ProtégéMLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for ProtégéCSITiaesprime
 
TMPA-2017: Layered Layouts for Software Systems Visualization
TMPA-2017: Layered Layouts for Software Systems VisualizationTMPA-2017: Layered Layouts for Software Systems Visualization
TMPA-2017: Layered Layouts for Software Systems VisualizationIosif Itkin
 
Automated Identification of Framing by Word Choice and Labeling to Reveal Med...
Automated Identification of Framing by Word Choice and Labeling to Reveal Med...Automated Identification of Framing by Word Choice and Labeling to Reveal Med...
Automated Identification of Framing by Word Choice and Labeling to Reveal Med...Anastasia Zhukova
 
JavaScript for ABAP Programmers - 6/7 Inheritance
JavaScript for ABAP Programmers - 6/7 InheritanceJavaScript for ABAP Programmers - 6/7 Inheritance
JavaScript for ABAP Programmers - 6/7 InheritanceChris Whealy
 

Semelhante a Reclassification (8)

Object? You Keep Using that Word
Object? You Keep Using that WordObject? You Keep Using that Word
Object? You Keep Using that Word
 
Ontology Building and its Application using Hozo
Ontology Building and its Application using HozoOntology Building and its Application using Hozo
Ontology Building and its Application using Hozo
 
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
 
MLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for ProtégéMLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for Protégé
 
TMPA-2017: Layered Layouts for Software Systems Visualization
TMPA-2017: Layered Layouts for Software Systems VisualizationTMPA-2017: Layered Layouts for Software Systems Visualization
TMPA-2017: Layered Layouts for Software Systems Visualization
 
Automated Identification of Framing by Word Choice and Labeling to Reveal Med...
Automated Identification of Framing by Word Choice and Labeling to Reveal Med...Automated Identification of Framing by Word Choice and Labeling to Reveal Med...
Automated Identification of Framing by Word Choice and Labeling to Reveal Med...
 
JavaScript for ABAP Programmers - 6/7 Inheritance
JavaScript for ABAP Programmers - 6/7 InheritanceJavaScript for ABAP Programmers - 6/7 Inheritance
JavaScript for ABAP Programmers - 6/7 Inheritance
 
Ws2001 sessione8 cibella_tuoto
Ws2001 sessione8 cibella_tuotoWs2001 sessione8 cibella_tuoto
Ws2001 sessione8 cibella_tuoto
 

Último

MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomnelietumpap1
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 

Último (20)

Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choom
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 

Reclassification

  • 1.
  • 2. Scenario In a first person shooter: enemies tend to change their behavior when they become aware of the player’s presence (and then again when they empty their magazines), under the hood, they are typically represented by objects and references pointing at them are often spread across the whole memory. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 2 / 14
  • 3. Problem How to represent enemies? Single class with a typecode—clumsy. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 3 / 14
  • 4. Problem How to represent enemies? Single class with a typecode—clumsy. Multiple classes, events and pointer redirection—too complicated, not feasible. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 3 / 14
  • 5. Problem How to represent enemies? Single class with a typecode—clumsy. Multiple classes, events and pointer redirection—too complicated, not feasible. The strategy pattern. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 3 / 14
  • 6. Reclassification Change of a class of an object during its lifetime. Not implemented in current industrial programming languages. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 4 / 14
  • 7. Issues Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
  • 8. Issues Implementation (flexible and efficient). Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
  • 9. Issues Implementation (flexible and efficient). Type safety. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
  • 10. Issues Implementation (flexible and efficient). Type safety. Halfway executed methods invoked on the reclassified object. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
  • 11. Issues Implementation (flexible and efficient). Type safety. Halfway executed methods invoked on the reclassified object. Overall design: cleanliness, consistency and interaction with other features of the language. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 5 / 14
  • 12. The Strategy Pattern Implementation: indirect pointers. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 6 / 14
  • 13. The Strategy Pattern Implementation: indirect pointers. Envelope defines its own type. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 6 / 14
  • 14. The Strategy Pattern Implementation: indirect pointers. Envelope defines its own type. Halfway executed methods continue their execution on the original object—they are not aware of the replacement. However, they may damage the context. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 6 / 14
  • 15. Smalltalk’s become: Implementation: redirect pointer referencing class object. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
  • 16. Smalltalk’s become: Implementation: redirect pointer referencing class object. No type safety (as in the rest of the language). Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
  • 17. Smalltalk’s become: Implementation: redirect pointer referencing class object. No type safety (as in the rest of the language). Halfway executed methods continue their execution—it is up to the programmer to make sure they cause no harm. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
  • 18. Smalltalk’s become: Implementation: redirect pointer referencing class object. No type safety (as in the rest of the language). Halfway executed methods continue their execution—it is up to the programmer to make sure they cause no harm. Overall design in sync with the rest of the language. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 7 / 14
  • 19. Gilgul Implementation: indirect pointers. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 8 / 14
  • 20. Gilgul Implementation: indirect pointers. Optionally, an exception is raised when reclassifying an object with methods on the stack. When all methods invoked on that objects are unwound, the last one is restarted. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 8 / 14
  • 21. Gilgul Implementation: indirect pointers. Optionally, an exception is raised when reclassifying an object with methods on the stack. When all methods invoked on that objects are unwound, the last one is restarted. Reclassification is a global issue—indirectly or directly reclassifying methods should either be side-effect free or abortable/restartable. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 8 / 14
  • 22. Fickle Three types of classes: normal, root and state. Root classes can only inherit from normal classes. Root classes can only be parents to state classes. State classes can only inherit from root classes or state classes. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
  • 23. Fickle Three types of classes: normal, root and state. Root classes can only inherit from normal classes. Root classes can only be parents to state classes. State classes can only inherit from root classes or state classes. State classes can not be used as field types. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
  • 24. Fickle Three types of classes: normal, root and state. Root classes can only inherit from normal classes. Root classes can only be parents to state classes. State classes can only inherit from root classes or state classes. State classes can not be used as field types. Methods have to declare root classes of directly or indirectly reclassified objects. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
  • 25. Fickle Three types of classes: normal, root and state. Root classes can only inherit from normal classes. Root classes can only be parents to state classes. State classes can only inherit from root classes or state classes. State classes can not be used as field types. Methods have to declare root classes of directly or indirectly reclassified objects. Static types of variables change conservatively to accommodate for the effects of reclassification. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 9 / 14
  • 26. Example root class Player { bool brave; abstract Weapon kissed(){Player} } state class Frog extends Player { Vocal pouch; Weapon kissed(){Player}{this⇓Prince; sword = new Weapon} } state class Prince extends Player { Weapon sword; Weapon kissed(){Player}{sword} } Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 10 / 14
  • 27. Example (II) bool play(Player p, Frog f){Player} { f.pouch; // correct p.kissed(); f.pouch; // incorrect p.brave; //correct } Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 11 / 14
  • 28. Predicate Classes Combination of multiple dispatch with automatic reclassification. An object is reclassified once a predicate is fulfilled. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 12 / 14
  • 29. Typing Issues of Predicate Classes The system uses multimethods. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
  • 30. Typing Issues of Predicate Classes The system uses multimethods. It guarantees no method invocation is ambiguous. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
  • 31. Typing Issues of Predicate Classes The system uses multimethods. It guarantees no method invocation is ambiguous. Compiler raises an error if it can not deduce no ambiguity can occur. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
  • 32. Typing Issues of Predicate Classes The system uses multimethods. It guarantees no method invocation is ambiguous. Compiler raises an error if it can not deduce no ambiguity can occur. A programmer may provide an additional information which helps to dispel suspicions of ambiguity using disjoint and cover primitives. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 13 / 14
  • 33. See Sophia Drossopoulou, Ferruccio Damiani, Mariangiola Dezani-Ciancaglini, and Paola Giannini. More Dynamic Object Reclassification: FickleII. ACM Transactions on Programming Languages and Systems 24, 2 (March 2002). 153–191. http://doi.acm.org/10.1145/514952.514955 Craig Chambers. Predicate Classes. Proceedings of the 7th European Conference on Object-Oriented Programming (ECOOP ’93), Oscar Nierstrasz (Ed.). Springer-Verlag, London, UK. 268–296. Michal P´ıˇse (CTU in Prague) Object Programming Lect. 7: Reclassification November 7, 2010 14 / 14