CPSC 210
D1: Cohesion & Coupling
Programming vs. Engineering
- So far, we have learned about object-oriented programming
- At various points, we have mentioned "good design" and "bad design"
- Now, we will learn about object-oriented software engineering and formalize some of it!
Well-designed software modules
Learning Goals
- Describe the principle of cohesion
- Describe the principle of coupling
- Analyze a system and improve on coupling and cohesion
Cohesion
- Every class should have a
single responsibility - Assessing cohesion:
- Graph showing methods
using fields - Graph has clusters? Low cohesion! Should be split in multiple classes!
- Graph showing methods
Coupling
Tight Coupling
Loose Coupling
- Measure of degree to which one part of the system depends on other parts
- Coupling is too tight when you make a change in one class and many other classes break!
- e.g. you change a method in a class and many other classes will stop compiling
Coupling (2)
-
Moderate Coupling (detected at compile time)
- Change in class causes error in other class
-
Semantic Coupling (detected at runtime)
-
Class depends on impl. in another class
-
Change in class causes bug in other class
-
-
Remember Single Point of Control in CPSC 110
-
Changes should be needed only in one place
-
Let's ask StackOverflow
https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling
https://stackoverflow.com/questions/14000762/what-does-low-in-coupling-and-high-in-cohesion-mean
Let's ask StackOverflow
Lecture Ticket (1)
- Account
- PurchaseManager
- Purchase
- BonusManager
Lecture Ticket (2)
- We need a helper method like generateDateString()
- A new class for dates should be introduced
- Semantic coupling between Client and Account
Lecture Lab
- AceCell: cellular network company
- Each phone assigned to one customer
- Account can have multiple phones
- Each account needs one payee for bills
- Each phone has a call log
- Monthly billing based on call logs of all phones
Lecture Lab (A)
Lecture Lab (B)
Text
❌
Redundant!
Unnecesarily increases coupling
Lecture Lab (C)
Text
❌
Lecture Lab (D)
Lecture Lab (E)
Lecture Lab (F)
D1: Cohesion & Coupling
The End - Thank You!
D1: Cohesion and Coupling
By firas_moosvi
D1: Cohesion and Coupling
- 94