SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Rethinking Object Orientation Kathleen Dollard kathleen@mvps.org msmvps.com/blogs/kathleen
Without passion, nobody is interested. Without responsibility, nothing will get done…If passion isn’t aroused, not much is going to happen, and responsibility will never have a chance.  From Open Space Technology website
Auctioning a Dollar
Auction of One US Dollar Real auction - real money Whoever bids highest buys the dollar Gives me what they bid Gets the dollar Whoever bids next highest Gives me what they bid Gets nothing
The Point of the Auction Individual decisions that are correct in context can lead to negative outcomes This is especially true of incremental decisions extending past decisions You have working software with ugly difficult to maintain code to accomplish a task. Today you need to make a very small change that will slightly increase the code’s complexity. Do you refactor it?  A core decision is whether to learn a technique
Fast Track History and Basics
Where did we start?Four Pillars of Object Oriented Design Abstraction Logical boundaries in a fluffy space Discrete, well defined entities Encapsulation Secretive internals to objects “Black Box” Inheritance Objects are specializations of other concepts/objects Objects share across specialization Polymorphism Interchangeability Common features recognized
Where did we start?Types of Relationships “Is a” My Subaru is a car My pet is a cat “Has a” My Subaru has an engine My cat has fur “Uses a” My Subaru uses a roadway My cat uses my couch to nap and shed fur on
Where did we start?A Few Basics Public Billboard, sky writing Protected No real world analogy Friend (Internal) Notes on my refrigerator Protected Friend Union Protected and Friend Private My private journal Quality of code matters Metaphors essential Good routines and classes Self-documenting Short Strong cohesion Sin better than SinAndTan Sine even better Few order dependencies Loose coupling Scope Code Complete
Logical Biz Object BizBase IPersistenceProvider ExtensionMethod 1980’s 2009 BizBase(Of Tentity) IValidationProvider ExtensionMethod IAuthorizationProvider ExtensionMethod ProjectBizBase(Of Tentity) IFieldProvider ExtensionMethod Customer Constructor Timeline
SOLID (Bob Martin) SRP: Single Responsibility  One reason to exist, one reason to change  OCP: Open Closed Principle  Open for extension, closed for modification  LSP: Liskov Substitution Principle  An object should be semantically replaceable for it's base class/interface – it should do the same thing ISP: Interface Segregation Principle  Don't force a client to depend on an interface it doesn't need to know about  DIP: Dependency Inversion Principle  Depend on abstractions, not concrete detail or implementations
OO Extended By… Interfaces and contracts Multiple assemblies  InternalsVisibleTo attribute DependencyProperties Perf and virtual table issues Generics  Reflection Intellisense Partial classes Partial methods Extension methods Lambda expressions Anonymous types Declarative - XAML WPF Declarative – LINQ Dynamic languages Functional languages Silverlight Parallel entities N-Tier Sheer magnitude Application code generation SOA (Service Oriented Architecture) Semantics and canonical messages Workflow Rules engines Aspect oriented programming Assembly organization Designers (Property & UI) Design Patterns Unit testing Refactoring Overloads Annotation: See more at msmvps.com/blogs/kathleen December, 2007 (see notes in a few slides)
In a Service/Workflow World,Do Objects Matter? “Objects” are distinct from services Wrapping objects is fragile –objects != services Object thinking remains important orthogonal to process Granularity is essential Flexibility is essential Evolution is essential Conceptualization is essential Reuse is essential Yes, they matter because they help get the job done If their getting the job done, they must be written well to allow reasonable maintenance
MEF = Managed Extensibility Framework Open set of extensions Custom additions to application Don’t have to know finite set ahead of discovery Encourages ecosystem Um, so what is it? Plug-in enabler Compositional engine Dependency injection / inversion of control – sort of Car object not responsible for wheels they just show up  MEF is not registration based Manages unknown things while IOC manages known things What’s it made of? Consists or parts that has exports and imports Extensions can be extended Can provide extensions what they need
Word Highlighter Back color DSL Syntax MEF: Managed Extensibility Framework Intellisense extensions Text Coloration Start page Composition Container
MEF Requests Part Part  I have an “x” I need an “x” Part  Part B Part A
Notes added morning after talk (1 of 2) Thank you for coming. I enjoyed it. I learned a lot  from Dave’s talk and I think it’s important to understand and express that range. We are all part of creating IT business value. That takes perspective (Dave) and code (me). I liked that we covered that range.  One approach to managing complexity is “Kathleen’s Happy Place” where we have actual tools for sharing and expressing architecture based on well-known metadata patterns. But, I neglected to discuss other approaches, if you see/imagine/vision more, please email me Refuse to uptake. This is the pattern emerging in the industry. I am still asked to give my generics talk. It’s four years old and I’ve given it about 30 times. WPF uptake is slow and it’s a good technology. WCF generally has uptake only when there is a real service need. Sometimes this is because of technology issues (WF and EF), but more often it’s simply the inability to get our jobs done and uptake This is bad for the industry. In general, new tools/techniques allow us to do our job better Today we are writing a vast amount of code that is of legacy quality on the day it is written Work in teams/network. .NET killed the hobbyist programmer. I drew the curve where the amount of time to learn meets available time with productivity approaching zero. The hobbyist programmer was “canary in a coal mine”. Hobbyists programmed and had unrelated jobs – the grip, pet store owner, radio sales manager, advisor to Canadian politicians. They were (in industry, not humanitarian terms) expendable. Today we are fast losing one person shops. No one can be competent, but today teams can still be competent. This will not last forever if the curve continues to increase because communications limits team efficacy  A corollary of the previous – hire experts. Not people who claim to be experts, but the best people in the world in areas of concern Build in a full 50% resources for technology spiking in a combination of dedicated experts and committed percentage of every person in the chain’s time Training almost completely fails for many reasons here.
Notes added morning after talk (2 of 2) Build process, reduce friction, minimize inefficiencies, but know that’s a temporary stop gap measure Find heroes to follow You must be selective in what you bother with. One way to do that is to select, respect, and turnover the people you listen to. If Glenn Block is doing it, I want to know about it (although that’s leaning way past the bleeding edge). Listen to DNR and especially Hanselminutes on you commute Quit I know it sounds depressing to say, but there are careers that are less insane than ours will be in the next five years I felt that composability (MEF) is an important enough architectural change to call out in an architecture group. It’s new thinking for solution architects. Perhaps I can speak on this topic in a future meeting.  I don’t think I put my full list of change items on my blog, or perhaps I exaggerated. But a lot has been added in the last 18 months. I talked about this list on DNR #171 I stopped creating this list when I realized it was fractal. What I mean by that is as you look at it under increasing zoom, it becomes more complicated, it became non-interesting as it seemed I would add things forever. However, I have considered returning to update it with announcements in the last 18 months.
[object Object]

