SlideShare a Scribd company logo
BLOC : A Trait-Based
                      Collections Library



mardi 14 septembre 2010
Introduction

                  A library of     An object with the behaviors
                   behavior.
                                             A, B, C.
                    Behavior
                       A
                                                    Behavior
                                                  Comportement
                    Behavior                           B
                       B

                    Behavior                     Object’s structure
                                                  Structure
                       C

                    Behavior        Behavior
                                  Comportement                          Behavior
                                                                      Comportement
                       D               A                                   C




mardi 14 septembre 2010
Problematic

                     • Questions:
                          •   What is the good granularity for a trait enabling the reuse as well as an
                              easy way to plug it ?

                          •   How choose between the use of trait and inheritance ?

                          •   Can traits be used as modular blocks ?




mardi 14 septembre 2010
Bloc
                          I)Context




mardi 14 septembre 2010
Pharo Collections
                                                                                              Object




                                                                                             Collection




                                                SequenceableCollection                 HashedCollection                Bag




                                                                      LinkedList       Set                Dictionary



                                                                    Interval       PluggableSet


                               ArrayedCollection       OrderedCollection                         Identity              Pluggable
                                                                                                Dictionary             Dictionary


                                                            SortedCollection

                          Array        String        Text




                          ByteString        Symbol




mardi 14 septembre 2010
Traits

                                                                 TMagnitude
                                                               >            <
                                                               >=           =


                 •
                                                               <=
                          Define a behavior                     between:and:



                 •        Block reusable methods        String     Number         Date

                                                        <          <            <

                 •        Traits required methods
                                                        =
                                                        ...
                                                                   =
                                                                   ...
                                                                                =
                                                                                ...

                                                              Legend:
                                                              Légende:
                                                                           composed
                                                                         composé de




mardi 14 septembre 2010
Bloc
                          II)Granularity




mardi 14 septembre 2010
Specific collection behavior

                                                     TCollection




                                   TSequenceable     TIndexed       THashed



                                                                                  TSet


                            TOrdered
                            Collection               TArrayed
                                                                   TDictionary

                                         TInterval

                                                      TArray


                                                                     composed
                                                                     composé de




mardi 14 septembre 2010
Global behaviors collections

       •     TOrdered:                                 •   TArray:
                             •   TOrderedAccessing
                                                                     •   TArrayAccessing

                             •   TOrderedAdding
                                                                     •   TArrayCollection

                             •   TOrderedCollection
                                                                     •   TArrayCopying

                             •   TOrderedCopying
                                                                     •   TArrayCreation

                             •   TOrderedCreation
                                                                     •   TArrayEnumerating

                             •   TOrderedEnumerating
                                                                     •   TArrayRemoving

                             •   TOrderedRemoving
                                                                     •   TArrayTesting

                             •   TOrderedTesting
                                                                     •   TArrayUpdatable

                             •   TOrderedUpdatable




mardi 14 septembre 2010
Traits protocols defining:
                          Primary/secondary methods

        •
                                             Secondary
              Allows separation               Methods
              between traits and the
              structure.                   Primary Methods


        •     Simulated encapsulation.
                                                State

        •      Allows to don’t waste
              time because of
              accessors.                                     Use method

                                                             State access




mardi 14 septembre 2010
Bloc
                  III)Case study and discussions




mardi 14 septembre 2010
Case study:
                                         OrderedSet

              •      Step 1) Select the
                     behaviors in the traits      Librairie de traits:
                                                  Traits library
                     library.

              •      Step 2) Define the
                     structure of the new
                     collection.

              •      Step 3) Implement all
                     the required methods
                     for the new collection.



mardi 14 septembre 2010
Discussions


                               •   Traits granularity

                               •   Traits remodularity

                               •   Traits vs inheritance




mardi 14 septembre 2010
Thanks for your
                             attention


mardi 14 septembre 2010

More Related Content

Viewers also liked

Trabajo marta de monet
Trabajo marta de monetTrabajo marta de monet
Trabajo marta de monet
Mdhermosel
 
Blue Denim Stretch Cotton Blend Shorts
Blue Denim Stretch Cotton Blend ShortsBlue Denim Stretch Cotton Blend Shorts
Blue Denim Stretch Cotton Blend ShortsJennaLee31
 
Brent crude
Brent crudeBrent crude
Brent crude
Experiencia Trading
 
Aamukatsaus 14.12.2011
Aamukatsaus 14.12.2011Aamukatsaus 14.12.2011
Aamukatsaus 14.12.2011Nordea Bank
 
Flyer
FlyerFlyer
Boletín diario 14/12/11
Boletín diario 14/12/11Boletín diario 14/12/11
Boletín diario 14/12/11
Openbank
 
Daily routine vocabulary game...............
Daily routine vocabulary game...............Daily routine vocabulary game...............
Daily routine vocabulary game...............
Daniela Torres
 
