ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Rethinking Object OrientationKathleen Dollardkathleen@mvps.orgmsmvps.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 DollarReal auction - real moneyWhoever bids highest buys the dollarGives me what they bidGets the dollarWhoever bids next highestGives me what they bidGets nothing
The Point of the AuctionIndividual decisions that are correct in context can lead to negative outcomesThis is especially true of incremental decisions extending past decisionsYou 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 DesignAbstractionLogical boundaries in a fluffy spaceDiscrete, well defined entitiesEncapsulationSecretive internals to objects¡°Black Box¡±InheritanceObjects are specializations of other concepts/objectsObjects share across specializationPolymorphismInterchangeabilityCommon features recognized
Where did we start?Types of Relationships¡°Is a¡±My Subaru is a carMy pet is a cat¡°Has a¡±My Subaru has an engineMy cat has fur¡°Uses a¡±My Subaru uses a roadwayMy cat uses my couch to nap and shed fur on
Where did we start?A Few BasicsPublicBillboard, sky writingProtectedNo real world analogyFriend (Internal)Notes on my refrigeratorProtected FriendUnion Protected and FriendPrivateMy private journalQuality of code mattersMetaphors essentialGood routines and classesSelf-documentingShortStrong cohesionSin better than SinAndTanSine even betterFew order dependenciesLoose couplingScopeCode Complete
Logical Biz ObjectBizBaseIPersistenceProviderExtensionMethod1980¡¯s2009BizBase(Of Tentity)IValidationProviderExtensionMethodIAuthorizationProviderExtensionMethodProjectBizBase(Of Tentity)IFieldProviderExtensionMethodCustomerConstructorTimeline
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 ¨C it should do the same thingISP: 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 contractsMultiple assemblies InternalsVisibleTo attributeDependencyPropertiesPerf and virtual table issuesGenerics ReflectionIntellisensePartial classesPartial methodsExtension methodsLambda expressionsAnonymous typesDeclarative - XAMLWPFDeclarative ¨C LINQDynamic languagesFunctional languagesSilverlightParallel entitiesN-TierSheer magnitudeApplication code generationSOA (Service Oriented Architecture)Semantics and canonical messagesWorkflowRules enginesAspect oriented programmingAssembly organizationDesigners (Property & UI)Design PatternsUnit testingRefactoringOverloadsAnnotation: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 servicesWrapping objects is fragile ¨Cobjects != servicesObject thinking remains important orthogonal to processGranularity is essentialFlexibility is essentialEvolution is essentialConceptualization is essentialReuse is essentialYes, they matter because they help get the job doneIf their getting the job done, they must be written well to allow reasonable maintenance
MEF = Managed Extensibility FrameworkOpen set of extensionsCustom additions to applicationDon¡¯t have to know finite set ahead of discoveryEncourages ecosystemUm, so what is it?Plug-in enablerCompositional engineDependency injection / inversion of control ¨C sort ofCar object not responsible for wheels they just show up MEF is not registration basedManages unknown things while IOC manages known thingsWhat¡¯s it made of?Consists or parts that has exports and importsExtensions can be extendedCan provide extensions what they need
Word HighlighterBack colorDSL SyntaxMEF: Managed Extensibility FrameworkIntellisense extensionsText ColorationStart pageComposition Container
MEF RequestsPartPart I have an ¡°x¡±I need an ¡°x¡±Part Part BPart 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 meRefuse 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 uptakeThis is bad for the industry. In general, new tools/techniques allow us to do our job betterToday we are writing a vast amount of code that is of legacy quality on the day it is writtenWork 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 ¨C 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 ¨C hire experts. Not people who claim to be experts, but the best people in the world in areas of concernBuild in a full 50% resources for technology spiking in a combination of dedicated experts and committed percentage of every person in the chain¡¯s timeTraining 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 measureFind heroes to followYou 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 commuteQuitI know it sounds depressing to say, but there are careers that are less insane than ours will be in the next five yearsI 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 #171I 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.
www.msmvps.com/blogs/kathleen

More Related Content

Similar to Rethinking Object Orientation (20)

