2016-03-27, 03:56
  #25
Medlem
[/quote][/quote][/quote]
Citat:
Ursprungligen postat av tj.
Jag tänker inte hjälpa dig om du inte bemödar dig att använda PHP-taggar och inventerar koden korrekt.
using System;


Kod:
 namespace ConsoleApplication3
{
    class Program
    {
        
        
        //Vår Sodacrate-class
        public class Sodacrate
        {
            public string[] my_crate = new string[24];
            public int numberOfBottles = 0;
            public int sum = 0;
            public string lask;

            //Här skapar vi en loop som pågår så länge du vill stanna i huvudmenyn
            private bool MainMenu = true;

            public void Run()
            {
                //Här välkomnar vi användaren och presenterar huvudmenyn
                Console.WriteLine("Welcome to the awesome sodacrate-simulator!");
                while (MainMenu)
                {
                    Console.WriteLine("What would you like to do?");
                    Console.WriteLine("1. Add a bottle to the crate.");
                    Console.WriteLine("2. Show the contents of the crate.");
                    Console.WriteLine("3. Calculate the total value of the crate.");
                    Console.WriteLine("4. Quit the program.");
                    switch (Console.ReadLine())
                    {
                        case "1":
                            add_soda();
                            break;
                        case "2":
                            print_crate();
                            break;
                        case "3":
                            calc_total();
                            break;
                        case "4":
                            MainMenu = false;
                            break;
                    }
                }
            }
            public void add_soda()
            {
                Console.WriteLine("Choose a beverage:");
                Console.WriteLine("1. Coca-Cola");
                Console.WriteLine("2. Fanta");
                Console.WriteLine("3. Sprite");
                Console.WriteLine("4. Hallonsoda");
                Console.WriteLine("5. Cider");


                for (int i = 0; i < my_crate.Length; i++)
                {
                    my_crate[i] = lask;

                }

                lask = Console.ReadLine();

                switch (lask)
                {
                    case "1":
                        Console.WriteLine("Coca-Cola");
                        break;
                    case "2":
                        Console.WriteLine("Fanta");
                        break;
                    case "3":
                        Console.WriteLine("Sprite");
                        break;
                    case "4":
                        Console.WriteLine("Hallonsoda");
                        break;
                    case "5":
                        Console.WriteLine("Cider");
                        break;
                    default:
                        Console.WriteLine("Error, pick a number between 1 and 5!");
                        break;
                }

                //Kod för att lägga till dryck i vår back
                for (int j = 0; j < 24; j++)
                {

                    if (numberOfBottles == 24)
                    {
                        Console.WriteLine("denna facket i backen är fullt!");

                    }
                    else
                    {
                        numberOfBottles++;

                        break;
                    }
                }
            }
            //Kod för att skriva ut innehållet i vår back
            public void print_crate()
            {
                foreach (string numberOfBottles in my_crate)
                {
                    Console.WriteLine("You have {0} sodas in your crate.", numberOfBottles);
                }
            }
            public void calc_total()
            {

                for (int k = 0; k < 24; k++)

                    sum = sum + 5;

                {
                    Console.WriteLine("Värdet på backen när den är full är " + sum + " kronor");
                }
                {
                    Console.ReadKey();
                }
            }

        }
    }
}


jag la till detta men sen när jag ska visa innehållet så blir det inte rätt så tror inte det lagras i vektorn, det ser ut att vara rätt tycker jag men förstår inte var felet ligger?

for (int i = 0; i < my_crate.Length; i++)
{
my_crate[i] = lask;

}

lask = Console.ReadLine();

switch (lask)
__________________
Senast redigerad av bekkebekke 2016-03-27 kl. 04:08.
Citera
2016-03-27, 07:25
  #26
Medlem
ojns avatar
Citat:
Ursprungligen postat av bekkebekke
jag la till detta men sen när jag ska visa innehållet så blir det inte rätt så tror inte det lagras i vektorn, det ser ut att vara rätt tycker jag men förstår inte var felet ligger?

for (int i = 0; i < my_crate.Length; i++)
{
my_crate[i] = lask;

}

