2010-10-07 1 views
0

Простите меня за то, что вы спрашиваете, что могут подумать глупыми вопросами. Я пытаюсь прочитать приведенный ниже код и понять его.C# Домашнее задание. Я ищу объяснение того, что происходит.

Почему романа.title используется в основном. Я понимаю, откуда я получаю название, но почему используется роман.title. Другой - это то, что содержит информацию заголовка, введенную пользователем. Те же вопросы с автором и уровнем.

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace assignment6 
{ 
public class Book 
{ 
    protected string title; 
    public string Title 
    { 
     get 
     { 
      return title; 
     } 
     set 
     { 
      title = value; 
     } 
    } 
    protected string author; 
    public string Author 
    { 
     get 
     { 
      return author; 
     } 
     set 
     { 
      author = value; 
     } 
    } 
    public void showBook() 
    { 
     Console.WriteLine("The Book you entered is " + title + " by " + author); 
    } 
    public Book(string booktyp1, string booktyp2) 
    { 
     Console.WriteLine("You will enter data for a " + booktyp1 + " book indicating the " + booktyp2 + " book."); 
     Console.WriteLine(); 
    } 
} 

public class Fiction : Book 
{ 
    private int level; 
    public int Level 
    { 
     get 
     { 
      return level; 
     } 
     set 
     { 
      level = value; 
     } 
    } 
    public void showFiction() 
    { 
     showBook(); 
     Console.WriteLine("Reading level is " + level); 
    } 
    public Fiction() 
     : base("Fiction", "reading level") 
    { 
    } 
} 

public class NonFiction : Book 
{ 
    private int pages; 
    public int Pages 
    { 
     get 
     { 
      return pages; 
     } 
     set 
     { 
      pages = value; 
     } 
    } 
    public void showNonFiction() 
    { 
     showBook(); 
     Console.WriteLine(pages + " pages"); 
    } 
    public NonFiction() 
     : base("NonFiction", "Number of pages") 
    { 
    } 
} 

public class assignment6 
{ 
    public static void Main(string[] args) 
    { 
     char choice; 

     Console.Write("Do you want Fiction (F) or Non-Fiction (N)? -->"); 
     choice = Convert.ToChar(Console.ReadLine().ToUpper()); 
     switch (choice) 
     { 
      case 'F': 
       { 
        Fiction novel = new Fiction(); 
        Console.Write("Enter the book title-->"); 
        novel.Title = Console.ReadLine(); 
        Console.Write("Enter the book author-->"); 
        novel.Author = Console.ReadLine(); 
        Console.Write("Enter the reading level-->"); 
        novel.Level = Convert.ToInt32(Console.ReadLine()); 
        novel.showFiction(); 
        break; 
       } 
      case 'N': 
       { 
        NonFiction manual = new NonFiction(); 
        Console.Write("Enter the book title-->"); 
        manual.Title = Console.ReadLine(); 
        Console.Write("Enter the book author-->"); 
        manual.Author = Console.ReadLine(); 
        Console.Write("Enter the number of pages-->"); 
        manual.Pages = Convert.ToInt32(Console.ReadLine()); 
        manual.showNonFiction(); 
        break; 
       } 
      default: 
       { 
        Console.WriteLine("You made an inappropriate entry -- closing program"); 
        break; 
       } 
     } 
    } 

} 

} 

Я уверен, что все здесь знают, как я буду программировать. Я могу сказать, что мне это нравится, когда это работает, я ненавижу, когда это не делает, и заставляет меня хотеть успокоиться.

+0

Вы можете изменить свой заголовок на «Как наследование классов» и удалить C# и домашнюю работу, поскольку они уже являются тегами :) – Prix

ответ

0

protected string title; 

наклоняет получить доступ непосредственно, но может получить доступ через:

public string Title 
{ 
    get 
    { 
     return title; 
    } 
    set 
    { 
     title = value; 
    } 
} 

Уведомление title разных Title здесь, Вы можете novel.Title но не novel.title

0

Title, Author и Level являются атрибутами novel объекта, созданного в начале блока. Атрибуты объекта нельзя ссылаться без ссылки на сам объект.

+0

поэтому, когда пользователь вводит заголовок, он просто хранится в заголовке, авторе, уровне. – user770022

+0

Нет, они хранятся в 'novel.title',' novel.author' и 'novel.level'. –

+1

Технически они являются свойствами (в смысле C#), а не атрибутами. Атрибуты - это совсем другой зверь. –

1

Название объекта. Он фактически управляет полем под названием title. Значение заголовка используется в методе Show ....

+1

, но когда пользователь вводит заголовок, где он хранится – user770022

0

роман - это объект, доступ к свойствам объектов, таких как Название, Автор и уровень.

Поместите его в persepect:

У вас есть роман, и вы спрашиваете пользователю, что это название романа (novel.Title). Затем вы спрашиваете пользователя: кто является автором романа (new.Author). Наконец, вы просите уровень (роман.Level), (который, как я предполагаю, похож на новую трудность для чтения) романа.

1

novel - Fiction объект. С Fiction унаследован от Book, Fiction имеет Title и Author Недвижимость. Так что

novel.Title = Console.ReadLine(); 

делает читает входные данные из консоли и сохранения его в атрибут title вашего novel объекта через Title собственности.

Вы должны взглянуть на это Properties Tutorial. .

0

novel.Title специально со ссылкой на Title в novel объекта (один созданный Fiction novel = new Fiction(); Говорят, что были созданы несколько объектов Фантастика:

Fiction novel1 = new Fiction(); 
Fiction novel2 = new Fiction(); 
Fiction novel3 = new Fiction(); 

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

0

Ваш вопрос немного непонятно, но я думаю вы спрашиваете о разнице между novel.title и novel.Title и почему один используется по другому.

novel.title является полем , который может хранить некоторые данные (в данном случае строку текста). novel.Title - это объект, который обеспечивает доступ к этому полю.Само свойство не может хранить какие-либо данные, только поле может. Поля считаются частью деталей реализации этого класса, и считается, что использовать плохую идею для прямой публикации этого кода пользователя. Свойство состоит в том, чтобы дать программисту свободу впоследствии изменить реализацию, не нарушая совместимости - это может быть так же просто, как переименование поля, или его можно было бы изменить, чтобы сделать что-то еще.

0

Книги не является базой/суперкласс, где производным классом являются Fiction and Nonfiction

Свойства книги наследуются двумя производными классами

Два производных класса объявляют свои собственные свойства.

Смежные вопросы