Choose Boring Technology
Choose Boring TechnologyChoose Boring Technology
Choose Boring Technology
Dan McKinley
?
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03
Jola Reeves
?
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03
Richard 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 Turin
Alessandro Nadalin
?
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
lokori
?
The alignment
The alignmentThe alignment
The alignment
Alberto Brandolini
?
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
Michael 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 core
Alessandro Ronchi
?
Six of the Best
Six of the BestSix of the Best
Six of the Best
Kevlin Henney
?
Plone, quo vadis?
Plone, quo vadis?Plone, quo vadis?
Plone, quo vadis?
Alexander Loechel
?
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition Strategies
Alec Lazarescu
?
HTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutionsHTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutions
Christian 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 done
Edorian
?
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'ortogonalita?
L'illusione dell'ortogonalita?L'illusione dell'ortogonalita?
L'illusione dell'ortogonalita?
Alberto Brandolini
?
Design Types
Design TypesDesign Types
Design Types
1&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 Presentation
darryl_lehmann
?
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference Speaker
Sven Peters
?
AD - Developer communication and Technology
AD - Developer communication and TechnologyAD - Developer communication and Technology
AD - Developer communication and Technology
Enplore AB
?
Choose Boring Technology
Choose Boring TechnologyChoose Boring Technology
Choose Boring Technology
Dan McKinley
?
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03
Jola Reeves
?
Devops perspectives3_v03
Devops perspectives3_v03Devops perspectives3_v03
Devops perspectives3_v03
Richard 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 Turin
Alessandro Nadalin
?
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
lokori
?
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
Michael 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 core
Alessandro Ronchi
?
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition Strategies
Alec Lazarescu
?
HTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutionsHTML5 - Moving from hacks to solutions
HTML5 - Moving from hacks to solutions
Christian 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 done
Edorian
?
Design Types
Design TypesDesign Types
Design Types
1&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 Presentation
darryl_lehmann
?
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference Speaker
Sven Peters
?
AD - Developer communication and Technology
AD - Developer communication and TechnologyAD - Developer communication and Technology
AD - Developer communication and Technology
Enplore AB
?

More from IASA (8)

Building Feedback Loops
Building Feedback LoopsBuilding Feedback Loops
Building Feedback Loops
IASA
?
Risk Centric Architecture George Fairbanks
Risk Centric Architecture George FairbanksRisk Centric Architecture George Fairbanks
Risk Centric Architecture George Fairbanks
IASA
?
Resource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and RESTResource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and REST
IASA
?
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
IASA
?
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And Running
IASA
?
Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...
IASA
?
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With Liquibase
IASA
?
Making Architecture Business Value Driven
Making Architecture Business Value DrivenMaking Architecture Business Value Driven
Making Architecture Business Value Driven
IASA
?
Building Feedback Loops
Building Feedback LoopsBuilding Feedback Loops
Building Feedback Loops
IASA
?
Risk Centric Architecture George Fairbanks
Risk Centric Architecture George FairbanksRisk Centric Architecture George Fairbanks
Risk Centric Architecture George Fairbanks
IASA
?
Resource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and RESTResource-Oriented Architecture (ROA) and REST
Resource-Oriented Architecture (ROA) and REST
IASA
?
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
IASA
?
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And Running
IASA
?
Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...
Business and Strategic Alignment in EA ¨C Practical Guidelines Based on Indust...
IASA
?
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With Liquibase
IASA
?
Making Architecture Business Value Driven
Making Architecture Business Value DrivenMaking Architecture Business Value Driven
Making Architecture Business Value Driven
IASA
?

Recently uploaded (20)

