Cezary Walenciuk Programowanie

Shadow

Oto kolejna ilustracja narysowana w grafice wektorowej.

Podobnie jak ilustracje wcześniejsze i ta powstała jako reklama na konferencję ITAD 2011 w Białej Podlaskiej.

Z tego, co pamiętam ten rysunek powstał 2 dni przed prezentacją/reklamą, dlaczego powinnyśmy zorganizować konferencje ITAD w Białej Podlaskiej.

Lady

Kolejna ilustracja narysowana specjalnie na potrzebę konferencji ITAD w Białej Podlaskiej w 2011 r. Była to moja druga ilustracja narysowana w Ilustratorze i tym razem skorzystałem ze swoich notatek.

Jak widać poniżej rysunek bazuje na moim "bazgrole" z zeszytu.

O ile dobrze pamiętam ten rysunek w moim zeszycie powstał na wykładzie z inżynierki programowania.

To właśnie na tym  wykładzie zdecydowałem się zmienić swojego promotora.

Była to dobra decyzja.

Pomysł ITAD Biała Podlaska nie jest dużym miastem. Obecnie, gdy mamy 16 województw, a nie 49, miasto przestało być stolicą województwa bialskopodlaskiego. Znajduje się w województwie lubelskim. Słyszałeś kiedyś o lotnisku (duże) w Białej Podlaskiej? O innych ośrodkach przemysłowych? No właśnie, w tej sprawie można by się rozpisywać bez końca.

Blog rośnie

Ostatni miesiąc mnie zaskoczył ponad 8.000 wyświetleń w okresie jednego miesiąca. Jest to też dwa razy więcej wyświetleń niż poprzednim miesiącu.

Zaznaczam też ,że nie udostępniam swoich wpisów na innych blogach czy forach. Trafienia w 99% biorą się z wyszukiwarki Google.

Covariant

Obiekt może przetrzymywać jakąkolwiek wartość bądź referencje do każdego typu.

Poniższy kod jest OK

 

 

int myNumber = 12;
string myString = "Moto-myszy z Marsa";
object myObject = myNumber;
object myObject2 = myString;

Pamiętaj, że klasa string dziedziczy po klasie Object, więc wszystkie klasy String są obiektami. Struktura nie może dziedziczyć po klasie, ale istnieją pewne wyjątki na poziomie wbudowanej kompilacji. W pewnym sensie struktura int dziedziczy po object, więc ona też może być umieszczona w object. Jednakże, w “pewnym sensie”nie jest to, tak do końca prawdą, gdyż int jest typem wartościowym i ta różnica później będzie istotna.

Generic

Poprzednim razem utworzyłem własną klasę generyczną, która działa jak drzewa binarne. W .NET można też utworzyć generyczną metodę od T.

W generycznej metodzie możesz określić typ parametrów i typ zwracany jako T, w podobny sposób jak wcześniej użyłem tego zapisu do deklaracji klasy generycznej.

Generyczne metody są zazwyczaj używane w połączeniu z generycznymi klasami. W końcu, w takich metodach zazwyczaj parametrem i typem zwracanym jest klasa generyczna.

Generyczne metody są definiowane w podobny sposób jak generyczne klasy. Na przykład, możesz użyć metody Swamp<T> , która zamienia wartości pomiędzy parametrami. Ta funkcja jest użyteczna bez względu na typ danych. Sama metoda może też być statyczna.

Generic Class NET zawiera wiele klas generycznych. Do pokazania, definiowania własnych klas generycznych używa się często tego samego przykładu: drzew binarnych. Nie ma takiej klasy w .NET, która zachowywałaby się jak drzewa binarne. Tak jak powiedziałem wcześniej ten przykład jest często używany, więc nie widzę powodu abym sam tego nie zrobił. Jednak zanim przejdziemy do tworzenia klasy generycznej najpierw opowiem trochę o drzewach binarnych.

Przeciążanie

Przeciążanie metod polega na ponownym użyciu nazwy metody w klasie, ale z innymi argumentami (opcjonalnie i innym typem zwracanym) .

