Kurs Advanced Programming in C#

Kurs Advanced Programming in C# koncipiran je kao logičan nastavak uvodnog kursa Introduction to Programming in C#. Tokom trajanja kursa, polaznici će se upoznati sa različitim naprednim konceptima .NET platforme, programiranjem korišćenjem C# jezika. Naučiće kako se kontroliše životni vek .NET objekata i na koji način .NET rukuje memorijom, šta su delegati, lambda izrazi i anonimne metode.

Zanima vas ovaj kurs? Možete ga pohađati u okviru ovih ITAcademy programa: Microsoft Windows Development ProgramMicrosoft Web Development Program i Software Development Program.

Opis i cilj kursa Advanced Programming in C#

Cilj kursa Advanced Programming in C# je da vas pripremi za korišćenje naprednih koncepata C# programiranja. Kurs se bavi i kolekcijama, kao i različitim vrstama generičkih tipova podataka. Polaznici će naučiti kako da koriste refleksiju, te kako da korišćenjem dinamičkog programiranja obavljaju generisanje koda tokom izvršavanja aplikacija. Poseban deo kursa baviće se različitim načinima za postizanje višenitnog izvršavanja. Kraj kursa biće posvećen različitim tehnikama za rukovanje fajlovima i folderima.

Potreban softver i tehnički preduslovi

Visual Studio 2017.

Potrebno predznanje

Preduslov za praćenje kursa jeste savladano gradivo kursa Introduction to Programming in C#.

Kompetencije

Modul 1 – Usklađivanje veka objekta i kontrola resursa

  • Razumevanje kontrole oslobađanja memorijskih resursa

Modul 2 – Razdvajanje metoda i rukovanje događajima

  • Razumevanje delegata i primena na metodama
  • Razumevanje događaja

Modul 3 – Korišćenje kolekcija i kreiranje generičkih tipova

  • Poznavanje različitih tipova kolekcija
  • Razumevanje generičkih tipova i metoda

Modul 4 – Sopstvene kolekcije klasa i LINQ

  • Razumevanje kolekcija na višem nivou
  • Poznavanje sistema za upite kroz C#

Modul 5 – Refleksija i dinamičko programiranje

  • Korišćenje refleksije i rad sa atributima u cilju definisanja dodatnih metapodataka
  • Poznavanje tehnika dinamičkog programiranja

Modul 6 – Višenitno programiranje

  • Korišćenje različitih tehnika za postizanje višenitnog izvršavanja
  • Kreiranje i upravljanje nitima, korišćenje ThreadPoola, kreiranje i korišćenje Taskova i upotreba ključnih reči async i await

Modul 7 – Čitanje i pisanje fajlova

  • Poznavanje kontrole toka podataka
  • Razumevanje korišćenja klasa za rad sa fajlovima

Kurs Advanced Programming in C# će vam odgovoriti na pitanja:

1. Šta je Garbage Collector?

Jedna od brojnih pogodnosti razvijanja aplikacija za .NET platformu, ogleda se i u potpuno automatizovanom sistemu za rukovanje memorijom, koji je sastavni deo .NET izvršnog okruženja. Tako za razliku od jezika C i C++, programiranjem korišćenjem C# jezika, u većini situacija programer nema potrebu da vrši eksplicitno oslobađanje memorije ručnim uništavanjem objekata.

Centralni deo takvog sistema jeste funkcionalnost Garbage Collector. Polaznici će tokom praćenja kursa Advanced Programming in C# moći da se upoznaju sa osnovama funkcionisanja Garbage Collector-a. Takođe, kurs odlazi i korak dalje, te polaznicima ilustruje i razne tehnike pomoću kojih je moguće uticati na rad ovog primarno automatizovanog sistema. Izučavanjem Garbage Collector-a, polaznici će se upoznati i sa pojmovima kao što konstruktor i destruktor i upravljani i neupravljani resursi.

2. Šta su lambda izrazi?

Jedna od brojnih funkcionalnosti koje su tokom vremena uvršćene u C# jezik kako bi programerima olakšali razvijanje aplikacija su i lambda izrazi. Lambda izrazi predstavljaju veoma moćan način za kreiranje metoda bez naziva. Metode bez naziva se drugačije nazivaju anonimne metode, a polaznici će tokom praćenja kursa Advanced Programming in C#, nakon upoznavanja pojma anonimnih metoda, naučiti i kako se one veoma lako mogu kreirati korišćenjem lambda izraza. Lambda izrazi su tesno povezani i sa delegatima, još jednim pojmom koji pripada naprednijem C# programiranju, koji će posebno biti obrađen tokom kursa Advanced Programming in C#. Na kraju, lambda izrazi otvaraju i put za dinamičko programiranje, jedan od najmoćnijih programerskih pristupa.

3. Šta su delegati?

U cilju postizanja što većeg stepena apstrakcije prilikom pisanja izvornog koda, te omogućavanja kreiranja veoma moćne programske logike, koju je lako održavati i menjati, Microsoft inženjeri su prilikom kreiranja .NET platforme u C# jezik uvrstili i delegate. Reč je o veoma moćnom jezičkom elementu koji omogućava kreiranje takozvanih pokazivača na metode. Takvi jezički elementi nazivaju se delegati.

Slična funkcionalnost postoji i u jezicima nižeg nivoa, kao što su C i C++, dok je Microsoft prilikom razvoja C#-a, korišćenje i funkcionisanje delegate učinio veoma jednostavnim i efektnim. Korišćenjem delegata omogućava se kreiranje objekata koji sadrže pokazivač na metodu. Takav objekat se zatim može iskoristiti za pozivanje metode delegata, čime je sam čin pozivanja metode dodatno apstrahovan. Delegati su i osnova funkcionisanja .NET događaja i lambda izraza. Tokom trajanja kursa Advanced Programming in C#, polaznici će na praktičnim primerima imati priliku da se detaljno upoznaju sa delegatima.