Weitere ähnliche Inhalte

Ähnlich wie Rethinking Object Orientation

Choose Boring Technology
Choose Boring TechnologyChoose Boring Technology
Choose Boring TechnologyDan McKinley
 
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03Jola Reeves
 
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03Richard Banks
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinAlessandro Nadalin
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013lokori
 
SAD01 - An Introduction to Systems Analysis and Design
SAD01 - An Introduction to Systems Analysis and DesignSAD01 - An Introduction to Systems Analysis and Design
SAD01 - An Introduction to Systems Analysis and DesignMichael Heron
 
Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...
Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...
Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...EPC Group
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento coreAlessandro Ronchi
 
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition StrategiesAlec Lazarescu
 
HTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutionsHTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutionsChristian Heilmann
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneEdorian
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Jorge López-Lago
 
L'illusione dell'ortogonalità
L'illusione dell'ortogonalitàL'illusione dell'ortogonalità
L'illusione dell'ortogonalitàAlberto Brandolini
 
Design Types
Design TypesDesign Types
Design Types1&1
 
Open Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration PresentationOpen Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration Presentationdarryl_lehmann
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference SpeakerSven Peters
 
AD - Developer communication and Technology
AD - Developer communication and TechnologyAD - Developer communication and Technology
AD - Developer communication and TechnologyEnplore AB
 

Ähnlich wie Rethinking Object Orientation (20)

Choose Boring Technology
Choose Boring TechnologyChoose Boring Technology
Choose Boring Technology
 
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03
 
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03
 
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
 
The alignment
The alignmentThe alignment
The alignment
 
SAD01 - An Introduction to Systems Analysis and Design
SAD01 - An Introduction to Systems Analysis and DesignSAD01 - An Introduction to Systems Analysis and Design
SAD01 - An Introduction to Systems Analysis and Design
 
Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...
Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...
Navigating the World of SharePoint 2010 and All It Encompasses - Part 1 - EPC...
 
How I ended up contributing to Magento core
How I ended up contributing to Magento coreHow I ended up contributing to Magento core
How I ended up contributing to Magento core
 
Six of the Best
Six of the BestSix of the Best
Six of the Best
 
Plone, quo vadis?
Plone, quo vadis?Plone, quo vadis?
Plone, quo vadis?
 
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition Strategies
 
HTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutionsHTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutions
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)
 
L'illusione dell'ortogonalità
L'illusione dell'ortogonalitàL'illusione dell'ortogonalità
L'illusione dell'ortogonalità
 
Design Types
Design TypesDesign Types
Design Types
 
