2014-09-13 3 views
-6

Это мое назначение:Метод должен объявить тело?

Design and implement a stringed musical instrument class using the following guidelines:

Data fields for your instrument should include number of strings, an array of string names representing string names (e.g. E, A, D, G), and boolean fields to determine if the instrument is tuned, and if the instrument is currently playing. You are welcome to add additional data fields if you like.

A constructor method that set the tuned and currently playing fields to false. Other methods

  1. to tune the instrument,
  2. to start the instrument playing, and
  3. to stop the instrument from playing.

Other methods as you see fit (add at least one unique method).

Create a UML class diagram using a diagram tool (e.g. PPT, Visio) of your choice. Prepare the diagrams and place them in a Word document along with a brief description of your class.

Create a C# class for your instrument. Be sure that your code matches your design specifications and some minimal functionality is included. For example, if you called the violin.play() method, you should at least print that the violin is playing. Similar functionality should be supplied when you stop playing, tune or call any of your methods.

Мой код до сих пор:

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


    namespace StringedMusInsApp 
    { 

    public class Guitarra 
    { 
    public static void Main (string[] args); 

     //variable that stores the guitarra's name 
    private String nameValue; 
    //variable to store strings 
    private int numberOfStringsValue; 
    private char[] stringsValue = { 'E', 'A', 'D', 'G', 'B', 'E' }; 
    //field for tune of the guitar, 
    private bool tunedValue; 
    //field for playing of guitar 
    private bool playingValue; 
    //method to set tune and playing false. 
    public Guitarra() 
    { 
     this.tunedValue = false; 
     this.playingValue = false; 
    } 
    // gets and sets 
    public String Name 
    { 
     get 
     { 
      return nameValue; 
     } 
     set 
     { 
      nameValue = value; 
     } 
    } 
    public int NumberOfStrings 
    { 
     get 
     { 
      return numberOfStringsValue; 
     } 
     set 
     { 
      numberOfStringsValue = value; 
     } 
    } 
    public void DisplayStringValues() 
    { 
     Console.WriteLine("String Values: "); 
     for (int i = 0; i < stringsValue.Length; i++) 
     { 
      Console.Write(stringsValue[i] + " "); 
     } 
     Console.WriteLine(); 
    } 

    public bool Tuned 
    { 
     get 
     { 
      return tunedValue; 
     } 
     set 
     { 
      tunedValue = value; 
     } 
    } 
    public bool Playing 
    { 
     get 
     { 
      return playingValue; 
     } 
     set 
     { 
      playingValue = value; 
     } 
    } 
    //Method to play the violin 
    public void playGuitar() 
    { 
     Console.WriteLine("The guitar is now playing."); 
     Playing = true; 
    } 
    //Method to sto playing the violin 
    public void stopGuitar() 
    { 
     Console.WriteLine("The guitar has stopped playing."); 
     Playing = false; 
    } 
    //Method to tune the Guitar 
    public void tuneGuitar() 
    { 
     Console.WriteLine("The guitar is tuned."); 
     Tuned = true; 
    } 
    //Method to stop tuning the Guitar 
    public void stopTuneGuitar() 
    { 
     Console.WriteLine("The guitar has stopped tuning."); 
     Tuned = false; 
     } 
    } 
    } 

Но я получаю эту ошибку:

Error 1 'StringedMusInsApp.Guitarra.Main(string[])' must declare a body because it is not marked abstract, extern, or partial.

+0

И какова будет ошибка? – Lloyd

+1

Ошибка 1 'StringedMusInsApp.Guitarra.Main (string [])' должен объявить тело, потому что оно не отмечено абстрактным, внешним или частичным. –

+0

Я смотрел онлайн часами и не мог понять, что я делаю неправильно –

ответ

4

Сообщение об ошибке говорит вам точно, что случилось:

'StringedMusInsApp.Guitarra.Main(string[])' must declare a body because it is not marked abstract, extern, or partial.

Посмотрите на вашем объявлении метода для Main(string[]):

public static void Main (string[] args); 

Там нет метода тела. Но так как это не абстрактный, внешний или частичный метод, то требует тела метода. Определите один:

public static void Main (string[] args) 
{ 
    // do something here 
} 

Также обратите внимание, что если вы сделать что-нибудь в методе Main(string[]) не сделать ваше приложение не будет ничего делать. Он будет сразу открываться и закрываться, не выполняя никакого кода. Метод Main(string[]) является точкой входа для приложения.

Возможно, вам будет легче структурировать, если вы отделите свой хост-код приложения (точку входа, Main(string[]), в основном материал, который выполняет программу) из вашего логического кода (класс Guitarra, любая бизнес-логика, связанная с тем, что вы делаете и т. д.). Для чего-то такого маленького нет необходимости разбить их на свои собственные сборки или использовать DI или что-то в этом роде, но они должны по крайней мере быть их собственными классами.

+0

Я видел, что некоторые страницы разработчиков Microsoft C# описывают это, но я не знаю, что я должен положить туда для этого приложения. Я только начинаю, это мой первый класс, и я потерян. –

+0

@ AbelX.Cruz: Ну, этот метод является точкой входа для приложения. Так что независимо от того, что приложение * делает * при запуске, туда пойдет. Определение такого класса, как вы, создает логику, но это не делает ничего * с этой логикой. Подумайте о логике класса, которую вы определяете как чертежи для дома.Он определяет дом, но он * не является домом, пока кто-то фактически не выполнит * на этих чертежах. – David

+1

Я где-то читал на этом сайте о разделении классов, но по какой-либо причине я не могу получить примеры или некоторую согласованную помощь, которую я могу понять в своем невежественном восприятии. Спасибо, Дэвид, до сих пор я не получал ничего, кроме отрицательных шуток или комментариев. Я пришел на этот сайт для помощи, я не понимаю, в чем смысл умаления других людей. –