SlideShare a Scribd company logo
CH8. Expanding Our Horizons
© Taka Wang, 2017 1
Overview
• Object
• Encapsula/on
• Inheritance
• Handling varia/on
• Commonality and variability analysis
• Abstract class and its derived classes
© Taka Wang, 2017 2
Objects: Tradi/onal view and new view
Tradi&onal View
• Data with methods - smart data
• too narrow from implementa-on perspec4ve
Broad View
• From conceptual perspec+ve
• an object is an en#ty that has responsibili#es ( ), these responsibili+es define
the behavior of the object. Or an en#ty that has specific behavior ( ).
© Taka Wang, 2017 3
Focus on inten+on/mo+va+on not implementa+on
This view enables us to build so1ware in two steps:
1. Make a preliminary design without worrying about all the details involved.
2. Implement the design.
The reason this works is that we only have to focus on the object’s public
interface — the communica9on window through which I ask the object to do
something.
Hiding implementa-ons behind interfaces essen-ally decouples them from
the using objects.
© Taka Wang, 2017 4
Encapsula)on: Tradi)onal view and new view
Tradi&onal View
• data hiding
Broad View
• any kind of hiding
• Implementa*ons (data, methods..)
• Drived classes (Encapsula6on of type is achieved when there is an abstract class with deriva*ons (or an
interface with implementa*ons) that are used polymorphically)
• Design details
• Instan*a*on rules (ex. crea*onal pa>erns)
© Taka Wang, 2017 5
Advantage
It gives us a be,er way to split up (decompose) our programs. The
encapsula)ng layers become the interfaces we design to. (
)
By encapsula,ng different kinds of subclasses (encapsula)on of
type), we can add new ones without changing any of the client
programs using them. (GoF typically means when they men2on
encapsula2on)
© Taka Wang, 2017 6
Inheritance
Tradi&onal View
• reuse of classes
• achived by crea1ng classes and then deriving new (spcialized) classes bases on these base (generalized) classes
Broad View
• using inheritance for specializa3on, however
• can cause weak cohesion
• reduces possibility of reuse
• does not scale well with varia3on
• to classify classes as things that behave the same way. (placeholder)
© Taka Wang, 2017 7
Find What Is Varying and Encapsulate It
Consider what should be variable in your design. This approach is
the opposite of focusing on the cause of redesign. Instead of
considering what might force a change to a design, consider what
you want to be able to change without redesign. The focus here is
on encapsula*ng the concept that varies, a theme of many design
pa<erns.
— GoF, Design Pa/erns
© Taka Wang, 2017 8
More about GoF's Encapsula3on
• Design pa+erns use inheritance to classify varia6ons in behaviors.
• Hiding classes with an abstract class or interface — type
encapsula,on.
• Containing a reference of this abstract class or interface type
(aggrega6on) hides these derived classes that represent varia,ons in
behavior.
• In effect, many design pa+erns use encapsula1on to create layers
between objects.
© Taka Wang, 2017 9
Containing varia+on in data vs containing varia+on in
behavior
Handling varia+on in data
• Have a data member that tells me what type of movement my object has.
• Have two different types of Animals (both derived from the base Animal class)
— one for walking and one for flying.
Handling varia+on in behavior with objects
Using objects to contain varia0on in a1ributes and using objects to contain
varia0on in behavior are very similar. Don't afraid.
© Taka Wang, 2017 10
Commonality and Variability
Iden%fy where things vary (“commonality analysis”) and then iden%fy how they vary (“variability
analysis”).
Commonality analysis is the search for common elements that helps us understand how family
members are the same.
Variability analysis reveals how family members vary. Variability only makes sense within a given
commonality.
Ex. Whiteboard marker, pencil, ballpoint pen
• Commonality: wri/ng instrument
• Variability: material to write, shape..
© Taka Wang, 2017 11
Commonality and Variability and Abstract class
Commonality analysis seeks structure that is unlikely to change over
2me, while variability analysis captures structure that is likely to
change. Variability analysis makes sense only in terms of the context
defined by the associated commonality analysis.
In other words, if varia1ons are the specific concrete cases in the
domain, commonality defines the concepts in the domain that 1e
them together. The common concepts will be represented by abstract
classes. The varia.ons found by variability analysis will be
implemented by the concrete classes.
© Taka Wang, 2017 12
Rela%onship between Commonality and Variability,
perspec%ves, and abstract classes
© Taka Wang, 2017 13
Benefits of using abstract classes for specializa4on
© Taka Wang, 2017 14
Two-Step Procedure for Design
Ask yourself:
• When defining an abstract class (commonality):
• What interface is needed to handle all the responsibili9es
(core concepts from the conceptual perspec9ve) of this class?
• When defining derived classes:
• Given this par9cular implementa9on (this varia/on), how can I
implement it (varia9on) with the given specifica9on?
© Taka Wang, 2017 15
Take away
Think object-oriented in a broad way.
• Object: an en#ty that has responsibili#es (specific behavior)
• Encapsula1on: any kind of hiding (instan1a1on rule, type..)
• Inheritance: use for specializa.on and classify classes as things that behave the
same way.
Find what is varying and encapsulate it (in behavior).
Commonality, variability and abstract class: use inheritance to classify varia7ons in
behaviors.
© Taka Wang, 2017 16
Thank you
© Taka Wang, 2017 17

