Wprowadzenie
Przegląd zagadnień
Zadaniem tego modułu jest zapoznanie studentów z paradygmatem programowania obiektowego. Omówione zostaną cechy programowania obiektowego oraz jego fundamentalne pojęcia: klasy i obiektu.
Następnie przedstawiony zostanie jeden z języków zorientowanych obiektowo: C# (C Sharp) wraz z podstawowymi elementami jego składni.
W dalszej części studenci zapoznają się ze środowiskiem programistycznym Visual Studio 2005, które będzie środowiskiem pracy na laboratoriach z przedmiotu programowanie obiektowe. Część tą zakończy krótka demonstracja, pokazująca jak zacząć pracę w tym środowisku.
Po podsumowaniu modułu oraz pytaniach sprawdzających, studenci mają czas na samodzielne przećwiczenie poruszania się w środowisku Visual Studio 2005.
Na pierwszych zajęciach należy też podać studentom wymagania - kryteria oceniania, przedstawić terminy prac kontrolnych oraz przekazać inne informacje organizacyjne.
Programowanie obiektowe (1)
Paradygmat programowania jest nie tylko stylem pisania programów, lecz sposobem myślenia o projektowaniu i tworzeniu oprogramowania. Studenci powinni być już zaznajomieni z paradygmatem programowania strukturalnego.
W programowaniu zorientowanym obiektowo najważniejszym pojęciem jest obiekt. Skupiamy się zatem nie na algorytmie programu, lecz na jego przedmiocie: obiektach, które reprezentują pewne byty ze świata rzeczywistego.
Obiekty są więc pewnym modelem wycinka interesującego nas świata. Obiekty przechowują dane - mają określone cechy, mają też zaprogramowaną funkcjonalność - sposób, w jaki się zachowują. Wreszcie programowanie obiektowe modeluje współzależności między poszczególnymi obiektami.
Cechą programowania obiektowego jest więc abstrakcja, czyli tworzenie uproszczonego modelu świata. To także hermetyzacja - zamykanie danych i funkcjonalności, które dotyczą tych danych, w obiekty. Kolejną cechą jest dziedziczenie, czyli możliwość tworzenia hierarchii obiektów: od ogólnych, nadrzędnych obiektów po coraz bardziej szczegółowe, które przejmują i rozbudowują charakterystykę obiektów nadrzędnych.
Charakterystyczny dla programowania obiektowego jest też polimorfizm, czyli możliwość wywołania różnych funkcjonalności tej samej metody w zależności od kontekstu.
Cechy te warto zapamiętać, a w lepszym zrozumieniu tych pojęć pomogą kolejne zajęcia.
Klasy i obiekty
Rozejrzyjmy się. Otaczają nas różnorodne obiekty - w laboratorium będą to zapewne komputery, meble, drobne przedmioty, również koleżanki, koledzy, prowadzący zajęcia. W szerszym otoczeniu możemy zauważyć takie obiekty jak drzewa, pojazdy, budynki.
Każdy z tych obiektów ma tożsamość - możemy jednoznacznie zidentyfikować, na przykład za pomocą imienia i nazwiska, innych studentów na sali. Każdy z obiektów ma określone cechy - rozmiary, kolor, nazwę, numer... Obiekty też zachowują się w określony sposób. Pojazdy poruszają się, drzewa gubią liście, do budynku można wejść.
Zauważmy, że wszyscy studenci w sali mają pewne wspólne cechy i zachowania, na przykład budowę fizyczną, sposób komunikacji. Dotyczy to także innych obiektów: niezależnie od tego, czy mówimy o drzewie przed uczelnią, w parku czy w lesie, zazwyczaj posiada ono pień, korzenie, gałęzie. Niektóre mają igły, inne liście. W pokojowych warunkach wszystkie pojazdy powinny mieć koła, powinny się poruszać wyznaczonymi drogami, przewożąc osoby lub towary. Grupy takich podobnych obiektów tworzą klasy: wszyscy uczestnicy laboratorium należą do klasy student, obiekty poruszające się pobliską drogą należą do klasy pojazd, świerk i brzoza należą do klasy drzewo.
Zauważyć można też hierarchię klas: obiekty należące do klasy student, jak i obiekty klasy wykładowca należą do klasy osoba. Z kolei obiekty klasy drzewo można dodatkowo przyporządkować do klasy drzewo iglaste albo drzewo liściaste.
Każdy obiekt jest zatem egzemplarzem - czyli instancją - określonej klasy.
Programowanie obiektowe (2)
Dzięki wymienionym na początku zaletom, programowanie zorientowane obiektowo ma wiele zalet. Jak wspomnieliśmy, obiektowość pozwala na stworzenie modelu rzeczywistości. Dzięki temu, łatwo jest odtworzyć fragment świata w kodzie programu. Dzieje się to często intuicyjnie, ponieważ programując opisujemy rzeczywistość, którą dobrze znamy. Przekłada się to z kolei na łatwość projektowania aplikacji.
Powiedzieliśmy, że hermetyzacja pozwala na zamknięcie danych i funkcjonalności w obiekty. W ten sposób program jest modułowy, co niesie dodatkowe zalety. Łatwo rozwijać kod jednego obiektu nie martwiąc się o zachowanie całego programu. Można też łatwo dzielić pracę w zespole programistów, wykrywać błędy i włączać poszczególne obiekty do programu. Wreszcie, można zaprogramowane raz obiekty wykorzystać w kolejnych projektach.
Istnieje wiele języków zorientowanych obiektowo, niektóre najpopularniejsze są wymienione na slajdzie. Można też wspomnieć o Delphi (Object Pascal), Visual Basic czy Ruby.
Na tych laboratoriach, ćwiczenia będą odbywały się w języku C#.
Język C# (1)
Wprowadzony przez firmę Microsoft język C# jest językiem stosunkowo młodym. Został stworzony z założeniem, aby był to język łączący możliwości innych popularnych języków obiektowych, a przy tym był językiem łatwym.
Podobnie jak inne języki platformy .NET, jest kompilowany do języka Microsoft Intermediate Language i uruchamiany we wspólnym środowisku Common Language Runtime.
Język C# (2)
Aby korzystanie z języka C# było łatwe i wygodne, jego składnia mocno przypomina składnię takich języków jak C++, Java czy Perl.
Na slajdzie widzimy kilka przykładów: definicję zmiennej z określeniem jej typu - podobnie jak w innych językach, int oznacza liczbę całkowitą. Każde polecenie zakończone jest średnikiem. Mamy również do dyspozycji większość tych samych operatorów, jak tu - inkrementacji. Widzimy też polecenie wypisujące dane do konsoli tekstowej.
Znane powinny być również inne typy zmiennych i ich rzutowanie, a także sposób komentowania kodu programu.
Język C# (3)
Również składnia instrukcji warunkowych i pętli nie powinna przysparzać problemów.
Dokładny opis języka można znaleźć w bogatej literaturze, na stronach internetowych lub systemie pomocy środowiska programistycznego.
Środowisko programistyczne (1)
Ćwiczenia laboratoryjne będą wykonywane w Visual Studio 2005. To zintegrowane środowisko programistyczne łączy w sobie edytor z kolorowaniem składni i uzupełnianiem kodu, edytor graficzny formularzy, przeglądarkę klas i plików programu, zawiera debugger i kompilator, system pomocy i szereg innych ułatwień.
Środowisko programistyczne (2)
W Visual Studio 2005 każdy program jest projektem. Projekt (jeden lub wiele) jest elementem rozwiązania - pakietu programów (solution).
Rozpoczynając pracę, tworzymy nowy projekt. Możemy przy tym posłużyć się jednym z wielu dostępnych szablonów. Należy przy tym wybrać język programowania - C#. Na ćwiczeniach wykorzystywany będzie przede wszystkim szablon Console Application - program pracujący w oknie tekstowym, jednak do celów tworzenia aplikacji czy projektów zaliczeniowych można korzystać odpowiednio z innych szablonów, w szczególności Windows Application.
Przy tworzeniu programu w języku C#, definicja każdej klasy zapisywana jest w oddzielnym pliku. Nazwa pliku jest nazwą klasy, rozszerzenie takiego pliku to .cs.
Demonstracja
Prowadzący demonstruje najważniejsze kroki tworzenia nowego projektu w Visual Studio 2005:
uruchamia Visual Studio 2005,
tworzy nowy projekt - Console Application w języku C#, nadając mu własną nazwę,
pokazuje najważniejsze okna środowiska: okno edytora kodu, Solution Explorer, Class View, Error List,
pokazuje jak dodawać klasy do projektu,
wyświetla diagram klas - Class Diagram,
demonstruje kolorowanie składni, uzupełnianie kodu,
pokazuje, jak dotrzeć do systemu pomocy,
pokazuje, jak uruchamiać program i reagować na błędy,
demonstruje ustawianie pułapek (breakpoint) i przeglądanie wartości zmiennych zatrzymanego programu.
Podsumowanie
Na zajęciach wprowadzony został paradygmat programowania zorientowanego obiektowo, przedstawione zostały cechy i zalety tego podejścia. Studenci zostali zapoznani z fundamentalnymi pojęciami klasy i jej instancji, obiektu.
W dalszej części przedstawione zostały podstawy składni języka C#, który będzie wykorzystywany na laboratoriach, oraz środowisko programistyczne Visual Studio 2005. Prowadzący zademonstrował jak poruszać się w tym środowisku, pokazując podstawowe czynności wykonywane podczas tworzenia programu.
Pytania sprawdzające
Pytania dla studentów sprawdzające wiedzę zdobytą na pierwszych zajęciach:
Na czym polega hermetyzacja?
Jakie są zalety programowania obiektowego?
Czym się różni obiekt od klasy?
Jakie możliwości oferuje zintegrowane środowisko programistyczne?
Laboratorium
W pozostałym czasie studenci powinni samodzielnie uruchomić Visual Studio 2005 i zapoznać się z jego podstawowymi funkcjami, niezbędnymi do wykonywania ćwiczeń na kolejnych zajęciach, powtarzając czynności zademonstrowane przez prowadzącego:
Utworzyć własny projekt Console Application w języku C#.
Dodać kilka klas do projektu.
Wyświetlić diagram klas.
Zapoznać się z edytorem kodu, uzupełnianiem składni i systemem pomocy.
Kompilować kod, dodawać i kontrolować pułapki.
L
L