itmo_conspects

Объектно-ориентированное проектирование и программирование

Все презентации к лекциям можно найти по ссылке github.com/is-oop-y27

Лекция 1. Основы ООП

В самом начале развития Computer Science код выглядел как-то так:

VAR i
SET i 1
PRINT i
INC i
JIFLS i 10 2

Это было очень неудобно, поэтому придумали структурное программирование:

for (var i = 1; i < 10; i++) 
{
    Console.WriteLine(i);
}

Но при увеличении кода стало неудобно и это, поэтому придумали функции и процедурное программирование - разбиение кода на маленькие независимые участки. Но вскоре появилась надобность разделять бизнес-логику, данные и сохранять инвариант данных

Инвариант данных - набор корректных состояний данных, определяемый набором бизнес-требований к этим данным

Поэтому появилась парадигма объектно-ориентированное программирование

Концепции ООП

Выделяют 3 основных концепции ООП:

Также выделяют композицию, агрегацию и ассоциацию1:

Выводы

  1. Несмотря на это, некоторые источники(1, 2, 3) говорят, что:

    • Ассоциация - слабое отношение между объектами, которые делятся информацией и сами управляют своим жизненным циклом. Например: машина и водитель, читатель блога и пост в блоге. Ассоциация может быть двухсторонней, например, подписка друг на друга в соцсетях
    • Агрегация - сильное отношение между объектами, когда один объект владеет другим объектом, но не управляет его жизненным циклом, при этом связь получается односторонняя. Пример: департамент и его сотрудник - департамент владеет сотрудником, но при этом сотрудник может перейти в другой департамент
    • Композиция - отношение между объектами, когда владеемые объекты не могут семантически быть за пределами владеющего объекта. Например: автомобиль и его детали: двигатель, двери, руль и т. д.