More Related Content

What's hot

[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)
Muhammad Hammad Waseem
 
Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...
Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...
Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...
Kien Duc Do
 
Mediator Pattern
Mediator PatternMediator Pattern
Mediator PatternAnuj Pawar
 
E3
E3E3
E3
lksoo
 
Cohesion and coupling software desgin engineering
Cohesion and coupling  software desgin engineeringCohesion and coupling  software desgin engineering
Cohesion and coupling software desgin engineering
QUAID E AWAM UNIVERSITY OF ENGINEERING SCIENCE AND TECHONOLOGY NAWABSHAH
 
Final sdp ppt
Final sdp pptFinal sdp ppt
Final sdp pptnancy_17
 

What's hot (7)

[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)
 
Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...
Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...
Semi-Supervised Learning with Variational Bayesian Inference and Maximum Unce...
 
Mediator Pattern
Mediator PatternMediator Pattern
Mediator Pattern
 
E3
E3E3
E3
 
Cohesion and coupling software desgin engineering
Cohesion and coupling  software desgin engineeringCohesion and coupling  software desgin engineering
Cohesion and coupling software desgin engineering
 
Generation of Descriptive Elements for Text
Generation of Descriptive Elements for TextGeneration of Descriptive Elements for Text
Generation of Descriptive Elements for Text
 
Final sdp ppt
Final sdp pptFinal sdp ppt
Final sdp ppt
 

Similar to Design Pattern Explained CH8

Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.pptChapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
RushikeshChikane1
 
Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.pptChapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
RushikeshChikane2
 
Semantic Web - Ontology 101
Semantic Web - Ontology 101Semantic Web - Ontology 101
Semantic Web - Ontology 101
Luigi De Russis
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
Satheesh Sukumaran
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
Satheesh Sukumaran
 
Introduction
IntroductionIntroduction
Introduction
Preeti Mishra
 
Behavioral pattern By:-Priyanka Pradhan
Behavioral pattern By:-Priyanka PradhanBehavioral pattern By:-Priyanka Pradhan
Behavioral pattern By:-Priyanka Pradhan
Priyanka Pradhan
 
Intro to oop.pptx
Intro to oop.pptxIntro to oop.pptx
Intro to oop.pptx
UmerUmer25
 
Unit No 6 Design Patterns.pptx
Unit No 6 Design Patterns.pptxUnit No 6 Design Patterns.pptx
Unit No 6 Design Patterns.pptx
DrYogeshDeshmukh1
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
Ankit Dubey
 
