|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.08.2013, 08:06 | #1 | |||
Играюсь с Python
Форумчанин
Регистрация: 12.12.2012
Сообщений: 340
|
Инкапсуляция
Цитата:
Цитата:
Цитата:
через передачу структур в виде указателя void* ? И в таких структурах, наверное первое поле общего типа и задает тип текущего объекта, так? Код:
А дальше идет куча проверок что же это за тип и отсылка его в другую специализированную для его обработки процедуру ? |
|||
01.08.2013, 09:22 | #2 | ||
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Цитата:
Ну и взгляните. В заголовочных файлах Windows есть куча интерефейсов и для С и для С++ в одном файле. Linux ядро тоже так делает, можете посмотреть сорцы. Цитата:
В С++ все проверки делаются во время компиляции. В С еквивалента нет. Ну да, *можно* записывать тип объекта и проверять, но это очень большой overhead. Бессмыслено пытаться писать на С++ с помощью С. |
||
01.08.2013, 10:31 | #3 | ||
Играюсь с Python
Форумчанин
Регистрация: 12.12.2012
Сообщений: 340
|
Цитата:
Цитата:
Свой я уже выше привел, оверхеда там в упор не вижу. В Си модульный принцип построения (вместо классов), модули это как раз связка *.h + один или несколько *.с *.h - интерфейсная часть, *.с - реализация. Пользователь модуля видит только интерфейсную часть, реализация от него скрыта. И куда тогда от сюда позвольте поинтересоваться пропала инкапсуляция? |
||
01.08.2013, 19:32 | #4 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Как раз про Вашу ситуацию - попытках писать в сущностях с++, выражая их на си и будет
Цитата:
Инкапсуляция в терминах модуля сложна в том плане, что Вы получите сложную работу с внутренними глобальными переменными модуля, для имитации private полей "классов" -структур, ещё и пачку аксессоров придётся городить. И коли хотите задействовать - то на си сделать это непосредственно будет очень сложно. По теме - внимательно читаю, отмечаю для себя важные крупицы, но сказать пока нечего ) так что удачи и ровной дороги вперёд ! Ну, разве что могу сказать, что путь к пониманию для чего нужна инкапсуляция и полиморфизм в реальном проекте частенько долгий и требует опытов и опыта, поэтому важно хорошенько совмещать теорию с практикой - тренировать изученную практику на небольших задачах, и так по кругу. |
|
01.08.2013, 20:21 | #5 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Цитата:
А что касается инкапсуляции, то почему вы решили, что она вообще есть в С? Тут вопрос семантики - что есть инкапсуляция, ибо разбиение на заголовочный файл и файл с имплементацией есть и в С++ но инкапсуляцией там называется совсем другое. |
|
01.08.2013, 23:48 | #6 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
есть мнение, что Beermonza был прав: читать у кого более полиморфный или инкапсулированный, в теме про создание игры, не особо интересно. особенно принимая во внимание, что в главной истории пока пишется только абстракт и введение, и до основной части, в которой может появятся какие-нибудь подробности, детали, результаты пока еще далеко.
|
02.08.2013, 00:04 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
02.08.2013, 06:20 | #8 | |||||||
Играюсь с Python
Форумчанин
Регистрация: 12.12.2012
Сообщений: 340
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
И что совсем недавно он написал? Цитата:
Матов тут нет пропаганды чего-то запрещенного тоже нет. Что за истерическая педантность за чистоту тем? Цитата:
зы. Гром, извиняюсь за многия быквы, но мне кажется годный фидбек получается. |
|||||||
02.08.2013, 06:38 | #9 | ||
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Можно в принципе и в Сях инкапсулировать что-то внутри модуля (когда интерфейс находится в 1.h, а в 1.c подключается 1_impl.h). Если не давать пользователю ничего, кроме 1.h, то тоже вполне себе черный ящик получится. Хотя в плюсах действительно инкапсуляция, как один из столпов ООП, обычно применяется именно к классам.
А насчет полиморфизма ничего не скажу, поскольку на Си писал мало, и с ним не сталкивался. Скорее всего, явно он там не поддерживается, и поэтому мало кто "пытаться писать на С++ с помощью С". Со своей идеологией в чужой язык ходить - это только велосипеды строить, которые будут очень корявыми и осложнены большими накладными расходами. Цитата:
Цитата:
Скоро наконец уже более предметный разговор пойдет.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же Последний раз редактировалось Гром; 02.08.2013 в 06:53. |
||
02.08.2013, 06:52 | #10 | |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Цитата:
Если даже речь идет о том, что какие-то моменты недостаточно освещены - то в данном случае это чисто проходная информация, которую я считаю по умолчанию известной. В сети об этом написаны просто гигабайты текста, и добавлять лишние пару Кб от себя - только время зря тратить, отнимая его у самого проекта. Собственно, как я и писал выше, да и в самом посте про проектирование советовал покопаться в сети по поводу неясных моментов. А в каком-нибудь другом топике эту тему обсудить - ради бога. Для этого форум и предназначен, вопрос вполне дискуссионный. Хотя в этой теме и является оффтопиком.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++ инкапсуляция классы | Praud | Помощь студентам | 11 | 16.05.2013 21:52 |
Инкапсуляция | keksik | Общие вопросы Delphi | 1 | 06.04.2012 20:21 |
Инкапсуляция | Syltan | Общие вопросы C/C++ | 21 | 08.10.2009 17:03 |
Инкапсуляция | psycho-coder | Общие вопросы Delphi | 4 | 14.08.2009 13:04 |
Инкапсуляция | Lyxor | Общие вопросы Delphi | 0 | 29.06.2008 13:06 |