• 1
  • 2
2022-03-08, 22:39
  #1
Medlem
Okej det här skall lämnas in idag senast egentligen men haft väldigt svårt med detta uppdrag, borde bett om hjälp här tidigare. Det handlar alltså om arv och polymorfism men får den ej att köras..


Kod:
using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Joppesdjur
{
    class Petowner
    {
        private int age { get; set; }
        private List<string> Animal_List = new List<string>();
        public Petowner(int age)
        {
            Age = age;
            Animal_List.Add Cat;
            Animal_List.Add Dog;
            Animal_List.Add Puppy;
        }
        private int Age
        {
            get { return age; }
            set { age = value; }
        }

        public string fav_food { get; private set; }
        
    public abstract class Animal
    {
        protected int age { get; set; }
        protected string name { get; set; }
        protected string fav_food { get; set; }
        protected string breed { get; set; }
        protected bool hungry { get; set; }
        public Animal(string name, int age, string fav_food)
        { }
    
            public virtual void Interact()
            {

            }
            public virtual void Eat()
            {

            }
            public virtual void Hungry_Animal()
            {

            }
            public override string ToString()
            {
                return base.ToString();
            }
    }
        public class Cat : Animal
        {
            public Cat(string name, int age, string fav_food) : base(name, age, fav_food)
            {
                Name = name;
                Age = age;
                Fav_Food = fav_food;
            }
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            public int Age
            {
                get { return age; }
                set { age = value; }
            }
            public override void Hungry_Animal()
            {
            
            }
            public override void Eat()
            {
                Console.Write("What do you want to feed {0} with?", Name);
                Console.Write("\n1. Fish");
                Console.Write("\n2. Meat");
                Console.Write("\nYour choice: ");
                int answer = int.Parse(Console.ReadLine());
                {
                    if (answer == 1)
                    {
                        Console.Write("{0} is now full after eating his favourite food {1}", Name, fav_food);
                    }
                    if (answer == 2)
                    {
                        Console.Write("{0} doesn't like Meat and will get food on his own!", Name);
                        Random rdmr = new Random();
                        int mousechans = rdmr.Next(0, 2);
                        if (mousechans == 0)
                        {
                            Console.Write("{0} found a mouse, he is now full!", Name);
                        }
                        if (mousechans == 1)
                        {
                            Console.Write("{0} did not find any other food and is still hungry...", Name);
                        }
                    }
                }
            }
            public string Fav_Food
            {
                get { return fav_food; }
                set { fav_food = value; }
            }
            public override string ToString()
            {
                return string.Format("1. {0}", Name);
            }
        }
        public class Dog : Animal
        {
        public Dog(string name, int age, string fav_food) : base(name, age, fav_food)
            {
                Name = name;
                Age = age;
            }
        public string Name
            {
                get { return name; }
                set { name = value; }
            }
            public int Age
            {
                get { return age; }
                set { age = value; }
            }
            public override void Interact()
            {
                Random rdmr = new Random();
                int interact = rdmr.Next(0, 2);
                if (interact == 0)
                {
                    Console.Write("Joppe is playing with {0}", Name);
                }
                if (interact == 1)
                {
                    Console.Write("{0} is too hungry to play...", Name);
                }
            }
            public string Fav_Food
            {
                get { return fav_food; }
                set { fav_food = value; }
            }

            public override string ToString()
            {
                return string.Format("2. {0}", Name);
            }
        }
        public class Puppy : Dog
        {
            public Puppy(string name, int age, object fav_food)
            {
                Name = name;
                Age = age;
            }
            public override void Interact()
            {
                Random rdmr = new Random();
                int interact = rdmr.Next(0, 2);
                if (interact == 0)
                {
                    Console.Write("Joppe is playing with {0}", Name);
                }
                if (interact == 1)
                {
                    Console.Write("{0} is too hungry to play...", Name);
                }
            }
            public new string Fav_Food
            {
                get { return fav_food; }
                set { fav_food = value; }
            }
            public override string ToString()
            {
                return string.Format("3. {0}", Name);
            }
            class Program
            {
                static void Main(string[] args)
                {
                    var Cat = new Cat("Gustaf");
                    var Dog = new Dog("Astro");
                    var Puppy = new Puppy("Ebbe");
                }
            }
        }
    }
}
Citera
2022-03-08, 22:42
  #2
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Saurusftw
Okej det här skall lämnas in idag senast egentligen men haft väldigt svårt med detta uppdrag, borde bett om hjälp här tidigare.
Du är lite sent ute

Felkod?
Citera
2022-03-08, 22:45
  #3
Medlem
Citat:
Ursprungligen postat av Enterprise
Du är lite sent ute

Felkod?

Haha jag vet, var nära på att ge upp men ångrade mig, är för jävla nära.
Alltså det enda som är understruket rött nu är puppy i class puppy. Väldigt konstigt tkr jag..
Citera
2022-03-08, 22:48
  #4
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Saurusftw
Haha jag vet, var nära på att ge upp men ångrade mig, är för jävla nära.
Alltså det enda som är understruket rött nu är puppy i class puppy. Väldigt konstigt tkr jag..
Men du får väl något uttryckligt kompileringsfel?

Edit:
Kolla den här raden (som är röd hos dig)

Kod:
public Puppy(string name, int age, object fav_food)

Jämför med föräldern "Dog":

Kod:
 public Dog(string name, int age, string fav_food) : base(name, age, fav_food)

Ser du någon typ-skillnad?
__________________
Senast redigerad av Enterprise 2022-03-08 kl. 22:51.
Citera
2022-03-08, 22:51
  #5