Let us understand design pattern
Let us understand design patternLet us understand design pattern
Let us understand design pattern
Mindfire Solutions
 
Methods for Ontology Design Patterns reuse
Methods for Ontology Design Patterns reuseMethods for Ontology Design Patterns reuse
Methods for Ontology Design Patterns reuse
Valentina Presutti
 
SKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPTSKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPT
Skillwise Group
 
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEWONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ijait
 
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ijait
 
Design Pattern lecture 1
Design Pattern lecture 1Design Pattern lecture 1
Design Pattern lecture 1
Julie Iskander
 
Ooad
OoadOoad
Ooad
OoadOoad
Oos Short Q N
Oos Short Q NOos Short Q N
Oos Short Q N
Prabha Krishnan
 
Design Patterns.ppt
Design Patterns.pptDesign Patterns.ppt
Design Patterns.ppt
TanishaKochak
 

Similar to Design Pattern Explained CH8 (20)

Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.pptChapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
 
Chapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.pptChapter 4_Introduction to Patterns.ppt
Chapter 4_Introduction to Patterns.ppt
 
Semantic Web - Ontology 101
Semantic Web - Ontology 101Semantic Web - Ontology 101
Semantic Web - Ontology 101
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Introduction
IntroductionIntroduction
Introduction
 
Behavioral pattern By:-Priyanka Pradhan
Behavioral pattern By:-Priyanka PradhanBehavioral pattern By:-Priyanka Pradhan
Behavioral pattern By:-Priyanka Pradhan
 
Intro to oop.pptx
Intro to oop.pptxIntro to oop.pptx
Intro to oop.pptx
 
Unit No 6 Design Patterns.pptx
Unit No 6 Design Patterns.pptxUnit No 6 Design Patterns.pptx
Unit No 6 Design Patterns.pptx
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
 
Let us understand design pattern
Let us understand design patternLet us understand design pattern
Let us understand design pattern
 
Methods for Ontology Design Patterns reuse
Methods for Ontology Design Patterns reuseMethods for Ontology Design Patterns reuse
Methods for Ontology Design Patterns reuse
 
SKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPTSKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPT
 
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEWONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
 
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
ONTOLOGY VISUALIZATION PROTÉGÉ TOOLS – A REVIEW
 
Design Pattern lecture 1
Design Pattern lecture 1Design Pattern lecture 1
Design Pattern lecture 1
 
Ooad
OoadOoad
Ooad
 
Ooad
OoadOoad
Ooad
 
Oos Short Q N
Oos Short Q NOos Short Q N
Oos Short Q N
 
Design Patterns.ppt
Design Patterns.pptDesign Patterns.ppt
Design Patterns.ppt
 

More from Jamie (Taka) Wang

20200727_Insight workstation
20200727_Insight workstation20200727_Insight workstation
20200727_Insight workstationJamie (Taka) Wang
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_planJamie (Taka) Wang
 
20200808自營電商平台策略討論
20200808自營電商平台策略討論20200808自營電商平台策略討論
20200808自營電商平台策略討論Jamie (Taka) Wang
 
20200408_gen11_sequence_diagram
20200408_gen11_sequence_diagram20200408_gen11_sequence_diagram
20200408_gen11_sequence_diagramJamie (Taka) Wang
 
20160217 - Overview of Vortex Intelligent Data Sharing Platform
20160217 - Overview of Vortex Intelligent Data Sharing Platform20160217 - Overview of Vortex Intelligent Data Sharing Platform
20160217 - Overview of Vortex Intelligent Data Sharing PlatformJamie (Taka) Wang
 
20141210 - Microservice Container
20141210 - Microservice Container20141210 - Microservice Container
20141210 - Microservice ContainerJamie (Taka) Wang
 

More from Jamie (Taka) Wang (20)

20200606_insight_Ignition
20200606_insight_Ignition20200606_insight_Ignition
20200606_insight_Ignition
 