Fl studio crack version 12.9 Free Download
Fl studio crack version 12.9 Free DownloadFl studio crack version 12.9 Free Download
Fl studio crack version 12.9 Free Download
kherorpacca127
?
Unlock AI Creativity: Image Generation with DALL¡¤E
Unlock AI Creativity: Image Generation with DALL¡¤EUnlock AI Creativity: Image Generation with DALL¡¤E
Unlock AI Creativity: Image Generation with DALL¡¤E
Expeed Software
?
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog GavraReplacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
ScyllaDB
?
DevNexus - Building 10x Development Organizations.pdf
DevNexus - Building 10x Development Organizations.pdfDevNexus - Building 10x Development Organizations.pdf
DevNexus - Building 10x Development Organizations.pdf
Justin Reock
?
BoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is DynamicBoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is Dynamic
Ortus Solutions, Corp
?
World Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a CrossroadsWorld Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a Crossroads
Joshua Randall
?
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
Safe Software
?
Build with AI on Google Cloud Session #4
Build with AI on Google Cloud Session #4Build with AI on Google Cloud Session #4
Build with AI on Google Cloud Session #4
Margaret Maynard-Reid
?
Integrated Operating Window - A Gateway to PM
Integrated Operating Window - A Gateway to PMIntegrated Operating Window - A Gateway to PM
Integrated Operating Window - A Gateway to PM
Farhan Tariq
?
FinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptxFinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptx
Tracxn
?
Wondershare Filmora Crack 14.3.2.11147 Latest
Wondershare Filmora Crack 14.3.2.11147 LatestWondershare Filmora Crack 14.3.2.11147 Latest
Wondershare Filmora Crack 14.3.2.11147 Latest
udkg888
?
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
ScyllaDB
?
SMART SENTRY CYBER THREAT INTELLIGENCE IN IIOT
SMART SENTRY CYBER THREAT INTELLIGENCE IN IIOTSMART SENTRY CYBER THREAT INTELLIGENCE IN IIOT
SMART SENTRY CYBER THREAT INTELLIGENCE IN IIOT
TanmaiArni
?
Unlocking DevOps Secuirty :Vault & Keylock
Unlocking DevOps Secuirty :Vault & KeylockUnlocking DevOps Secuirty :Vault & Keylock
Unlocking DevOps Secuirty :Vault & Keylock
HusseinMalikMammadli
?
MIND Revenue Release Quarter 4 2024 - Finacial Presentation
MIND Revenue Release Quarter 4 2024 - Finacial PresentationMIND Revenue Release Quarter 4 2024 - Finacial Presentation
MIND Revenue Release Quarter 4 2024 - Finacial Presentation
MIND CTI
?
Field Device Management Market Report 2030 - TechSci Research
Field Device Management Market Report 2030 - TechSci ResearchField Device Management Market Report 2030 - TechSci Research
Field Device Management Market Report 2030 - TechSci Research
Vipin Mishra
?
UiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilitiesUiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilities
DianaGray10
?
DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)
DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)
DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)
Tsuyoshi Hirayama
?
Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)
nick896721
?
Endpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore ItEndpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore It
MSP360
?
Fl studio crack version 12.9 Free Download
Fl studio crack version 12.9 Free DownloadFl studio crack version 12.9 Free Download
Fl studio crack version 12.9 Free Download
kherorpacca127
?
Unlock AI Creativity: Image Generation with DALL¡¤E
Unlock AI Creativity: Image Generation with DALL¡¤EUnlock AI Creativity: Image Generation with DALL¡¤E
Unlock AI Creativity: Image Generation with DALL¡¤E
Expeed Software
?
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog GavraReplacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
Replacing RocksDB with ScyllaDB in Kafka Streams by Almog Gavra
ScyllaDB
?
DevNexus - Building 10x Development Organizations.pdf
DevNexus - Building 10x Development Organizations.pdfDevNexus - Building 10x Development Organizations.pdf
DevNexus - Building 10x Development Organizations.pdf
Justin Reock
?
BoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is DynamicBoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is Dynamic
Ortus Solutions, Corp
?
World Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a CrossroadsWorld Information Architecture Day 2025 - UX at a Crossroads
World Information Architecture Day 2025 - UX at a Crossroads
Joshua Randall
?
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
[Webinar] Scaling Made Simple: Getting Started with No-Code Web Apps
Safe Software
?
Build with AI on Google Cloud Session #4
Build with AI on Google Cloud Session #4Build with AI on Google Cloud Session #4
Build with AI on Google Cloud Session #4
Margaret Maynard-Reid
?
Integrated Operating Window - A Gateway to PM
Integrated Operating Window - A Gateway to PMIntegrated Operating Window - A Gateway to PM
Integrated Operating Window - A Gateway to PM
Farhan Tariq
?
FinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptxFinTech - US Annual Funding Report - 2024.pptx
FinTech - US Annual Funding Report - 2024.pptx
Tracxn
?
Wondershare Filmora Crack 14.3.2.11147 Latest
Wondershare Filmora Crack 14.3.2.11147 LatestWondershare Filmora Crack 14.3.2.11147 Latest
Wondershare Filmora Crack 14.3.2.11147 Latest
udkg888
?
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
How Discord Indexes Trillions of Messages: Scaling Search Infrastructure by V...
ScyllaDB
?
SMART SENTRY CYBER THREAT INTELLIGENCE IN IIOT
SMART SENTRY CYBER THREAT INTELLIGENCE IN IIOTSMART SENTRY CYBER THREAT INTELLIGENCE IN IIOT
SMART SENTRY CYBER THREAT INTELLIGENCE IN IIOT
TanmaiArni
?
Unlocking DevOps Secuirty :Vault & Keylock
Unlocking DevOps Secuirty :Vault & KeylockUnlocking DevOps Secuirty :Vault & Keylock
Unlocking DevOps Secuirty :Vault & Keylock
HusseinMalikMammadli
?
MIND Revenue Release Quarter 4 2024 - Finacial Presentation
MIND Revenue Release Quarter 4 2024 - Finacial PresentationMIND Revenue Release Quarter 4 2024 - Finacial Presentation
MIND Revenue Release Quarter 4 2024 - Finacial Presentation
MIND CTI
?
Field Device Management Market Report 2030 - TechSci Research
Field Device Management Market Report 2030 - TechSci ResearchField Device Management Market Report 2030 - TechSci Research
Field Device Management Market Report 2030 - TechSci Research
Vipin Mishra
?
UiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilitiesUiPath Document Understanding - Generative AI and Active learning capabilities
UiPath Document Understanding - Generative AI and Active learning capabilities
DianaGray10
?
DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)
DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)
DAO UTokyo 2025 DLT mass adoption case studies IBM Tsuyoshi Hirayama (ƽɽÒã)
Tsuyoshi Hirayama
?
Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)Early Adopter's Guide to AI Moderation (Preview)
Early Adopter's Guide to AI Moderation (Preview)
nick896721
?
Endpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore ItEndpoint Backup: 3 Reasons MSPs Ignore It
Endpoint Backup: 3 Reasons MSPs Ignore It
MSP360
?