lask = Console.ReadLine();

switch (lask)
Och vad är "lask"s värde när du kör din for-loop?

Och är verkligen avsikten att lägga till 24 flaskor på en gång?
Citera
2016-03-27, 14:51
  #27
Medlem
Citat:
Ursprungligen postat av ojn
Och vad är "lask"s värde när du kör din for-loop?

Och är verkligen avsikten att lägga till 24 flaskor på en gång?




Det är meningen att när användaren väljer läsk i switch-satsen ska det lagras i vektorn, användaren ska då lägga in 24 läsk och det jag har försökt att göra är att lägga till läsken i vektorn med hjälp av
my_crate[i] = lask.

Men sen när jag ska skriva ut läsken i print_crate() blirv det inte rätt :/
Citera
2016-03-28, 00:31
  #28
Medlem
Citat:
Ursprungligen postat av bekkebekke
Det är meningen att när användaren väljer läsk i switch-satsen ska det lagras i vektorn, användaren ska då lägga in 24 läsk och det jag har försökt att göra är att lägga till läsken i vektorn med hjälp av
my_crate[i] = lask.

Men sen när jag ska skriva ut läsken i print_crate() blirv det inte rätt :/

När jag gjorde uppgiften så kallade jag på min konstruktor.

Kod:
            foreach (Soda s in sodaCrate)
            {
                try
                {
                    // Skriver ut namn, pris och position
                    Console.WriteLine("{0} | {1} kostar {2} kronor", s.Position, s.Name, s.Price);
                }

                catch
                {
                    // Om positionen är ledig
                    Console.WriteLine("Facket är ledigt.");       
                }
            }

Sen va det bara att använda variablerna som representerade de olika delarna av läsken.
__________________
Senast redigerad av sandehhh 2016-03-28 kl. 00:33.
Citera
2016-03-29, 16:02
  #29
Medlem
ojns avatar
Citat:
Ursprungligen postat av bekkebekke
det jag har försökt att göra är att lägga till läsken i vektorn med hjälp av
my_crate[i] = lask.

Men sen när jag ska skriva ut läsken i print_crate() blirv det inte rätt :/
Som sagt: När du kör my_crate[i] = lask, vad har "lask" för värde? Var har du gett denna variabel ett värde?
Citera
2016-04-13, 15:23
  #30
Medlem
Vad går denna uppgift ut på egentligen? När man startar uppdraget och läser anvisningarna till uppgiften så står det "Notera att ni inte ska redogöra för någon kod i detta uppdrag utan endast planeringen.". Men när man laddar ner den tillhörande PDF-filen så får jag uppfattningen av att man faktiskt ska koda. Eftersom jag ser att många här faktiskt gör just det så blir jag lite tveksam.
Någon som kan förtydliga?
Citera
2016-04-14, 01:01
  #31
Medlem
Citat:
Ursprungligen postat av svampplockarn
Vad går denna uppgift ut på egentligen? När man startar uppdraget och läser anvisningarna till uppgiften så står det "Notera att ni inte ska redogöra för någon kod i detta uppdrag utan endast planeringen.". Men när man laddar ner den tillhörande PDF-filen så får jag uppfattningen av att man faktiskt ska koda. Eftersom jag ser att många här faktiskt gör just det så blir jag lite tveksam.
Någon som kan förtydliga?

Läs uppgiften på hemsidan igen. Du ska börja med att göra ett sekvensdiagram + pseudokod. På uppdrag 4a ska du sedan skriva koden.

Jag blev också väldigt förvirrad där i början och blev helt panikslagen när jag sedan fick reda på att man faktiskt skulle skriva koden också. Det är ett mäktigt projekt när man inte kan så mkt. Men nu i efterhand känner jag att jag lärt mig sjukt mycket, även om jag ville slita av mig håret ett tag.
Citera
2016-04-14, 14:23
  #32
Medlem
Citat:
Ursprungligen postat av sandehhh
Läs uppgiften på hemsidan igen. Du ska börja med att göra ett sekvensdiagram + pseudokod. På uppdrag 4a ska du sedan skriva koden.

