Platformy Programowania Ćwiczenie 1 4 x Hello World! Środowisko programistyczne, w którym będziemy pracować do wakacji: Microsoft Visual Studio 2010 Profesional 1. Utwórz aplikację konsolową. Po uruchomieniu Visual Studio tworzymy projekt typu Console Application. W oknie kreatora nadajmy nazwę projektowi oraz rozwiązaniu (Solution name). W nim będziemy również tworzyć kolejne projekty. Dobrą praktyką jest nadawanie sensownych nazw, które mówią o przeznaczeniu lub rodzaju projektu. Pakiet projektów (solution) można nazwać swoim imieniem i nazwiskiem. Rysunek 1. Tworzenie aplikacji konsolowej.
Project kompilujemy za pomocą opcji Build=>Build Solution (F6), uruchomiamy za pomocą Debug=> Start Debuging (F5) lub Debug=>Start Without Debuging (Ctr + F5). Można również do tego użyć odpowiednich ikonek z panelu pod menu głównym. Do wyświetlania na konsolę służy statyczna metoda WriteLine() klasy Console. Automatycznemu zamknięciu konsoli można zapobiec wywołując statyczną metodę ReadLine() klasy Console. Ją również można wykorzystać do wczytania danych z klawiatury. 2. Utwórz bibliotekę klas. Utworzymy bibliotekę klas z klasą zawierającą statyczną metodę zwracającą string z przywitaniem. Z biblioteki tej będziemy korzystać w pozostałych projektach. Zaczynamy od dodania projektu do naszego rozwiązania. Z menu kontekstowego rozwiązania wybieramy Add => New Project (symbol => oznacza przejście do pod-menu). Wybieramy projekt typu Class Libracy i odpowiednio go nazywamy. Rysunek 2. Tworzenie biblioteki narzędziowej. Zmieniamy nazwę klasy na bardziej sensowną niż Class1. W odróżnieniu od Javy plik nie musi nazywać się tak samo, jak klasa publiczna w nim zdefiniowana. W klasie tworzymy statyczną metodę zwracającą tekst powitania. Standardem w.net jest rozpoczynanie nazw publicznych metod dużą literą i tego się trzymajmy.
Spróbujmy uruchomić projekt. Wybrany projekt możemy oznaczyć jako startowy dla rozwiązania poprzez wybranie z menu kontekstowego projektu opcji Set as Startup Project. Nazwa projektu startowego w rozwiązaniu wyróżniona jest pogrubioną czcionką. Ups, nie chce się uruchomić. Ciekawe dlaczego Na szczęście komunikat nam wszystko wyjaśnia. Z funkcji oferowanych przez biblioteki korzystamy z wykonywalnych projektów. Takiego typu projektem jest nasza aplikacja konsolowa. Aby wykorzystać w projekcie zewnętrzną bibliotekę musimy ja wskazać w referencjach projektu a następnie zadeklarować użycie odpowiedniej przestrzeni nazw (w.net wszystko zdefiniowane jest w przestrzeniach nazw). Referencję (czyli odwołanie do pakietu (assembly pliki z rozszerzeniem exe lub lib) definiujemy poprzez menu kontekstowe podkatalogu References, opcja Add Rejerence. Można tutaj wybrać pakiety zdefiniowane w ramach platformy.net, COM i, a co nas w tym momencie najbardziej interesuje, pakiety zdefiniowane w aktywnym rozwiązaniu (zakładka Projects) Wybieramy naszą bibliotekę. Rysunek 3. Dodanie referencji do pakietu (assembly). Użycie przestrzeni nazw deklarujemy za pomocą klauzuli using. I w końcu w naszej aplikacji konsolowej możemy wywołać metodę z klasy zdefiniowanej w bibliotece. Wyświetlamy na konsoli napis zwracany przez tą metodę.
3. Utwórz aplikację okienkową. Do naszego rozwiązania (które ma już dwa projekty) dodajemy trzeci projekt typu Windows Form Application. Ustawmy od razu ten projekt jako startowy i uruchommy. Wyświetla się pusta formatka. Czas ja trochę urozmaicić. Rysunek 4. Tworzenie aplikacji okienkowej. Dodajemy dwa przyciski i etykietę. Pierwszy przycisk ma wyświetlać przywitanie w postaci pokazującego się niezależnie okienka (tak, jak komunikaty o błędach). Przyciski przeciągamy z okna z narzędziami Toolbox (możemy je dla wygody zakotwiczyć). Po prawej na dole mamy okno właściwości wybranego elementu (np. przycisku) Poprzez te właściwości możemy zmienić wyświetlany napis (właściwość Text), nazwę zmiennej reprezentującej daną kontrolkę (właściwość Name), kolor, itp. Do każdej kontrolki możemy również dodać obsługę wybranych zdarzeń. Lista możliwych zdarzeń dla wybranej kontrolki również wyświetlona jest w oknie właściwości. Możemy się na nią przełączyć klikając ikonkę błyskawicy. Szkielet metody obsługującej wybrane zdarzenie jest automatycznie generowany po dwukrotnym kliknięciu na pole obok nazwy zdarzenia.
Rysunek 5. Dodawanie kontrolek do aplikacji okienkowej. Obsłużmy zdarzenie kliknięcia (Click). Szkielet tej metody można jeszcze łatwiej utworzyć klikając dwukrotnie bezpośrednio na wybranej kontrolce. Do wyświetlenia komunikatu służy statyczna metoda Show() klasy MessageBox. Poprzez jej parametry można ustawić rodzaj komunikatu i rodzaje przycisków. Dla naszych potrzeb wystarczy podać w niej napis do wyświetlenia. Drugi przycisk powinien powodować pojawienie się na etykiecie napisu zwracanego przez metodę z naszej, wcześniej zdefiniowanej, biblioteki. Bibliotekę podłączamy w ten sam sposób, jak w przypadku projektu aplikacji konsolowej. 4. Utwórz aplikację sieciową. Do naszego rozwiązania dodajemy czwarty projekt, tym razem typu ASP.NET MVC 3 Web Application. Podczas kreowania projektu nie tworzymy modułu testującego. Silnik generowania widoków (View engine) pozostawiamy ustawiony na Razor.
Ustawiamy go jako projekt startowy rozwiązania, następnie uruchomiamy i rozglądamy się po naszej, błyskawicznie utworzonej witrynie internetowej. Visual Studio stworzył szkielet aplikacji sieciowej od razu z modułem rejestracji logowania. Rysunek 6. Tworzenie aplikacji sieciowej opartej na wzorcu projektowym MVC. Powitanie wyświetlimy na dodatkowej stronie. Aby to zrealizować wystarczy: Dodajemy akcję w kontrolerze. Najłatwiej napisać ją na podstawie akcji About. Nadajmy tej metodzie (akcji) sensowną nazwę (Rysunek 7), Tworzymy dla niej widok wybierając z menu wywołanego po kliknięciu prawym przyciskiem myszy w ciele akcji opcję Add View. W oknie, które się pojawi klikamy Add akceptując ustawienia domyślne tworzonego widoku. Dodajemy kolejny element w menu strony głównej. Jej szablon znajduje się w katalogu Vievs/Shared, a nazywa się on _Layout.chtml. Pozycje dodajemy za pomocą metody ActionLink() powodującej wygenerowanie linka do odpowiedniej akcji w kontrolerze. Jej parametrami są: wyświetlana nazwa odsyłacza, nazwa akcji, nazwa kontrolera i parametry zapytania. Teraz menu będzie miało trzy pozycje, co pokazano poniżej.
Uruchomiamy aplikację i sprawdzamy, czy wszystko działa jak należy. Możemy również dodać potrzebę autoryzacji przed wejściem do naszej podstrony z przywitaniem poprzez zadeklarowanie atrybutu Authorize przed nazwą odpowiedniej akcji. Atrybuty (odpowiedniki adnotacji w Javie) deklarujemy w nawiasach kwadratowych (np., [Authorize] przez deklaracją akcji). Rysunek. 7 Dodanie akcji z wymaganym uwierzytelnianiem Dodajmy kolejną stronę, która będzie wyświetlała napis zwracany przez metodę z naszej biblioteki. Można się wzorować na akcji Index(), która wykorzystuje słownik ViewBag do przekazania wartości między kontrolerem a widokiem. 5. Dodajemy obsługę imienia witanej osoby. A teraz dodajmy kolejną metodę do naszej klasy w bibliotece przyjmującą jako parametr imię osoby, z którą się mamy przywitać. Wykorzystajmy ją w każdym z naszych trzech wykonywalnych projektów. Zatem w każdym z nich należy dodać funkcjonalność pozwalającą na podanie przez użytkownika swojego imienia. Praca domowa Proszę do mnie wysłać listę typów projektów, które poznaliśmy na zajęciach. Mój adres to wbartyna@gmail.com.