.NET Core and C#

Lab 4

Let's start with quick knowledge refresher

try 
{
	...
}
catch (ArgumentNullException e) 
{
	...
}
finaly 
{
	...
}

Exceptions

public class EmployeeListNotFoundException : Exception
{
    public EmployeeListNotFoundException()
    {
    }

    public EmployeeListNotFoundException(string message)
        : base(message)
    {
    }

    public EmployeeListNotFoundException(string message, Exception inner)
        : base(message, inner)
    {
    }
}

Exceptions

Pattern Matching

switch (car)
{
    case Car car1 when car1 is PersonalCar && car1.AccelerationTime < 7.0:
        Console.WriteLine("Given personal car can accelerate quickly");
        break;
    case Car car1 when car1 is SportsCar sportsCar && car1.AccelerationTime < 4.0:
        Console.WriteLine($"Given sports car can accelerate very fast 
        {(sportsCar.HasLaunchControl ? 
        "and is equiped with launch control system" : string.Empty)}");
        break;
    default:
        Console.WriteLine("Given car has rather average acceleration");
        break;
    case null:
        Console.WriteLine("N/A");
        break;
}

A na závěr opakování diskuze o kolekcích

slide was left intentionally blank

Today's task

Shopping

Vytvořte třídu abstraktní třídu Person a z ní odvozte Employee a Customer (který je rozšířený o Address), děděním dále vytvořte VipCustomer.

Dále vytvořte abstraktní třídu Order (obsahuje kolekci OrderItems) a z ní odvozené Basket, NewOrder (má navíc Shipping), ConfirmedOrder (+ datum potvrzení a jméno zaměstnance), DispatchedOrder (+ datum odeslání a trackovací číslo u premium).

OrderItem má propsy Name, Amount, Price.

Dále vytvořte třídu Shipping a PremiumShipping mají cenu a počet dní, kolik trvá doručení).

 

Today's task

Shopping

OrderManager umožní posunout objednávku do dalšího stavu.

Metoda CreateOrder() přijímá Customer, Basket a Shipping. Výstupem je NewOrder. Cena poštovného je pro Vip zákazníky zdarma. Pro ostatní je běžné zdarma a premium placené. Cenu můžete určit sami. Na konzoli vypíše cenu objednávky.

Metoda ConfirmOrder() přijme objednávku, a jméno člověka, který ji vyřizuje. Vypíše zprávu o potvrzení objednávky (simuluje poslání mailu). Vrací ConfirmedOrder.

Metoda DispatchOrder() přijme objednávku, doplní termín odeslání, a volitelně trackovací číslo, a vypíše zprávu s termínem doručení (premium zítra, klasické poštovné do 5 dní).

Today's task

Shopping

Při implementaci využijte vhodnou kolekci pro položky objednávky.

Při určení ceny poštovného využijte pattern matching.

Při posunutí kroku objednávky zjistěte typ objektu. Pokud už krok proběhl (objednávka je vyššího typu), tak vyhoďte exception.

 

Pro vypracování si vytvořte vlastní repo na gitlabu, a po dokončení si udělejte merge request, a hoďte mě na review.

 

.NET Core Lab 4

By Lukáš Grolig

.NET Core Lab 4

  • 330