Задать вопрос

Чем Классы отличаются от обычных функций?

Я написал пару прог используя классы и это архи удобно! Но, Я не совсем понимаю разделение на классы, объекты, функции, операторы и типы данных. Ведь по сути, всё это структуры данных и операции над ними. Ведь если исхитриться можно, используя класс, написать аналоги циклов, условных операторов и прочего так как, когда вызываешь оператор - это ведь объект, который добавили разработчики языка, можно зайти в конфиг и нахимичить с теми же операторами. Или Я чего то не понимаю!? у меня от обилия терминов каша в голове помогите её немного разгрести. В Haskell'е к примеру if, for нет, есть только функции!
  • Вопрос задан
  • 2764 просмотра
Подписаться 7 Простой 7 комментариев
Решения вопроса 1
php666
@php666
PHP-макака
гради буч объектно-ориентированный анализ и проектирование скачать бесплатно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
RabraBabr
@RabraBabr
ООП это не управление сложностью как многие тут напишут. Это сущность другого уровня абстракции. Вы смешали в одну кучу сущности из разных уровней.
Вот смотрите - в физическом мире есть микромир с электронами, протонами, фотонами и не знаю там чем еще. Он работает по своим законам квантовой механики. Есть макромир уровня вещей самолетов, яблок, деревьев. Он работает по законам Ньютоновской механики. Есть мир космогонии уровня звезд галактик черных дыр. Он работает по Теориям Эйнштейна. Видите как просто. Мы прошлись по трем уровням абстракции материального мира самого низкого до самого высокого.
Так же и в мире информации есть самые низкие уровни машинных кодов, регистров и отдельных битов. А есть более высокие уровни функций, еще более высокие уровни классов и даже еще более высокие уровни абстракций. Так вот ваша задача рассортировать все те сущности, что вы привели правильно по разным уровням. А у вас все в одной куче: операторы, переменные, классы. И не надо высшему миру знать о низшем ничего. Тогда все будет правильно.
Беда программирования в том, что очень мощные инструменты доступны всем. Вот представь мед лабораторию с микроскопами, скальпелями пробирками и другим оборудованием. Туда не каждого пустят. В программировании же каждый может нажать кнопку скачать и начать творить всякую фигню. Пришить пятую ногу собаке, вырастить ей ухо на спине и рога на лбу. Была такая книга - "Многоярусный мир". Там один товарищ специализировался на таких уродцах. Вот потом эти уродцы начинают мстить их создателю.
Так вот нормальный программист попав в этот мир уродцев, зачастую впадает в ступор. Зачем так делать? Ну то есть делать можно все, что угодно. Но не нужно. Его задача уменьшать энтропию вселенной, а не увеличивать.
Ответ написан
@Evander83
Возьмем С++. В нем есть базовые типы данных (int - тип для целых чисел; float и double - типы для дробных чисел, bool - тип для хранения логической величины) и базовые операторы (+, -, *, / - для создания выражений с арифметическими операциями; ||(или), &&(и), !(не) - для выражений с логическими операциями; ==, !=, >, <, <=, >= - для выражений со сравнением, = - оператор присваивания, вычисляющий значение выражения и сохраняющий его в переменную. Так же есть операторы управляющие ходом выполнения программы (циклы - for, while, do..while; ветвление программы - if..else, switch). С помощью создания переменных для хранения значений базовых типов, и описания последовательности выполнения базовых операторов над этими переменными, можно написать любую программу. Но она может получиться длинной и запутанной. Для локаничной записи используют группировку базовых элементов в пользовательские составные элементы. Это пользовательские типы данных (для переменных) - структуры и классы; и пользовательские операторы - функции. После описания пользователем собственных типов и собственных функций их можно использовать в программе на ровне с базовыми.
Если взять JavaScript, то всё очень похоже. Отличие в том, что не нужно заранее предупреждать компилятор (которого нет, а есть интерпретатор) о типе переменных. Переменные резиновые и хранят в себе всё, что в них положат. Будь то значение базового типа или пользовательского.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы