SlideShare une entreprise Scribd logo
1  sur  43
Le TDD et la conception émergente ,[object Object],[object Object],[object Object]
[object Object],[object Object],Le TDD
[object Object],Le TDD ,[object Object],[object Object]
[object Object],Le TDD ,[object Object],[object Object],[object Object]
La conception émergente ,[object Object],[object Object]
La conception émergente ,[object Object],[object Object],[object Object],[object Object]
[object Object],La conception émergente ,[object Object],[object Object],[object Object],[object Object]
[object Object],La conception émergente ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La conception émergente ,[object Object],[object Object],[object Object]
La conception émergente ,[object Object],[object Object],[object Object],Temps Coût du changement « Traditionnel » Agile
[object Object],[object Object],[object Object],La conception émergente ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Techniques de développement
Un exemple ,[object Object],[object Object],HTTP URL XML LISTE
HTTP URL XML LISTE
HTTP URL XML LISTE Podcast UI XML Fetcher Podcast Subscription
Podcast UI XML Fetcher Podcast Subscription
Podcast UI XML Fetcher Podcast Subscription
Podcast UI XML Fetcher Podcast Subscription
podcastIdEvent . Raise (  new  PodcastId ( "http://server/podcast.xml" ) ); Podcast UI XML Fetcher Podcast Subscription
podcastIdEvent . Raise (  new  PodcastId ( "http://server/podcast.xml" ) ); class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
PodcastSubscription subscription  =  new  PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
PodcastSubscription subscription  =  new  PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId  +=  delegate ( object  sender , PodcastId id ){ fetcher . URL  =  &quot;http://server/podcast.xml&quot; ; }; } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Podcast UI XML Fetcher Podcast Subscription
PodcastSubscription subscription  =  new  PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId  +=  delegate ( object  sender , PodcastId id ){ fetcher . URL  =  &quot;http://server/podcast.xml&quot; ; }; } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast2.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast2.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId  +=  delegate ( object  sender , PodcastId id ){ fetcher . URL  =  id . URL ; }; } PodcastSubscription subscription  =  new  PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } class  PodcastId : EventArgs  { PodcastId ( string  url ) {} } Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast2.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast2.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId  +=  delegate ( object  sender , PodcastId id ){ fetcher . URL  =  id . URL ; }; } PodcastSubscription subscription  =  new  PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher  =  mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId >  podcastIdEvent  =  new  MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI  =  mocks . NewMock < IPodcastUI >(); class  PodcastId : EventArgs  { string  url ; PodcastId ( string  url ) { this . url = url ;} string  URL  {  get  { return  url ;} } } mocks . VerifyAllExpectationsHaveBeenMet (); interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; } interface  IXmlFetcher { string  URL  {  set ; } } Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast2.xml&quot; ); podcastIdEvent . Raise (  new  PodcastId ( &quot;http://server/podcast2.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
Podcast UI XML Fetcher Podcast Subscription
Podcast UI XML Fetcher Podcast Subscription
interface  IXmlFetcher { event  EventHandler < XmlResult >  RetrievedXml ; string  URL  {  set ; } } Podcast UI XML Fetcher Podcast Subscription
interface  IPodcastUI  { event  EventHandler < PodcastId >  InputPodcastId ; IList<PodcastItem> Items  {  set ; } } interface  IXmlFetcher { event  EventHandler < XmlResult >  RetrievedXml ; string  URL  {  set ; } } Podcast UI XML Fetcher Podcast Subscription
IXmlFetcher Podcast Subscription IPodcastUI
IXmlFetcher Podcast Subscription IPodcastUI PodcastId
IXmlFetcher Podcast Subscription IPodcastUI PodcastId XmlResult
IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult
IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult XmlFetcher
IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult PodcastUI XmlFetcher
IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult PodcastUI XmlFetcher Main

Contenu connexe

En vedette

200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係Kuo-Yi Chen
 
Desarrollo del proyecto de aula.
Desarrollo del proyecto de aula.Desarrollo del proyecto de aula.
Desarrollo del proyecto de aula.Fernanda Posso
 
Creating seo blogposts
Creating seo blogpostsCreating seo blogposts
Creating seo blogpostsrfair404
 
Buildings as Translators of Damage
Buildings as Translators of DamageBuildings as Translators of Damage
Buildings as Translators of Damageperrymckenzie
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_kIBM
 
6 summary of uses of ser and estar
6 summary of uses of ser and estar6 summary of uses of ser and estar
6 summary of uses of ser and estarLaura Riddle
 
Contemporary english
Contemporary englishContemporary english
Contemporary englishohinnant
 
методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...Sokirianskiy&Lazerson School
 
2b comparisons of inequality
2b comparisons of inequality2b comparisons of inequality
2b comparisons of inequalityLaura Riddle
 
International topics june 2010
International topics june 2010International topics june 2010
International topics june 2010Frost Keaton
 
마을이 세계를 구한다
마을이 세계를 구한다마을이 세계를 구한다
마을이 세계를 구한다minjulee
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release reviewGiang Nguyễn
 
Resume Sidharth Paranjape
Resume Sidharth ParanjapeResume Sidharth Paranjape
Resume Sidharth Paranjapessparanjape
 

En vedette (19)

20121224164710718
2012122416471071820121224164710718
20121224164710718
 
200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係
 
Revolucion
RevolucionRevolucion
Revolucion
 
Desarrollo del proyecto de aula.
Desarrollo del proyecto de aula.Desarrollo del proyecto de aula.
Desarrollo del proyecto de aula.
 
Creating seo blogposts
Creating seo blogpostsCreating seo blogposts
Creating seo blogposts
 
Buildings as Translators of Damage
Buildings as Translators of DamageBuildings as Translators of Damage
Buildings as Translators of Damage
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
6 summary of uses of ser and estar
6 summary of uses of ser and estar6 summary of uses of ser and estar
6 summary of uses of ser and estar
 
China newsweek
China newsweekChina newsweek
China newsweek
 
Contemporary english
Contemporary englishContemporary english
Contemporary english
 
методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...методология планирования меню американской национальной программы школьных об...
методология планирования меню американской национальной программы школьных об...
 
2b comparisons of inequality
2b comparisons of inequality2b comparisons of inequality
2b comparisons of inequality
 
International topics june 2010
International topics june 2010International topics june 2010
International topics june 2010
 
Groen kettles rus
Groen kettles rusGroen kettles rus
Groen kettles rus
 
마을이 세계를 구한다
마을이 세계를 구한다마을이 세계를 구한다
마을이 세계를 구한다
 
If You Only Knew
If You Only KnewIf You Only Knew
If You Only Knew
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Resume Sidharth Paranjape
Resume Sidharth ParanjapeResume Sidharth Paranjape
Resume Sidharth Paranjape
 
Ellie thankful
Ellie thankfulEllie thankful
Ellie thankful
 

Similaire à Conception émergente

Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanMicrosoft
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to HeroCellenza
 
CocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock ObjectsCocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock ObjectsCocoaHeadsRNS
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5chaudavid
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615JUG Toulouse
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend FrameworkMickael Perraud
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 EeST informatique services
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expériencelouschwartz
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open doorLeTesteur
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorArthurMaroulier
 
[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5Thomas Bassetto
 

Similaire à Conception émergente (20)

Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
HTML5
HTML5HTML5
HTML5
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
CocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock ObjectsCocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock Objects
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.js
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérience
 
Tapestry
TapestryTapestry
Tapestry
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Rapport tp2 j2ee
Rapport tp2 j2eeRapport tp2 j2ee
Rapport tp2 j2ee
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme Meteor
 
Applets
AppletsApplets
Applets
 
[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5
 

Conception émergente

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. HTTP URL XML LISTE
  • 15. HTTP URL XML LISTE Podcast UI XML Fetcher Podcast Subscription
  • 16. Podcast UI XML Fetcher Podcast Subscription
  • 17. Podcast UI XML Fetcher Podcast Subscription
  • 18. Podcast UI XML Fetcher Podcast Subscription
  • 19. podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
  • 20. podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 21. MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 22. MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 23. MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 24. MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 25. IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 26. IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 27. IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 28. PodcastSubscription subscription = new PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 29. PodcastSubscription subscription = new PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId += delegate ( object sender , PodcastId id ){ fetcher . URL = &quot;http://server/podcast.xml&quot; ; }; } class PodcastId : EventArgs { PodcastId ( string url ) {} } Podcast UI XML Fetcher Podcast Subscription
  • 30. PodcastSubscription subscription = new PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId += delegate ( object sender , PodcastId id ){ fetcher . URL = &quot;http://server/podcast.xml&quot; ; }; } class PodcastId : EventArgs { PodcastId ( string url ) {} } Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast2.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast2.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
  • 31. PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId += delegate ( object sender , PodcastId id ){ fetcher . URL = id . URL ; }; } PodcastSubscription subscription = new PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); mocks . VerifyAllExpectationsHaveBeenMet (); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } class PodcastId : EventArgs { PodcastId ( string url ) {} } Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast2.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast2.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
  • 32. PodcastSubscription ( IPodcastUI ui IXmlFetcher fetcher ) { ui . InputPodcastId += delegate ( object sender , PodcastId id ){ fetcher . URL = id . URL ; }; } PodcastSubscription subscription = new PodcastSubscription ( mockUI , mockFetcher ); IXmlFetcher mockFetcher = mocks . NewMock < IXmlFetcher >(); MockEvent < PodcastId > podcastIdEvent = new MockEvent < PodcastId >( mockUI , &quot;InputPodcastId&quot; ); Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast.xml&quot; ) ); IPodcastUI mockUI = mocks . NewMock < IPodcastUI >(); class PodcastId : EventArgs { string url ; PodcastId ( string url ) { this . url = url ;} string URL { get { return url ;} } } mocks . VerifyAllExpectationsHaveBeenMet (); interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; } interface IXmlFetcher { string URL { set ; } } Expect . Once . On ( mockFetcher ). SetProperty ( &quot;URL&quot; ). To ( &quot;http://server/podcast2.xml&quot; ); podcastIdEvent . Raise ( new PodcastId ( &quot;http://server/podcast2.xml&quot; ) ); Podcast UI XML Fetcher Podcast Subscription
  • 33. Podcast UI XML Fetcher Podcast Subscription
  • 34. Podcast UI XML Fetcher Podcast Subscription
  • 35. interface IXmlFetcher { event EventHandler < XmlResult > RetrievedXml ; string URL { set ; } } Podcast UI XML Fetcher Podcast Subscription
  • 36. interface IPodcastUI { event EventHandler < PodcastId > InputPodcastId ; IList<PodcastItem> Items { set ; } } interface IXmlFetcher { event EventHandler < XmlResult > RetrievedXml ; string URL { set ; } } Podcast UI XML Fetcher Podcast Subscription
  • 38. IXmlFetcher Podcast Subscription IPodcastUI PodcastId
  • 39. IXmlFetcher Podcast Subscription IPodcastUI PodcastId XmlResult
  • 40. IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult
  • 41. IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult XmlFetcher
  • 42. IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult PodcastUI XmlFetcher
  • 43. IXmlFetcher Podcast Subscription IPodcastUI PodcastId PodcastItem XmlResult PodcastUI XmlFetcher Main

Notes de l'éditeur

  1. Praticien lambda Je dois à mon blog d&apos;être ici Envie de dialogue avec les personnes intéressées par les méthodes agiles Livre mes réflexions personnelles sur mon vécu en tant qu&apos;évangéliste de l&apos;agilité Attend vos réflexions