Programowanie obiektowe – obsługa kontrolek

Kontrolki stanowią reprezentację funkcjonalności naszej aplikacji względem użytkownika końcowego. Ich funkcjonalność oraz wygoda użytkowania stanowią niewątpliwą zaletę, jaką daje nam programowanie obiektowe. Warto zadbać więc o sprawną obsługę ich podstawowych właściwości z poziomu kodu programu.

Programowanie obiektowe Visual Studio 2010

Programowanie obiektowe Visual Studio 2010

Poprzedni kurs Programowanie obiektowe w C# poruszył temat jakim jest programowanie obiektowe w platformie .NET Framework. Jak już się przekonaliśmy obiektów nie należy utożsamiać jedynie z kontrolkami znajdującymi się na formatce aplikacji. Pozwalają one jednak przećwiczyć korzystanie z obiektów oraz modyfikowanie ich właściwości.

W aktualnym poście zmodyfikujemy kod programu oraz klasy z poprzedniego wpisu Programowanie obiektowe w C#, dzięki czemu nasza aplikacja będzie znacznie bardziej użyteczna.

Tworzymy formatkę naszej aplikacji według wzoru poniżej. Dodajemy dwie kontrolki textBox, trzy kontrolki label oraz button. Aby zmienić wartości wyświetlane poprzez poszczególne kontrolki musimy zrobić co za pomocą właściwości Text każdej kontrolki w oknie Properties.

Programowanie obiektowe w .NET

Formatka aplikacji Programowanie obiektowe w .NET

Programowanie obiektowe podczas obsługi programowej kontrolek

Poprzez podwójne kliknięcie na wolnej przestrzeni formatki przechodzimy do metody wywoływanej przez zdarzenie Load (jest ono wywoływane w trakcie ładowania okna naszej aplikacji).

Powyższy kod dokonuje zmiany wielkości czcionki kontrolki label. Dlaczego nie możemy dokonać prostego przypisania wartości liczbowej do właściwości Font? Właściwość Font nie należy do typu liczbowego, należy więc podejrzeć wymagany typ obiektu (najeżdżając kursorem myszy na właściwość Font kontrolki label), a następnie utworzyć nowy obiekt typu Font przy użyciu słowa kluczowego new oraz jednego z konstruktorów. Programowanie obiektowe pozwala nam na używanie różnych konstruktorów obiektów. W naszym przypadku chcemy zachować aktualny rodzaj czcionki, więc dokonujemy jego odczytu z kontrolki label w pierwszym argumencie konstruktora obiektu Font, a następnie podajemy nowy rozmiar czcionki. Ten przykład pokazuje nam, że programowanie obiektowe oraz korzystanie z obiektów klas wymusza na programiście przestrzegania zasad ustalonych przez autora danej klasy, z której aktualnie korzystamy (jest to ja najbardziej zaletą programowania obiektowego).

Teraz do naszej klasy Prostokat z poprzedniego wpisu Programowanie obiektowe w C# dodamy jedną właściwość oraz jedną metodę, które będą odpowiedzialne za sprawdzenie, czy dany prostokąt jest kwadratem.

Właściwość Kwadrat jest typu bool, więc jak łatwo można domyślić się zamysłu, jeżeli oba boki będą równe, wówczas właściwość Kwadrat będzie posiadała wartość true, w przeciwnym razie false. Odpowiada za to zdarzenie get oraz wywoływana przez nie metoda isKwadrat, która dokonuje sprawdzenia warunkowego. Tym razem dokonujemy wywołania metody bezargumentowej i korzystamy wewnątrz niej bezpośrednio z właściwości naszej klasy. Sprawdzenie warunkowe moglibyśmy umieścić również bezpośrednio w zdarzeniu get właściwości Kwadrat.

Modyfikacja zdarzenia Click naszego button’a obliczającego zaprezentuje wygodę korzystania z zalet, które daje programowanie obiektowe podczas interakcji z użytkownikiem końcowym.

Po obliczeniu pola naszej figury, dzięki właściwości Kwadrat wiemy już, czy jest ona prostokątem czy kwadratem. Musimy jednak przedstawić tą informację użytkownikowi aplikacji, dla którego wartość logiczna nie będzie jasna. Instrukcja warunkowa w tym przypadku jest prosta i jasna. Jeżeli właściwość Kwadrat naszego obiektu nowy_prostokat posiada wartość true, wówczas do zmiennej tekstowej figura przypisujemy informację, że mamy do czynienia z kwadratem, w przeciwnym razie jest to prostokąt.

W ostatni kroku dokonujemy wyświetlenia informacji dla użytkownika końcowego. Dokonamy tego przy użyciu wygodnej i przejrzystej metody (zwłaszcza w przypadku wielu zmiennych parametrów). Przypisania wartości właściwości Text kontrolki label dokonujemy przy użyciu metody Format klasy String. Parametry {0} oraz {1} wskazują sprecyzowane elementy za cudzysłowem, z których mają być pobierane dane do wstawienia. W miejsce parametru {0} wstawiana jest wartość przechowywana przez zmienną figura, a w miejsce {1}, wartość przechowywana przez zmienną moje_pole1. Możemy dowolnie korzystać z owych parametrów w każdym miejscy naszego łańcucha znaków. Alternatywny i częściej stosowanym na początku rozwiązaniem byłaby instrukcja:

Na pierwszy rzut oka użycie znaków “+” wydaje się być bardziej intuicyjne po latach nauki matematyki, ale załóżmy, że posiadamy 10 zmiennych i musimy je umieścić w kilkunastu miejscach naszego łańcucha znaków. Kod tego rodzaju byłby bardzo nieczytelny i ciężko byłoby w nim znaleźć błędy. Użycie metody Format klasy String pozwala na zachowanie przejrzystości niezależnie od liczby wykorzystywanych elementów.

Mam nadzieję, że powyższy przykład przybliżył w pewnym stopniu zalety, jakie daje programowanie obiektowe podczas operacji na kontrolkach, jak również zademonstrował inne spojrzenie na sposób konstruowania właściwości klasy. Musimy pamiętać, żeby pola naszych klas zawsze były polami prywatnymi.

Loading Disqus Comments ...
Loading Facebook Comments ...