.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