Medlem
Citat:
Ursprungligen postat av Enterprise
Men du får väl något uttryckligt kompileringsfel?

Bara att det var "builderrors"
Citera
2022-03-08, 22:51
  #6
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Saurusftw
Bara att det var "builderrors"
Kolla min edit
Citera
2022-03-08, 22:52
  #7
Medlem
Citat:
Ursprungligen postat av Enterprise
Men du får väl något uttryckligt kompileringsfel?

Edit:
Kolla den här raden (som är röd hos dig)

Kod:
public Puppy(string name, int age, object fav_food)

Jämför med föräldern "Dog":

Kod:
 public Dog(string name, int age, string fav_food) : base(name, age, fav_food)

Ser du någon typ-skillnad?

Åfan tack med base o allt blev det bra. Variablerna för cat, dog o puppy längst ner är röda också glömde jag.
__________________
Senast redigerad av Saurusftw 2022-03-08 kl. 22:56.
Citera
2022-03-08, 23:04
  #8
Medlem
Jag fattar inte riktigt vart jag definierar va deras favoritmat är. Som exempel fungerar det varken med fav_food = fish lr fish = fav_food under classen cat då.
Citera
2022-03-08, 23:11
  #9
Medlem
JohannesSnajdares avatar
Citat:
Ursprungligen postat av Saurusftw
Haha jag vet, var nära på att ge upp men ångrade mig, är för jävla nära.
Alltså det enda som är understruket rött nu är puppy i class puppy. Väldigt konstigt tkr jag..

Jag får en massa fel när jag klistrar in din kod, bl.a. så verkar du fått fel på måsvingarna då klasserna Animal, Dog osv. alla deklareras _inne_ i klassen PetOwner...

Men om vi antar att det är ett klipp&klistra-fel och fixar till _det_ så dyker det upp mängder med små fel överallt, så att du endast får fel på "puppy" i klassen Puppy låter konstigt.

Men ok, vi fixar till den då:
Du har ett fel i parametrarna till konstruktorn där fav_food är deklarerat som object men ska vara string. Sen anropar du inte basklassens konstruktor.

Kod:
    public class Puppy : Dog
    {
        public Puppy(string name, int age, string fav_food) : base(name, age, fav_food)
        {
            Name = name;
            Age = age;
        }

    ...
    }

Klassen Petowner ser heeelt tokig ut och den verkar inte användas någonstans så vi kommenterar bort den för tillfället. Nu närmar vi oss, får bara lite fel i Program.Main då konstruktorerna till Cat, Dog och Puppy förväntar sig lite mer än bara namnet.
Vi fixar till dem också:

Kod:
        class Program
        {
            static void Main(string[] args)
            {
                var Cat = new Cat("Gustaf", 16, "Lasagna");
                var Dog = new Dog("Astro", 6, "Cheezeburgers");
                var Puppy = new Puppy("Ebbe",1, "Chicken Wings");
            }
        }

Och nu kompilerar det faktiskt. Sen händer det inte så mycket då du inte gör nåt annat än skapar upp tre djur... Men men

Här är hela koden som kompilerar

Lycka till!
/JS

Edit: fixade till Petowner så den kompilerar också
__________________
Senast redigerad av JohannesSnajdare 2022-03-08 kl. 23:42.
Citera
2022-03-08, 23:46
  #10
Medlem
Citat:
Ursprungligen postat av JohannesSnajdare
Jag får en massa fel när jag klistrar in din kod, bl.a. så verkar du fått fel på måsvingarna då klasserna Animal, Dog osv. alla deklareras _inne_ i klassen PetOwner...

Men om vi antar att det är ett klipp&klistra-fel och fixar till _det_ så dyker det upp mängder med små fel överallt, så att du endast får fel på "puppy" i klassen Puppy låter konstigt.

Men ok, vi fixar till den då:
Du har ett fel i parametrarna till konstruktorn där fav_food är deklarerat som object men ska vara string. Sen anropar du inte basklassens konstruktor.

Kod:
    public class Puppy : Dog
    {
        public Puppy(string name, int age, string fav_food) : base(name, age, fav_food)
        {
            Name = name;
            Age = age;
        }

    ...
    }

Klassen Petowner ser heeelt tokig ut och den verkar inte användas någonstans så vi kommenterar bort den för tillfället. Nu närmar vi oss, får bara lite fel i Program.Main då konstruktorerna till Cat, Dog och Puppy förväntar sig lite mer än bara namnet.
Vi fixar till dem också:

Kod:
        class Program
        {
            static void Main(string[] args)
            {
                var Cat = new Cat("Gustaf", 16, "Lasagna");
                var Dog = new Dog("Astro", 6, "Cheezeburgers");
                var Puppy = new Puppy("Ebbe",1, "Chicken Wings");
            }
        }

Och nu kompilerar det faktiskt. Sen händer det inte så mycket då du inte gör nåt annat än skapar upp tre djur... Men men

Här är hela koden som kompilerar

Lycka till!
/JS

Edit: fixade till Petowner så den kompilerar också


Du är en ängel, tack!
Citera
2022-03-09, 01:42
  #11
Medlem
Hoppas att du bytt variabelnamnen eller något innan du lämnade in skiten. Din lärare lär ju hitta din kod här på FB direkt annars hahaha. Då kuggar du direkt

Och vem i hela helvete är "Joppe". Är din lärare white trash?
Citera
2022-03-10, 17:12
  #12
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Saurusftw
Du är en ängel, tack!
Vad använder du för IDE?
Tror du har lite förbättringspotential där, så du själv kan se kompileringsfel direkt i "lintern"
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in