Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2013, 20:44   #51
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Опять Вы свою хрень парите. Только мозги новичкам запудриваете.
Инкапсуляция и сокрытие данных, это одно и то-же. Масло - масляное.
Цитата:
Инкапсуляция - это способность языка создать модель объекта, в которой соединены его свойства и поведение.
Сокрытие данных здесь не при чём.
8Observer8 вне форума Ответить с цитированием
Старый 09.02.2013, 20:59   #52
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Да, что-ж за упёртый-то такой.

Цитата:
Инкапсуляция (encapsulation) предназначена для защиты «внутренностей» реализации. Хорошим стилем в объектно-ориентированном программировании являются сокрытие структуры внутренних данных от внешнего мира и разрешение взаимодействия только через допустимые «каналы» связи, что исключает возможность неправильных действий со стороны «внешнего» мира. В языке C++ это обеспечивается объявлением некоторых (или всех) членов класса закрытыми или защищенными. Инкапсуляция — один из трех столпов объектно-ориентированного программирования (два других — наследование и полиморфизм). Среди этих столпов инкапсуляция, возможно, самый главный, особенно для малых и средних по размеру проектов. Важность инкапсуляции заключается в том, что каждый класс (и, следовательно, объект) может изменяться или оптимизироваться в процессе разработки или даже после ее завершения без нарушения работоспособности остальных частей программы. Понятие инкапсуляции тесно связано с понятием абстракции. Грубо говоря, оба они означают одно и то же — сокрытие деталей.

С++ Специальный справочник. Борис Карпов, Татьяна Баранова.
Издательский дом "Питер" 2001 г.
Не убеждает?
Я уже говорил. Прежде чем лезть книжки писать, матчасть выучите.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 09.02.2013 в 21:02.
Smitt&Wesson вне форума Ответить с цитированием
Старый 10.02.2013, 12:19   #53
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Вопрос терминологии. Крупник разделил инкапсуляцию и сокрытие данных. Я уважаю этого автора и придерживаюсь его терминологии. Притензии к нему, а не ко мне.

Тогда так:

Объектно-ориентированный подход (ООП):

- Классификация

- Специализация

- Полиморфизм

Соответствующие механизмы в С++:

- для классификации: инкапсуляция

- для специализации: наследование
8Observer8 вне форума Ответить с цитированием
Старый 10.02.2013, 16:54   #54
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Притензии к нему, а не ко мне.
Если он напишет на форуме - то вопросы будут, безусловно, к нему.
Цитата:
Я уважаю этого автора и придерживаюсь его терминологии.
Если я приеду в Америку - то буду, хотя бы, пытаться говорить на их языке, инче меня не поймут. В некотором плане, это тоже вопрос терминологии.

Уже много раз хотел спросить, почему Крупник? - для большинства здесь присутствующих он авторитетом не является, а почему Вы его" уважаете"? - я посмотрел персоналию Крупника на озоне, у него куча книг типа
Цитата:
"Безопасность домашнего ПК. Народные советы "
"Твой путь в Интернет "
"Шоппинг в Интернете "
"Поиск в Интернете. Самоучитель "
"Изучаем Ассемблер "
Бизнес в интернете"
Я более чем уверен, что книги поверхностные. Его терминология, может быть, очень хорошая, но Вас не поймут если будете ее придерживаться.
rrrFer вне форума Ответить с цитированием
Старый 10.02.2013, 17:27   #55
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Если он напишет на форуме - то вопросы будут, безусловно, к нему.

Если я приеду в Америку - то буду, хотя бы, пытаться говорить на их языке, инче меня не поймут. В некотором плане, это тоже вопрос терминологии.

Уже много раз хотел спросить, почему Крупник? - для большинства здесь присутствующих он авторитетом не является, а почему Вы его" уважаете"? - я посмотрел персоналию Крупника на озоне, у него куча книг типа

Я более чем уверен, что книги поверхностные. Его терминология, может быть, очень хорошая, но Вас не поймут если будете ее придерживаться.
Не судите книжку по обложке. "Изучаем Ассемблер" и "Изучаем С" - рекомендую новичкам!

Посмотрите исходный код примеров к книге "Изучаем С++": http://programmersforum.ru/showpost....&postcount=147

И будет понятно, что знания для новичка совсем неповерхностные.