Jag blev också väldigt förvirrad där i början och blev helt panikslagen när jag sedan fick reda på att man faktiskt skulle skriva koden också. Det är ett mäktigt projekt när man inte kan så mkt. Men nu i efterhand känner jag att jag lärt mig sjukt mycket, även om jag ville slita av mig håret ett tag.

Aha, där ser man. Den långa PDF-filen är minst sagt otydlig. Varför ha med uppgiftsbeskrivning som inte gäller förren nästa uppdrag. Men tack för svaret!
Citera
2016-04-15, 11:19
  #33
Medlem
Lite sent svar, men här kommer lite tips inför framtiden också. Lär er programmera objektorienterat från början, så blir det lättare sen. Strukturen blir snyggare, det blir lättare att programmera, samt att det blir lättare att underhålla och att utveckla vidare i framtiden.

Citat:
Uppdraget är att vi ska tänka objektbaserad utveckling. Vi har ett uppdrag där vi ska skapa en meny (fixat) och menyn ska låta användaren Visa innehållet i en back läsk (fixat), lägga till flaskor med pris, namn och position i backen (fixat) och sedan kommer vi till steget som jag misslyckas med vad jag än försöker mig på... Vi ska summera värdet av alla flaskor som finns i backen.

Här är uppdraget beskrivet. Du behöver en meny, en back, läsk med pris, namn samt position och summan av all läsk som finns. Du har antagit att en back innehåller 24 flaskor, men det finns de som kan innehålla 25 flaskor. Vi startar upp med grunden för det som är givet:

Kod:
internal class Program
    {
        static void Main(string[] args)
        {
        }
    }

internal class Menu
    {
    }

internal class BeverageTray
    {
    }

internal abstract class Beverage
    {
    }

Det här är vad som var definierat i kravspecen ni fick. Först måste vi skapa en meny för att navigera. Valen är givna. Det vi ska göra är att se till att menyn är lätt att uppdatera inför framtiden, samt att validera användarens val:

Kod:
internal class Program
    {
        static void Main(string[] args)
        {
            Menu.LoadUserMenu();
        }
    }

internal class Menu
    {
        private static readonly List<Tuple<byte, string>> MenuOptions = new List<Tuple<byte, string>>
        {
            new Tuple<byte, string>(1, "1. Visa backen"),
            new Tuple<byte, string>(2, "2. Lägg till dricka i backen"),
            new Tuple<byte, string>(3, "3. Beräkna värde i backen"),
            new Tuple<byte, string>(0, "0. Avsluta programmet")
        };

        internal static void LoadUserMenu()
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("-               Meny                -");
            Console.WriteLine("-------------------------------------");

            Console.WriteLine();

            var choice = PrintUserMenuAndGetUsersChoice();

            switch (choice)
            {
                case 1:
                    PrintTrayContent();
                    break;
                case 2:
                    AddBeverage();
                    break;
                case 3:
                    DisplayTrayValue();
                    break;
                case 0:
                    return;
            }
        }

        private static void PrintTrayContent()
        {
        }

        private static void AddBeverage()
        {
        }

        private static void DisplayTrayValue()
        {
        }

        private static byte PrintUserMenuAndGetUsersChoice()
        {
            foreach (var option in MenuOptions)
            {
                Console.WriteLine(option.Item2);
            }

            var choiceIsValid = false;
            string usersChoice;

            do
            {
                usersChoice = Console.ReadLine();
                var isvalid = UsersChoiceIsValid(usersChoice, MenuOptions);

                if (isvalid)
                {
                    choiceIsValid = true;
                }
                else
                {
                    Console.WriteLine("Du gjorde ett ogiltigt val, försök igen!");
                }

            } while (!choiceIsValid);

            return Convert.ToByte(usersChoice);
        }

        private static byte PrintBeverageChoices()
        {
            foreach (var option in Beverage.BeverageOptions)
            {
                Console.WriteLine(option.Item2);
            }

            var choiceIsValid = false;
            string usersChoice;

            do
            {
                usersChoice = Console.ReadLine();
                var isvalid = UsersChoiceIsValid(usersChoice, Beverage.BeverageOptions);

                if (isvalid)
                {
                    choiceIsValid = true;
                }
                else
                {
                    Console.WriteLine("Du gjorde ett ogiltigt val, försök igen!");
                }

            } while (!choiceIsValid);

            return Convert.ToByte(usersChoice);
        }

        private static bool UsersChoiceIsValid(string usersChoice, IEnumerable<Tuple<byte, string>> contentList)
        {
            byte usersChoiceAsByte;
            var result = Byte.TryParse(usersChoice, out usersChoiceAsByte);

            if (!result)
            {
                return false;
            }

            var choiceExists = contentList.FirstOrDefault(q => q.Item1.Equals(usersChoiceAsByte));
            return choiceExists != null;
        }
    }

