![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
watutino |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.11.2007 Репутация: -1 Всего: нет |
Это програмка из учебного пособия по C#: изучается ООП на примере создания виртуального телевизора с функциями вкл., выкл, громкость, номер канала.
using System; namespace TvSet { class TelevisionS { bool isPowerOn; byte maxChannel; byte currentChannel; byte currentVolume; public TelevisionS(byte numberOfChannels) { isPowerOn = false; maxChannel = numberOfChannels; currentChannel = 1; currentVolume = 10; } public void SetPowerStateOn() { isPowerOn = true; } public void SetPowerStateOff() { isPowerOn = false; } public bool GetPowerState() { return isPowerOn; } public bool SetChannel(byte channel) { if (channel <= maxChannel && channel > 0) { currentChannel = channel; return true; } else return false; } public byte GetChannel() { return currentChannel; } public void SetVolume(byte volume) { if (volume > 0 && volume <= 100) currentVolume = volume; else currentVolume = 0; } public byte GetVolume() { return currentVolume; } } class TvSetApp { static void Main(string[] args) { TelevisionS tvSmall; TelevisionS tvLarge; tvSmall = new TelevisionS(6); tvLarge = new TelevisionS(40); tvSmall.SetPowerStateOn(); tvSmall.SetChannel(5); tvSmall.SetVolume(50); tvLarge.SetPowerStateOn(); tvLarge.SetChannel(27); tvLarge.SetVolume(30); Console.Write("Телевизор tvSmall: "); Console.WriteLine("{0}, канал {1} из {2}, громкость {3}", tvSmall.GetPowerState() ? "Включен" : "Выключен", tvSmall.GetChannel(), tvSmall.maxChannel, tvSmall.GetVolume()); Console.Write("Телевизор tvLarge: "); Console.WriteLine("{0}, канал {1} из {2}, громкость {3}", tvLarge.GetPowerState() ? "Включен" : "Выключен", tvLarge.GetChannel(), tvLarge.maxChannel, tvLarge.GetVolume()); tvSmall.SetChannel(3); tvSmall.SetVolume(80); tvLarge.SetChannel(39); tvLarge.SetVolume(60); tvSmall.SetPowerStateOff(); tvLarge.SetPowerStateOff(); Console.Write("\nТелевизор tvSmall: "); Console.WriteLine("{0}, канал {1} из {2}, громкость {3}", tvSmall.GetPowerState() ? "Включен" : "Выключен", tvSmall.GetChannel(), tvSmall.maxChannel, tvSmall.GetVolume()); Console.Write("Телевизор tvLarge: "); Console.WriteLine("{0}, канал {1} из {2}, громкость {3}", tvLarge.GetPowerState() ? "Включен" : "Выключен", tvLarge.GetChannel(), tvLarge.maxChannel, tvLarge.GetVolume()); } } } Выводится ошибка: Error1 'TvSet.TelevisionS.maxChannel' is inaccessible due to its protection level Объясните, пожалуйста, почему? |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
потому что, поля класса лучше объявлять с явными квалификаторами доступа - тогда и вопросов таких будет поменьше. -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 2 Всего: 4 |
Создай свойства в классе!Либо( но лучше не делай!) поставь public у полей класса!И ИМХО, читай книги!
![]() --------------------
www.binary-studio.com |
|||
|
||||
watutino |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.11.2007 Репутация: -1 Всего: нет |
Очень благодарен за помощь. Действительно добавив public к byte maxChannel программа заработала.
На счет "ЧИТАЙ книги" согласен полностью, но вот эта "работающая прогр." и есть с книги-самоучителя... |
|||
|
||||
Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 4 Всего: 17 |
Интересно, что за книга?
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
Walker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 1 Всего: 16 |
На будущее: 1. Ознакомтесь, всё же, с акцессорами get; set; 2. Оформляйте, пожалуйста, код в постах с использованием кнопки Код. -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
FatherFrost |
|
|||
![]() Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
watutino, приобрети нормальную книгу (Троелсен). Хотя во всех кигах могут быть такие опечатки.
-------------------- Задаю много глупых вопросов.... |
|||
|
||||
Wizard_Memfis |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 12.2.2007 Где: г. Донецк, Украин а Репутация: 2 Всего: 4 |
И еще: я бы все-таки ставил модификаторы уровня доступа!
![]() --------------------
www.binary-studio.com |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |