MBTI INTJ Parę lat temu interesowałem się MBTI.

MBTI to wskaźnik psychologiczny określający ludzkie osobowości, stworzony przez znanego psychologa Carla Gustava Junga. W wielkim skrócie - Jung określił 4 funkcje, które określają osobność

  • Ekstrawersja (E) i Introwersja (I)
  • Poznanie (S) i Intuicja (N)
  • Myślenie (T) i Odczuwanie (F)
  • Osądzanie (J) i Obserwacja (P)

W wyniku kombinacji tych 4 funkcji, które mają dwie opcje Jung określił 16 typów osobowości. Oznaczając ich pierwszymi literami funkcji jak ENTP czy ISFJ.

KlasaCzas na deklarowanie klas

Pisząc kod w Javie nie da się uniknąć napisania klas czy interfejsów. Wewnątrz klas jak zapewne wiesz znajdują się zmienne i metody. Od tego, jak zadeklarujesz swoją klasę zależy jak twój kod będzie działał. Przykładowo metoda publiczna (public) jest dostępna w każdym punkcie kodu.

Metoda oznaczona jako “prywatna” (private) jest wymazana z dostępu wszędzie poza swoim miejscem deklaracji.

WCF

W dzisiejszych  czasach nie ma aplikacji, która działaby w kompletnej izolacji. Różne organizacje posiadają już programy, które wykonują  różne operacje biznesowe X i chcą aby  stare programy doskonale łączyły się z nowymi aplikacjami niezależnie od platformy, czy języka programowania.
 
Jednym słowem w dzisiejszych czasach programy wykonujące różne operacje powinny komunikować się ze sobą bez względu na to, w czym są napisane.
 
W erze internetu korporacje  często wybierają rozwiązania   pochodzące od osób trzecich. Na zasadzie po co mam pisać program, który już ktoś zrobił. Musimy tylko wykupić taką usługę i w ten sposób zaoszczędzimy “X” czasu.
 
Wyzywanie polega na tym, jak połączyć te elementy w taki sposób aby komunikowały się ze sobą oraz współpracowały.

Model view Rok temu na prezentacje o Silverlight dla Bialskiej Grupy .NET napisałem prostą aplikację pokazującą powiązania.< Ta aplikacja jest prostym przykładem zastosowania modelu i widoku.

W aplikacji znajdują się dwa kwadraty ,a ich kolor jest zależny od kontrolek “NumericUpDown”. Każda z tych kontrolek odpowiada za odpowiedni kanał ARGB w kolorze. Jak chcesz możesz sam zmienić wartość tych kontrolek w aplikacji powyżej i zobaczyć ,że kolor kwadratów też się zmienia.

ŚciągaCzęść NR.23Kurs dobiegł końca. Przyszedł czas na podsumowanie jego zawartości w pigułce. W sumie w tym kursie chciałem napisać jeszcze o innych rzeczach jak: indeksery , tworzenie własnych kolekcji od <T> czy jak efektywnie korzystać z innych słów kluczowych. Kurs jednak zrobił się za długi i nawet jego nazwa “obiektowość” nie jest do końca już trafna.

Dodatki Visual Studio 2010 oferuje łatwą instalację dodatków od osób trzecich. Był to dobry kierunek rozwoju Visual Studio. Żaden program nie może spełnić pragnień wszystkich użytkowników. Dzisiaj technologia  rozwija się szybko. Visual Studio co chwilę musiałby otrzymywać jakieś rozszerzenie. Obecnie istnieje już SP1 do Visual Studio a przecież od jego premiery nie minął nawet rok.

Całą listę dostępnych  dodatków można obejrzeć wywołując okno “Extension Menager”.

Instalacja

Co to jest LaTex  i dlaczego o tym piszę?.

Minęło już  trochę czasu, od kiedy napisałem pracę inżynierską. Mój promotor zasugerował mi do pisania prac dyplomowych LaTex. Zanim opowiem co to jest, to powiem dlaczego.

Indeksery i []Część NR.3

Zostawiając już bity w int-ach przejdę do innego wykorzystania indekserów (czy jak to się odmienia w języku polskim). Zanim stworzę swój przykład zbliżony do działania HashTable napiszę dlaczego indeksory są w ogóle używane w takich wypadkach.

