SlideShare una empresa de Scribd logo
1 de 32
Generalized FUNCTORS В рамках курсу “Актуальні проблеми програмної інженерії”, 2009 р. Лозинський Ігор, Фін-3
Ги-ги… ,[object Object],[object Object],[object Object],[object Object]
Майже гасло ,[object Object],[object Object]
Що воно таке? ,[object Object],[object Object]
Для чого? ,[object Object]
The Command Design Pattern ,[object Object]
Що це дає? ,[object Object]
Застосування ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
В реальному житті ,[object Object],[object Object]
Generalized callback ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ті, що підтримують  operator()   ( callable ) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Скелет  Functor ’ а ,[object Object],[object Object]
Починаємо реалізовувати ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Виходить без шаблонів ніяк? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ну а де аргументи? ,[object Object],[object Object],[object Object],[object Object]
Так теж не годиться ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Списки типів   ,[object Object],[object Object],[object Object]
Але й списки не ідеальні ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Сам пан  Functor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Маленька хитрість ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Реалізація  operator() ’ а ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
В чому фокус? ,[object Object],[object Object],[object Object],[object Object]
Робота з функторами ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Так багато коду для одного конструктора ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
…  готуємо конструктор ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Нарешті вимучили наш конструктор ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Тестуємо – все красиво ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Не просто красиво – дуже красиво ,[object Object],[object Object],[object Object]
Вказівники на методи об'єктів ,[object Object],[object Object]
Бонуси ,[object Object],[object Object],[object Object]
Де це знайти? ,[object Object],[object Object],[object Object],[object Object]
Ніби кінець… ,[object Object],[object Object]

Más contenido relacionado

La actualidad más candente

07 Localisation
07 Localisation07 Localisation
07 Localisationolegapster
 
09 Static Polymorphism
09 Static Polymorphism09 Static Polymorphism
09 Static Polymorphismolegapster
 
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5Nikita Pavliuchenko
 
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7Nikita Pavliuchenko
 
урок 19 цикли Складання програм
урок 19 цикли Складання програмурок 19 цикли Складання програм
урок 19 цикли Складання програмHelen Pat
 
Advanced C#. Part 2
Advanced C#. Part 2Advanced C#. Part 2
Advanced C#. Part 2eleksdev
 
01 Incapsulation
01 Incapsulation01 Incapsulation
01 Incapsulationolegapster
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Dmitry Chabanenko
 
урок 12 вирази мова Паскаль
урок 12 вирази  мова Паскальурок 12 вирази  мова Паскаль
урок 12 вирази мова ПаскальHelen Pata
 
Lecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesLecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesMaksym Davydov
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. ProcessesAndrii Hladkyi
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthVadym Muliavka
 

La actualidad más candente (16)

07 Localisation
07 Localisation07 Localisation
07 Localisation
 
09 Static Polymorphism
09 Static Polymorphism09 Static Polymorphism
09 Static Polymorphism
 
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 5
 
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7
Prometheus. Масовий онлайн курс "Основи програмування". Лекція 7
 
урок 19 цикли Складання програм
урок 19 цикли Складання програмурок 19 цикли Складання програм
урок 19 цикли Складання програм
 
Advanced C#. Part 2
Advanced C#. Part 2Advanced C#. Part 2
Advanced C#. Part 2
 
01 Incapsulation
01 Incapsulation01 Incapsulation
01 Incapsulation
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1
 
07 Containers
07 Containers07 Containers
07 Containers
 
урок 12 вирази мова Паскаль
урок 12 вирази  мова Паскальурок 12 вирази  мова Паскаль
урок 12 вирази мова Паскаль
 
Похідна
ПохіднаПохідна
Похідна
 
Lecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesLecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile Devices
 
Lecture 07 swift
Lecture 07 swiftLecture 07 swift
Lecture 07 swift
 
9 13
9 139 13
9 13
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. Processes
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depth
 

Destacado

C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistVincent Agnus
 
Lesson 22. Pattern 14. Overloaded functions
Lesson 22. Pattern 14. Overloaded functionsLesson 22. Pattern 14. Overloaded functions
Lesson 22. Pattern 14. Overloaded functionsPVS-Studio
 
