Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C#] Индексаторы

6.5K
02 декабря 2007 года
kurzon
87 / / 28.09.2007

Создать класс „Цистерна”, какой задается объемом зберигаемого топлива или массой. Для изменения объема или массы реализовать свойства, которые бы контролировали допустимость нового значения и автоматически вычисляли значение другой величины(например задаем объем топлива – автоматически вычисляется масса цистерны). Максимальный объем топлива – 40 м3, масса пустой цистерны – 5 т, а масса 1 м3 есть 0.8т


Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace Interfeys
{
    class Program
    {
        class Chusterna
        {
            public int KillKubometriw;
            public double MassaOdnogoKyboMetra=0.8;
            public int MasaPystoiShusternu = 5;
           
           
            public double s_KillKubometriw
            {
                get { return KillKubometriw; }
       
                set { KillKubometriw = Convert.ToInt32(value); }
            }
            public Chusterna(int a)
            {
                s_KillKubometriw = a;
            }
           
            public void showing()
            {
                Console.WriteLine("Масcа Цистерны  =   {0}", MasaPystoiShusternu + MassaOdnogoKyboMetra * s_KillKubometriw);
            }
     
        }

        class Obchuslena
        {

            public static void Main(string[] args)
            {
                Console.WriteLine("Введить обьем ");
                int a = Convert.ToInt32(Console.ReadLine());
                Chusterna prl = new Chusterna(a);
                prl.showing();
               
                Console.ReadLine();
             }
        }
       
    }
}
14K
02 декабря 2007 года
stimpi
100 / / 04.09.2007
по твоему коду:
1) зачем делать свойство для открытого поля KillKubometriw ?:) Свойства делаются для закрытых полей и если надо делать проверку на ввод значений
2) если делаешь конструктор с параметрами всегда делай конструктор по умолачанию, это не С++ где он всегда создается неявно


Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace CodeForumCistern
{
    class Cistern
    {
        private double bulk; //Объем
        private double mass; //Масса
        private double massOfOneCubicMetre = 0.8; // масса 1 км^3
        private int massOfEmptyCistern = 5; // масса пустой цистерны


        public double Bulk // cвойство для объема
        {
            get { return bulk; }
            set
            {
                double checkValue = Convert.ToDouble(value);
                if (checkValue >= 0 && checkValue <= 40)
                {
                    bulk = checkValue;
                    mass = bulk * massOfOneCubicMetre;
                }
                else
                {
                    // кинуть исключение о недопустимости значения или
                    // подключить еще какой-нибудь обработчик
                }
            }
        }
        public double Mass // свойство для массы
        {
            get { return mass; }
            set
            {
                double checkValue = Convert.ToDouble(value);
                if (checkValue >= 0 && checkValue <= 40 * massOfOneCubicMetre)
                {
                    mass = checkValue;
                    bulk = mass/massOfOneCubicMetre;
                }
                else
                {
                    // кинуть исключение о недопустимости значения или
                    // подключить еще какой-нибудь обработчик
                }
            }
        }
        public Cistern() {}
        public Cistern(double bulk) // конструктор для объема
        {
            this.Bulk = bulk;
            mass = this.bulk * massOfOneCubicMetre;
        }
       
        public void Show()
        {
            Console.WriteLine("Масcа цистерны: {0}т", massOfEmptyCistern +
                massOfOneCubicMetre*bulk);
        }
    }
}
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace CodeForumCistern
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.Write("Введите объем: ");
            double bulk = Convert.ToDouble(Console.ReadLine());
            Cistern MyCistern = new Cistern(bulk);
            MyCistern.Show();
            Console.ReadLine();
        }
    }
}
14K
03 декабря 2007 года
stimpi
100 / / 04.09.2007
забыл написать
куда ты собираешься индексатор вставлять ? что ты операцией [] собираешься возвращать ? Индексаторы нужны для пользовательских коллекций и только.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог