241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
||||||||||||||||
1 | ||||||||||||||||
Что-то код выдаёт не так07.10.2009, 16:24. Показов 2405. Ответов 29
Что-то код выдает неправильно, хотя он и компилится:
Всё, понял,нужно было вот так:
Вы не объясните зачем нужно вот это:
0
|
07.10.2009, 16:24 | |
Ответы с готовыми решениями:
29
При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так? Выдаёт ошибку, пишет что слишком мало аргументов в функции Per, что не так, подскажите После удаления компонента ComboBox выдает сообщение, что с ним что-то не так, хотя его нигде в этом файле нет Выдает ошибку. что не так? |
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
|
|
07.10.2009, 16:31 | 2 |
0
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|||||||||||
07.10.2009, 17:16 [ТС] | 3 | ||||||||||
Добавлено через 8 минут 2) Если бы эти функции
0
|
07.10.2009, 17:21 | 4 |
по умолчанию переменные класса private, т.е. напрямую доступа к ним нет, только через обращение к соотв. ф-ям, которые имеют public visibility.
Добавлено через 2 минуты вы и так к ним имеете доступ только на считывание (через эти ф-ии). дать им значения можете только в конструкторе. в принципе этих переменых может вообще не быть в самом классе, значения могут объектом каким-то образом вычисляться, а "снаружи" будет казаться что функция get () возвращает вам значение некой переменной.
0
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
||||||
07.10.2009, 17:53 [ТС] | 5 | |||||
Я про это имел ввиду,если изменить код,тоесть использовать функции члены класса но он не компилируется
Упустил (). Скажите, это получается,что доступ к закрытым переменным класса, можно получить только через функции, и без разницы где они описаны, в самом классе, или за классом, правильно я понял?
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
07.10.2009, 18:36 | 6 |
Это методы доступа к закрытым полям класса. За пределами класса переменные private и protected не видно. protected видно только в наследниках. Если объявишь эти методы за пределами класса, то будет ошибка из-за того, что компилятор просто не поймет те переменные которые ты хочешь вернуть или изменить. Поэтому они объявляются только в пределах класса. В C# это называется свойствами. Ознакомься с одним из принципов ООП - инкапсуляцией. Так вот эти методы и обеспечивают корректную работу твоего класса и обращение к закрытым полям(элементам скрытым в капсуле) через эти методы(специальные каналы в стенках капсулы)
1
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|||||||||||
07.10.2009, 19:03 [ТС] | 7 | ||||||||||
Код
[B]Инкапсуля́ция[/B] — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя.
1)Скажите, реализацию какого объекта мы скрываем от пользователя? 2)
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||||||
07.10.2009, 20:34 | 8 | |||||
Сообщение от Гради Буч
Развивая кусок кода из википедии
0
|
07.10.2009, 21:33 | 9 |
0. будет неверным говорить, что класс А инкапсулирует свойства а,б и метод до_самтинг(), т.к. нет у этого класса этих свойств. свойства - это то, о чем известно "пользователю" класса. вот например такой класс:
класс кисть { публик: цвет гет_цвет () кисть (рэд, грин, блу) : р(рэд), г(грин), б(блу) прайвит: целое р целое г целое б } видишь: если создать объект класса кисть, то он будет обладать свойством "цвет", значение которого можно будет получить, используя метод класса "гет_цвет()", хотя на самом деле внутри класса нет переменной "цвет", и пользователю, использующему объект, нет дела до того откуда этот цвет берется.
0
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|
07.10.2009, 21:34 [ТС] | 10 |
Ваш код M128K145,чего-то не компилится, выдаёт ошибочку:
error C2440: 'initializing' : cannot convert from 'A *' to 'A' Я вроде так и не получил ответ на 2 вопроса. 1)Инкапсуляция - это,когда я создал объект закрытого класса в функции мэин?
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||||||
07.10.2009, 21:50 | 11 | |||||
Syltan, я писал весь код в редакторе поэтому там могут быть еще ошибки небольшие. Попробуй так
0
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|||||||||||
07.10.2009, 22:03 [ТС] | 12 | ||||||||||
Код
позволяющее объединить данные и код в объект и скрыть реализацию объекта То есть например я объявил в привате функцию
0
|
07.10.2009, 22:11 | 13 |
что такое "объект закрытого класса"? чушь какая-то.
инкапсуляция - это когда от того, кто использует объекты класса, скрыта реализация. т.е. реализация "инкапсулирована" в классе, снаружи нет доступа к ней. это удобно тем, что, раз создав удобный пользователю интерфейс, мы можем менять реализацию поведения и внутреннего представления объектов данного класса без необходимости изменять код, в котором объекты данного класса используются.
0
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|
07.10.2009, 22:55 [ТС] | 14 |
Код
что такое "объект закрытого класса"? чушь какая-то. Ответьте на 12 пост, я не получил так ответа.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||||||||||
08.10.2009, 06:55 | 15 | |||||||||||||||
Сообщение от Syltan
иллюстрация
если расскомментировать, она пишет Код
[guest@station tmp]$ g++ t.cpp -o t t.cpp: In function ‘int main()’: t.cpp:9: ошибка: ‘int main()::X::something’ is private t.cpp:25: ошибка: в данном контексте
1
|
08.10.2009, 10:50 | 16 |
это не называется инкапсуляцией. это называется нарушением доступа. ф-я объявлена в классе приватной, поэтому доступна только объектам данного класса, а вы ее попытались вызвать ее "снаружи".
вы приходите в ресторан. там есть кухня, но вас туда не пустят, если вы не сотрудник ресторана: туда - приватный доступ. только "членам класса". вы можете взять меню и заказать официанту что-нибудь. а приготовление, как и заказ продуктов, уборка, оплата электричества, газа и пр. "инкапсулированы втутри ресторана", т.е. вы можете догадываться как это функционирует, но не можете в этом поучаствовать. ваш интерфейс: меню и официант. если несъедобное принесли - пожаловаться можете шефу можете (тоже ф-я вашего интерфейса), но пойти и поучать повара вас не пустят. и вообще может там нет никакого электричества. и никакой кухни может тоже нет (а вчера была!). с сегодняшняго дня по четным (а сегодя 4-е) все заказы перенаправляются в соседний ресторан и там готовятся и доставляются по пневмопочте (они оптимизировали реализацию). но вас это не касается: вы заказали, вам принесли, и вы не заметили разницы. потому что реализация инкапсулирована внутри класса "ресторан".
1
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|
08.10.2009, 14:36 [ТС] | 17 |
Код - это функции-члены класса, в которых описан код.
Данные - это переменные, описанные в самом классе, а не в функциях. Инкапсуляция - это использование экземпляра класса, то есть объекта, который мы получили из-за объеденения даных и код в класс, и скрываем реализацию объекта от пользователя? А так правильно?
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
08.10.2009, 15:25 | 18 |
Syltan, инкапсуляция - это не использование объекта!! Инкапсуляция - это сокрытие всего ненужного тебе хлама которое поддерживает нормальную работу твоего объекта и которое не позволяет тебе нарушить её!
0
|
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
|
|
08.10.2009, 15:29 [ТС] | 19 |
1)
Код
Код - это функции-члены класса, в которых описан код. Данные - это переменные, описанные в самом классе, а не в функциях. 2) Инкапсуляция - скрытие всех, полей, которые использовались для создания этого объекта?
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||||||
08.10.2009, 15:42 | 20 | |||||
Syltan, забудь про объект. Нету у тебя его! Просто нету. Не создал его ты еще. И все ООП рухнуло. Если нет объекта, то нет инкапсуляции, падает один из основных принципов и все пора вешаться. НЕТ! Объект такого класса
Что такое код и данные относительно ООП? Таких понятий в самом ООП нет.
1
|
08.10.2009, 15:42 | |
08.10.2009, 15:42 | |
Помогаю со студенческими работами здесь
20
что не так в программе, выдает ошибку... Что не так, почему ошибку выдает? Программа выдает ошибки, что не так? Что я не так делаю? Выдает ошибку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |