Zajęcia, rok akademicki 2018/2019, semestr 2
Programowanie pod Windows
Regulamin pracowni i zasady zaliczania
Regulamin pracowni:
- warunkiem uzyskania zaliczenia przedmiotu jest uzyskanie odpowiedniej liczby punktów
za rozwiązywanie zadań ogłoszonych w zeszycie zaadń
- na kolejnych zajęciach, studenci na specjalnych formularzach deklarują numery rozwiązanych zadań;
prowadzący sprawdza w czasie zajęć minimum jedno zadanie każdemu studentowi
Uwagi:
- zeszyt zadań zawiera zadania, których suma to 100 punktów - wartość referencyjną dla
limitów punktowych (patrz niżej).
- brak rozwiązania lub rozwiązanie niekompletne, w przypadku gdy zadanie to zostanie
wybrane przez prowadzącego do wglądu, oznacza utratę co najmniej połowy zgromadzonych
do danej chwili punktów
- zadania można deklarować i oddawać w czasie trwania całych zajęć;
można więc ewentualne wątpliwości skonsultować z prowadzącym i dopiero wtedy zadeklarować
zadanie jako rozwiązane
Zasady zaliczania:
punkty |
ocena |
< 25 |
ndst |
25-50 |
dst |
50-75 |
db |
> 75 |
bdb |
Notatki do wykładu
Windows oczami programisty
Wydawnictwo Mikom, Warszawa 2003
Repozytorium: Programowanie pod Windows
Zeszyt zadań
Repozytorium: Zeszyt zadań
Materiały do pobrania
Kody źródłowe programów z podręcznika (komplet)
Obowiązujące zadania
Do kiedy | Zestaw zadań | Uwagi |
12/19.03.2019 | 1.1 | Lista na 19.03 ponieważ część materiału omówimy na wykładzie dopiero 12.03 |
26.03.2019 | 1.2 | |
02.04.2019 | 1.3 | |
09.04.2019 | 1.4 | |
30.04.2019/07.05.2019 | 2.1 | |
14.05.2019 | 2.2 | |
21.05.2019 | 2.3 | |
28.05.2019 | 2.4+2.5 | |
04.06.2018 | 3.1 | |
11.06.2019 | 1.5+3.1+3.2+3.3 | |
Uwaga! Po terminie z kolumny "Do kiedy" zadania ze wskazanych rozdziałów nie będą przyjmowane.
Uwaga! Data obowiązywania dotyczy pracowni wtorkowych. Dla pracowni odbywających się w inne dni tygodnia terminem
obowiązującym jest dzień tygodnia w tym samym tygodniu co podany wtorek.
Punktowe rankinigi cząstkowe (grupa WZY)
Wykłady
- 2019-02-26, Wprowadzenie
- Wykład organizacyjny
- Omówienie środowiska i narzędzi programowania
- .NET
- CIL, JIT
- Dekompilacja do CIL
- Weryfikacja
- Dekompilacja do C# (IlSpy)
- 2019-03-05, Struktura kodu .NET
- Wielomodułowość, referencje między modułami
- Wielojęzykowość, dekompilacja skrośna (np. dekompilacja kodu VB.NET do C#)
- Organizacja solucji - foldery wirtualne
- Organizacja projektów
- przestrzenie nazw, zagnieżdżanie przestrzeni nazw
- foldery fizyczne
- mechanizm klas częściowych
- dyrektywa #region
- Dokumentowanie kodu
- Dodawanie referencji do kompilatów
- Repozytorium NuGet
- 2019-03-12, Język C# 1.0
- C# - model obiektowy, system typów
- Boxing, unboxing
- Pola, metody, konstruktory, polimorfizm, przeciążanie metod
- Propercje (właściwości)
- Indeksery
- Interfejsy
- Delegacje (funkcje jako first-class citizens)
- Nazwane delegacje
- Anonimowe delegacje
- Lambda wyrażenia
- Zdarzenia (events)
- Refleksja
- Atrybuty
- 2019-03-19, Język C# 2.0
- Dynamiczne tworzenie kodu
- Enumeratory
- yield
- C#2 Typy generyczne, ograniczenia typowe
- Typy generyczne w C++ vs C# vs Java - specyfika implementacji, plusy/minusy
- 2019-03-26, Język C# 3.0
- C#3 rozszerzenia języka
- metody rozszerzające
- obiekty anonimowe
- niejawne typowanie (var)
- skrócona inicjalizacja obiektów i zbiorów
- lambda wyrażenia
- C#3 LINQ - uniwersalne, funkcyjne podejście do dostępu do danych
- Linq2Objects - metody rozszerzające dla interfejsu IEnumerable zaimplementowane w klasie System.Linq.Enumerable
- 2019-04-02, Język C# 4.0, 5.0
- C#4, DLR, współpraca z COM early vs late binding vs dynamic
- System.Windows.Forms - przegląd materiału
- Jednowątkowość i wyzwania asynchroniczne - async/await
- 2019-04-09, System.Windows.Forms
- jeszcze o asynchroniczności - TaskCompletionSource
- konfigurowanie aplikacji - pliki app.config i app.manifest
- Model zdarzeniowy
- Komunikacja między oknami
- Layout - kontenery, kotwice, dokowanie
- 2019-04-16, System.Windows.Forms - ciąg dalszy
- Formanty do reprezentacji zbiorów elementów - ComboBox/ListBox vs ListView/TreeView
- Leniwe ładowanie dużych zbiorów danych do formantu TreeView
- GDI+
- System.Windows.Forms - tworzenie własnych formantów
- dziedziczenie istniejącego formantu
- formant z własnym rysowaniem zawartości (dziedziczący z Control)
- formant kompozytowy (dziedziczący z UserControl)
- 2019-04-30, Windows Presentation Foundation
- WPF - omówienie głównych pojęc
- przegląd formantów - szablonowanie elementów listy typu Combo, przycisk z szablonem widoku
- kontenery widoku
- dwukierunkowy data-binding, wzorzec MVVM
- interfejs INotifyPropertyChanged
- nietrywialne przykłady wiązania
- wiązanie akcji do przycisku (interfejs ICommand)
- wiązanie formantów zależnych - dwie listy typu Combo, wybór z pierwszej wpływa na wybór drugiej
- przykład z wykładu
- 2019-05-07, System.Data - obsługa magazynów danych (1)
- Microsoft SQL Server - omówienie technologii
- System.Data - podsystem dostępu do danych
- SELECT, INSERT, UPDATE, obsługa relacji jeden-wiele
- kwerendy parametryczne, zagrożenie SQL Injection
- 2019-05-14, System.Data - obsługa magazynów danych (2)
- Dapper.NET - przykład lekkiej technologii automatyzującej typowe operacje bazodanowe
- Linq2SQL jako przykład technologii ORM w podejściu Database First
- Entity Framework jako przykład technologii w podejściu Code First
- Entity Framework Code First Migrations
- 2019-05-21, XML, XSD, XSLT
- Xml - przegląd, wskazówki projektowe
- Xml - model DOM, język XPath
- Xml - strumieniowanie
- Xml + Xsd, modele, serializacja
- Xslt - przykład
- 2019-05-28, Win32 API (1)
- Wprowadzenie do Win32 - okna, uchwyty, komunikaty
- Obsługa komunikatów
- 2019-06-04, Win32 API (2)
- Tworzenie okien potomnych
- Komunikacja między oknami
- WM_COMMAND, SendMessage
- Subclassing okien potomnych
- GDI
- Dialog Description Language
- 2019-06-11, COM - obiektowe współdzielenie kodu
- Biblioteki natywne
- Biblioteki COM
- Tworzenie biblioteki COM w C++
- Konsumowanie biblioteki COM w VBA
Literatura
- Charles Petzold, Programming Windows 5th Edition
- Mark Russinovich, David Solomon, Windows Internals
- Bruce Eckel, Thinking in C#
- Andrew Troelsen, Język C# i Platforma .NET
- Daniel Solis, Illustrated C#
- Mark Michaelis, Eric Lippert, C#6.0