Här har jag nu skapat en meny som är validerad. Går inte in i detalj, utan mer tänket. Nu när vi har en meny ska vi visa innehållet i backen:

Kod:
internal class Menu
    {
        private static readonly BeverageTray Tray = new BeverageTray(24);

        private static void PrintTrayContent()
        {
            Console.Clear();
            Tray.Print();
            Console.WriteLine();
            Console.WriteLine();
            LoadUserMenu();
        }
    }

internal class BeverageTray
    {
        internal byte NumberOfBottles { get; }
        internal Beverage[,] BeverageArray { get; }

        internal BeverageTray(byte numberofbottles)
        {
            NumberOfBottles = numberofbottles;
            BeverageArray = numberofbottles == 24 ? new Beverage[6, 4] : new Beverage[5, 5];
        }

        internal void Print()
        {
            Console.Clear();

            Console.WriteLine("-------------------------------------");
            Console.WriteLine("-        Backens innehåll           -");
            Console.WriteLine("-------------------------------------");

            Console.WriteLine();

            var a = 6;
            var b = 4;

            if (NumberOfBottles == 25)
            {
                a = 5;
                b = 5;
            }

            for (var i = 0; i < a; i++)
            {
                var contentList = new List<string>();

                for (var j = 0; j < b; j++)
                {
                    contentList.Add(BeverageArray[i, j] == null ? "Tom" : BeverageArray[i, j].ToString());
                }

                if (NumberOfBottles == 24)
                    Console.WriteLine("|{0,6}|{1,6}|{2,6}|{3,6}|", contentList[0], contentList[1], contentList[2], contentList[3]);
                if (NumberOfBottles == 25)
                    Console.WriteLine("|{0,6}|{1,6}|{2,6}|{3,6}|{4,6}|", contentList[0], contentList[1], contentList[2], contentList[3], contentList[4]);
            }
        }
    }

internal abstract class Beverage
    {
        internal decimal Price { get; }
        internal string Name { get; }

        internal Beverage(decimal price, string name)
        {
            Price = price;
            Name = name;
        }

        public override string ToString()
        {
            return Name;
        }
    }

Nu har vi skapat en back där vi lätt kan ändra mängden en back kan innehålla. Vi tar även hänsyn till att backen kan ha tomma platser. Jag gjorde en lätt design, men inte så snygg, går att göra snyggare.
Citera
2016-04-15, 11:19
  #34
Medlem
Nu ska vi kunna lägga till drickor i backen:

