Slide 1

Slide 1 text

CSE360 Introduction to Software Engineering Lecture: The SOLID Principles II Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu Office Hours: By appointment

Slide 2

Slide 2 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 2 Announcement • Monday, June 20

Slide 3

Slide 3 text

Previously …

Slide 4

Slide 4 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 4 Design Principles There are five key design principles to consider in Object-Oriented: • Single Responsibility Principle (SRP) • Open-Closed Principle (OCP) • Liskov Substitution Principle (LSP) • Interface Segregation Principle (ISP) • Dependency Inversion Principle (DIP)

Slide 5

Slide 5 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 5 Single Responsibility Example

Slide 6

Slide 6 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 6 Open-Close Example

Slide 7

Slide 7 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 7 Liskov Substitution • Imagine you already have a class Circle, and you are asked to create a class Cylinder. • Or maybe you have a class Rectangle, and you are asked to create a class Square (a square is a rectangle with the same width and height). • Or you have a class LinkedList, and you are asked to create a class PersistentLinkedList (one that writes out its elements to a stream and can read them back later). If you are tempted to use inheritance from Circle to Cylinder, or from Rectangle to Square, or from LinkedList to PersistentLinkedList, i.e., create a parent-child relationship for any of these cases, you will have problems.

Slide 8

Slide 8 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 8 Interface Segregation • Clients should not be forced to depend on methods that they do not use. • ISP deals with the disadvantage of “fat” interfaces (or abstract classes). • ISP recommends to broke up interfaces with a lot of methods into several interfaces.

Slide 9

Slide 9 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 9 Dependency Inversion Example

Slide 10

Slide 10 text

Connecting the Dots SOLID Principles

Slide 11

Slide 11 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 11 Project – User create dots

Slide 12

Slide 12 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 12 Project – User selects Cluster and clicks Run ✅

Slide 13

Slide 13 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 13 Project – User selects Cluster and clicks Run ✅

Slide 14

Slide 14 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 14 Project – User selects Line and clicks Run ✅

Slide 15

Slide 15 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 15 Project – User selects Line and clicks Run ✅

Slide 16

Slide 16 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 16 Connecting the Dots

Slide 17

Slide 17 text

CSE360 – Introduction to Software Engineering Javier Gonzalez-Sanchez [email protected] Summer 2022 Disclaimer. These slides can only be used as study material for the class CSE360 at ASU. They cannot be distributed or used for another purpose.