restructuring classes and behaviour
TRANSCRIPT
![Page 1: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/1.jpg)
Restructuring classes and behaviour
Wouter de Wild
![Page 2: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/2.jpg)
PHP
JAVA
![Page 3: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/3.jpg)
We should ban the extends
keyword from our language
- @n0xie
![Page 4: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/4.jpg)
We should ban the extends
keyword from our language
- @n0xie But WHY?
![Page 5: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/5.jpg)
We should ban the extends
keyword from our language
- @n0xie
Why do we use Object Oriented programming?
![Page 6: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/6.jpg)
Why don’t use inheritance?
![Page 7: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/7.jpg)
![Page 8: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/8.jpg)
Animal
Dove Tiger
![Page 9: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/9.jpg)
Animal
TigerBird (fly)
DoveParrot
GoldFish
![Page 10: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/10.jpg)
Animal
TigerBird (fly)
DoveParrot
Fish
GoldFish Cod
![Page 11: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/11.jpg)
Animal
TigerBird (fly)
DoveParrot
Fish (swim)
GoldFish Cod
![Page 12: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/12.jpg)
Composition
![Page 13: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/13.jpg)
![Page 14: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/14.jpg)
![Page 15: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/15.jpg)
![Page 16: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/16.jpg)
![Page 17: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/17.jpg)
![Page 18: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/18.jpg)
![Page 19: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/19.jpg)
![Page 20: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/20.jpg)
![Page 21: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/21.jpg)
![Page 22: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/22.jpg)
![Page 23: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/23.jpg)
![Page 24: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/24.jpg)
![Page 25: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/25.jpg)
![Page 26: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/26.jpg)
![Page 27: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/27.jpg)
![Page 28: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/28.jpg)
![Page 29: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/29.jpg)
![Page 30: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/30.jpg)
![Page 31: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/31.jpg)
![Page 32: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/32.jpg)
![Page 33: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/33.jpg)
![Page 34: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/34.jpg)
![Page 35: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/35.jpg)
![Page 36: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/36.jpg)
![Page 37: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/37.jpg)
![Page 38: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/38.jpg)
![Page 39: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/39.jpg)
![Page 40: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/40.jpg)
![Page 41: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/41.jpg)
![Page 42: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/42.jpg)
![Page 43: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/43.jpg)
![Page 44: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/44.jpg)
![Page 45: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/45.jpg)
Flexibility is keyword
![Page 46: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/46.jpg)
![Page 47: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/47.jpg)
![Page 48: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/48.jpg)
![Page 49: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/49.jpg)
Real code example
![Page 50: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/50.jpg)
![Page 51: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/51.jpg)
![Page 52: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/52.jpg)
![Page 53: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/53.jpg)
![Page 54: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/54.jpg)
So how do we make this better?
![Page 55: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/55.jpg)
![Page 56: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/56.jpg)
![Page 57: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/57.jpg)
![Page 58: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/58.jpg)
So when do we use inheritance?
![Page 59: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/59.jpg)
![Page 60: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/60.jpg)
![Page 61: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/61.jpg)
Actual Impl
![Page 62: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/62.jpg)
Method 1
Method 2
Method 3
Interface
Composition
Method 1
Method 2
Method 3
![Page 63: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/63.jpg)
Method 1
Method 2
Method 3
Interface
Inheritance
Method 2
![Page 64: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/64.jpg)
![Page 65: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/65.jpg)
What are the drawbacks of composition?
![Page 66: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/66.jpg)
![Page 67: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/67.jpg)
NUANCE is keyword
![Page 68: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/68.jpg)
![Page 69: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/69.jpg)
![Page 70: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/70.jpg)
![Page 71: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/71.jpg)
Summary
![Page 72: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/72.jpg)
![Page 73: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/73.jpg)
![Page 74: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/74.jpg)
![Page 75: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/75.jpg)
What is what?
Isolate behaviour
Inherit to specify for your purpose
![Page 76: Restructuring classes and behaviour](https://reader036.vdocuments.site/reader036/viewer/2022070602/587b71081a28abc62f8b5773/html5/thumbnails/76.jpg)
Questions?