Watch hulu videos on kindle fire
Watch hulu videos on kindle fireWatch hulu videos on kindle fire
Watch hulu videos on kindle fire
staefenia sun
 
Organisation can grow fast with proper change management corporate governance...
Organisation can grow fast with proper change management corporate governance...Organisation can grow fast with proper change management corporate governance...
Organisation can grow fast with proper change management corporate governance...
Robinsigma
 
Planificacion de cultivos
Planificacion de cultivosPlanificacion de cultivos
Planificacion de cultivosSodepal
 

Viewers also liked (12)

Trabajo marta de monet
Trabajo marta de monetTrabajo marta de monet
Trabajo marta de monet
 
Happy Holidays!
Happy Holidays!Happy Holidays!
Happy Holidays!
 
Blue Denim Stretch Cotton Blend Shorts
Blue Denim Stretch Cotton Blend ShortsBlue Denim Stretch Cotton Blend Shorts
Blue Denim Stretch Cotton Blend Shorts
 
EMCIS 2012 Flyer
EMCIS 2012 FlyerEMCIS 2012 Flyer
EMCIS 2012 Flyer
 
Brent crude
Brent crudeBrent crude
Brent crude
 
Aamukatsaus 14.12.2011
Aamukatsaus 14.12.2011Aamukatsaus 14.12.2011
Aamukatsaus 14.12.2011
 
Flyer
FlyerFlyer
Flyer
 
Boletín diario 14/12/11
Boletín diario 14/12/11Boletín diario 14/12/11
Boletín diario 14/12/11
 
Daily routine vocabulary game...............
Daily routine vocabulary game...............Daily routine vocabulary game...............
Daily routine vocabulary game...............
 
Watch hulu videos on kindle fire
Watch hulu videos on kindle fireWatch hulu videos on kindle fire
Watch hulu videos on kindle fire
 
Organisation can grow fast with proper change management corporate governance...
Organisation can grow fast with proper change management corporate governance...Organisation can grow fast with proper change management corporate governance...
Organisation can grow fast with proper change management corporate governance...
 
Planificacion de cultivos
Planificacion de cultivosPlanificacion de cultivos
Planificacion de cultivos
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
ESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
ESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 

Recently uploaded (20)

Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 

BLOC : A Trait-Based Collections Library

  • 1. BLOC : A Trait-Based Collections Library mardi 14 septembre 2010
  • 2. Introduction A library of An object with the behaviors behavior. A, B, C. Behavior A Behavior Comportement Behavior B B Behavior Object’s structure Structure C Behavior Behavior Comportement Behavior Comportement D A C mardi 14 septembre 2010
  • 3. Problematic • Questions: • What is the good granularity for a trait enabling the reuse as well as an easy way to plug it ? • How choose between the use of trait and inheritance ? • Can traits be used as modular blocks ? mardi 14 septembre 2010
  • 4. Bloc I)Context mardi 14 septembre 2010
  • 5. Pharo Collections Object Collection SequenceableCollection HashedCollection Bag LinkedList Set Dictionary Interval PluggableSet ArrayedCollection OrderedCollection Identity Pluggable Dictionary Dictionary SortedCollection Array String Text ByteString Symbol mardi 14 septembre 2010
  • 6. Traits TMagnitude > < >= = • <= Define a behavior between:and: • Block reusable methods String Number Date < < < • Traits required methods = ... = ... = ... Legend: Légende: composed composé de mardi 14 septembre 2010
  • 7. Bloc II)Granularity mardi 14 septembre 2010
  • 8. Specific collection behavior TCollection TSequenceable TIndexed THashed TSet TOrdered Collection TArrayed TDictionary TInterval TArray composed composé de mardi 14 septembre 2010
  • 9. Global behaviors collections • TOrdered: • TArray: • TOrderedAccessing • TArrayAccessing • TOrderedAdding • TArrayCollection • TOrderedCollection • TArrayCopying • TOrderedCopying • TArrayCreation • TOrderedCreation • TArrayEnumerating • TOrderedEnumerating • TArrayRemoving • TOrderedRemoving • TArrayTesting • TOrderedTesting • TArrayUpdatable • TOrderedUpdatable mardi 14 septembre 2010
  • 10. Traits protocols defining: Primary/secondary methods • Secondary Allows separation Methods between traits and the structure. Primary Methods • Simulated encapsulation. State • Allows to don’t waste time because of accessors. Use method State access mardi 14 septembre 2010
  • 11. Bloc III)Case study and discussions mardi 14 septembre 2010
  • 12. Case study: OrderedSet • Step 1) Select the behaviors in the traits Librairie de traits: Traits library library. • Step 2) Define the structure of the new collection. • Step 3) Implement all the required methods for the new collection. mardi 14 septembre 2010
  • 13. Discussions • Traits granularity • Traits remodularity • Traits vs inheritance mardi 14 septembre 2010
  • 14. Thanks for your attention mardi 14 septembre 2010