SlideShare a Scribd company logo
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

More Related Content

Viewers also liked

Multiple Inheritance
Multiple InheritanceMultiple Inheritance
Multiple InheritanceMichal Píše
 
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
Michael Kogeler
 
What Would You Say
What Would You SayWhat Would You Say
What Would You Say
guest123f4
 
M2MSys ITIL Executive Summary
M2MSys ITIL Executive SummaryM2MSys ITIL Executive Summary
M2MSys ITIL Executive Summary
Filipe Pinto
 
What Would You Say
What Would You SayWhat Would You Say
What Would You Sayguest123f4
 
Setup1
Setup1Setup1
Setup1
Adefraeije
 
België Nederland
België NederlandBelgië Nederland
België Nederland
Johan Bracke
 

Viewers also liked (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
 

Similar to Reclassification

Object? You Keep Using that Word
Object? You Keep Using that WordObject? You Keep Using that Word
Object? You Keep Using that Word
Kevlin 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 Hozo
Kouji 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 Visualization
Iosif 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 Inheritance
Chris Whealy
 
Ws2001 sessione8 cibella_tuoto
Ws2001 sessione8 cibella_tuotoWs2001 sessione8 cibella_tuoto

Similar to 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
 

Recently uploaded

How to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP ModuleHow to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP Module
Celine George
 
Best Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDABest Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDA
deeptiverma2406
 
Digital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments UnitDigital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments Unit
chanes7
 
MERN Stack Developer Roadmap By ScholarHat PDF
MERN Stack Developer Roadmap By ScholarHat PDFMERN Stack Developer Roadmap By ScholarHat PDF
MERN Stack Developer Roadmap By ScholarHat PDF
scholarhattraining
 
Top five deadliest dog breeds in America
Top five deadliest dog breeds in AmericaTop five deadliest dog breeds in America
Top five deadliest dog breeds in America
Bisnar Chase Personal Injury Attorneys
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
heathfieldcps1
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
Priyankaranawat4
 
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdfবাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
eBook.com.bd (প্রয়োজনীয় বাংলা বই)
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
TechSoup
 
MASS MEDIA STUDIES-835-CLASS XI Resource Material.pdf
MASS MEDIA STUDIES-835-CLASS XI Resource Material.pdfMASS MEDIA STUDIES-835-CLASS XI Resource Material.pdf
MASS MEDIA STUDIES-835-CLASS XI Resource Material.pdf
goswamiyash170123
 
clinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdfclinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdf
Priyankaranawat4
 
Delivering Micro-Credentials in Technical and Vocational Education and Training
Delivering Micro-Credentials in Technical and Vocational Education and TrainingDelivering Micro-Credentials in Technical and Vocational Education and Training
Delivering Micro-Credentials in Technical and Vocational Education and Training
AG2 Design
 
A Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in EducationA Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in Education
Peter Windle
 
Lapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdfLapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdf
Jean Carlos Nunes Paixão
 
PIMS Job Advertisement 2024.pdf Islamabad
PIMS Job Advertisement 2024.pdf IslamabadPIMS Job Advertisement 2024.pdf Islamabad
PIMS Job Advertisement 2024.pdf Islamabad
AyyanKhan40
 
Aficamten in HCM (SEQUOIA HCM TRIAL 2024)
Aficamten in HCM (SEQUOIA HCM TRIAL 2024)Aficamten in HCM (SEQUOIA HCM TRIAL 2024)
Aficamten in HCM (SEQUOIA HCM TRIAL 2024)
Ashish Kohli
 
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...
Dr. Vinod Kumar Kanvaria
 
How to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold MethodHow to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold Method
Celine George
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
camakaiclarkmusic
 
DRUGS AND ITS classification slide share
DRUGS AND ITS classification slide shareDRUGS AND ITS classification slide share
DRUGS AND ITS classification slide share
taiba qazi
 

Recently uploaded (20)

How to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP ModuleHow to Add Chatter in the odoo 17 ERP Module
How to Add Chatter in the odoo 17 ERP Module
 
Best Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDABest Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDA
 
Digital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments UnitDigital Artifact 1 - 10VCD Environments Unit
Digital Artifact 1 - 10VCD Environments Unit
 
MERN Stack Developer Roadmap By ScholarHat PDF
MERN Stack Developer Roadmap By ScholarHat PDFMERN Stack Developer Roadmap By ScholarHat PDF
MERN Stack Developer Roadmap By ScholarHat PDF
 
Top five deadliest dog breeds in America
Top five deadliest dog breeds in AmericaTop five deadliest dog breeds in America
Top five deadliest dog breeds in America
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
 
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdfANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
ANATOMY AND BIOMECHANICS OF HIP JOINT.pdf
 
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdfবাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
বাংলাদেশ অর্থনৈতিক সমীক্ষা (Economic Review) ২০২৪ UJS App.pdf
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
 
MASS MEDIA STUDIES-835-CLASS XI Resource Material.pdf
MASS MEDIA STUDIES-835-CLASS XI Resource Material.pdfMASS MEDIA STUDIES-835-CLASS XI Resource Material.pdf
MASS MEDIA STUDIES-835-CLASS XI Resource Material.pdf
 
clinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdfclinical examination of hip joint (1).pdf
clinical examination of hip joint (1).pdf
 
Delivering Micro-Credentials in Technical and Vocational Education and Training
Delivering Micro-Credentials in Technical and Vocational Education and TrainingDelivering Micro-Credentials in Technical and Vocational Education and Training
Delivering Micro-Credentials in Technical and Vocational Education and Training
 
A Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in EducationA Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in Education
 
Lapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdfLapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdf
 
PIMS Job Advertisement 2024.pdf Islamabad
PIMS Job Advertisement 2024.pdf IslamabadPIMS Job Advertisement 2024.pdf Islamabad
PIMS Job Advertisement 2024.pdf Islamabad
 
Aficamten in HCM (SEQUOIA HCM TRIAL 2024)
Aficamten in HCM (SEQUOIA HCM TRIAL 2024)Aficamten in HCM (SEQUOIA HCM TRIAL 2024)
Aficamten in HCM (SEQUOIA HCM TRIAL 2024)
 
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...
 
How to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold MethodHow to Build a Module in Odoo 17 Using the Scaffold Method
How to Build a Module in Odoo 17 Using the Scaffold Method
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
 
DRUGS AND ITS classification slide share
DRUGS AND ITS classification slide shareDRUGS AND ITS classification slide share
DRUGS AND ITS classification slide share
 

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