МОДЕЛИ ПРОГРАММИРОВАНИЯ


Привет всем! Сегодня разберём способы программирования и то, какие подходы бывают!

А подходов к написанию программ у нас всего два - процедурный и объектно-ориентированный - далее ООП.

Что это значит?
В процедурном языке программирования (или процедурном подходе в поддерживающих ООП языках) нет объектов. 

Не очень понятно, правда?
Смотрите, объект - это виртуальная сущность с значениями и функциями, которая создаётся от класса
Класс - это как бы конструкция, то есть чертёж, на основе которого создаётся объект.

В старых языках объектно-ориентированный подход не поддерживается и они считаются процедурными (напр. C, Pascal). А в таких языках как C++, Java, C#, Python, JavaScript - ООП поддерживается, но при желании Вы всё равно можете писать в процедурном подходе.

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

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

2. Небезопасности пространства имён - то есть у нас все переменные в глобальной области и мы можем случайно обратиться к ним (мы не можем скрыть их в объектах опять же).

3. Не читаемость - весь код свален в одну кучу, в одном файле, и когда мы смотрим на большую программу - там всё скинуто в одном месте и понять что там происходит очень трудно.

ООП решает эти вопросы. Принципы ООП состоят из:
1. Инкапсуляции - это значит что мы можем пометить ту или иную переменную как приватную, и получить доступ мы сможем к ней только по определённым механизмам.

2. Полиморфизм - мы можем написать функцию, которая может работать и с числами, и со строками. Или с одним типом объектов и с другим, например.

3. Наследование - мы можем создать класс (это описание для создающегося объекта) и создать ещё один класс, который будет наследоваться
Например, класс машины общий, его наследуют легковые машины, которые наследуют спортивные машины.

4. Абстракция - отделение концепции от её экземпляра, то есть это когда мы пытаемся намеренно представить объект с тем минимумом характеристик, которых хватает для точного представления объекта. Такой минималистичный подход, можно сказать.

5. Делегация — перепоручение задачи от внешнего объекта внутреннему. Думаю, тут всё понятно.

6. Композиция — включение объектом-контейнером объекта-содержимого и управление его поведением; последний не может существовать вне первого. То есть мы не можем создать двигатель, который не принадлежит никакой машине.

7. Агрегация — включение объектом-контейнером ссылки на объект-содержимое. при уничтожении первого последний продолжает существование. То есть мы можем создать двигатель без машины)

Да кстати, мы можем создавать объекты по разному. То есть у каждого класса есть конструктор, либо он определён, либо нет. Конструктор по умолчанию не содержит ничего внутри себя.

Что такое конструктор?
Он позволяет создать объект сразу с определёнными значениями, например, нам нужно чтобы переменная количество имела значение 2 - мы определяем это в конструкторе. Ещё в нем можно выполнить цикл допустим, либо принять какой-то объект, и что-то сделать с этим объектом.

Минусы у этого подхода наверно уже очевидны:
1. Программист должен быть знаком с этим подходом.
2. Программисту нужно изучить дополнительно варианты создания классов и встроенные библиотеки.

Вот и всё. Надеюсь, было просто и понятно.

Наш твитр: @derkodierer

Comments

Popular posts from this blog

DATA FLOW: СТАТИЧЕСКИЙ АНАЛИЗ ПОТОКА ДАННЫХ

JAVA: ВВЕДЕНИЕ

THE ANONYMOUS SHIELD