![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| mastermedia |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 31.10.2010 Репутация: нет Всего: нет |
Я хочу сделать, чтобы свойство защищенно от внешнего вмешательства, но было доступно в пределах производных классов. Поэтому я со свойством использую модификатор доступа protected. А для установления и вывода значений данных буду выполнять с помощью открытых методов. Как мне дали понять, использование защищенных переменных плохая практика. Такой код будет лучше?
Это сообщение отредактировал(а) mastermedia - 18.1.2012, 21:45 |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
а что мешает сделать свойство public? я как то не могу придумать case для подобного функционала.
Добавлено через 1 минуту и 25 секунд получится что паблик доступ к свойству все равно есть(пусть и через еще один метод). но почему то производным классам нужно обращаться к свойству напрямую а остальным через метод, какой в этом смысл? Добавлено через 1 минуту и 35 секунд Добавлено через 3 минуты и 25 секунд
это взорвало мой моск, как, каким образом, ты передаешь в свойство МНОГО value что бы обрабатывать их в цикле? |
|||
|
||||
| mastermedia |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 31.10.2010 Репутация: нет Всего: нет |
Экскалупатор,
Я не передаю много value. Метод IsModelCorrect требует от пользователя вводить данные до тех пор, пока он не ведет их правильно. Код только начал писать, там много не дописанно. Выложу само задание, чтобы было понятнее.
Задание: 1) Создать абстрактный класс Trans с методами позволяющим вывести на экран информацию о транспортном средстве, а также определить грузоподъемность транспортного средства. 2) Создать производные классы: Легковая_машина (марка, номер, скорость, грузоподъемность), Мотоцикл (марка, номер, скорость, грузоподъемность, наличие коляски, при этом если коляска отсутствует, то грузоподъемность равна 0), Грузовик (марка, номер, скорость, грузоподъемность, наличие прицепа, при этом если есть прицеп, то грузоподъемность увеличивается в два раза) со своими методами вывода информации на экран, и определения грузоподъемности. 3) Создать базу (массив) из n машин, вывести полную информацию из базы на экран, а также организовать поиск машин, удовлетворяющих требованиям грузоподъемности. Это сообщение отредактировал(а) mastermedia - 19.1.2012, 00:18 |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
я бы переписал это так, не претендую на гениальность, но тем не менее... и все же я тут не увидел ситуации когда потребуется паблик метод и протектед свойство, я считаю что можно вполне ограничиться чем то одним, либо нужно придумать более реальный пример, но у меня придумать не получается. плохо это тем, что у тебя класс позволяет ДВУМЯ способами устанавливать значения, надо определиться, что бы интерфейс работы с классом не вызывал непонятностей, иначе сразу возникнет вопрос, если есть метод и свойство, которые меняют одно и тоже значение, то какой метод нужно использовать? и если их два то в чем их различия(в реализации)? Добавлено через 2 минуты и 14 секунд p.s. да и по правде сказать не должен класс машины узнавать какая у него скорость, ему это значение нужно передать откуда то из вне, при создании класса, ну и при работе с ним в дальнейшем... |
|||
|
||||
| mastermedia |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 31.10.2010 Репутация: нет Всего: нет |
Экскалупатор, согласен. Думаю стоит свойством ограничиться.
|
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 1 Всего: 1 |
mastermedia, я в сисярпе сильно не шарю, но в яве принято вообще-то так, что setter кидает IllegalArgumentException, и никаких IsXXX. Кстати, а имена методов принято писать с большой буквы?
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |