Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSE360 Tutorial 05

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

CSE360 Tutorial 05

Introduction to Software Engineering
The SOLID Principles II
(202206)

Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. CSE360 Introduction to Software Engineering Lecture: The SOLID Principles II

    Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu Office Hours: By appointment
  2. 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)
  3. 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.
  4. 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.
  5. Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 12 Project

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

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

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

    – User selects Line and clicks Run ✅
  9. 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.