Kod:
internal class Menu
    {
        private static void AddBeverage()
        {
            Console.Clear();

            if (Tray.IsFull())
            {
                Console.WriteLine("Backen är full, du kan inte lägga till fler flaskor.");
                LoadUserMenu();
            }

            var choice = PrintBeverageChoices();

            switch (choice)
            {
                case 1:
                    Tray.Add(new CocaCola());
                    break;
                case 2:
                    Tray.Add(new Fanta());
                    break;
                case 3:
                    Tray.Add(new Sprite());
                    break;
                case 4:
                    Tray.Add(new Hallonsoda());
                    break;
                case 5:
                    Tray.Add(new Cider());
                    break;
            }

            Console.WriteLine();
            Console.WriteLine();
            LoadUserMenu();
        }

        private static byte PrintBeverageChoices()
        {
            foreach (var option in Beverage.BeverageOptions)
            {
                Console.WriteLine(option.Item2);
            }

            var choiceIsValid = false;
            string usersChoice;

            do
            {
                usersChoice = Console.ReadLine();
                var isvalid = UsersChoiceIsValid(usersChoice, Beverage.BeverageOptions);

                if (isvalid)
                {
                    choiceIsValid = true;
                }
                else
                {
                    Console.WriteLine("Du gjorde ett ogiltigt val, försök igen!");
                }

            } while (!choiceIsValid);

            return Convert.ToByte(usersChoice);
        }
}
internal class BeverageTray
    {
        internal void Add(Beverage beverage)
        {
            var a = 6;
            var b = 4;

            if (NumberOfBottles == 25)
            {
                a = 5;
                b = 5;
            }

            for (var i = 0; i < a; i++)
            {
                for (var j = 0; j < b; j++)
                {
                    if (BeverageArray[i, j] == null)
                    {
                        BeverageArray[i, j] = beverage;
                        Console.WriteLine("Flaskan lades till i backen");
                        Console.WriteLine();
                        Console.WriteLine();
                        return;
                    }
                }
            }
        }

        internal bool IsFull()
        {
            var trayIsFull = true;
            var a = 6;
            var b = 4;

            if (NumberOfBottles == 25)
            {
                a = 5;
                b = 5;
            }

            for (var i = 0; i < a; i++)
            {
                for (var j = 0; j < b; j++)
                {
                    if (BeverageArray[i, j] == null)
                    {
                        trayIsFull = false;
                    }
                }
            }

            return trayIsFull;
        }
    }
internal abstract class Beverage
    {
        internal static readonly List<Tuple<byte, string>> BeverageOptions = new List<Tuple<byte, string>>
        {
            new Tuple<byte, string>(1, "1. Coca-cola"),
            new Tuple<byte, string>(2, "2. Fanta"),
            new Tuple<byte, string>(3, "3. Sprite"),
            new Tuple<byte, string>(4, "4. Hallonsoda"),
            new Tuple<byte, string>(5, "5. Cider")
        };
    }

    internal class CocaCola : Beverage
    {
        public CocaCola() : base(new decimal(14.50), "Coca-Cola")
        {
        }
    }

    internal class Fanta : Beverage
    {
        public Fanta() : base(new decimal(14.50), "Fanta")
        {
        }
    }

    internal class Sprite : Beverage
    {
        public Sprite() : base(new decimal(14.50), "Sprite")
        {
        }
    }

    internal class Hallonsoda : Beverage
    {
        public Hallonsoda() : base(new decimal(11.70), "Hallonsoda")
        {
        }
    }

    internal class Cider : Beverage
    {
        public Cider() : base(new decimal(19.20), "Cider")
        {
        }
    }

Här skapar jag en lättuppdaterad lista med drycker som användaren kan välja. Jag kontrollerar först så att backen inte är full. Sen lägger jag till flaskan i arrayen. Till slut ska vi beräkna värdet av innehållet i backen:

Kod:
internal class Menu
    {
        private static void DisplayTrayValue()
        {
            Console.Clear();
            Tray.Sum();
            Console.WriteLine();
            Console.WriteLine();
            LoadUserMenu();
        }
    }