Jest możliwe dla właściwości aby zwracała ona tablicę ,ale pamiętaj o tym ,że tablica jest typem referencyjnym więc poprzez udostępnianie tablicy w bezpośredni sposób narażasz na przypadkowe nadpisanie danych.

Oto przykład struktury, która udostępnia tablicę int dla właściwości, którą nazywałem Dane:

IndekseryCzęść NR.2

W poprzednim wpisie pokazałem jak operować bitami za pomocą odpowiednich operatorów.

Zatrzymajmy się na chwilę i przypominajmy sobie na czym polega problem.

Chcemy użyć typu int jako tablicy, która przechowuje bity. W podobnym stylu typ string to tablica znaków. Przykładowo, gdybym chciał uzyskać dostęp do 6 miejsca bitowego zrobiłbym to tak.

BSOD

Pliki DMP są użyteczne dla debugowania Windows 7. Zawierają one w sobie informacje, dlaczego został wywołany dany niebieski ekran. Jednak bez możliwości ich otwarcia pliki DMP są bezużyteczne dla ciebie.

Otworzenie pliku jest proste wymaga on tylko odpowiedniego oprogramowania gorzej z lokalizacją i analizą danego pliku DMP, chociaż od tego jest Google i nie jest aż tak źle, o czym napiszę później.

BitoweCzęść NR.1Co to są indeksery poza tym, że nie ma takiego polskiego słowa w słowniku.

O indekserach można pomyśleć jako o małej tablicy, która działa w podobny sposób do właściwości. Przechowują one jednak grupę wartości. Gdy właściwość odnosi do jednego pola w klasie, indeksery hermetyzują i odnoszą się do całej grupy wartości. Kod, który wyraża indekser jest podobny do stylu użycia tablicy.

Najlepszym sposobem na zrozumienie jak one działają jest pokazanie przykładu. Na początku pokażę rozwiązania, które ich nie używają ,abyś lepiej zrozumiał po co one są.

Problem dotyczy liczb całkowitych a mówiąc bardziej dokładnie typu int.

params

W tym wpisie dowiesz się:

Jak napisać metodę, która akceptuje jakąkolwiek liczbę argumentów używając słowa kluczowego params.

 

Tablica parametrów jest użyteczna, jeśli chcesz napisać metodę, która pobiera jakąkolwiek liczbę parametrów, możliwe innych typów. Znając koncept obiektowości ta koncepcja może wydawać się   nie trafiona. W końcu obiektowo zorientowane rozwiązania takich problemów polegają na przeciążaniu metod.
Przeciążanie metod pozwala nam na deklarowanie dwóch lub więcej metod, które mają taką same nazwę w danym zakresie. Mechanizm przeciążania jest użyteczny, jeśli chcesz przeprowadzić tę samą akcje dla różnych argumentów.

Mimo iż ten mechanizm jest użyteczny zdarzają się przypadki, w których nie zawsze sobie radzi.

DestruktorCzęść NR.22 Jak pamiętasz typy wartościowe są tworzone na stosie ,a typy referencyjne są umieszczane na stercie. Komputery nie mają nieskończonej pamięci więc pamięć musi zostać odnowiona kiedy dana zmienna bądź obiekt nie jest już potrzebny. Typy wartościowe zostają zniszczone wraz ze swoją pamięcią, kiedy wychodzą poza zakres.

Zmienne są tworzone np. w czasie metody więc znikają po jej wykonaniu.

Poza tym typy wartościowe nie przechowują dużo informacji więc nie ma z nimi dużego problemu.

Ale co z typami referencyjnymi . Tworzysz obiekt za pomocą słowa kluczowego new ,ale jak obiekt jest niszczony w C#. Przekonajmy się.

Full Screen

Kod ten jest bardziej przydatny niż się zdaje. Zwłaszcza że ciągle zapominam jak implementować pełen ekran w Silverlight. Aby nie zaglądać już nigdy więcej do swoich starych aplikacji stworzyłem ten wpis.
Implementacja pełnego ekranu w Silverlight wymaga jednej linijki kodu. Jednak liczba wyrażeń po kropce sprawia , że nie jest ona taka łatwa do zapamiętania. Moja pamięć, jak do tej pory gasła po “Host”.

Kaxaml

XAML jest prostym językiem opisującym wygląd aplikacji w Silverlight i WPF. Do jego nauki powstał prosty edytor Kaxaml. Jest on darmowy  i prosty w użyciu wymaga  tylko zainstalowanego .NET  4.0.