Последний раз редактировалось 8Observer8; 10.02.2013 в 17:39.
8Observer8 вне форума Ответить с цитированием
Старый 10.02.2013, 19:21   #56
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Если он пишет хорошо, читать приятно - ладно. Не поленился, примеры посмотрел, вижу что код Ваш Крупник не форматирует, например:
Код:
// А.Крупник "Самоучитель по С++"
// Листинг 4.6. Рекурсивный вывод чисел на экран
#include <iostream>
using namespace std;
void CntTo(int);
int main() {
int n;
CntTo(3);
}
void CntTo(int n){
   if(n > 0) {
   CntTo(n - 1);
   cout << n << endl;
}
}
эти примеры он сам писал и к книжке приложил, или это проделки читателей?
-------
Просмотрел книжку, может быть и нормальная книжка, для школьников совсем нормальная.

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

Последний раз редактировалось rrrFer; 10.02.2013 в 19:57. Причина: добавил
rrrFer вне форума Ответить с цитированием
Старый 10.02.2013, 23:47   #57
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,723
По умолчанию

Цитата:
Крупник разделил инкапсуляцию и сокрытие данных
Это плохо, т.к. ведет к путанице понятий, что уже налицо.
Цитата:
Объектно-ориентированный подход (ООП):
- Классификация
- Специализация
- Полиморфизм
Соответствующие механизмы в С++:
- для классификации: инкапсуляция
- для специализации: наследование
Насколько помнится из философии, классификация это обобщение+специализация. (т.е. абстрагирование в двух противоположных направлениях)
Наследование - это (ООП-шный) способ классификации, но в С++ есть и другие (шаблоны, например).
Инкапсуляция относится к распределению ответственности.
Полиморфизм... всего-то навсего многозначность (идентификаторов), ABBYY Lingvo:
Цитата:
это использование под одним именем различных процедур<...> даёт возможность абстрагирования свойств
Относится к той же философской категории "классификация"

Соответствующие механизмы ООП в С++:
- для сокрытия: квалификаторы доступа (в т.ч. по умолчанию), лексические разграничения, вкл. классы и пространства имен;
- для наследования: расширение структур (для множественного - композиция), в т.ч. таблиц виртуальных функций;
- для полиморфизма: перегружаемые, виртуальные функции.
Приблизительно как-то так.
Благими намерениями устлана дорога на programmersforum.ru

Последний раз редактировалось MihalNik; 10.02.2013 в 23:53.
MihalNik вне форума Ответить с цитированием
Старый 10.03.2013, 20:23   #58
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
эти примеры он сам писал и к книжке приложил, или это проделки читателей?
Так и наборщики могли нафигачить. Хотя конечно если он сам писал то честь ему и хвала отменяется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.04.2013, 18:30   #59
igole
 
Регистрация: 14.12.2012
Сообщений: 8
По умолчанию

Ребят, я не пойму почему не функционирует. Я в С++ начинающий, и для меня ДАЖЕ такое сложно
Цитата:
// код не полный!!!


#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;

int transpose(){
int t, n, i, j;
cout<<"Задайте размеры квадратных матриц"<<endl;
cin>>n;
int matrix[n][n];
for(i=0; i<n; i++)
{
for(j=i; j<n; j++)
{
t = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = t;
}
}
}
int main(){
setlocale(LC_CTYPE, "rus");
int i,j,n;
cout<<"Программа вычисляет значение выражения A-(B*C^t)^t, где А,В,С - матрицы"<<endl;
cout<<"Задайте размеры квадратных матриц"<<endl;
cin>>n;
cout<<"Введите элементы матрицы А (заполнение построчно)"<<endl;
int a[n][n];
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>a[i][j];
}
}
transpose(a);
for(int i = 0; i < 5; ++i)
{
for(int j = 0; j < 5; ++j)
cout << a[i][j]<<endl;
}
system("pause");
}
igole вне форума Ответить с цитированием
Старый 23.04.2013, 18:56   #60
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Ребят, я не пойму почему не функционирует.
К счастью, у Вас есть компилятор, который должен был дать объяснения. Если Вы не можете перевести их (сообщения компилятора) с английского - приведите их здесь.

P.S. Только, наверное, стоит в отдельной теме.

Последний раз редактировалось Abstraction; 23.04.2013 в 18:59.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструкция по созданию заготовки для 2D игр (для начинающих) 8Observer8 Gamedev - cоздание игр: Unity, OpenGL, DirectX 31 20.03.2023 02:01
C++ для начинающих a_Alise Помощь студентам 2 27.03.2016 10:00
C++ для начинающих Haruko_ Помощь студентам 0 23.10.2012 21:41
С++ для начинающих Maxim1 Общие вопросы C/C++ 10 31.05.2010 00:22