20200727_Insight workstation
20200727_Insight workstation20200727_Insight workstation
20200727_Insight workstation
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_plan
 
20210105_量產技轉
20210105_量產技轉20210105_量產技轉
20210105_量產技轉
 
20200808自營電商平台策略討論
20200808自營電商平台策略討論20200808自營電商平台策略討論
20200808自營電商平台策略討論
 
20200427_hardware
20200427_hardware20200427_hardware
20200427_hardware
 
20200429_ec
20200429_ec20200429_ec
20200429_ec
 
20200607_insight_sync
20200607_insight_sync20200607_insight_sync
20200607_insight_sync
 
20220113_product_day
20220113_product_day20220113_product_day
20220113_product_day
 
20200429_software
20200429_software20200429_software
20200429_software
 
20200602_insight_business
20200602_insight_business20200602_insight_business
20200602_insight_business
 
20200408_gen11_sequence_diagram
20200408_gen11_sequence_diagram20200408_gen11_sequence_diagram
20200408_gen11_sequence_diagram
 
20190827_activity_diagram
20190827_activity_diagram20190827_activity_diagram
20190827_activity_diagram
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
20161220 - microservice
20161220 - microservice20161220 - microservice
20161220 - microservice
 
20160217 - Overview of Vortex Intelligent Data Sharing Platform
20160217 - Overview of Vortex Intelligent Data Sharing Platform20160217 - Overview of Vortex Intelligent Data Sharing Platform
20160217 - Overview of Vortex Intelligent Data Sharing Platform
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 
20151207 - iot strategy
20151207 - iot strategy20151207 - iot strategy
20151207 - iot strategy
 
20141210 - Microservice Container
20141210 - Microservice Container20141210 - Microservice Container
20141210 - Microservice Container
 
20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 

Recently uploaded

Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
Vikramjit Singh
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
SACHIN R KONDAGURI
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
Special education needs
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
Balvir Singh
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
beazzy04
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
timhan337
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
vaibhavrinwa19
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
MIRIAMSALINAS13
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
Atul Kumar Singh
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
EverAndrsGuerraGuerr
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
Jisc
 
The Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdfThe Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdf
kaushalkr1407
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
CarlosHernanMontoyab2
 
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCECLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
BhavyaRajput3
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
EduSkills OECD
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 

Recently uploaded (20)

Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
 
Honest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptxHonest Reviews of Tim Han LMA Course Program.pptx
Honest Reviews of Tim Han LMA Course Program.pptx
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
The Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdfThe Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdf
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
 
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCECLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 