XAP + Web W tym krótkim poście pokaże jak dodać plik xap do folderu ClientBin, kiedy chcesz dodać projekt Silverlight do istniejącego projektu WEB.

Dodaj aplikacje Silverlight do projektu. Możesz to zrobić przy pomocy menu głównego: File/Add/Existing Project

Mając już dodaną aplikacje Silverlight do projektu pozostało umieścić jej plik .XAP w domyślnych folderze “ClientBin”.

Tech SPAM Początkujący programiści ,zawsze się zastanawiają, która technologia jest najlepsza. Ma to logiczny sens w końcu każdy chce uczyć się “zwycięskiej” technologii. Jednak ile tematów w forach internetowych na całym świecie  brzmiało “Chcę programować ,ale wiem w czym”. Nic dziwnego ,że ludzie już mają tego serdecznie dosyć.

Muszę przyznać ,że jest to irytujące z innej strony .W czasie deklaracji nauki  danego języka programowania bądź platformy na pewno któryś z twoim znajomych powie ,że technologia X jest lepsza i to jej powinieneś się uczyć.  Oto mój własny przykład z życia. Zadeklarowałem na facebook-u ,że będę się uczył Javy na Androida było to kłamstwo ,ale chciałem coś sprawdzić.

GenericsCzęść NR.21

Podczas kursu była mowa o tablicach, które są stworzone do przechowywania typów wartościowych. Przy typach referencyjnych wykonuje się pakowanie i używanie tablic ich traci sens. Tablice mają określoną wielkość i aby ją zmienić trzeba stworzyć ją od nowa.

Klasy z System.Collection jak ArrayList czy HashTable przechowują wszystko jako obiekty więc pakowanie i wypakowywanie zawsze zachodzi bez względu na to, czy jest to typ wartościowy, czy też nie. Mimo iż są elastyczne z powodu przechowywania wszystkiego jako obiekt możemy zderzyć się z błędem przy rzutowaniu.

Od C# 2.0 mamy do dyspozycji jeszcze inne klasy kolekcji i są one najczęściej używane.

ZdarzeniaCzęść NR.20 Zobaczyłeś już jak zadeklarować delegat i jak jej użyć.

Widziałeś też co potrafią wyrażenia lambda w C#.
Jednak to jeszcze nie koniec. Co prawda możesz wywołać wiele metod nie bezpośrednio za pomocą delegaty, ale wciąż musisz ją wywołać jawnie.

Z programistycznego punktu widzenia dobrze byłoby , aby delegaty uruchomiały się automatycznie, gdy coś ważnego się wydarzy.

Przykładowo, w przypadku przegrzewania się reaktora atomowego wywołać odpowiednią delegate, która wykona wszystkie metody po kolei w celu jego wyłączenia .

Why Blend?

Pisząc aplikacje w WPF czy w Silverlight często będziesz musiał zmienić kolejność bądź układ elementów.

W Visual Studio ,aby zmienić kolejność danych elementów trzeba zastosować kombinacje klawiszy kopiuj, wklej. Przy dużej ilości kodu jest to kłopotliwa czynność i pochłania moim zdaniem za dużo czasu.

Dlatego w takich sytuacjach pojawia się nasz bohater “Expression Blend”.

Oto przykład kodu XAML. W nim jest siatka “Grid” , która zawiera dwa panele “StackPanel” ,a w nich są  przyciski z różnymi kolorami.

Tapety Jeśli jesteś maniakiem .NET na pewno chciałbyś mieć tapety z Visual Studio 2010 w swoim Windows-ie.

W czasie swojej prezentacji w ten sposób możesz wykazać swoją miłość do programowania w Visual Studio.

Jest to zawsze coś lepszego niż standardowe logo Windows czy twoja domyślna tapeta z gorącą laską. xD

Why Blend?

Pisząc aplikacje w WPF czy Silverlight będziesz musiał nieraz zmienić typ danego panelu, czy kontenera. Budując wygląd swojej aplikacji czasami za pierwszym razem nie dobierzesz właściwego typu dla danego panelu .

W tym wpisie opiszę jedną z zalet programu Expression Blend 4.0, która uzupełnia tą lukę z Visual Studio 2010.

