Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
S Sample_Solutions
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OOP
  • Sample_Solutions
  • Wiki
  • Cv7

Cv7 · Changes

Page history
Update Cv7 authored Nov 07, 2019 by Ing. Lukáš Hruška's avatar Ing. Lukáš Hruška
Hide whitespace changes
Inline Side-by-side
Showing with 16 additions and 10 deletions
+16 -10
  • Cv7.md Cv7.md +16 -10
  • No files found.
Cv7.md
View page @ 601c0a21
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
......@@ -31,21 +31,21 @@ Niekoľko príkladov:
```csharp
Func<int, int> addOne = x => x + 1; //x je implicitne deklarovaná premenná - vstupný parameter
//tento lambda výraz je totožný s nasledujúcou funkciou
int AddOne(int x)
int AddOne(int x)
{
return x + 1;
}
//---------------------------------------------------
Func<int, int, int> addValues = (a, b) => a + b;
int AddValues(int a, int b)
int AddValues(int a, int b)
{
return a + b;
}
//---------------------------------------------------
Func<int, int, bool> compareValues = (a, b) => a > b;
bool CompareValues(int a, int b)
bool CompareValues(int a, int b)
{
return a > b;
}
......@@ -54,22 +54,29 @@ bool CompareValues(int a, int b)
Ako ale tieto metódy implementovať?
- pridajte si `using System.Linq;`
- 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.
- 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:
List<Employee> employeesWithLongName = employees.Where(e => e.Name.Length > 15).ToList();
```
V konzolovej aplikácií si pridajte knižnicu do referencií - keď máte v solution explorer zvolený projekt s konzolou, choďte na Project -> Add Reference..., prípadne kliknite pravým tlačidlom na references a Add Reference... tu si v záložke project zaškrtnite Cv7Lib. Teraz bude naša knižnica referencovaná v rámci konzolovej aplikácie a vieme ju použiť.
V konzolovej aplikácií si pridajte knižnicu do referencií - keď máte v solution explorer zvolený projekt s konzolou, choďte na Project -> Add Reference..., prípadne kliknite pravým tlačidlom na references a Add Reference... tu si v záložke project zaškrtnite Cv7Lib. Teraz bude naša knižnica referencovaná v rámci konzolovej aplikácie a vieme ju použiť.
V Main si vytvorte CompanyEmployees a pridajte tam niekoľko zamestnancov (možete priamo v kóde, toto je cvičná úloha, nemusíte čítať z obrazovky), do triedy Employee ešte pridajte ToString() nech vieme spraviť výpis do konzoly.
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(',')`
......
Clone repository
  • Assignment part 1
  • Assignment part 2
  • Assignment part 3
  • Cv10
  • Cv11
  • Cv4
  • Cv5
  • Cv7
  • Cv8
  • Cv9
  • Requirements
  • Home