LINUX.ORG.RU

История изменений

Исправление hobbit, (текущая версия) :

Корежит меня от классов и инкапсуляции

От классов-то почему? Это же структура данных + набор функций для работы с ними. Просто в Си ты будешь писать gun_shot(&my_gun, 5), а в c++ — my_gun.shot(5), только и всего.

Но видел примеры с ними и могу лишь сказать, что инкапсуляция - для идиотов. Нельзя взять да вытащить «приватное» поле из объекта - ужас!

В большинстве языков (про «чисто объектные» не говорю) тебя никто не заставляет все поля подряд делать приватными. Но это требование родилось тоже не на пустом месте. Зачастую изменения в классе должны быть согласованы. И вместо того, чтобы в 10 местах вне класса менять его поле и смотреть, что из-за этого ещё должно поменяться, проще один раз написать функцию, которая его меняет безопасным образом. Но повторюсь, это не догма. Это практика хорошего программирования, которую можно довести до абсурда (как некоторые доводят до абсурда замечательные идеи unix-way).

Кстати, специально для тех случаев, когда инкапсуляция не нужна, в c++ можно объявить структуру с методами. Технически такая структура отличается от класса только видимостью полей по умолчанию (public вместо private). Страуструп не зря так сделал, я думаю.

Исходная версия hobbit, :

Корежит меня от классов и инкапсуляции

От классов-то почему? Это же структура данных + набор функций для работы с ними. Просто в Си ты будешь писать gun_shot(&my_gun, 5), а в c++ — my_gun.shot(5), только и всего.

Но видел примеры с ними и могу лишь сказать, что инкапсуляция - для идиотов. Нельзя взять да вытащить «приватное» поле из объекта - ужас!

В большинстве языков (про «чисто объектные» не говорю) тебя никто не заставляет все поля подряд делать приватными. Но это требование родилось тоже не на пустом месте. Зачастую изменения в классе должны быть согласованы. И вместо того, чтобы в 10 местах вне класса менять его поле и смотреть, что из-за этого ещё должно поменяться, проще один раз написать функцию, которая его меняет безопасным образом. Но повторюсь, это не догма. Это практика хорошего программирования, которую можно довести до абсурда (как некоторые доводят до абсурда замечательные идеи unix-way).