PROG_WAY_BLOG Telegram 74
SOLID - Принцип подстановки Барбары Лисков.

Почему-то я слышал мнение, что это самый сложный для понимания принцип, но по моему мнение крайне ошибочное.
LSP - Liskov substitution principle - один из самых простых принципов. Суть его заключается в том, что компоненты программы (функции, модули и т.д.) должны одинаково успешно обрабатывать как экземпляр класса родителя, так и экземпляр потомка класса не зная об этом.

Для понимания достаточно описать супер простой пример, скажем, на том же питоне:
class Person:
def __init__(self, name):
self.name = name

class Programmer(Person):
def __init__(self, name, language):
Person.__init__(self, name)
self.language = language

person = Person('Денис')
programmer = Programmer('Макс', 'Python')


А теперь реализуем функцию, которая вернёт имя человека:
def getName(person): 
return person.name

Вообще было бы лучше сделать соответствующий метод класса, но пишем так для примера.
Вызовем функцию:
print(getName(person))  // Денис
print(getName(programmer)) // Макс


Всё прекрасно работает как с классом родителем, так и с классом наследником. Если бы было бы иначе, то такая ситуация - нарушение LSP.

В оригинале Барбара Лисков даёт определение этого принципа чисто математически. Возможно, именно из-за этого оно и кажется непонятным. Надеюсь, что я смог объяснить яснее.

Спасибо за прочтение, это важно ❤️

#principles #theory
1



tgoop.com/prog_way_blog/74
Create:
Last Update:

SOLID - Принцип подстановки Барбары Лисков.

Почему-то я слышал мнение, что это самый сложный для понимания принцип, но по моему мнение крайне ошибочное.
LSP - Liskov substitution principle - один из самых простых принципов. Суть его заключается в том, что компоненты программы (функции, модули и т.д.) должны одинаково успешно обрабатывать как экземпляр класса родителя, так и экземпляр потомка класса не зная об этом.

Для понимания достаточно описать супер простой пример, скажем, на том же питоне:

class Person:
def __init__(self, name):
self.name = name

class Programmer(Person):
def __init__(self, name, language):
Person.__init__(self, name)
self.language = language

person = Person('Денис')
programmer = Programmer('Макс', 'Python')


А теперь реализуем функцию, которая вернёт имя человека:
def getName(person): 
return person.name

Вообще было бы лучше сделать соответствующий метод класса, но пишем так для примера.
Вызовем функцию:
print(getName(person))  // Денис
print(getName(programmer)) // Макс


Всё прекрасно работает как с классом родителем, так и с классом наследником. Если бы было бы иначе, то такая ситуация - нарушение LSP.

В оригинале Барбара Лисков даёт определение этого принципа чисто математически. Возможно, именно из-за этого оно и кажется непонятным. Надеюсь, что я смог объяснить яснее.

Спасибо за прочтение, это важно ❤️

#principles #theory

BY progway — программирование, IT




Share with your friend now:
tgoop.com/prog_way_blog/74

View MORE
Open in Telegram


Telegram News

Date: |

"Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn. On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” How to create a business channel on Telegram? (Tutorial) The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.”
from us


Telegram progway — программирование, IT
FROM American