Jeśli pisałeś już aplikacje w WPF czy Silverlight nie zdziwiłbym się, gdybyś to wiedział . Ten wpis jest przeznaczony dla początkujących.

LambdaCzęść NR.19Przykłady z poprzedniego wpisu dodają do delegaty konkretne metody. Dla przypomnienia prosty przykład użycia delegaty.

Jeśli Google odesłało cię tutaj po informacje o tym, jak korzystać z delegat, to polecam poprzedni wpis kursu.

Klasa MaszynaPracująca ma do dyspozycji pewien zestaw metod.

DelegatyCzęść NR.18Jak do tej pory widziałeś kod wykonujący się sekwencyjnie linijka po linijce. Spokojnie na programy wielowątkowe jest jeszcze za wcześnie ,ale zapewne zastanawiałeś się jak działają np. zdarzania w WPF.

[Wpis nadpisany 2015-01-15]

Przepływ programu, w takim wypadku na pewno nie jest jednokierunkowy.

OperatoryCzęść NR.16 Nie raz używałeś operatorów + – do typów wartościowych. Pytanie brzmi jak te operacje przenieść do swoich własnych klas i struktur.

Na początek mała powtórka z tego, czym są i jak działają operatory. 

 

Operatory, czym są tak naprawdę? Powtórka wiedzy

  • Używasz operatorów w kombinacji z operandami, które łącznie tworzą wyrażenie. Każdy operator ma swój własny cel i w zależności od typu operandów wykonuje różne polecenie. Przykładowe + dodaje liczby całkowite, ale również dodaje , a raczej łączy dwa łańcuchy znaków.
  • Każdy operator ma swoją odpowiednią kolejność. Mnożenie “ * ” wykona się wcześniej niż dodawanie “+”.
  • Każdy z operatorów ma swoją “łączność”. Mówiąc jaśniej każdy operator ocenia operacje w określonym kierunku “z lewej do prawej” czy “z prawej do lewej”. Operator “ = “ jest operacją wykonującą się od prawej strony do lewej więc a = b = c to samo co a = (b = c).
  • Mamy też do dyspozycji operatory jednoargumentowe jak inkrementacja (i++) i dekrementacja (i--)
  • Operacje dwuargumentowe wymagają dwóch operandów.

Zanim przejdziemy do nadpisywania operatorów należy zaznaczyć czego nie możemy nadpisać.

Picasa Jeśli chcemy dodać grupę zdjęć lepiej pomyśleć o możliwości dodania pokazu slajdów do swojego bloggera. Załóżmy ,że jesteś fotografem i chcesz się pochwalić dużą grupą zdjęć. Dodawanie ich pojedynczo może być nieefektowne w prezentacji.

Zapewne jak wiesz wszystkie zdjęcia, które umieszczasz na bloger-a lądują do Google Picasa. Jest to przydatna funkcja i muszę przyznać, że dobrze ona działa  oraz dotycz to też zdjęć, które wysyłam przez "Windows Live Writera", jak i teł i awatarów. Szkoda ,że emotikony za każdym razem muszą być tak wrzucane na bloggera.

Blogger

Jest to krótki wpis w sumie chciałbym powiedzieć ,że ten proces był koszmarny. Na szczęście spodziewałem się problemów i sam dokładnie sprawdziłem jak dokładnie długi musi być obrazek ,aby mógłby być dopasowany idealnie do strony.

 

SCJP

Egzamin SCJP jest to podstawowy egzamin z Javy obejmujący ogólną wiedzę z tego języka. Najprawdopodobniej jest to najczęściej  uczęszczany egzamin przez programistów Java ponieważ jest on w końcu z wiedzy ogólnej o języku ,a nie pod technologię X.


Certyfikat ten nie rozwiąże wszystkich twoich problemów związanych z poszukiwaniem pracy ,ale…

LaTexW poprzednim wpisie ,gdzie omówiłem jak zainstalować LaTex-a na systemie Windows i jak go ustawić aby uniknąć niepotrzebnych frustracji - obiecałem sobie ,że sprawdzę  dostępne darmowe edytory LaTex, które działają pod Windows i wybiorę najlepszego z nich.

 

TexWorks okazał się moim pierwszym programem na liście. Nie jest on skomplikowany i nie ma  dużo funkcji więc ten wpis  będzie krótki.

