Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (10.12.2007 в 14:56)
Под объектными свойствами языка C++ имеется в виду возможность создавать классы, объекты, шаблоны и перегружать операторы для них (т.е. задавать поведение операторов при попытке применить их к объектам).

В обычном языке программирования определён базовый набор классов int, float и т.п. Решая задачу вы оперируете машинными типами, заданными языком программирования. Да имеются специализированные языки программирования, которые вводят свои сущности для конкретной предметной области. Однако, под каждую предметную область язык не разработаешь - дорого, сложно. Поэтому вводят объектно-ориентированный подход - программист сам определяет свой собственный тип и его поведение, а потом оперирует им. Создаёт мини-язык для своей предметной области.

Тип такой пользовательской переменной называется классом (class),
А сама переменная объектом класса.

Класс задаёт поведение объекта, определяя его свойства (переменные входящие в состав объекта) и методы (функции, которые оперируют над объектом).

В результате вместо того, чтобы оперировать машинными терминами - целые числа, строки и т.п. вы можете оперировать моделями предметной области. Например, вводите вы класс клиента (client), работника (employee) и договора между клиентом и работником (contract). В результате вы получаете возможность заключать договор между работником и клиентом одной интуитивно понятной строкой:
contract = client + employee

А представляете сколько потребовалось бы кода каждый раз и сколько бы ошибок было в нём, если бы не было построен это специализированный мини-язык. А так вы можете построить язык предметной области и можете с ним потом работать и не только работать, но и развивать. Потребовалось вам ввести несколько типов работников - вы можете унаследовать от класса employee новые класса - при этом вам не придётся переписывать методы входящие в состав employee - они автоматически войдут в состав новых классов.

PS Любая книга по C++ рассматривает объектно-ориентированные возможности - вы не пройдёте мимо их. Если вам всё же это удастся вы не будете знать языка C++, вы будете знать язык C. C++ конечно не является полностью объектно-ориентированным языком, как Smalltalk или тот же JavaScript, однако избежать объектов практически невозможно. Даже при выводе в стандартный вывод вы используете перегруженный оператор << объекта cout стандарной библиотеки iostream.
PPS Язык сложный, так как объединяет и системный уровень (указатели на переменные, указатели на функции), так и очень абстрактный уровень (ООП, шаблоны). Через это, практически ни один программист всеми возможностями языка не пользуется (и зачастую даже всех не знает) - в отличие от других языков здесь речь идёт не о сторонних библиотеках, а именно о базовых конструкциях синтаксиса - столько ньюансов, что в голове держать невозможно.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: