|
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
|
||||||||||||||||
Реализация методов доступа к закрытым полям (геттеры и сеттеры)07.05.2015, 20:30. Показов 4763. Ответов 13
Метки нет (Все метки)
Здраствуйте. Нужно реализовать в программе методы get и set
Вот мой код: Заголовочный файл
Преподаватель попросил добавить их в код. Хотя все остальные методы написаны без их участия, объясняя это, что без них "Матрица вещь в себе". Понимаю, что нужен доступ к private полям, но насколько это важно, если эти методы нигде не использовала в программе. Просто правило программирования хорошего уровня? В исходном коде.cpp получилась такая картина. Нужно ли показывать в программе как работают гетеры и сетеры в main, или они просто должны быть как методы доступа к закрытым полям в хорошей программе.
0
|
||||||||||||||||
| 07.05.2015, 20:30 | |
|
Ответы с готовыми решениями:
13
Почему у методов класса есть доступ к закрытым полям другой переменной такого же типа?
|
|
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
|
||||||
| 07.05.2015, 20:38 [ТС] | ||||||
|
Ругается на set функцию
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 07.05.2015, 20:40 | |
|
Если ты к этим полям доступ даёшь, зачем они вообще в секции private?
0
|
|
|
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
|
|
| 07.05.2015, 20:46 [ТС] | |
|
Они же закрыты. Я читала про такие функции. А что не так. Я же их уже защитила тем, что они не public
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 07.05.2015, 20:51 | |
|
Ну я и говорю: ты их защищаешь, а потом создаёшь функции, которые делают их доступными.
0
|
|
|
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
|
||||||
| 07.05.2015, 21:03 [ТС] | ||||||
|
вроде бы вот так нужно. Правильно?
Но тогда и методы класса и дружественные функции тоже имеют доступ к этим полям. Я про них читала мне кажется у Шилдта да и в нете встречала. Я тоже считала, что они не нужны и реализовала без них, но препод попросил их добавить, что бы класс стал "правильным". Может будут еще мнения...
0
|
||||||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
||
| 07.05.2015, 21:22 | ||
|
Ну и общепринятый совет: опираться на требования к задаче.
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
| 07.05.2015, 22:01 | ||||||
|
lenarano, при создании подобных классов матриц имеет смысл предоставлять удобный интерфейс для доступа к элементам, а не открывать путь к внутренней реализации. Т.о. getSize() ещё обоснован, а вот getPtr() довольно сомнителен.
P.S. Методы, не меняющие логическое состояние объекта следует объявлять константными:
0
|
||||||
|
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
|
|
| 07.05.2015, 22:24 [ТС] | |
|
да, согласна. Возможно есть логика в том, чтобы доступа к указателю не было. По поводу const не совсем поняла. Т.е. это поле мы хотим, чтобы было неизменным и поэтому защищаем от изменений. Это сказали?)))
0
|
|
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 07.05.2015, 22:28 | |
|
lenarano, явно указываете,что в этом методе объект не изменит своего состояния(значения).
1
|
|
|
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
|
|||||||||||
| 07.05.2015, 22:34 [ТС] | |||||||||||
|
еще хотела спросить.Предположим, что мы хотим бросить исключение, чтобы m_saze не был отрицательным. Реализовали это в
0
|
|||||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 07.05.2015, 23:01 | |
|
Просто вставь такую же проверку в конструктор.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 07.05.2015, 23:21 | |||||||
|
"сделайте так, что бы то, чего быть не должно, не смогло возникнуть в принципе". количество яблок не может быть отрицательным. количество элементов массива тоже не может быть отрицательным. размер матрицы не может быть отрицательным. и не сможет быть в принципе, потому что тип данных size_t - беззнаковый. в этом смысле вы очень правильно использовали size_t однако, условие:
потому что переменная size никогда не будет меньше нуля.
1
|
|||||||
| 07.05.2015, 23:21 | |
|
Помогаю со студенческими работами здесь
14
Константы, геттеры/сеттеры и производительность Как реализовать изменение полей классов через сеттеры и геттеры Нормально ли размещать геттеры, сеттеры, прочие методы из 1 строчки в .h файлах? Дружественная функция-оператор, доступ к закрытым полям класса Получение доступа к закрытым методом класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|