BloggerOd czasu do czasu zastanawiam się co jeszcze ulepszyć na blogu. Jakiś miesiąc temu sprawdziłem jak blog wygląda w każdej przeglądarce. W każdej przeglądarce wygląd był w miarę podobny. Zauważyłem jednak ,że w przeglądarce Opera wszystkie nagłówki nie mają polskich znaków.

Problem z znakami w Operze

Ustaliłem ,że winna jest czcionka “Consolas” z jakiegoś powodu nie wyświetlała ona polskich znaków w Operze.Postanowiłem zmienić czcionkę z “Consolas” na “Courier New” w końcu jest to też programistyczna czcionka. Myślę ,że teraz blog wygląda jeszcze lepiej niż wcześniej .W przyszłości być może jeszcze zmiennie styl podkreślania kod programistycznego.

Na cóż, jeśli posiadasz bloga nawet z gotowym stylem warto sprawdzić jak blog wygląda na: Operze, Firefox, Chrome i  IE. Zwłaszcza że wytłumaczenie tego faktu jest kłopotliwe. Sam się zdziwiłem, ponieważ nie powinno być żadnych problemów.

MetodyCzęść NR.2Kiedyś komputery były tylko maszynami, które manipulowały wyłącznie wartościami liczbowymi. Pierwsze super komputery obliczały tor lotu pocisków jak i łamały szyfry.

To było kiedyś, komputery dzisiaj, chociaż nikt nie prowadzić statystyk w tym kierunku, pracują w większości nad manipulacją napisów.

Czy to jest dokument tekstowy, czy strona internetowa operacje na napisach powszechnie występują.

WłaściwościCzęść NR.15Hymn właściwości to ważny aspekt. Jak zauważysz pola w klasach .NET są zawsze prywatne natomiast właściwości udostępniają nam zmienne. Chociaż na potrzeby tego kursu na pewno zdarzały się sytuacje, w których pola w klasie czy strukturze były publiczne ,ale nie jest to poprawne zachowanie.

Kiedy chcesz przeczytać bądź zapisać zmienną zazwyczaj używasz symbolu przypisania, czyli znaku równa się ( = ). Dlatego stosowanie metod do wyświetlenia zawartości pól nie jest takim dobry pomysłem. Jest to wykonalne ,ale efekt nie jest taki zadowalający.

Oto przykład. Jak widzisz ilość kodu jest dość duża. Zrobiłem to specjalnie by wykazać ,że to podejście jest również słabe, właśnie z powodu ilości kodu.

NTSF FAT32Dzisiaj musiałem zmienić systemy plików na swoich dyskach przenośnych ,a ma ich aż trzy. .

Dyski przenośne

W sumie wszystkie trzy dyski USB potrafią przechować 1300 GB danych ,ale jak mój kolega zauważył wszystkie dyski mają format plików FAT32. Pliki w tym formacie wolno się zapisują i – co gorsza – pliki powyżej 4 GB nie mogą być zapisane. Jest to kłopotliwe, ponieważ np. obrazy dysków w maszynach wirtualnych czy nawet obrazy płyt blue-ray są na pewno większe niż 4GB.  Żyjemy w 2011 roku i system FAT32 przestały być użyteczne wraz z końcem systemu Windows 98/ME.

InterfejsCzęść NR.13Wcześniej dziedziczyliśmy z klas do klas jednak popularnym mechanizmem w dziedziczeniu są Interfejsy.

Interfejs nie zawiera żadnego kodu użycia natomiast zawiera tylko specyfikacje metod i jej właściwości. 

Interfejsy można traktować jak kontrakt, który gwarantuje ,że dana klasa lub struktura, która po nim dziedziczy obsługuje dane zachowania. .

Kiedy klasa obsługuje dany interfejs musi udostępniać wszystkie elementy tego interfejsu.

Skróty

Skróty klawiszowe w Eclipse na pewno są lepsze niż w Visual Studio. Słyszałem wiele porównań tych dwóch środowisk i co do skrótów klawiszowych nie ma tutaj wątpliwości kto tu wygrywa. Skróty w Visual Studio opisałem tutaj.

Oto jak Eclipse rozwiązuje problemy ze trudnymi kombinacjami

