Loading...
imollov avatar imollov 1 Точки

Задача относно класове и методи.

Здравейте,

Попадна ми следната задача:


Да се направят 4 класа животни:

- Кокошка

- Вълк

- Агне

- Риба

всеки от тях да има метод eat(String food) да се направи друг клас zookeeper. Този zookeeper да има метод feed(<type_of_animal> animal), който да се overload-не за всеки различен тип животно. Да има и друг метод feed(<type_of_anima> animal, String food), който пак да е overload-нат за всеки тип животно. Ако се ползва медота feed на zookeeper без да се определя храната, то в конзолата да излиза запитване "What do you want to feed this <type_of_animal> with?" и потребителят да въвежда храната, с която да храни животното, а ако ползва feed(<type_of_animal>, String) -> направо а го храни.

Метода eat(String food) на животните да проверява дали подадения food се съдържа в техен private String масив от храни. Ако не се съдържа, животното да умира, ако се съдържа животното да казва "Мляс-Мляс".

В main метода на приложението направете един цикъл до 12 в по произволен начин създавайте обект от някой от 4-те вида животни и на всяко трето завъртане на цикъла използвайте метода feed(<type_of_animal>). Във всички други случай feed(<type_of_animal>, String).

Малък хинт, генерирането на рандом стойности става с random. Като може да ограничите рандом числата да са от 1 до 4 и после със switch() case: да проверявате какво число е генерирано и ако е 1 да праввите коза (тук явно се има предвид да се генерира клас Кокошка, при число 1).


Написах кода до някъде, но не успях да имплементирам radnom генерирането на обекти от всеки един тип животно със switch. Опитах се да го направя в отделен метод, но ако методът е void, не мога да достъпя отделния обект, а ако е определен тип, то не знам какъв да е типът, тъй като трябва да е един от четирите. Оттам и не успявам в цикъла до 12 да достъпя метода feed(<type_of_animal> animal), съответно и feed(<type_of_anima> animal, String food). И реално най-важната част от задачата не мога да я напиша. Ето го и самия код:

class Chicken
{
  string[] animalFood = new string[] {"grain", "millet", "wheat", "corn"};
public void Eat(string food)
{
  for (int i = 0; i < animalFood.Length; i++)
  {
    if(food == animalFood[i])
    {
      Console.WriteLine("Mlyas, mlyas, mlyas!"); 
    }
    else 
    {
      Console.WriteLine("This animal has died.");
    }
  }
}
}
class Wolf
{
  string[] animalFood = new string[] {"deer", "rabbit", "sheep", "beaver"};
public void Eat(string food)
{
    for (int i = 0; i < animalFood.Length; i++)
  {
    if(animalFood[i] == food)
    {
      Console.WriteLine("Mlyas, mlyas, mlyas!");
    }
    else 
    {
      Console.WriteLine("This animal has died.");
    }
  }
}
}
class Lamb
{
  string[] animalFood = new string[] {"lucerne", "grass", "salt", "hay"};
public void Eat(string food)
{
    for (int i = 0; i < animalFood.Length; i++)
  {
    if(animalFood[i] == food)
    {
      Console.WriteLine("Mlyas, mlyas, mlyas!");
    }
    else 
    {
      Console.WriteLine("This animal has died.");
    }
  }
}
}
class Fish
{
  string[] animalFood = new string[] {"tubifex worms", "mosquito larvae", "bloodworms", "water fleas", " earthworms"};
public void Eat(string food)
{
    for (int i = 0; i < animalFood.Length; i++)
  {
    if(animalFood[i] == food)
    {
      Console.WriteLine("Mlyas, mlyas, mlyas!");
    }
    else 
    {
      Console.WriteLine("This animal has died.");
    }
  }
}
}
class Zookeeper
{
  public void Feed(Chicken animal)
  {
    Console.WriteLine("What do you want to feed this {0} with?", animal);
    string food = Console.ReadLine();
  }
    public void Feed(Wolf animal)
  {
      Console.WriteLine("What do you want to feed this {0} with?", animal);
      string food = Console.ReadLine();
  }
    public void Feed(Lamb animal)
  {
      Console.WriteLine("What do you want to feed this {0} with?", animal);
      string food = Console.ReadLine();
  }
    public void Feed(Fish animal)
  {
      Console.WriteLine("What do you want to feed this {0} with? ", animal);
      string food = Console.ReadLine();
  }
    public void Feed(Chicken animal, string food)
  {
      Console.WriteLine("You fed this {0} with {1}.", animal, food);
  }
      public void Feed(Wolf animal, string food)
  {
    Console.WriteLine("You fed this {0} with {1}.", animal, food);
  }
      public void Feed(Lamb animal, string food)
  {
    Console.WriteLine("You fed this {0} with {1}.", animal, food);
  }
      public void Feed(Fish animal, string food)
  {
    Console.WriteLine("You fed this {0} with {1}.", animal, food);
  }
}
class Animals
{
  public static void GetObject(int random)
  {
    switch(random)
    {
    case 1: Chicken obChicken = new Chicken(); break;
      case 2: Wolf obWolf = new Wolf(); break;
      case 3: Lamb obLamb = new Lamb(); break;
      case 4:Fish obFish = new Fish(); break;
    }
   
  }
  public static void Main()
  {

    Random rand = new Random();
    int random = rand.Next(5);
     if (random == 0)
     {
       random = random + 1;
     }
   
    for (int i = 1; i <= 12; i++)
    {
 			
      string fooda = Console.ReadLine();
      
  
      if (i % 3 == 0)
      {

      }
    }
  }
}

Благодаря предварително на тези, които предложат съвет/решение. :)

Тагове:
0
Programming Basics 26/10/2016 15:54:19
lengarski avatar lengarski 42 Точки

Пробвай да направиш интерфейс Animal, всеки клас от 4те вида животни да имплементира този интерфейс. 

В интерфейса трябва да имаш Eat метод. 

методът за генериране на рандъм животно да връща Animal 

 

това ти е интерфейса...

public interface Animal
{
    public void Eat(string food);
}

 

така правиш за всеки клас животно

Public Class Fish
Implements Animal{

....
}

public static Animal  GetObject(int random) {

Animal animal;

switch(random) { case 1: animal= new Chicken(); break;

case 2: animal = new Wolf(); break;

case 3: animal = new Lamb(); break;

case 4:animal = new Fish(); break; }

return animal;

}

 

 

 

 

0
imollov avatar imollov 1 Точки

Здравей,

Благодаря за отговора, но аз забравих да кажа, че от няколко месеца чета за C# (това са ми първите стъпки в програмирането изобщо) и не съм запознат с прилагането на interface. Мисля си, че ако има вариант със знанията ми до тук да реша задачата, ще е много по-добре. В момента чета книгата "Въведение в програмирането със С#" и съм на тема № 14 за Дефиниране на класове. Тази задача не е от учебника, но като я видях ми се стори интересна и реших да се пробвам.

Според теб възможно ли е да се реши без прилагането на интерфейс?

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.