internal class BeverageTray
    {
        internal void Sum()
        {
            Console.WriteLine("Summan av innehållet i backen är {0:C}", BeverageArray.OfType<Beverage>().Sum(q => q.Price));
        }

För att avsluta programmet använder jag mig av return. Koden är snabbt ihopslängd och går nog att göra bättre, men det tog mig ca 20 minuter. Eftersom jag namnger mina variabler och metoder på ett vettigt sätt behövs inga kommentarer i koden. Rent och städat.
Citera
2016-04-15, 11:20
  #35
Medlem
Här är all kod:

Kod:
internal class Program
    {
        static void Main(string[] args)
        {
            Menu.LoadUserMenu();
        }
    }

    internal class Menu
    {
        private static readonly BeverageTray Tray = new BeverageTray(24);

        private static readonly List<Tuple<byte, string>> MenuOptions = new List<Tuple<byte, string>>
        {
            new Tuple<byte, string>(1, "1. Visa backen"),
            new Tuple<byte, string>(2, "2. Lägg till dricka i backen"),
            new Tuple<byte, string>(3, "3. Beräkna värde i backen"),
            new Tuple<byte, string>(0, "0. Avsluta programmet")
        };

        internal static void LoadUserMenu()
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("-               Meny                -");
            Console.WriteLine("-------------------------------------");

            Console.WriteLine();

            var choice = PrintUserMenuAndGetUsersChoice();

            switch (choice)
            {
                case 1:
                    PrintTrayContent();
                    break;
                case 2:
                    AddBeverage();
                    break;
                case 3:
                    DisplayTrayValue();
                    break;
                case 0:
                    return;
            }
        }

        private static void PrintTrayContent()
        {
            Console.Clear();
            Tray.Print();
            Console.WriteLine();
            Console.WriteLine();
            LoadUserMenu();
        }

        private static void AddBeverage()
        {
            Console.Clear();

            if (Tray.IsFull())
            {
                Console.WriteLine("Backen är full, du kan inte lägga till fler flaskor.");
                LoadUserMenu();
            }

            var choice = PrintBeverageChoices();

            switch (choice)
            {
                case 1:
                    Tray.Add(new CocaCola());
                    break;
                case 2:
                    Tray.Add(new Fanta());
                    break;
                case 3:
                    Tray.Add(new Sprite());
                    break;
                case 4:
                    Tray.Add(new Hallonsoda());
                    break;
                case 5:
                    Tray.Add(new Cider());
                    break;
            }

            Console.WriteLine();
            Console.WriteLine();
            LoadUserMenu();
        }

        private static void DisplayTrayValue()
        {
            Console.Clear();
            Tray.Sum();
            Console.WriteLine();
            Console.WriteLine();
            LoadUserMenu();
        }

        private static byte PrintUserMenuAndGetUsersChoice()
        {
            foreach (var option in MenuOptions)
            {
                Console.WriteLine(option.Item2);
            }

            var choiceIsValid = false;
            string usersChoice;

            do
            {
                usersChoice = Console.ReadLine();
                var isvalid = UsersChoiceIsValid(usersChoice, MenuOptions);

                if (isvalid)
                {
                    choiceIsValid = true;
                }
                else
                {
                    Console.WriteLine("Du gjorde ett ogiltigt val, försök igen!");
                }

            } while (!choiceIsValid);

            return Convert.ToByte(usersChoice);
        }

        private static byte PrintBeverageChoices()
        {
            foreach (var option in Beverage.BeverageOptions)
            {
                Console.WriteLine(option.Item2);
            }

            var choiceIsValid = false;
            string usersChoice;

            do
            {
                usersChoice = Console.ReadLine();
                var isvalid = UsersChoiceIsValid(usersChoice, Beverage.BeverageOptions);

                if (isvalid)
                {
                    choiceIsValid = true;
                }
                else
                {
                    Console.WriteLine("Du gjorde ett ogiltigt val, försök igen!");
                }

            } while (!choiceIsValid);

            return Convert.ToByte(usersChoice);
        }

        private static bool UsersChoiceIsValid(string usersChoice, IEnumerable<Tuple<byte, string>> contentList)
        {
            byte usersChoiceAsByte;
            var result = Byte.TryParse(usersChoice, out usersChoiceAsByte);

            if (!result)
            {
                return false;
            }

            var choiceExists = contentList.FirstOrDefault(q => q.Item1.Equals(usersChoiceAsByte));
            return choiceExists != null;
        }
    }

    internal class BeverageTray
    {
        internal byte NumberOfBottles { get; }
        internal Beverage[,] BeverageArray { get; }

        internal BeverageTray(byte numberofbottles)
        {
            NumberOfBottles = numberofbottles;
            BeverageArray = numberofbottles == 24 ? new Beverage[6, 4] : new Beverage[5, 5];
        }

        internal void Add(Beverage beverage)
        {
            var a = 6;
            var b = 4;

            if (NumberOfBottles == 25)
            {
                a = 5;
                b = 5;
            }

            for (var i = 0; i < a; i++)
            {
                for (var j = 0; j < b; j++)
                {
                    if (BeverageArray[i, j] == null)
                    {
                        BeverageArray[i, j] = beverage;
                        Console.WriteLine("Flaskan lades till i backen");
                        Console.WriteLine();
                        Console.WriteLine();
                        return;
                    }
                }
            }
        }

        internal void Print()
        {
            Console.Clear();

            Console.WriteLine("-------------------------------------");
            Console.WriteLine("-        Backens innehåll           -");
            Console.WriteLine("-------------------------------------");

            Console.WriteLine();

            var a = 6;
            var b = 4;

            if (NumberOfBottles == 25)
            {
                a = 5;
                b = 5;
            }

            for (var i = 0; i < a; i++)
            {
                var contentList = new List<string>();

                for (var j = 0; j < b; j++)
                {
                    contentList.Add(BeverageArray[i, j] == null ? "Tom" : BeverageArray[i, j].ToString());
                }

                if (NumberOfBottles == 24)
                    Console.WriteLine("|{0,6}|{1,6}|{2,6}|{3,6}|", contentList[0], contentList[1], contentList[2], contentList[3]);
                if (NumberOfBottles == 25)
                    Console.WriteLine("|{0,6}|{1,6}|{2,6}|{3,6}|{4,6}|", contentList[0], contentList[1], contentList[2], contentList[3], contentList[4]);
            }
        }

        internal void Sum()
        {
            Console.WriteLine("Summan av innehållet i backen är {0:C}", BeverageArray.OfType<Beverage>().Sum(q => q.Price));
        }

        internal bool IsFull()
        {
            var trayIsFull = true;
            var a = 6;
            var b = 4;

            if (NumberOfBottles == 25)
            {
                a = 5;
                b = 5;
            }

            for (var i = 0; i < a; i++)
            {
                for (var j = 0; j < b; j++)
                {
                    if (BeverageArray[i, j] == null)
                    {
                        trayIsFull = false;
                    }
                }
            }

            return trayIsFull;
        }
    }

    internal abstract class Beverage
    {
        internal decimal Price { get; }
        internal string Name { get; }

        internal static readonly List<Tuple<byte, string>> BeverageOptions = new List<Tuple<byte, string>>
        {
            new Tuple<byte, string>(1, "1. Coca-cola"),
            new Tuple<byte, string>(2, "2. Fanta"),
            new Tuple<byte, string>(3, "3. Sprite"),
            new Tuple<byte, string>(4, "4. Hallonsoda"),
            new Tuple<byte, string>(5, "5. Cider")
        };

        internal Beverage(decimal price, string name)
        {
            Price = price;
            Name = name;
        }

        public override string ToString()
        {
            return Name;
        }
    }

    internal class CocaCola : Beverage
    {
        public CocaCola() : base(new decimal(14.50), "Coca-Cola")
        {
        }
    }

    internal class Fanta : Beverage
    {
        public Fanta() : base(new decimal(14.50), "Fanta")
        {
        }
    }

    internal class Sprite : Beverage
    {
        public Sprite() : base(new decimal(14.50), "Sprite")
        {
        }
    }

    internal class Hallonsoda : Beverage
    {
        public Hallonsoda() : base(new decimal(11.70), "Hallonsoda")
        {
        }
    }

    internal class Cider : Beverage
    {
        public Cider() : base(new decimal(19.20), "Cider")
        {
        }
    }
Citera
2016-04-15, 18:07
  #36
Medlem
tj.s avatar
Citat:
Ursprungligen postat av mickes418
Lite sent svar, men här kommer lite tips inför framtiden också. Lär er programmera objektorienterat från början, så blir det lättare sen. Strukturen blir snyggare, det blir lättare att programmera, samt att det blir lättare att underhålla och att utveckla vidare i framtiden.
Om man ändå ska passa på att lära ut objektorientering, kan det vara värt att låta bli att använda internal om det inte verkligen finns ett syfte för det. Min uppfattning är att i nio fall av tio som folk använder det, har de ingen aning om varför de gör det.
Citera

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