Zasady są proste:

 

  • Metoda przeciążona musi zmienić listę argumentów.
  • Metoda przeciążona może zmienić typ zwracany.
  • Metoda przeciążona może zmienić modyfikator dostępu.
  • Metoda  przeciążona może zadeklarować nowy albo szerszy sprawdzony wyjątek.
  • Metoda może być przeciążona w tej samej klasie bądź podklasie. Czyli jeśli klasa X definiuje metodę print(int a) to znaczy ,że podklasa Y  mogła być, zdefiniować print (string a) bez nadpisywania metody print. Dwie metody o tej samej nazwie, ale w innych klasach mogą być uznane za przeciążone, jeżeli podklasa dziedziczy jedną wersje tej metody ,a później deklaruje inną przeciążoną wersję.

Untitled5

W poprzednim wpisie opisałem metody nadpisane i zwróciłem uwagę na pewną różnicę pomiędzy przeciążaniem metody ,a jej nadpisaniem. Zakładając ,że egzamin lubi stosować chwyty poniżej pasa wyobraź sobie takie pytanie związane z poprawnością kodu.

Polimorfizm  Jak w tytule wpisu.

Jak pamiętasz każdy obiekt w Javie, który jest w związku IS-A może mieć wiele form czyli być polimorficzny. Każdy obiekt z wyjątkiem typu Object jest polimorficzny, ponieważ zdają one test IS-A dla swojego typu i dla typu Object

Hermetyzacja

Posiadanie certyfikatu SCJP oznacza ,że znasz każdy aspekt obiektowości w Javie-e. Udowodnia on ,że znasz hierarchie   i potęgę polimorfizmu. Dlatego przez klika dni na blogu w tym kursie będę omawiał zachowanie i zasady obiektowe, które trzeba na egzamin SCJP znać.


Niektórzy programiści nie są  biegli w obiektowości dlatego zacznę od podstaw.

Java EnumUżywanie typu wyliczeniowego redukuje w kodzie pewne nieścisłości. Przykładowo sklep z gitarami może przechowywać wartości określające typy gitar jako napis string. Problem polega na tym ,że do typu string można  umieścić każdy napis. Tworzenie takiego modelu działania dla jakiegokolwiek sklepu stworzyłoby ogromny problem, ponieważ system ten byłby podatny na różnego rodzaju błędy.

Do takich zadań w językach obiektowych jest typ wyliczeniowy (enum). Typ wyliczeniowy przyjmuje tylko określone wartości. Oto przykład enum z typami gitar.

Zmienne

Bez występu tym razem są dwa typy zmiennych w Javie.

 

 

  • Primitives (typy proste) Oto kilka przykładowych  typów prostych: char, boolean, byte, short, int, long, double, float.  Gdy typ prosty jest zadeklarowany jego typ nigdy się nie zmienia ale jego wartość zazwyczaj tak.
  • Reference variables (typ referencyjny) Typ referencyjny jest używany jako adres do konkretnego obiektu. Typ referencyjny jest zadeklarowany do konkretnego  typu i ten typ nie może być później zmieniony.  Zmienna referencyjna może referować się do każdego obiektu z zadeklarowanym typem albo podtypem. Później omówię polimorfizm.

Przejdź do deklaracji typów prostych.

AbstractWcześniej omówiłem modyfikator dostępu w składowych klas. Jednak to nie są wszystkie modyfikatory, jakie mogą być użyte wobec metod i zmiennych. Modyfikatory “abstract” i “final” zostały już wcześniej omówione ,ale wciąż nie są to wszystkie modyfikatory.
Do omówienia zostały słowa kluczowe jak:“transient”,”synchronized”,”native”,”strictfp” i “static” (na inny wpis).
Najpierw pokażę   słowa kluczowe, które odwołują się zmiennych, jak i do  metod. W innym wpisie pokażę jakie zachowanie deklaruje słowo “static” w metodzie i przy zmiennej.

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.

Wszystkie Kategorie