Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2012, 03:23   #1
fpm.altyev
 
Регистрация: 16.03.2012
Сообщений: 4
По умолчанию Простейшие классы в C#

Задание:
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения составных частей адреса и проверки допустимости вводимых значений. В случае недопустимых значений полей выбрасываются исключения. Написать программу, демонстрирующую все разработанные элементы класса.

Собственно, что я написал:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Organization
{
    class MyException:Exception{}
    class Organization
    {
        private string name;
        private string index;
        private string city;
        private string street;
        private string house;
        private string telephone;

        public string Name
        {
            get { return name; }
            set 
            { 
                name = value;
                for (int i = 0; i < Name.Length; i++)
                {
                    if (char.IsDigit(Name[i]))
                    {
                        throw new MyException();
                    }
                }
            }
        }
        public string Index
        {
            get { return index; }
            set 
            {
                index = value;
                for (int i = 0; i < Index.Length; i++)
                {
                    if (!char.IsDigit(Index[i]))
                    {
                        throw new MyException();
                    }
                }
            }
        }
        public string City
        {
            get { return city; }
            set 
            { 
                city = value;
                for (int i = 0; i < City.Length; i++)
                {
                    if (Char.IsDigit(City[i]))
                        throw new MyException();
                }
            }
        }
        public string Street
        {
            get { return street; }
            set
            {
                street = value;
                for (int i = 0; i < Street.Length; i++)
                {
                    if (Char.IsDigit(Street[i]))
                        throw new MyException();
                }
            }
        }
        public string House
        {
            get { return house; }
            set 
            {
                house = value;
                for (int i = 0; i < House.Length; i++)
                {
                    if (char.IsDigit(House[i]))
                    {
                        throw new MyException();
                    }
                }
            }
        }
        public string Telephone
        {
            get { return telephone; }
            set 
            {
                telephone = value;
                for (int i = 0; i < Telephone.Length; i++)
                {
                    if (char.IsDigit(Telephone[i]))
                    {
                        throw new MyException();
                    }
                }
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Organization organization = new Organization();
                Console.WriteLine("Как называется ваша организация?");
                organization.Name = Console.ReadLine();
                Console.WriteLine("Почтовый индекс вашей организации: ");
                organization.Index = Console.ReadLine();
                Console.WriteLine("В каком городе она находится?");
                organization.City = Console.ReadLine();
                Console.WriteLine("Укажите на какой улице находится ваша организация:");
                organization.Street = Console.ReadLine();
                Console.WriteLine("Укажите дом:");
                organization.House = Console.ReadLine();
                Console.WriteLine("Введите номер телефона:");
                organization.Telephone = Console.ReadLine();
                Console.WriteLine("Ваша организация: \n");
                Console.WriteLine("Название:    " + organization.Name);
                Console.WriteLine("Почтовый индекс:     " + organization.Index);
                Console.WriteLine("Город:    " + organization.City);
                Console.WriteLine("Улица, дом:      " + organization.Street + ", " + organization.House);
                Console.WriteLine("Номер телефона:      " + organization.Telephone);
            }
            catch (MyException)
            {
                Console.WriteLine("Неверно задано значение!!");
            }

            Console.ReadKey();
        }
    }
}
Теперь вопрос: в общем-то все работает, но преподаватель требует, чтобы переменные Index и Telephone были целочисленными. Сколько не пытался, никак не могу додуматься как написать исключения для целочисленных. Может кто поможет? Заранее спасибо!
fpm.altyev вне форума Ответить с цитированием
Старый 17.05.2012, 10:47   #2
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Преподаватель ваш чудак.
Если еще индекс както можно за уши притянуть к целочисленными, то телефон совсем не к селу.
Так и передайте.

А ваши свойства тоже не фантан. Логика отсутствует.

Последний раз редактировалось =master=; 17.05.2012 в 11:02.
=master= вне форума Ответить с цитированием
Старый 17.05.2012, 14:30   #3
fpm.altyev
 
Регистрация: 16.03.2012
Сообщений: 4
По умолчанию

Что с ними не так? И как тогда можно индекс "притянуть за уши"? Хотя бы на словах кто объяснил...
fpm.altyev вне форума Ответить с цитированием
Старый 17.05.2012, 15:24   #4
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Что тут объяснять.
Индекс это 6-и значный код, ну ладно, т.к. все из цифр, то можно сделать и целочистенным.
А вот телефон... его можно записывать как угодно и цифрами и буквами и с кодом региона, страны, города... с пробелами и без. Ну если так уж надо то, делайте, только при этом надо пользователю заранее говорить. на этапе ввода.
Хотя по моему это бред.

Что касается свойств, то глянем, например, на Street
Код:
         public string Street
        {
            get { return street; }
            set
            {
                street = value;
                for (int i = 0; i < Street.Length; i++)
                {
                    if (Char.IsDigit(Street[i]))
                        throw new MyException();
                }
            }
        }
что за проверка на IsDigit? название улицы может содержать в себе цифры, - "2-ая Набережная", "3-я запрудная" и т.д.
даже если вывалит ексепшн, то значения неправильного, с точки зрения логики кода, все равно останется, где смысл?
и так по всем

И еще, заставлять человека вводить при ошибке все заново... кащумство.
=master= вне форума Ответить с цитированием
Старый 17.05.2012, 15:27   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сколько не пытался, никак не могу додуматься как написать исключения для целочисленных
Да так же. Вводите строку и анализируйте ее. В int преобразовывайте уже заведомо корректный результат.

ЗЫ. А телефон должен быть строковым параметром
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.05.2012, 20:49   #6
fpm.altyev
 
Регистрация: 16.03.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от =master= Посмотреть сообщение
И еще, заставлять человека вводить при ошибке все заново... кащумство.
Надо было быстро написать код, поэтому так коряво Спасибо Вам за совет.

Цитата:
Да так же. Вводите строку и анализируйте ее. В int преобразовывайте уже заведомо корректный результат.

ЗЫ. А телефон должен быть строковым параметром
Ну допустим, что в телефоне есть только цифры... Спасибо и Вам, попробую
fpm.altyev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейшие Классы ( Си Шарп). Elimay25 Помощь студентам 0 03.04.2012 13:50
Простейшие классы,обработка исключительных ситуаций))) таня1 C# (си шарп) 0 18.05.2011 18:55
Простейшие циклы. kazzz Помощь студентам 6 04.04.2011 17:33
Простейшие вычисления Nail361 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 29.03.2011 05:38
Задача на простейшие классы volchonok232 Помощь студентам 7 01.02.2011 22:13