Meta Presentation Corporate 200710
Meta Presentation   Corporate   200710Meta Presentation   Corporate   200710
Meta Presentation Corporate 200710johnskng
 
2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselib2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselibDaniel Bimschas
 
Mysterious c++
Mysterious c++Mysterious c++
Mysterious c++xprayc
 
Generative and Meta-Programming - Modern C++ Design for Parallel Computing
Generative and Meta-Programming - Modern C++ Design for Parallel ComputingGenerative and Meta-Programming - Modern C++ Design for Parallel Computing
Generative and Meta-Programming - Modern C++ Design for Parallel ComputingJoel Falcou
 
Jarrar: Subtype Relations and Constraints
Jarrar: Subtype Relations and ConstraintsJarrar: Subtype Relations and Constraints
Jarrar: Subtype Relations and ConstraintsMustafa Jarrar
 

Destacado (8)

C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
Lesson 22. Pattern 14. Overloaded functions
Lesson 22. Pattern 14. Overloaded functionsLesson 22. Pattern 14. Overloaded functions
Lesson 22. Pattern 14. Overloaded functions
 
Meta Presentation Corporate 200710
Meta Presentation   Corporate   200710Meta Presentation   Corporate   200710
Meta Presentation Corporate 200710
 
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
 
2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselib2013 09-02 senzations-bimschas-part3-wiselib
2013 09-02 senzations-bimschas-part3-wiselib
 
Mysterious c++
Mysterious c++Mysterious c++
Mysterious c++
 
Generative and Meta-Programming - Modern C++ Design for Parallel Computing
Generative and Meta-Programming - Modern C++ Design for Parallel ComputingGenerative and Meta-Programming - Modern C++ Design for Parallel Computing
Generative and Meta-Programming - Modern C++ Design for Parallel Computing
 
Jarrar: Subtype Relations and Constraints
Jarrar: Subtype Relations and ConstraintsJarrar: Subtype Relations and Constraints
Jarrar: Subtype Relations and Constraints
 

Similar a General Functors

Лекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxЛекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxssuserf57884
 
05 Operations And Utilities
05 Operations And Utilities05 Operations And Utilities
05 Operations And Utilitiesolegapster
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови CiEscuela
 
опорні схеми
опорні схемиопорні схеми
опорні схемиIrina Tabanets
 
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листкуінформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листкуШкола №7 Миргород
 
11 Iterated Containers
11 Iterated Containers11 Iterated Containers
11 Iterated Containersolegapster
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 

Similar a General Functors (20)

Функції в C++
Функції в C++Функції в C++
Функції в C++
 
Лекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxЛекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptx
 
05 Operations And Utilities
05 Operations And Utilities05 Operations And Utilities
05 Operations And Utilities
 
події
подіїподії
події
 
передача параметрів в функції
передача параметрів в функціїпередача параметрів в функції
передача параметрів в функції
 
04 Operators
04 Operators04 Operators
04 Operators
 
Урок 23. Події. Обробники подій
Урок 23. Події. Обробники подійУрок 23. Події. Обробники подій
Урок 23. Події. Обробники подій
 
Урок 44. Цикл з післяумовою
Урок 44. Цикл з післяумовоюУрок 44. Цикл з післяумовою
Урок 44. Цикл з післяумовою
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови Ci
 
tsql
tsqltsql
tsql
 
опорні схеми
опорні схемиопорні схеми
опорні схеми
 
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листкуінформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
інформатика алгор та прогр по підручнику верлань 2 стор на 1 листку
 
5971 789623
5971 7896235971 789623
5971 789623
 
11 Iterated Containers
11 Iterated Containers11 Iterated Containers
11 Iterated Containers
 
2
22
2
 
2
22
2
 
2
22
2
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
Design patterns part 1
Design patterns part 1Design patterns part 1
Design patterns part 1
 
Funkciji1
Funkciji1Funkciji1
Funkciji1
 

General Functors

  • 1. Generalized FUNCTORS В рамках курсу “Актуальні проблеми програмної інженерії”, 2009 р. Лозинський Ігор, Фін-3
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.