Design Pattern Explained CH8

  • 1. CH8. Expanding Our Horizons © Taka Wang, 2017 1
  • 2. Overview • Object • Encapsula/on • Inheritance • Handling varia/on • Commonality and variability analysis • Abstract class and its derived classes © Taka Wang, 2017 2
  • 3. Objects: Tradi/onal view and new view Tradi&onal View • Data with methods - smart data • too narrow from implementa-on perspec4ve Broad View • From conceptual perspec+ve • an object is an en#ty that has responsibili#es ( ), these responsibili+es define the behavior of the object. Or an en#ty that has specific behavior ( ). © Taka Wang, 2017 3
  • 4. Focus on inten+on/mo+va+on not implementa+on This view enables us to build so1ware in two steps: 1. Make a preliminary design without worrying about all the details involved. 2. Implement the design. The reason this works is that we only have to focus on the object’s public interface — the communica9on window through which I ask the object to do something. Hiding implementa-ons behind interfaces essen-ally decouples them from the using objects. © Taka Wang, 2017 4
  • 5. Encapsula)on: Tradi)onal view and new view Tradi&onal View • data hiding Broad View • any kind of hiding • Implementa*ons (data, methods..) • Drived classes (Encapsula6on of type is achieved when there is an abstract class with deriva*ons (or an interface with implementa*ons) that are used polymorphically) • Design details • Instan*a*on rules (ex. crea*onal pa>erns) © Taka Wang, 2017 5
  • 6. Advantage It gives us a be,er way to split up (decompose) our programs. The encapsula)ng layers become the interfaces we design to. ( ) By encapsula,ng different kinds of subclasses (encapsula)on of type), we can add new ones without changing any of the client programs using them. (GoF typically means when they men2on encapsula2on) © Taka Wang, 2017 6
  • 7. Inheritance Tradi&onal View • reuse of classes • achived by crea1ng classes and then deriving new (spcialized) classes bases on these base (generalized) classes Broad View • using inheritance for specializa3on, however • can cause weak cohesion • reduces possibility of reuse • does not scale well with varia3on • to classify classes as things that behave the same way. (placeholder) © Taka Wang, 2017 7
  • 8. Find What Is Varying and Encapsulate It Consider what should be variable in your design. This approach is the opposite of focusing on the cause of redesign. Instead of considering what might force a change to a design, consider what you want to be able to change without redesign. The focus here is on encapsula*ng the concept that varies, a theme of many design pa<erns. — GoF, Design Pa/erns © Taka Wang, 2017 8
  • 9. More about GoF's Encapsula3on • Design pa+erns use inheritance to classify varia6ons in behaviors. • Hiding classes with an abstract class or interface — type encapsula,on. • Containing a reference of this abstract class or interface type (aggrega6on) hides these derived classes that represent varia,ons in behavior. • In effect, many design pa+erns use encapsula1on to create layers between objects. © Taka Wang, 2017 9
  • 10. Containing varia+on in data vs containing varia+on in behavior Handling varia+on in data • Have a data member that tells me what type of movement my object has. • Have two different types of Animals (both derived from the base Animal class) — one for walking and one for flying. Handling varia+on in behavior with objects Using objects to contain varia0on in a1ributes and using objects to contain varia0on in behavior are very similar. Don't afraid. © Taka Wang, 2017 10
  • 11. Commonality and Variability Iden%fy where things vary (“commonality analysis”) and then iden%fy how they vary (“variability analysis”). Commonality analysis is the search for common elements that helps us understand how family members are the same. Variability analysis reveals how family members vary. Variability only makes sense within a given commonality. Ex. Whiteboard marker, pencil, ballpoint pen • Commonality: wri/ng instrument • Variability: material to write, shape.. © Taka Wang, 2017 11
  • 12. Commonality and Variability and Abstract class Commonality analysis seeks structure that is unlikely to change over 2me, while variability analysis captures structure that is likely to change. Variability analysis makes sense only in terms of the context defined by the associated commonality analysis. In other words, if varia1ons are the specific concrete cases in the domain, commonality defines the concepts in the domain that 1e them together. The common concepts will be represented by abstract classes. The varia.ons found by variability analysis will be implemented by the concrete classes. © Taka Wang, 2017 12
  • 13. Rela%onship between Commonality and Variability, perspec%ves, and abstract classes © Taka Wang, 2017 13
  • 14. Benefits of using abstract classes for specializa4on © Taka Wang, 2017 14
  • 15. Two-Step Procedure for Design Ask yourself: • When defining an abstract class (commonality): • What interface is needed to handle all the responsibili9es (core concepts from the conceptual perspec9ve) of this class? • When defining derived classes: • Given this par9cular implementa9on (this varia/on), how can I implement it (varia9on) with the given specifica9on? © Taka Wang, 2017 15
  • 16. Take away Think object-oriented in a broad way. • Object: an en#ty that has responsibili#es (specific behavior) • Encapsula1on: any kind of hiding (instan1a1on rule, type..) • Inheritance: use for specializa.on and classify classes as things that behave the same way. Find what is varying and encapsulate it (in behavior). Commonality, variability and abstract class: use inheritance to classify varia7ons in behaviors. © Taka Wang, 2017 16
  • 17. Thank you © Taka Wang, 2017 17