itmo_conspects

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

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

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

В самом начале развития компьютерных наук и программирования код выглядел как-то так:

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

Такой код писался на языке ассемблера, который в те времена был уникален под почти каждый процессор. Язык ассемблера использовал базовые команды, такие как “прибавить два числа” или “прыгнуть по заданному адресу”, которые напрямую переводились в понятные процессору инструкции

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

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

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

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


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

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

Источники: https://www.infoworld.com/article/2243500/exploring-association-aggregation-and-composition-in-oop.html, https://itsobes.com/ru/it/v-chem-raznica-mezhdu-agregaciej-kompoziciej-i-associaciej/, https://www.geeksforgeeks.org/association-composition-aggregation-java/


Таким образом, подведем итоги: