Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > Какие функции нельзя использовать в ООП-программе?


Автор: ZZZkoderZZZ 11.3.2013, 12:23
Очевидно, что нельзя использовать функции, унаследованные из языка С. Например выводить на консоль printf-ом.
Но тот-же cout является всего лишь ООП-оберткой вокруг printf, и использованием printf нарушает принципы ООП. То же самое относится к многим другим ф-ям из подключаемых заголовков. 

Так как же вывести на консоль в ООП-программе?

Какие библиотеки написаны от начала до конца в стиле ООП?

Автор: Dem_max 11.3.2013, 12:30
Цитата

и использованием printf нарушает принципы ООП

printf это всего лишь какая то функция которая что то делает. И то что она не является членом класса, не означает нарушение ООП

Автор: xvr 11.3.2013, 12:55
Цитата(ZZZkoderZZZ @  11.3.2013,  12:23 Найти цитируемый пост)
Очевидно, что нельзя использовать функции, унаследованные из языка С.

Ой. Позвольте напомнить вам, как расшифровывается ООП - Объектно Ориентированное Программирование. Т.е. ООП вовсе не означает, что программа будет состоять из одних только объектов. Более того, С++ реализует свою собственную парадигму ООП, и она вовсе не означает, что в программе должно быть все на объектах. Конечно можно сделать все на объектах - может получиться мертворожденный монстр  smile 

Если вам нужно чистое ОП используйте другие языки, Smalltalk например

Добавлено через 40 секунд
Или Objective-C. Как это не странно, он более ОП язык, чем С++  smile 

Автор: borisbn 11.3.2013, 13:40
Цитата(ZZZkoderZZZ @  11.3.2013,  12:23 Найти цитируемый пост)
Очевидно, что нельзя использовать функции, унаследованные из языка С.

Подскажи, а как при помощи ООП посчитать синус или экспоненту ?
Цитата(ZZZkoderZZZ @  11.3.2013,  12:23 Найти цитируемый пост)
Так как же вывести на консоль в ООП-программе?

если ты имеешь в виду не в ООП-программе, а в программе на Си++, то http://en.cppreference.com/w/cpp/io/basic_ostream

2 ТС: не читай, пожалуйста, дальше
хотя... если признаться честно, то я с бОльшим удовольствием использую printf. его форматирование намного удобнее, чем ostream'овское

Автор: volatile 11.3.2013, 17:37
Цитата(ZZZkoderZZZ @  11.3.2013,  12:23 Найти цитируемый пост)
Но тот-же cout является всего лишь ООП-оберткой вокруг printf, 

тот же cout являецца представителем STL, стандартной С++ библиотеки, которая (в целом) к принципам ООП имеет весьма отдаленное (мягко говоря) отношение. smile 

Автор: bsa 11.3.2013, 21:12
Цитата(ZZZkoderZZZ @  11.3.2013,  13:23 Найти цитируемый пост)
Очевидно, что нельзя использовать функции, унаследованные из языка С.
кому? кто такую чушь сказал? связь программы с внешним миром возможна только через обычные функции.
Цитата(ZZZkoderZZZ @  11.3.2013,  13:23 Найти цитируемый пост)
Но тот-же cout является всего лишь ООП-оберткой вокруг printf
Вот это новость так новость...

ООП - это вообще другое. Эта штука над-языковая. Можно используя ООП писать хоть на ассемблере.

Читай книжки лучше, а не позорься такими вопросами. Список литературы есть в ответах на часто задаваемые вопросы в разделе для Новичков.

Автор: Dem_max 12.3.2013, 04:06
Цитата

итай книжки лучше, а не позорься такими вопросами.

За это все его темы сразу были перемещены в мусорку на Sources ру

Автор: ZZZkoderZZZ 12.3.2013, 09:00
Цитата(bsa @ 11.3.2013,  21:12)
Цитата(ZZZkoderZZZ @  11.3.2013,  13:23 Найти цитируемый пост)
Но тот-же cout является всего лишь ООП-оберткой вокруг printf
Вот это новость так новость...

А каким-образом по-вашему производится непосредственный вывод текста в консоль? 
Дошел в отладчике от cout<<2 до sprintf_s. 
Не printf, но почти то же самое. Ф-я на языке С, никакого ООП.

Автор: borisbn 12.3.2013, 09:02
ZZZkoderZZZ,
1) классы и (особенно) перегрузка операторов - ни разу не ООП
2) а ты уверен, что в GCC cout реализован так же ?

Автор: fish9370 12.3.2013, 09:36
Цитата(ZZZkoderZZZ @  12.3.2013,  09:00 Найти цитируемый пост)
Дошел в отладчике от cout<<2 до sprintf_s. Не printf, но почти то же самое. Ф-я на языке С, никакого ООП.


представляешь, а дальше идет машинный код - ассемблер, представляешь? и никакого ООП..

ты немного неадекватный, тебе каждый второй на этом форуме уже сказал - ООП это не язык программирования - это подход к программированию

вопросы у тебя пока еще глупые, видимо возраст еще не тот

Автор: bsa 12.3.2013, 10:12
Цитата(ZZZkoderZZZ @  12.3.2013,  10:00 Найти цитируемый пост)
Дошел в отладчике от cout<<2 до sprintf_s. 

отлично. а если пойдешь дальше, то дойдешь до vsprintf_s, затем до fwrite, write и WriteConsoleOutput. только функция WriteConsoleOutput (гуру в WinAPI, я не ошибся?) позволяет выводить на консоль. Все остальное существует исключительно для удобства программирования и соответствия стандартам языка.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)