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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2012, 15:12   #1
tanja_kj
Новичок
Джуниор
 
Регистрация: 04.12.2012
Сообщений: 1
Вопрос C# - наследование.

Доброе время суток! Помогите с выполнением данной задачи:
1.Создать абстрактный класс Программное_обеспечение с методами, позволяющими вывести на экран информацию о программном обеспечении, а также определить соответствие возможности использования (на момент текущей даты). 2.Создать производные классы: Свободное (название, производитель), Условно-бесплатное (название, производитель, дата установки, срок бесплатного использования), Коммерческое (название, производитель, цена, дата установки, срок использования) со своими методами вывода информации на экран, и определения возможности использования на текущую дату. Обратите внимание, что в 3 производных классах - повторяются поля (как сократить код?) 3.Создать массив из n видов программного обеспечения, вывести полную информацию из массива на экран, а также организовать поиск программного обеспечения, которое допустимо использовать на текущую дату. 4.Организуйте поиск по типу ПО и названию (фрагменту названия), производителю.
Вот что получилось, но даёт ошибку при наследовани:
Код:
namespace Zd_2._2
{class Program
    {static void Main(string[] args)
        {Console.Write("Введите количество кomplekt: ");
          int n = int.Parse(Console.ReadLine());
          PrOb[,] ob = new PrOb[n, 3];
          for (int i = 0; i < n; i++)
              {ob[i, 0] = new Svob();
                ob[i, 1] = new UsBs();
                ob[i, 2] = new Kom();}
              foreach (PrOb a in ob)
              {a.Show();}
                Console.WriteLine();
                Console.Write("Введите дату для поиска: ");
                string v = Console.ReadLine();
                foreach (PrOb a in ob)
                    {a.Poisk(v); }
        Console.ReadKey();}}}
Код:
namespace Zd_2._2
{abstract class PrOb
    {abstract public void Show();
     abstract public void Poisk(string n);}}
Код:
namespace Zd_2._2
{class Svob:PrOb
    {public string Naz { get; set; }
      public string Prz { get; set; }
      public Svob() { }
      public Svob (string Naz, string Prz):base()
        {this.Naz = Naz;
          this.Prz = Prz;}
        public override void Show()
        {Console.WriteLine();
          Console.WriteLine("Svobodnue: ");
          Console.WriteLine("Nazvanie: " + Naz);
          Console.WriteLine("Prouzvodutel: " + Prz);}}}
Код:
namespace Zd_2._2
{class UsBs:Svob
    {public string sr {get; set; }
      public string data { get; set; }
      public UsBs() { }
      public UsBs(string Naz, string Prz, string sr, string data): base(Naz, Prz)
        {this.sr = sr;
          this.data = data;}
        public override void Show()
        {Console.WriteLine();
          Console.WriteLine("Условно-бесплатное: ");
          Console.WriteLine("Nazvanie: " + Naz);
          Console.WriteLine("Proizvodutel: " + Prz);
          Console.WriteLine("data ystanovku: " + data);
          Console.WriteLine("Srok Uspolzovania: " + sr);}}}
Код:
namespace Zd_2._2
{class Kom:UsBs
    {public string price { get; set; }
        public Kom() { }
        public Kom (string Naz, string Prz, string price, string data, string sr) : base(Naz, Prz, data, sr)
        {this.price = price;}
        public override void Show()
        {Console.WriteLine();
            Console.WriteLine("Коммерческое: ");
            Console.WriteLine("Nazvanie: " + Naz);
            Console.WriteLine("Proizvodutel: " + Prz);
            Console.WriteLine("Cena: " + price);
            Console.WriteLine("data ystanovku: " + data);
            Console.WriteLine("Srok Uspolzovania: " + sr);}
        public override void Poisk(string n)
        {if (this is UsBs) if (n == this.data)
             this.Show(); else
          if (this is Kom) if (n == (this as Kom).data) this.Show();}}}
Спасибо!
tanja_kj вне форума Ответить с цитированием
Старый 04.12.2012, 15:28   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Текст выдаваемой компилятором ошибки отвечающим предлагается вывести телепатически?
2)
Код:
class Kom:UsBs
Коммерческое ПО является условно-бесплатным? Да ну?.. И не очень понятно, зачем Вы экономите буквы.
3)
Код:
abstract public void Poisk(string n);
Данный метод должен быть перегружен в каждом наследнике класса. Упс.
4) Любопытная расстановка фигурных скобок. Учили LISP?
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование С++ sir.andrey Помощь студентам 3 07.07.2011 16:31
Наследование notHaker Общие вопросы Delphi 5 24.05.2010 18:55
Наследование на C++ dziga1989 Помощь студентам 5 22.10.2009 11:25
Наследование alex_triton Общие вопросы C/C++ 0 19.10.2009 20:25
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39