Pisząc program w C# (dokładniej będzie tu mowa o wyglądzie Visual Studio) często korzystacie z sugestii jakie oferuje wam intellisense czyli po prostu podpowiadanie użytkownikowi, jakie metody etc. może wywołac z danego obiektu.
Niektórzy pewnie wiedzą co oznaczają załączone ikony w sugestiach, anyway:
Oczywiście to nie są jedyne ikony, jakie występują w Visual Studio, lecz jedne z najważniejszych. Po więcej odsyłam do:
Class View and Object Browser Icons
Szczególnie do Signal Icons
niedziela, 5 maja 2013
Klasy
Ostatnio zostały opisane struktury, więc teraz pora na klasy
Zobaczmy przykładowy kod
Zostały utworzone dwa obiekty:
- Struktura kwadrat
- Klasa kwadrat
One w działaniu nie różnią się niemal niczym, oprócz tzw. "konstruktora" (ang. constructor)
Różnica jest trywialna - niektóre zmienne można podawać już na etapie tworzenia obiektu
Niektórzy mogą pomyśleć, czy to jest takie użyteczne. Odpowiedź jest bardzo prosta - tak, z kilku powodów:
- Przeglądając w sieci dokumentacje niektórych funkcji (tu kłania się strona MSDN, postaram się zrobić o tym jakiś wpis) dowiecie się, że klasy są niemal wszędzie
- Oszczędność linijek w kodzie, można zyskać na estetyce kodu (chociaż są wyjątki)
- Jeżeli czytacie to dla siebie z chęci programowania, a nie z obowiązku zaliczenia semestru, to sami się z biegiem czasu przekonacie czemu konstruktor jest użyteczny
Klasa w porównaniu do struktury wyróżnia się owymi najważniejszymi faktami
Kopiowanie klas i struktur
Może najprościej zamieszczę kod i rezulat
W skrócie: w przeciwieństwie do struktur, zmiana wartości jednej z kopiowanej klasy ma wpływ na jej pozostałe kopie
Dziedziczenie klas:
Dziedziczenie klas, to najprościej ujmując ich nakładanie się.
Kod przykładowy:
| Struct | Class | |
| Dziedziczenie | NIE | TAK |
| Konstruktor | NIE | TAK |
| *Kwantyfikatory dostępu | TAK | TAK |
| *NULL reference | NIE | TAK |
| Interfejsy | TAK | TAK |
wtorek, 26 lutego 2013
Struktury
Poprzednio został poruszony temat tablic, teraz przejdziemy do czegoś, z czego słynie programowanie obiektowe - struktury i klasy (ok, struktury, klasy potem opisze)
Czym jest struktura?
Struktura jest swego rodzaju kontenerem na dane, mieści w sobie różne typy danych (w przeciwieństwie do tablicy), oraz wyróżnia się sposobem dostępu.
zobaczmy przykładowy kod
(nie zwracajcie uwagi na słowo "public", struktury to rozgrzewka przed klasami, i tam się tym zajmę dokładniej)
To jest przykładowa struktura,a teraz spróbujmy coś z nią zrobić
Rezultat ostateczny:
Tak wiem, akurat poruszona kwestia uprawnień jest trochę bez sensu, ale chodzi o przedstawienie struktur
Dwie rzeczy cechujące dodatkowo struktury w C#:
Czym jest struktura?
Struktura jest swego rodzaju kontenerem na dane, mieści w sobie różne typy danych (w przeciwieństwie do tablicy), oraz wyróżnia się sposobem dostępu.
zobaczmy przykładowy kod
(nie zwracajcie uwagi na słowo "public", struktury to rozgrzewka przed klasami, i tam się tym zajmę dokładniej)
To jest przykładowa struktura,a teraz spróbujmy coś z nią zrobić
Rezultat ostateczny:
Tak wiem, akurat poruszona kwestia uprawnień jest trochę bez sensu, ale chodzi o przedstawienie struktur
Dwie rzeczy cechujące dodatkowo struktury w C#:
- Mogą posiadać konstruktor
- Mogą dziedziczyć interfejsy (ale nie same siebie! struktura nie może dziedziczyć z innej struktury)
- Pola struktury nie mogą być inicjowane (tj. np. "new int[5]"), jeżeli nie są typu const, lub static
- Struktura nie może posiadać domyślnego, bezparametrowego konstruktora
Tablice
Tablice to najprostsze kontenery danych, dostajemy się do nich przez podanie indeksu elementu
Istota tablic:
Oto jak je deklarujemy (przykład z int):
oto jak możemy je wypełnić:
podczas deklaracji: po zadeklarowaniu: oraz jak się do nich odnosimy:
etc.
Ok, a może ktoś chce zapytać po co są te tablice? Po co wgl. przejmować się takim zapisem dla danych?
Wyobraźmy sobie aplikacje, która symuluje elektroniczny dziennik klasy (gimnazjum czy coś...) Teraz zobaczcie ten kod i zobaczcie, że jest on dużo bardziej funkcjonalny.
Plusy:
Minusy:
Do tej pory opisywałem najtrywialniejsze z możliwych tablic - jednowymiarowe, jednak tematem koniecznym jest zapoznanie się z tablicą dwuwymiarową
Czym to się w zasadzie różni? Jedynie sposobem deklaracji i odwołania się do tablicy. To jak je wykorzystamy zależy od nas, czy będzie to tablica 3x3 do gry w kółko i krzyżyk, czy może będziemy pisać algorytm do rozmieszczenia statków (to chyba tablica 9x9? ;) )
Istota tablic:
Oto jak je deklarujemy (przykład z int):
oto jak możemy je wypełnić:
podczas deklaracji: po zadeklarowaniu: oraz jak się do nich odnosimy:
etc.
Ok, a może ktoś chce zapytać po co są te tablice? Po co wgl. przejmować się takim zapisem dla danych?
Wyobraźmy sobie aplikacje, która symuluje elektroniczny dziennik klasy (gimnazjum czy coś...) Teraz zobaczcie ten kod i zobaczcie, że jest on dużo bardziej funkcjonalny.
Plusy:
- możemy zapytać użytkownika, i udzielić mu prawidłowej odpowiedzi
- możemy przeszukiwać w pętlach daną wartość (to później)
Minusy:
- tablice muszą mieć ściśle określoną ilość elementów
- indeks tablicy nie zawsze mówi nam, jakiej wartości możemy się pod nią spodziewać
- tablice przechowują dane jednego, i tego samego zadeklarowanego dla niej typu
Do tej pory opisywałem najtrywialniejsze z możliwych tablic - jednowymiarowe, jednak tematem koniecznym jest zapoznanie się z tablicą dwuwymiarową
Czym to się w zasadzie różni? Jedynie sposobem deklaracji i odwołania się do tablicy. To jak je wykorzystamy zależy od nas, czy będzie to tablica 3x3 do gry w kółko i krzyżyk, czy może będziemy pisać algorytm do rozmieszczenia statków (to chyba tablica 9x9? ;) )
Pominę tematykę Jagged Arrays (tablicy tablic / tablic zagnieżdżonych), ponieważ osobiście preferuję posługiwanie się listami, jeżeli jednak ktoś będzie nalegał to i o tym zrobię artykułCiekawostka na koniec:
- Wymiary tablic to sztuczne wyrażenie wytworzone na potrzebę ich obrazowania, tak naprawdę tablica w pamięci jest ulokowana ciągiem, przykład z debugger'a (początkujący nie muszą tego rozumieć, mogą jednak rzucić okiem na wynik w górnym oknie ignorując kod, górne okno przedstawia reprezentacje tablicy w pamięci PC).
środa, 20 lutego 2013
Betony programistyczne
SPOILER: Chyba najbardziej nerdowski wpis ;)
Trzeba czasem odpocząć od odgrzewania tego samego kotleta, chwila dla programistycznych demotów
Wstępnie:
Jak to wchodząc na facebook'a możecie zobaczyć tone nowych obrazków z pier...liarda coraz to demotywatoro-podobnych stron tak i w programowaniu znajdą się podobne źródła, np. codecrap czy jakiś profil w stylu tego profilu
Kilka perełek, które znalazłem (oczywiście to nie tylko C#)
Mój faworyt, zapewne od zwolnionego programisty, który w projekcie zostawił niespodzianke :D
CSS ;)
Do tego coś czego mi sie nie chce wklejać:
"return 42;"
Jak ktoś nie rozumie ocb. z liczbą 42 -> wikipedia :)
Trzeba czasem odpocząć od odgrzewania tego samego kotleta, chwila dla programistycznych demotów
Wstępnie:
Jak to wchodząc na facebook'a możecie zobaczyć tone nowych obrazków z pier...liarda coraz to demotywatoro-podobnych stron tak i w programowaniu znajdą się podobne źródła, np. codecrap czy jakiś profil w stylu tego profilu
Kilka perełek, które znalazłem (oczywiście to nie tylko C#)
Mój faworyt, zapewne od zwolnionego programisty, który w projekcie zostawił niespodzianke :D
CSS ;)
Do tego coś czego mi sie nie chce wklejać:
"return 42;"
Jak ktoś nie rozumie ocb. z liczbą 42 -> wikipedia :)
wtorek, 19 lutego 2013
Kontenery
Nie, nie chodzi o kontenery na śmieci (chociaż jeżeli programista napisze program używając ich zbyt wiele to w sumie i takie sie trafią).
Kontenery danych są wymaganym do omówienia elementem, bowiem istota programowania polega nie tyle, co na zwykłych zmiennych, ale także na umiejętnym używaniu ich zbiorów
Typy kontenerów:
Typów jest bardzo dużo, Ja omówię tylko te najważniejsze
W kolejnych wpisach (w kolejności): tablice -> struktury -> klasy -> listy
Kontenery danych są wymaganym do omówienia elementem, bowiem istota programowania polega nie tyle, co na zwykłych zmiennych, ale także na umiejętnym używaniu ich zbiorów
Typy kontenerów:
- tablice
- listy
- struktury
- klasy
- unie
Typów jest bardzo dużo, Ja omówię tylko te najważniejsze
W kolejnych wpisach (w kolejności): tablice -> struktury -> klasy -> listy
Ciekawostka: W C# nie występują wektory, zamiast nich stosujemy listy
niedziela, 17 lutego 2013
Parsowanie tekstu
Parsowanie / Parsing / Parser - kwestia "wydłubywania" informacji z kodu, np. wyciąganie z kodu HTML informacji o autorze strony.
Za pomocą masowych operacji na stringach można takie informacje wyciągać budując dość ciekawe programy, jeżeli wiecie czym jest program do kanałów RSS - to jest właśnie taki parser wiadomości.
Stworzyłem ten wpis ponieważ jest on małym subwpisem dla zmiennych String, chciałem nieco to zobrazować :)
Na wyjściu mamy:
Oczywiście jeżeli ktoś uważniej czytał poprzedni temat o Stringach i ruszył głową:
To tak o parsowaniu w pigułce :)
Za pomocą masowych operacji na stringach można takie informacje wyciągać budując dość ciekawe programy, jeżeli wiecie czym jest program do kanałów RSS - to jest właśnie taki parser wiadomości.
Stworzyłem ten wpis ponieważ jest on małym subwpisem dla zmiennych String, chciałem nieco to zobrazować :)
Na wyjściu mamy:
17 : 02 : 1991
Oczywiście jeżeli ktoś uważniej czytał poprzedni temat o Stringach i ruszył głową:
To tak o parsowaniu w pigułce :)
Subskrybuj:
Posty (Atom)