Eclipse doskonale rozwiązał problem ze złożonymi kombinacjami klawiszowymi . W Visual Studio otrzymujemy informacje ,że program oczekuje na dalszy klawisz. Natomiast w Eclipse wyświetla się małe menu ze wszystkim dostępnymi pod kombinacjami. Dlaczego nie ma tego w Visual Studio nie mam pojęcia.

Wydaje się to trochę dziwne, zwłaszcza że od Visual Studio 2010 mamy do dyspozycji pluginy tworzone przez osoby trzecie.

No cóż, zobaczmy jakie skróty klawiszowe oferuje Eclipse.

DziedziczenieCzęść NR.11Jest to kurs obiektowości , a jeszcze nie było mowy o dziedziczeniu w C#. Chociaż dziedziczenie i polimorfizm pojawiały się w niektórych miejscach w innych wpisach.

Dziedziczenie to kluczowy mechanizm obiektowości. Dziedziczenie pozwala na powielanie funkcjonalności wobec różnych klas w ten sposób nie musimy pisać ciągle samego kodu. .

TabliceCzęść NR.9Tablica pozwala na przechowywanie zbioru wartości. W programowaniu mamy wiele sposobów przechowywania kolekcji wartości ,a tablice są jednym z tych sposobów.

Tablice mogą przechowywać tylko jeden określony typ wartości. NP. tablica int będzie mogła przechowywać tylko liczby tego typu.

W teorii tablica typu object może przechowywać wszystkie typy, ale odpakowywanie(unboxing) wartości z takiej tablicy może okazać się dość kłopotliwe.

StrukturaCzęść NR.8 Klasy są typami referencyjnymi i ich zawartość jest zawsze tworzona na stercie. W niektórych wypadkach klasa zawiera tak niewielką ilość danych , że zarządzanie nimi na stercie jest nieopłacalne. W takich wypadkach lepiej użyć struktury.

Struktura jest typem wartościowym, czyli jej miejsce jest na stosie.

Chociaż jeśli struktura jest duża to lepiej stosować klasy.

Dla programistów C++
W C++ struktura to odpowiednik klasy, tylko jej składowe są publiczne (w klasie prywatne). W C# struktury to typ skalarny i podstawowe różnicę pomiędzy klasą i strukturą zostały opisane we wpisie

Podobnie jak klasy struktura może mieć własne pola i metody……oraz w pewnym specjalnym wypadku konstruktor.

Przykładem struktury jest np. Point w WPF i Windows Forms, która przechowuje dwie zmienne X i Y.

Skróty VSSkróty klawiszowe w Visual Studio nie są tak dobrze skonstruowane, jak w Eclipse. Niektóre funkcje wymagają połączenia 2 bądź nawet 3 kombinacji klawiszowych. Zapamiętanie ich może się kojarzyć z głupią bijatyką, gdzie ciosy(combosy)  to kombinacja 5 klawiszy z całej klawiatury. Naprawdę nie dziwi mnie fakt ,że nikt z tego nie korzysta, ponieważ trudno zapamiętać złożone kombinacje klawiszy. Już łatwiej zapamiętać kombinacje do gier konsolowych, jak i słynny Konami Code.

Konami Code jest łatwiejszy do zapmiętania  niż kombinacje z Visual Studio
Mimo to postanowiłem zrobić ten wpis z nadzieją ,że może komuś będzie on pomocny.

Zauważyłem też, że niektóre skróty klawiszowe nie działają już bądź są zajęte przez dodatki w Visual Studio.

Jednak też nie jest , aż tak źle, bo mamy w Visual Studio 2010 do dyspozycji normalne skróty klawiszowe, a nie dziwne kombinacje.

Wybaczcie ten depresyjny wstęp , ale w tak dużym narzędziu złożone skróty klawiszowe są jednak nieuniknione. Na pierwszy rzut oka mogą one wyglądać  dziwnie. 

EnumCzęść NR.7Typ wyliczeniowy, na który często mówię Enum (szkoda , że ta nazwa nie może być przyjęta Puszczam oczko) jest jedną z fajniejszych rzeczy w programowaniu. Dlaczego?

Choćby dlatego , że wyklucza wartości, których nie chcemy. Przykładowo do aplikacji chcemy aby użytkownik podał konkretny miesiąc, ponieważ nasza zmienna byłaby typem wyliczeniowym , a nie np. stringiem .

Nie byłoby mowy o podaniu niewłaściwej wartości, ponieważ sprawnie byśmy je przechwytywali.

