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

Привет всем! Сегодня разберём способы программирования и то, какие подходы бывают!
А подходов к написанию программ у нас всего два - процедурный и объектно-ориентированный - далее ООП.
Что это значит?
В процедурном языке программирования (или процедурном подходе в поддерживающих ООП языках) нет объектов.
Не очень понятно, правда?
Смотрите, объект - это виртуальная сущность с значениями и функциями, которая создаётся от класса.
Класс - это как бы конструкция, то есть чертёж, на основе которого создаётся объект.
В старых языках объектно-ориентированный подход не поддерживается и они считаются процедурными (напр. C, Pascal). А в таких языках как C++, Java, C#, Python, JavaScript - ООП поддерживается, но при желании Вы всё равно можете писать в процедурном подходе.
У этих двух подходов есть как свои плюсы, так и свои минусы.
Плюсы процедурного подхода заключаются в скорости и безопасности (т.е. у нас очень мало процентов вероятности что что-то может пойти не так).
Минусы состоят из -
1. Большого количества повторений (мы можем написать функцию, и даже цикл, но многие вещи нам всё равно придётся повторять, потому что мы не можем создать объект и обращаться к этому объекту, и в некоторых моментах нам функции придётся постоянно переписывать)
2. Небезопасности пространства имён - то есть у нас все переменные в глобальной области и мы можем случайно обратиться к ним (мы не можем скрыть их в объектах опять же).
3. Не читаемость - весь код свален в одну кучу, в одном файле, и когда мы смотрим на большую программу - там всё скинуто в одном месте и понять что там происходит очень трудно.
ООП решает эти вопросы. Принципы ООП состоят из:
1. Инкапсуляции - это значит что мы можем пометить ту или иную переменную как приватную, и получить доступ мы сможем к ней только по определённым механизмам.
2. Полиморфизм - мы можем написать функцию, которая может работать и с числами, и со строками. Или с одним типом объектов и с другим, например.
3. Наследование - мы можем создать класс (это описание для создающегося объекта) и создать ещё один класс, который будет наследоваться.
Например, класс машины общий, его наследуют легковые машины, которые наследуют спортивные машины.
4. Абстракция - отделение концепции от её экземпляра, то есть это когда мы пытаемся намеренно представить объект с тем минимумом характеристик, которых хватает для точного представления объекта. Такой минималистичный подход, можно сказать.
5. Делегация — перепоручение задачи от внешнего объекта внутреннему. Думаю, тут всё понятно.
6. Композиция — включение объектом-контейнером объекта-содержимого и управление его поведением; последний не может существовать вне первого. То есть мы не можем создать двигатель, который не принадлежит никакой машине.
7. Агрегация — включение объектом-контейнером ссылки на объект-содержимое. при уничтожении первого последний продолжает существование. То есть мы можем создать двигатель без машины)
Да кстати, мы можем создавать объекты по разному. То есть у каждого класса есть конструктор, либо он определён, либо нет. Конструктор по умолчанию не содержит ничего внутри себя.
Что такое конструктор?
Он позволяет создать объект сразу с определёнными значениями, например, нам нужно чтобы переменная количество имела значение 2 - мы определяем это в конструкторе. Ещё в нем можно выполнить цикл допустим, либо принять какой-то объект, и что-то сделать с этим объектом.
Минусы у этого подхода наверно уже очевидны:
1. Программист должен быть знаком с этим подходом.
2. Программисту нужно изучить дополнительно варианты создания классов и встроенные библиотеки.
Вот и всё. Надеюсь, было просто и понятно.
Наш твитр: @derkodierer
Comments
Post a Comment