4. Šta je LINQ?

Rad sa podacima svakako je jedan od najznačajnijih aspekata razvoja aplikacija bilo kojeg tipa. Rad sa podacima podrazumeva njihovo pohranjivanje i čitanje, ali i manipulaciju koja se sastoji iz različitih operacija koje sa nad njima mogu sprovoditi (pretraga, sortiranje, ekstraktovanje itd.).

Kao ispomoć prilikom baratanja podacima, Microsoft je razvio posebnu tehnologiju koju je inkorporirao unutar .NET platforme. Reč je o upitnom jeziku koju se naziva LINQ (Language Integrated Query). LINQ predstavlja set funkcija koje omogućavaju čitanje i transformisanje informacija iz različitih izvora podataka. Kurs Advanced Programming in C# detaljno se bavi osobinama ovog jezika i njihovim mogućnostima prilikom rada sa podacima.

5. Šta su kolekcije?

Uvodni kurs ovoga programa, Introduction to Programming in C#, doneo je priču o nizovima, kao osnovnom načinu za grupisanje podataka istog tipa. Iako obezbeđuju najbolje performanse prilikom obavljanja zahtevnih operacija nad grupom podataka, nizovi poseduju i brojna ograničenja. Neka od takvih ograničenja se odnose na nemogućnost dinamičkog definisanja veličine niza, korišćenje isključivo numeričkih vrednosti (indeksa) za pristupanje njihovim članovima, kao i odsustvo naprednijih funkcionalnosti za rukovanje elementima.

Na sreću, nizovi nisu jedini način za grupisanje podataka. C# jezik za predstavljanje grupa podataka poseduje i kolekcije, koje obezbeđuju znatno naprednije funkcionalnosti kada je potrebno rukovati skupovima podataka. C# poznaje nekoliko različitih tipova kolekcija, koje su detaljno obrađene tokom kursa Advanced Programming in C#. Kurs se bavi i različitim tehnikama za kreiranje sopstvenih kolekcija.

6. Šta je refleksija?

U .NET svetu, pojam refleksije odnosi se na proces otkrivanja tipova tokom izvršavanja programa. Korišćenjem refleksije moguće je pročitati sve metapodatke sklopova. Naravno, refleksija omogućava pristup takvim podacima u standardizovanom, objektnom maniru, što praktično znači da vrlo lako, korišćenjem objektno orjentisanih principa, možemo precizno doći do konkretnog podatka. Pristup svim takvim podacima korišćenjem refleksije omogućen je tokom izvršavanja aplikacije, što je najveća prednost takvog sistema.

Korišćenjem refleksije moguće je na primer, doći do liste svih tipova koji se nalaze unutar nekog sklopa. Takođe, refleksija omogućava i čitanje svih metoda, polja, propertija i događaja koji se nalaze unutar nekog tipa. Refleksija se može koristiti i za utvrđivanje baznih tipova (nasleđenih klasa), implementiranih interfejsa i referenciranih sklopova. Refleksija predstavlja osnovu funkcionisanja brojnih .NET tehnologija i funkcionalnosti razvojnog okruženja. Unutar kursa Advanced Programming in C# velika pažnja posvećena je upravo opisanom pojmu refleksije.

7. Šta je dinamičko programiranje?

Pojam dinamičkog programiranja predstavlja jedno od najmoćnijih oružja u arsenalu jednog programera. Dinamičko programiranje jednom programeru omogućava kreiranje koda koji će proizvoditi neki drugi izvorni ili izvršni kod. Tako je korišćenjem dinamičkog programiranja, tokom izvršavanja aplikacija moguće dinamički kreirati objekte i koristiti njihove članove. Ipak, najveća moć dinamičkog programiranja ogleda se u mogućnost stvaranja potpuno novih tipova i ponašanja i to sve tokom izvršavana aplikacije, u zavisnosti od njenih trenutnih potreba. Tako je na primer, moguće obaviti generisanje novih klasa, na osnovu određenih tekstualnih, konfiguracionih fajlova. Takođe, dinamičko programiranje predstavlja osnovu funkcionisanja različitih ORM sistema i proširivih aplikacija. Kurs Advanced Programming in C# ilustruje različite tehnike dinamičkog programiranja.

Plan i program predavanja

1. Usklađivanje veka objekta i kontrola resursa

  • Garbage collector

2. Razdvajanje metoda i rukovanje događajima

  • Delegati i anonimne metode
  • Lambda izrazi
  • Događaji

3. Korišćenje kolekcija i kreiranje generičkih tipova

  • Kolekcije
  • Generičke klase i kolekcije
  • Generički interfejsi
  • Generički delegati i metode

4. Sopstvene kolekcije klasa i LINQ

  • Definisanje sopstvenih kolekcija
  • LINQ

5. Refleksija i dinamičko programiranje

  • Metapodaci sklopova
  • Refleksija
  • .NET atributi
  • Dinamičko programiranje

6. Višenitno programiranje

  • Uvod u višenitno programiranje
  • Delegati i asinhrono izvršavanje
  • Uvod u kreiranje i korišćenje niti
  • Izazovi prilikom korišćenja konkurencije
  • ThreadPool i Task Parallel Library
  • Asinhrono programiranje korišćenjem ključnih reči async i await

7. Čitanje i pisanje fajlova

  • Čitanje i pisanje fajlova i rukovanje direktorijumima
  • Rukovanje tokovima
  • Vežba – Kreiranje jednostavnog tekst editora

Polaznici kursa Advanced Programming in C#