Смешивание процедурного и объектно-ориентированного программирования - PullRequest
3 голосов
/ 13 мая 2009

Итак, давным-давно я обычно программировал сначала с Basic на моей первой BBC Model B, а затем с небольшим количеством Pascal в университете, а также собирал по ходу дела.

Затем появился OO, который казался намного более разумным, и это было все, что я использовал с C ++, Perl, Java, Ruby .....

Возвращаясь к программированию не-веб-вещей после перерыва в 8 лет или около того на iPhone, я обнаружил, что Objective C действительно легко поднять, но время от времени приходится бросать Objective C и возвращаться к старому. C для низкоуровневых вещей, и вот где снова возвращается процедурное программирование.

То, что мне нужно, - это хорошее руководство о том, как смешивать объектно-ориентированный и процедурный стили, как управлять памятью, оборачивать ли процедурные части в объект и т. Д. И т. Д.

Также было бы полезно хорошее базовое руководство по хорошему процессуальному стилю для Си, поскольку я, кажется, даже больше не могу мыслить процедурными терминами.

Ответы [ 4 ]

4 голосов
/ 13 мая 2009

Я бы рекомендовал использовать объектно-ориентированное программирование как высший уровень организационного и процедурного программирования для реализации. ОО лучше всего подходит для определения интерфейсов, контрактов между компонентами, разделения кода на согласованные порции и т. Д.

Когда программисты впервые начинают изучать объекты, появляется тенденция сходить с ума с объектами, делая все в поле зрения объекта, как это делает простой встроенный тип. Каждое число становится классом, затем методы распространяются на классы, на всякий случай, если они нужны. Это может стать формой проволочек, отсрочив момент, когда вы, наконец, приступите к написанию кода, который выполняет некоторую работу.

1 голос
/ 13 мая 2009

Насколько я знаю, объектно-ориентированное программирование - это, по сути, связывание данных и действий над этими данными.
C ++ и Ojective-C предоставляют уже готовые механизмы, чтобы помочь вам, но вы все равно можете сделать это самостоятельно.

Многие библиотеки C просто связывают указатель структуры как первый параметр методов OO.
Вы можете найти больше информации об этом, прибегая к помощи "объектно-ориентированного программирования на C".

1 голос
/ 13 мая 2009

Если это поможет, просто думайте о ваших процедурах / функциях как о методах статического класса. Объем ваших ссылок на память немного отличается, но не сильно. Если вы ограничиваете свои функции только доступом к данным, переданным в качестве параметров, это еще проще, поскольку вам не нужно разбираться в символах.

РЕДАКТИРОВАТЬ : Я должен уточнить, что я говорю здесь в общих чертах. Я не занимался разработкой для iPhone, поэтому могу рассказать об особенностях, касающихся доступа к памяти и управления ею.

0 голосов
/ 13 мая 2009

Вам не нужно мыслить процедурно. Оберните все вещи низкого уровня в классы. Вы можете использовать target-c ++.

...