|
|
Cvičenie 7
|
|
|
# Cvičenie 7
|
|
|
|
|
|
Vytvorte si dva nové projekty: Cv7 (console application) Cv7Lib (class library), nech sú obidve postavené na .NET framework
|
|
|
Vytvorte si dva nové projekty: Cv7 (console application) Cv7Lib (class library), nech sú obidve postavené na .NET framework (__musia byť v jednom solution!__)
|
|
|
|
|
|
Konzolová aplikácia nám bude slúžiť len pre jednoduchšie zobrazenie dát, užívateľské rozhranie budeme vytvárať nabudúce.
|
|
|
|
... | ... | @@ -8,7 +8,7 @@ Konzolová aplikácia nám bude slúžiť len pre jednoduchšie zobrazenie dát, |
|
|
|
|
|
V Cv7Lib si vytvorte triedu Employee, nech táto obsahuje verejne dostupné vlastnosti (properties) Name, Address, PhoneNumber, Salary (teda public getter & setter)
|
|
|
|
|
|
Vytvorte si triedu CompanyEmployees ktorá bude v sebe obsahovať zoznam zamestnancov.
|
|
|
Vytvorte si triedu CompanyEmployees ktorá bude v sebe obsahovať __zoznam__ zamestnancov.
|
|
|
|
|
|
Vytvorte pre tento zoznam prístupové funkcie: AddEmployee, GetEmployees
|
|
|
|
... | ... | @@ -57,7 +57,8 @@ Ako ale tieto metódy implementovať? |
|
|
- toto nám umožní používať takzvané extension methods nad kolekciami, tieto nám umožňujú, okrem iného filtrovať a transformovať kolekcie. Takéto metódy sú napr. Where a First. Keď si všimnete, tieto očakávajú ako parameter práve lambda funkciu so signatúrou popísanou vyššie.
|
|
|
|
|
|
```csharp
|
|
|
Func<Employee, bool> predicate = e => e.Name.Length > 15;
|
|
|
Func<Employee, bool> predicate = e => e.Name.Length > 15; //táto lambda funkcia je použitá frameworkom pri filtrovaní, ako je to ukázané v ďalšom riadku, môžeme ju poslať aj ako parameter do funkcie
|
|
|
|
|
|
List<Employee> employeesWithLongName = employees.Where(predicate).ToList(); //ToList() nám vytvorí nový zoznam s týmito hodnotami
|
|
|
|
|
|
//alternatíva 2:
|
... | ... | @@ -70,6 +71,12 @@ V Main si vytvorte CompanyEmployees a pridajte tam niekoľko zamestnancov (može |
|
|
|
|
|
V Main napíšte lambda výraz, pomocou ktorého nájdete zamestnancov, ktorí majú plat vyšší ako určitá suma, vypíšte ich na obrazovku.
|
|
|
|
|
|
Môžete si vyskúšať aj ForEach pomocou lambda expression:
|
|
|
|
|
|
```csharp
|
|
|
collection.ForEach(x => Console.WriteLine(x)); //x je typu aký je držaný v danej kolekcií, takže ak to nie je string, nezabudnite spraviť prevod / zavolať ToString()
|
|
|
```
|
|
|
|
|
|
## 2
|
|
|
|
|
|
V Cv7Lib si pridajte triedu CsvFile, táto trieda bude slúžiť na čítanie a zápis do CSV súboru.
|
... | ... | @@ -96,7 +103,6 @@ https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how |
|
|
CSV súbory:
|
|
|
https://en.wikipedia.org/wiki/Comma-separated_values
|
|
|
|
|
|
|
|
|
Následne:
|
|
|
1. Pridajte si do Employee metódu `string ToCSVLine()` ktorá vytvorí zo záznamu riadok do CSV súboru
|
|
|
2. Pridajte si do CsvFile `private Employee CreateEmployee(string csv)` tu rozdeľte riadok z CSV súboru na jednotlivé hodnoty a vytvorte pomocou nich nového zamestnanca. Na rozdelenie hodnôt použite `String.Split(',')`
|
... | ... | |