Open Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration PresentationOpen Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration Presentation
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference Speaker
 
AD - Developer communication and Technology
AD - Developer communication and TechnologyAD - Developer communication and Technology
AD - Developer communication and Technology
 

Mehr von IASA

Building Feedback Loops
Building Feedback LoopsBuilding Feedback Loops
Building Feedback LoopsIASA
 
Risk Centric Architecture George Fairbanks
Risk Centric Architecture George FairbanksRisk Centric Architecture George Fairbanks
Risk Centric Architecture George FairbanksIASA
 
Resource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and RESTResource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and RESTIASA
 
Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4
Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4
Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4IASA
 
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And RunningIASA
 
Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...IASA
 
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With LiquibaseIASA
 
Making Architecture Business Value Driven
Making Architecture Business Value DrivenMaking Architecture Business Value Driven
Making Architecture Business Value DrivenIASA
 

Mehr von IASA (8)

Building Feedback Loops
Building Feedback LoopsBuilding Feedback Loops
Building Feedback Loops
 
Risk Centric Architecture George Fairbanks
Risk Centric Architecture George FairbanksRisk Centric Architecture George Fairbanks
Risk Centric Architecture George Fairbanks
 
Resource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and RESTResource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and REST
 
Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4
Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4
Cloud Computing Bootcamp On The Google App Engine For Iasa V1.2.4
 
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And Running
 
Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA – Practical Guidelines Based on Indust...
 
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With Liquibase
 
Making Architecture Business Value Driven
Making Architecture Business Value DrivenMaking Architecture Business Value Driven
Making Architecture Business Value Driven
 

