Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не получается вызвать методы класса, виртуальный телевизор 
:(
    Опции темы
watutino
Дата 18.11.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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    
Объясните, пожалуйста, почему?

PM MAIL   Вверх
1stain
Дата 18.11.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 3
Всего: 40



Цитата(watutino @  18.11.2007,  09:18 Найти цитируемый пост)
Объясните, пожалуйста, почему?

потому что, поля класса лучше объявлять с явными квалификаторами доступа - тогда и вопросов таких будет поменьше.


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
Wizard_Memfis
Дата 18.11.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 2
Всего: 4



Создай свойства в классе!Либо( но лучше не делай!) поставь public у полей класса!И ИМХО, читай книги! smile Там все есть!
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
watutino
Дата 19.11.2007, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.11.2007

Репутация: -1
Всего: нет



Очень благодарен за помощь. Действительно добавив public к byte maxChannel программа заработала. 
На счет "ЧИТАЙ книги" согласен полностью, но вот эта "работающая прогр." и есть с книги-самоучителя... 
PM MAIL   Вверх
Experimenter
Дата 19.11.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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"); }
PM WWW ICQ   Вверх
Walker
Дата 19.11.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 23.10.2006

Репутация: 1
Всего: 16



Цитата

Очень благодарен за помощь. Действительно добавив public к byte maxChannel программа заработала. 


На будущее:

1. Ознакомтесь, всё же, с акцессорами get; set;
2. Оформляйте, пожалуйста, код в постах с использованием кнопки Код.



--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
FatherFrost
Дата 20.11.2007, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

Репутация: нет
Всего: 6



watutino, приобрети нормальную книгу (Троелсен). Хотя во всех кигах могут быть такие опечатки.


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
Wizard_Memfis
Дата 20.11.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 2
Всего: 4



И еще: я бы все-таки ставил модификаторы уровня доступа! smile Даже если ты знаешь, что там и private, но это обезопасит тебя от многих ошибок!
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.