Rethinking Object Orientation

  • 1. Rethinking Object OrientationKathleen Dollardkathleen@mvps.orgmsmvps.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 DollarReal auction - real moneyWhoever bids highest buys the dollarGives me what they bidGets the dollarWhoever bids next highestGives me what they bidGets nothing
  • 5. The Point of the AuctionIndividual decisions that are correct in context can lead to negative outcomesThis is especially true of incremental decisions extending past decisionsYou 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 DesignAbstractionLogical boundaries in a fluffy spaceDiscrete, well defined entitiesEncapsulationSecretive internals to objects¡°Black Box¡±InheritanceObjects are specializations of other concepts/objectsObjects share across specializationPolymorphismInterchangeabilityCommon features recognized
  • 8. Where did we start?Types of Relationships¡°Is a¡±My Subaru is a carMy pet is a cat¡°Has a¡±My Subaru has an engineMy cat has fur¡°Uses a¡±My Subaru uses a roadwayMy cat uses my couch to nap and shed fur on
  • 9. Where did we start?A Few BasicsPublicBillboard, sky writingProtectedNo real world analogyFriend (Internal)Notes on my refrigeratorProtected FriendUnion Protected and FriendPrivateMy private journalQuality of code mattersMetaphors essentialGood routines and classesSelf-documentingShortStrong cohesionSin better than SinAndTanSine even betterFew order dependenciesLoose couplingScopeCode Complete
  • 10. Logical Biz ObjectBizBaseIPersistenceProviderExtensionMethod1980¡¯s2009BizBase(Of Tentity)IValidationProviderExtensionMethodIAuthorizationProviderExtensionMethodProjectBizBase(Of Tentity)IFieldProviderExtensionMethodCustomerConstructorTimeline
  • 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 ¨C it should do the same thingISP: 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 contractsMultiple assemblies InternalsVisibleTo attributeDependencyPropertiesPerf and virtual table issuesGenerics ReflectionIntellisensePartial classesPartial methodsExtension methodsLambda expressionsAnonymous typesDeclarative - XAMLWPFDeclarative ¨C LINQDynamic languagesFunctional languagesSilverlightParallel entitiesN-TierSheer magnitudeApplication code generationSOA (Service Oriented Architecture)Semantics and canonical messagesWorkflowRules enginesAspect oriented programmingAssembly organizationDesigners (Property & UI)Design PatternsUnit testingRefactoringOverloadsAnnotation: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 servicesWrapping objects is fragile ¨Cobjects != servicesObject thinking remains important orthogonal to processGranularity is essentialFlexibility is essentialEvolution is essentialConceptualization is essentialReuse is essentialYes, they matter because they help get the job doneIf their getting the job done, they must be written well to allow reasonable maintenance
  • 14. MEF = Managed Extensibility FrameworkOpen set of extensionsCustom additions to applicationDon¡¯t have to know finite set ahead of discoveryEncourages ecosystemUm, so what is it?Plug-in enablerCompositional engineDependency injection / inversion of control ¨C sort ofCar object not responsible for wheels they just show up MEF is not registration basedManages unknown things while IOC manages known thingsWhat¡¯s it made of?Consists or parts that has exports and importsExtensions can be extendedCan provide extensions what they need
  • 15. Word HighlighterBack colorDSL SyntaxMEF: Managed Extensibility FrameworkIntellisense extensionsText ColorationStart pageComposition Container
  • 16. MEF RequestsPartPart I have an ¡°x¡±I need an ¡°x¡±Part Part BPart 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 meRefuse 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 uptakeThis is bad for the industry. In general, new tools/techniques allow us to do our job betterToday we are writing a vast amount of code that is of legacy quality on the day it is writtenWork 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 ¨C 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 ¨C hire experts. Not people who claim to be experts, but the best people in the world in areas of concernBuild in a full 50% resources for technology spiking in a combination of dedicated experts and committed percentage of every person in the chain¡¯s timeTraining 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 measureFind heroes to followYou 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 commuteQuitI know it sounds depressing to say, but there are careers that are less insane than ours will be in the next five yearsI 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 #171I 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.
  • 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 ¨C 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