Kürzlich hochgeladen

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Kürzlich hochgeladen (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Rethinking Object Orientation

  • 1. Rethinking Object Orientation Kathleen Dollard kathleen@mvps.org msmvps.com/blogs/kathleen
  • 2. Without passion, nobody is interested. Without responsibility, nothing will get done…If passion isn’t aroused, not much is going to happen, and responsibility will never have a chance. From Open Space Technology website
  • 4. Auction of One US Dollar Real auction - real money Whoever bids highest buys the dollar Gives me what they bid Gets the dollar Whoever bids next highest Gives me what they bid Gets nothing
  • 5. The Point of the Auction Individual decisions that are correct in context can lead to negative outcomes This is especially true of incremental decisions extending past decisions You have working software with ugly difficult to maintain code to accomplish a task. Today you need to make a very small change that will slightly increase the code’s complexity. Do you refactor it? A core decision is whether to learn a technique
  • 6. Fast Track History and Basics
  • 7. Where did we start?Four Pillars of Object Oriented Design Abstraction Logical boundaries in a fluffy space Discrete, well defined entities Encapsulation Secretive internals to objects “Black Box” Inheritance Objects are specializations of other concepts/objects Objects share across specialization Polymorphism Interchangeability Common features recognized
  • 8. Where did we start?Types of Relationships “Is a” My Subaru is a car My pet is a cat “Has a” My Subaru has an engine My cat has fur “Uses a” My Subaru uses a roadway My cat uses my couch to nap and shed fur on
  • 9. Where did we start?A Few Basics Public Billboard, sky writing Protected No real world analogy Friend (Internal) Notes on my refrigerator Protected Friend Union Protected and Friend Private My private journal Quality of code matters Metaphors essential Good routines and classes Self-documenting Short Strong cohesion Sin better than SinAndTan Sine even better Few order dependencies Loose coupling Scope Code Complete
  • 10. Logical Biz Object BizBase IPersistenceProvider ExtensionMethod 1980’s 2009 BizBase(Of Tentity) IValidationProvider ExtensionMethod IAuthorizationProvider ExtensionMethod ProjectBizBase(Of Tentity) IFieldProvider ExtensionMethod Customer Constructor Timeline
  • 11. SOLID (Bob Martin) SRP: Single Responsibility One reason to exist, one reason to change OCP: Open Closed Principle Open for extension, closed for modification LSP: Liskov Substitution Principle An object should be semantically replaceable for it's base class/interface – it should do the same thing ISP: Interface Segregation Principle Don't force a client to depend on an interface it doesn't need to know about DIP: Dependency Inversion Principle Depend on abstractions, not concrete detail or implementations
  • 12. OO Extended By… Interfaces and contracts Multiple assemblies InternalsVisibleTo attribute DependencyProperties Perf and virtual table issues Generics Reflection Intellisense Partial classes Partial methods Extension methods Lambda expressions Anonymous types Declarative - XAML WPF Declarative – LINQ Dynamic languages Functional languages Silverlight Parallel entities N-Tier Sheer magnitude Application code generation SOA (Service Oriented Architecture) Semantics and canonical messages Workflow Rules engines Aspect oriented programming Assembly organization Designers (Property & UI) Design Patterns Unit testing Refactoring Overloads Annotation: See more at msmvps.com/blogs/kathleen December, 2007 (see notes in a few slides)
  • 13. In a Service/Workflow World,Do Objects Matter? “Objects” are distinct from services Wrapping objects is fragile –objects != services Object thinking remains important orthogonal to process Granularity is essential Flexibility is essential Evolution is essential Conceptualization is essential Reuse is essential Yes, they matter because they help get the job done If their getting the job done, they must be written well to allow reasonable maintenance
  • 14. MEF = Managed Extensibility Framework Open set of extensions Custom additions to application Don’t have to know finite set ahead of discovery Encourages ecosystem Um, so what is it? Plug-in enabler Compositional engine Dependency injection / inversion of control – sort of Car object not responsible for wheels they just show up MEF is not registration based Manages unknown things while IOC manages known things What’s it made of? Consists or parts that has exports and imports Extensions can be extended Can provide extensions what they need
  • 15. Word Highlighter Back color DSL Syntax MEF: Managed Extensibility Framework Intellisense extensions Text Coloration Start page Composition Container
  • 16. MEF Requests Part Part I have an “x” I need an “x” Part Part B Part A
  • 17. Notes added morning after talk (1 of 2) Thank you for coming. I enjoyed it. I learned a lot from Dave’s talk and I think it’s important to understand and express that range. We are all part of creating IT business value. That takes perspective (Dave) and code (me). I liked that we covered that range. One approach to managing complexity is “Kathleen’s Happy Place” where we have actual tools for sharing and expressing architecture based on well-known metadata patterns. But, I neglected to discuss other approaches, if you see/imagine/vision more, please email me Refuse to uptake. This is the pattern emerging in the industry. I am still asked to give my generics talk. It’s four years old and I’ve given it about 30 times. WPF uptake is slow and it’s a good technology. WCF generally has uptake only when there is a real service need. Sometimes this is because of technology issues (WF and EF), but more often it’s simply the inability to get our jobs done and uptake This is bad for the industry. In general, new tools/techniques allow us to do our job better Today we are writing a vast amount of code that is of legacy quality on the day it is written Work in teams/network. .NET killed the hobbyist programmer. I drew the curve where the amount of time to learn meets available time with productivity approaching zero. The hobbyist programmer was “canary in a coal mine”. Hobbyists programmed and had unrelated jobs – the grip, pet store owner, radio sales manager, advisor to Canadian politicians. They were (in industry, not humanitarian terms) expendable. Today we are fast losing one person shops. No one can be competent, but today teams can still be competent. This will not last forever if the curve continues to increase because communications limits team efficacy A corollary of the previous – hire experts. Not people who claim to be experts, but the best people in the world in areas of concern Build in a full 50% resources for technology spiking in a combination of dedicated experts and committed percentage of every person in the chain’s time Training almost completely fails for many reasons here.
  • 18. Notes added morning after talk (2 of 2) Build process, reduce friction, minimize inefficiencies, but know that’s a temporary stop gap measure Find heroes to follow You must be selective in what you bother with. One way to do that is to select, respect, and turnover the people you listen to. If Glenn Block is doing it, I want to know about it (although that’s leaning way past the bleeding edge). Listen to DNR and especially Hanselminutes on you commute Quit I know it sounds depressing to say, but there are careers that are less insane than ours will be in the next five years I felt that composability (MEF) is an important enough architectural change to call out in an architecture group. It’s new thinking for solution architects. Perhaps I can speak on this topic in a future meeting. I don’t think I put my full list of change items on my blog, or perhaps I exaggerated. But a lot has been added in the last 18 months. I talked about this list on DNR #171 I stopped creating this list when I realized it was fractal. What I mean by that is as you look at it under increasing zoom, it becomes more complicated, it became non-interesting as it seemed I would add things forever. However, I have considered returning to update it with announcements in the last 18 months.
  • 19.
  • 22. April 2008 for System.AddIn discussion
  • 23. April 2009 for MEF discussion
  • 24. Also Bill McCarthy and Bill Wagner’s columns
  • 26. Also, good Bob Martin interview
  • 27. DotNetRocks: #436 April 9, 2009 (also, #304, 171, 121, 63)
  • 28. About MEF – www.Hanselminutes.com Show #148 (3 times)
  • 29. MEF download - www.codeplex.com/MEF
  • 30. TL49 (MEF-ifyBabySmash), TL33 (Glenn Block) at PDC
  • 31. Pipeline Builder download: www.codeplex.com/clrAddin
  • 32. Video on MAF: http://channel9.msdn.com/posts/DanielMoth/Managed-AddIn-Framework/Thank You! www.appventure.com