Typy wyliczeniowe przydatne są także przy kontrolkach, jak ComboBox, ponieważ z góry wiemy, jakie pola może użytkownik wybrać.

Jednym słowem zamiana niektórych zmiennych z string na typ wyliczeniowy może bardzo usprawnić aplikacje. 

IntellisenseVisual Studio od wersji 2005 posiada Intellisense, który automatycznie wyświetla wszystkie możliwe wyrażenia, jakie mogą być użyte w programie. Nie trzeba pisać całej sentencji by korzystać z tej wygody, wystarczy jedna litera, bądź nawet spacja.

Intelisense w Visual Studio 2010

Od wczoraj uczę się programować w Eclipse i trochę zmartwił mnie fakt ,że Intellisense uruchamia się dopiero po napisaniu jednej sentencji.

BoxingCzęść NR.6 Wszystko jest obiektem i wszystko w C# dziedziczy po System.Object ,tylko co z tego.

Informacje zawarte w tym wpisie będą przydatne również przy dziedziczeniu klas.
Nie mam ochoty pisać wstępu więc od razu przejdźmy do rzeczy.

 

 

System.Object

Wszystkie klasy i struktury dziedziczą po typie object. Możesz też użyć typu object do stworzenia zmiennej, która może referować do każdego typu.

Zasady

Przed pracą praktyczną nad kodem postanowiłem napisać kolejny wstęp do wzorców projektowych.

 

 

 

Powszechne zasady projektowe

Istnieje pewna liczba powszechnych zasad projektowych, z którymi szczerze mówiąc spotkałem się zanim jeszcze rozpocząłem swoją przygodę z programowaniem.
Niektóre zasady mogą wydawać się banalne ,ale moim zdaniem nawet początkujący programista powinien ich przestrzegać.
Jeśli myślisz, że się z nimi nie spotkałeś to możesz się zdziwić .Te zasady możesz znać, tylko nie wiedziałeś ,że mają one swoje określone nazwy. 

Wzorce ProjPraca programistów polega na rozwiązywaniu problemów “X”. Wiele z nich się powiela i zostały one już wcześniej rozwiązane. Przez wiele lat rzemiosło programowania obiektowego się doskonaliło. Powstała duża liczba wzorców i zasad ,a najlepsze z nich doczekały się swoich nazw i kategorii.

Posiadając wiedzę na temat wzorców jak i pospolitych rozwiązań jesteśmy w stanie rozwiązywać złożone problemy.Te rozwiązania są powszechne mamy do nich zaufanie, ponieważ wiemy ,że dużo wcześniej przed nami ktoś te wzorce z powodzeniem stosował.

Fundamentem wzorców projektowych są zasady  S.O.L.I.D (solid object oriented design) i one będą opisane w następnym wpisie ,a na razie trochę wstępu.

StatycznaCzęść NR.2

Przykładem klasy statycznej jest np. klasa Math , która zawiera wszystkie potrzebne funkcje matematyczne jak np. cosinus. Do ich użycia klasa nie musi być zadeklarowana o czym więcej w tym wpisie.

Klasa statyczna Math
Na pewno zauważysz ,że nie wszystkie metody należą do instancji klasy; są to metody, które wykonują swoje cele w sposób niezależny od specyfikacji zainicjalizowanej klasy. To są metody statyczne. Po co one są?

Klasy w C#Część NR.1 Ostatnio skończyłem kurs: podstawy C#.Jednak nie było w nim nic o klasach i obiektach. Do pisania prostych programów rzeczywiście można się obyć bez klas. Jednak nie bez powodu C# jest językiem obiektowym .Nikt też nie da nagrody za napisanie programu, który dodaje dwie cyfry. Poprzedni kurs był dobry jako wstęp ,ale nie zmienia to faktu ,że trzeba jeszcze bardziej poszerzać wiedzę.

C# nie jest trudnym językiem programowania ,więc moim zdaniem nie będziesz miał z tym kursem dużych problemów.

Platforma .NET zawiera tysiące klas i nawet jeśli jesteś początkującym programistą C# na pewno zetknąłeś się z nimi. Klasy tworzą dobry mechanizm w zarządzaniu i modelowaniu encji manipulowanymi przez aplikacje. Encja może reprezentować określony przedmiot jak produkt, bądź pracownika albo nawet transakcjeEncje Klasy.

