Programming language semantics | Formal methods | Type theory

Liskov substitution principle

The Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called strong behavioral subtyping, that was initially introduced by Barbara Liskov in a 1988 conference keynote address titled Data abstraction and hierarchy. It is based on the concept of "substitutability" – a principle in object-oriented programming stating that an object (such as a class) may be replaced by a sub-object (such as a class that extends the first class) without breaking the program. It is a semantic rather than merely syntactic relation, because it intends to guarantee semantic interoperability of types in a hierarchy, object types in particular. Barbara Liskov and Jeannette Wing described the principle succinctly in a 1994 paper as follows: Subtype Requirement: Let be a property provable about objects of type T. Then should be true for objects of type S where S is a subtype of T. Symbolically: That is, if S subtypes T, what holds for T-objects holds for S-objects.In the same paper, Liskov and Wing detailed their notion of behavioral subtyping in an extension of Hoare logic, which bears a certain resemblance to Bertrand Meyer's design by contract in that it considers the interaction of subtyping with preconditions, postconditions and invariants. (Wikipedia).

Liskov substitution principle
Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 1

Working through an example of substitution in integration.

From playlist Integration

Video thumbnail

Integration 8 The Substitution Rule for Integration Part 1

An explanation of the reverse of the chain rule in integration.

From playlist Integration

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 6

Working through an example using substitution in integration.

From playlist Integration

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 8

Working through an example using substitution in integration.

From playlist Integration

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 9

Working through an example using substitution in integration.

From playlist Integration

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 7

Working through an example using substitution in integration.

From playlist Integration

Video thumbnail

RedDotRuby 2014 - SOLID Design Principles in Ruby by Anil Wadghule

This talk covers following SOLID design principles in Ruby with live code examples. Single responsibility principle: an object should have only a single responsibility. Open/closed principle: an object should be open for extension, but closed for modification. Liskov substitution principl

From playlist RedDotRuby 2014

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 3

Working through an example using the reverse of the chain rule for integration.

From playlist Integration

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 5

Working through an example using the substitution rule in integration.

From playlist Integration

Video thumbnail

Clean Code: SOLID - Beau teaches JavaScript

Learn the best practices of how to write clean code in JS. This video tutorial is over the S.O.L.I.D. principles of clean code programming: S – Single Responsibility Principle O – Open-Closed Principle L – Liskov Substitution Principle I – Interface Segregation Principle D – Dependency Inv

From playlist Clean Code - Beau teaches JavaScript

Video thumbnail

Integration 8 The Substitution Rule in Integration Part 2 Example 4

Working through and example using the reverse of the chain rule in integration.

From playlist Integration

Video thumbnail

How to Code Like a Pro (with Dylan Israel)

Learn how to write more professional code. Learn tools and principles to improve your code from Dylan Israel. This tutorial covers: ⌨️ (0:00:00) Introduction ⌨️ (0:02:45) Linting ⌨️ (0:09:21) Variables ⌨️ (0:30:04) Functions ⌨️ (0:52:27) Comments ⌨️ (1:08:45) SOLID Principles ⌨️ (1:21:05)

From playlist Computer Science Concepts

Video thumbnail

The Power of Abstraction

(April 20, 2009) Barbara Liskov

From playlist Engineering

Video thumbnail

GORUCO 2009 - SOLID Object-Oriented Design by Sandi Metz

Help us caption & translate this video! http://amara.org/v/GUQO/

From playlist GoRuCo 2009

Video thumbnail

Are You a SOLID Developer?

It is pretty common to hear people talk about "SOLID code" in talks, blogs and podcasts these days. For the object-oriented programming novice who hears this term for the first time, the Wikipedia article gives a high-level overview, but advice and information about what ""SOLID"" really m

From playlist Software Development

Video thumbnail

GTAC 2013 Day 2 Keynote: Testable JavaScript - Architecting Your Application for Testability

http://g.co/gtac2013 Slides: http://goo.gl/E1v14 Mark Trostler, Google Testable JavaScript is a process. Whether starting with a blank slate or an already implemented application (or somewhere in-between) being able to test your JavaScript code simply, cleanly, and effectively is a nece

From playlist GTAC 2013

Video thumbnail

RubyConf 2017: Git Driven Refactoring by Ashley Ellis Pierce

Git Driven Refactoring by Ashley Ellis Pierce Often we know that our code needs refactoring, but we have no idea where to start. Maybe we studied some common code smells and learned about the things that we should be avoiding, but memorizing the rules doesn’t automatically lead to fixing

From playlist RubyConf 2017

Video thumbnail

Procedural Programming: It's Back? It Never Went Away

When programmers describe code as 'procedural', it's generally not meant as a compliment. There is the belief that we have collectively moved pass such thinking and onto better paradigms. But a paradigm is no more than a pattern language, a family of solutions fit for a context. Change the

From playlist Software Development

Video thumbnail

Integration 12_5_3 Trigonometric Integration.mov

Another example of trigonometric substitution.

From playlist Integration

Related pages

Postcondition | Data type | Type theory | Invariant (computer science) | Hoare logic | Undecidable problem | Correctness (computer science) | Type signature | Aliasing (computing) | Precondition | Covariance and contravariance (computer science) | Subtyping | Object (computer science) | Halting problem