W zależności od naszego poziomu abstrakcji encje mogą prosto obrazować rzeczywistość bądź tworzyć cały złożony system.
Obiekty klas też mają różną długość życia. Niektóre obiekty służą do przechowywania informacji przez prawie cały proces aplikacji ,a niektóre z nich są usuwana zaraz po ich użyciu.

Co to znaczy?W C# mamy do dyspozycji operatory jednoargumentowe jak inkrementacja i dekrementacja. (i++,i--). Mamy też operatory dwuargumentowe, które głównie wykonują podstawowe operacje arytmetyczne (a+b). Czasami w przykładach kodu z Internetu  spotykałem się z wyrażeniem trójargumentowym. Jest ono trochę nieczytelne ,ale na pewno skraca kod o niepotrzebną  if,else.

Operator wygląda tak.

WyjątkiThe-Hangover-2-Poster-01Nikt nie jest w stanie przewidzieć działań użytkownika. Gdy tworzymy program zwykle jesteśmy przygotowani na scenariusz absolutnie zgodny z zastosowaniem aplikacji ,jednak co się stanie, jeśli w miejscu Y napiszę X.

Ten X nie ma żadnego zastosowania z punktu widzenia programu ,ale nie zmienia to faktu ,że powoduje on jego blokadę. Gdy w textboxie pobieramy liczby musimy być przygotowani na to ,że użytkownik nie podał wartości liczbowej. Gdy otwieramy w aplikacji plik graficzny musimy być przygotowani na to ,że użytkownik wybrał przez przypadek plik tekstowy i tak dalej.

Metody6time_paradoxPętle w programowaniu są powszechne, gdyż wykonywanie jakiejś czynności X razy z innymi parametrami jest na porządku dziennym.

Oczywiście zmorą każdego początkującego programisty jest fakt ,że pętle muszą się kiedyś skończyć.

Warunki5Programy służą do rozwiązywania złożonych problemów. W tym celu program nie może działać liniowo. Niczym gra Visual Novel, w której w zależności od podjętej przez nas decyzji na ekranie komputera oglądamy inny tekst.

Myślę ,że jest to najlepszy przykład. W takiej grze istnieją proste zmienne bądź liczniki punktów, które decydują o tym co później się wydarzy.

Potem za pomocą twierdzeń decyzyjnych zawartych w programie zmienne przekierowują nas do odpowiednich scen w grze.

Na tym przykładzie przedstawionym na ilustracji postać w garniturze o imieniu “Enomoto” pyta, czy słyszałem o kwantowej teleportacji? . Jeśli odpowiem “tak” to zostanie pominięta cała scena (jak nie rozdział) tłumacząca co to jest kwantowa teleportacja.
Twierdzenia decyzjne
Mam nadzieje ,że przykład spodobał się . Każdy program działa w zależności od decyzji użytkownika. Nasz poprzedni przykład aplikacji WPF obliczał wynik w zależności od wciśniętego przycisku ,ale ile musielibyśmy mieć przycisków do każdej operacji matematycznej. Tymczasem każdy wie ,że w kalkulatorze jest jeden przycisk “równa się", który wszystko zatwierdza .

Jednym słowem by nie powielać kodu musimy po prostu poinformować program ,że w danym przypadku musi wykonać inną operację.

To byłoby tyle, jeśli chodzi o wstęp. Teraz pokażę jak można osiągnąć to w kodzie w C#.

Metody4W poprzednim wpisie pokazałem jak łatwo i szybko napisać prostą aplikacje graficzną.
Metoda C#
Jednak jak podkreśliłem w poprzednim wpisie, znajomość operacji arytmetycznych to za mało do budowania nawet takich małych programików.

Dzisiaj pokażę jak tworzyć własne metody. Jest to jeden z najprostszych trików do podzielenia kodu na mniejsze części, tak by stał się on bardziej czytelny.

ExceptionNa początku tworzenia wpisu miałem duży zapał ,ale gdy doszedłem do litery ”R” w wyjątkach z przestrzeni nazw System.SystemException to stwierdziłem , że zrobienie tej listy na pewno zajmie mi więcej niż jeden dzień.

Dla usprawnienia pracy podzieliłem wpis na części, ponieważ nie byłem w stanie  zbadać nawet tych wyjątków do litery R.