CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy byłbyś zainteresowany mobilną wersją Portalu CentrumXP.mobi dla komórek?

CentrumXP.pl » Microsoft .NET » Kurs C#, cz. I » Dodaj do ulubionych Dodaj do ulubionych   Dodaj do ulubionych Wersja do wydruku

07. Tworzenie oraz inicjalizacja obiektów

Autor: Daniel Celeda    Opublikowano: 10 stycznia 2006    Odsłon: 106941    »Skomentuj...
Strona:
Zobacz również:

01. "Programowanie" - z czym to się je?

02. Programowanie obiektowe

03. Do czego potrzebne jest nam Visual Studio 2005

04. Konfiguracja i obsługa C# 2005 Express Edition

05. Tworzenie solution i nowych projektów

06. Klasy i obiekty

08. Operatory arytmetyczne

09. Porozmawiajmy o „stringach”

10. Typy proste i referencyjne

11. Wartości logiczne

12. Inne operatory logiczne

13. Instrukcje iteracyjne (tzw. pętle) - cz. I

14. Instrukcje iteracyjne (tzw. pętle) - cz. II

15. Tablice

16. Kolekcje

17. Typy generyczne (generics)

18. Przestrzenie nazw (namespaces)

19. Modyfikatory dostępu

20. Metody statyczne oraz metody instancyjne

»Uzyskaj pomoc na forum

W poprzednim artykule stworzyliśmy nasz pierwszy obiekt. Dzisiaj dowiemy się na czym polega mechanizm tworzenia obiektów i jak używać konstruktorów (specjalnych metod przeznaczonych do tego celu).

Definiowanie konstruktorów

Przypomnijmy sobie program z poprzedniego artykułu.

class Echo
{
    string napis;
    public void WczytajNapis()
    {
        System.Console.WriteLine("Podaj napis.");
        napis = System.Console.ReadLine();
    }
    public void Napisz()
    {
        System.Console.Write("Napisałeś: ");
        System.Console.WriteLine(napis);
    }
}

class
KlasaGlowna
{
    static void Main()
    {
        Echo obiektEcho = new Echo();
        obiektEcho.WczytajNapis();
        obiektEcho.Napisz();
    }
}

Przypominam, że teksty umieszczone w cudzysłowach to łańcuchy znakowe. Instrukcja „new Echo()” nakazuje stworzenie nowego obiektu. „Echo()” to konstruktor klasy, której instancję chcemy stworzyć. No tak, ale przecież w klasie „Echo" nie mamy zdefiniowanego żadnego konstruktora. Nie jest to prawdą, ponieważ w każdej klasie jest zdefiniowany domyślny konstruktor, który możemy zastąpić własnym. Co więcej, możemy w jednej klasie stworzyć kilka konstruktorów i używać ich w zależności od potrzeb.
Do czego potrzebne są nam konstruktory? Nie wystarczyłoby same słówko „new”?
Dzięki konstruktorowi, możemy podczas jego użycia od razu przypisać wartości zmiennym. Przypatrzmy się poniższemu przykładowi.

class Echo
{
    string napis;
    public Echo(string nowyNapis)
    {
        napis = nowyNapis;
    }

    public void Napisz()
    {
        System.Console.Write("Napisałeś: ");
        System.Console.WriteLine(napis);
    }
}
class
KlasaGlowna
{
    static void Main()
    {
        Echo obiektEcho = new Echo("Napis podany w konstruktorze");
        obiektEcho.Napisz();
        System.Console.ReadLine();
    }
}

Konstruktor zdefiniowany jest tutaj:

public Echo(string nowyNapis)
{
    napis = nowyNapis;
}

Definicję konstruktora powinno poprzedzać słówko „public”, ponieważ konstruktor będzie używany wewnątrz innych klas, które będą chciały powoływać do życia obiekty klasy „Echo”. Istnieją sytuacje, w których należy zdefiniować prywatny konstruktor, jednak nas one na razie nie dotyczą J Parametr jaki przyjmuje konstruktor to „nowyNapis”. Jest to parametr typu „string”, a więc tekstowy. W ciele konstruktora, zmiennej „napis” przypisujemy wartość podaną w parametrze.


1 2 3 4 Dalej» 

Aktualna ocena to: 4,38

Oceń artykuł...
Porażka Kiepski Taki Sobie Dobry Super!


Tagi:  

A teraz:    Dodaj do ulubionych Dodaj do ulubionych    Wydrukuj Wydrukuj    Wyślij link znajomemu Wyślij link znajomemu    Skomentuj Skomentuj

Komentarze do 07. Tworzenie oraz inicjalizacja obiektów

Dodaj komentarz»

Kastor25 22 czerwca 2006, 13:18

Napisałeś: Napis podany w konstruktorze Takie jest rozwiazanie ale dlaczego tak to dziala to nie mam pojecia. Jak dotad wszystko bylo dla mnie bardzo jasne i klarowne ale pojecie konstruktora troche mnie przygniotlo, bo nie widze zadnego sensu w tej konstrukcji. Zwlaszcza tekstu w metodzie main (Napis podany w konstruktorze)obok stworzonego obiektu Echo-jak to sie ma do konstruktora?

Kastor25 22 czerwca 2006, 13:47

OK juz mam:) Echo obiektEcho = new Echo("Napis podany w konstruktorze "); Ta linia odnosi sie bezposrednio do: public Echo(string nowyNapis) Poniewaz string jest parametrem tekstowym automatycznie nowyNapis=Napis; podany w konstruktorze. wtedy napis = nowyNapis; a co za tym idzie tekst wskakuje do pamieci pod nazwa konstruktora string napis; Cala operacja sprowadza sie do przyporzadkowania tekstu do slowa napis ktore jest wykorzystane w dalszej czesci kodu. Troche to zawiklane ale jesli sie myle to prosze o sprostowanie;)

Kastor25 22 czerwca 2006, 13:51

KOREKTA: Trzecia linia --automatycznie nowyNapis="Napis podany w konstruktorze"

Arcdoes 11 lipca 2006, 14:58

Poradnik jest spoksik, przydaje się:) chociaz mozna sie zamotac

bartek 21 sierpnia 2006, 16:16

cytat: Definicję konstruktora powinno poprzedzać słówko „public”, ponieważ konstruktor będzie używany wewnątrz innych klas, które będą chciały powoływać do życia obiekty klasy „Echo”. Istnieją sytuacje, w których należy zdefiniować prywatny konstruktor, jednak nas one na razie nie dotyczą koniec cytatu. A kiedy będą nas dotyczyć? Może warto by o tym wspomnieć. Poza tym określenie "Dzięki konstruktorowi, możemy podczas jego użycia od razu przypisać wartości zmiennym." nie jest najszczęśliwszym określeniem konstruktora.

Dominik 23 lipca 2007, 12:22

bartek jak się nie podoba to sam napisz lepszy kurs. Ten jest dla początkujących i takie określenie na razie wystarcza, później odkryją inne zastosowania konstruktora. A jak chcesz mieć wszystko dokladnie to proszę bardzo: http://www.microsoft.com/poland/developer/press/visual_csharp.mspx. Ale to kosztuje, a za darmo nic lepszego od tego kursu nie znajdziesz, a jeszcze narzekasz, że ktoś poświęca swój czas (=pieniądze) żeby Cię czegoś nauczyć...

ketchOOp 8 sierpnia 2007, 10:12

Nie ma co narzekać trzeba grzecznie podziekować za kurs bo jest za co !!!

OwcA 3 września 2007, 23:57

Warto by wspomnieć że w części na temat "Inicjalizacja w dodatkowej metodzie", zmienne parametr1 i parametr2 w konstruktorze: public Echo(string parametr1, string parametr2) i w zwykłej metodzie: public void PrzypiszWartosci(string parametr1, string parametr2) są faktycznie widziane przez program jako zupełnie różne zmienne, parametry które należą do danej metody. Czyli jeśli deklaracja metody pomocniczej wyglądałaby: public void PrzypiszWartosci(string parametr3, string parametr4) to też powinno działać, bo to są lokalne zmienne, przynależne do metody. przynajmniej tak było w C++ :/. To żeby ludzie nie mysleli że w takich przypadkach trzeba te zmienne nazywać tak samo jak w koństruktorze ;P

j 8 października 2007, 13:20

poprostu- od paru przykladów autor stara sie wyjasnić że można w różnych momentach i na różne sposoby przypisać wartość zmiennymi tyle

Quavitor 14 kwietnia 2008, 19:46

Kurs spoko tylko nie chce mi się pokazać rozwiązanie

Tomek 19 maja 2008, 20:24

Rozwiązanie pokaże się jak skorzystasz z Internet Explorera.

ja 17 sierpnia 2008, 16:36

ale co to w ogole jest ten konstruktor? bo czytam i cos nie moge zalapac

EnD-RiU 7 października 2008, 13:51

Do konstruktora przypisujesz jakieś wartości żeby przy użyciu okiektu nie pojawiły się dziwne rzeczy "śmieci " . Chodzi o to że jeśli masz klasę która przykładowo dodaje ułamki, to chciałbyś najpierw wczytać wartośc dla tych ułamków z klawiatury a pózniej dodać. Konstruktor jest Ci potrzebny po to aby na wszelki wypadek na początu przy użyciu nie dostały się tam przypadkowe wartości, np. 1/0 czy 2/0 dzielenie przez zero. Wtedy możesz użyć konstruktora aby zawsze przy wywołaniu w mianowniku było 1. Wtedy jesteś na 100% pewny(a), że nic złego się nie stanie i program będzie działał dobrze.

PD 13 października 2008, 16:38

Mam tylko mały problem bo w nie chce mi się wyświetlić rozwiązanie na stronie. To wina strony czy może ustawień przeglądarki?

ren 21 października 2008, 17:28

w jaki sposób drugi konstruktor odnosi się do pierwszego skoro w drugim jest napisane - [color=blue">this[/color">(parametr1).

 
nie powinno być - [color=blue">this[/color">(parametr)?

 

duch 16 listopada 2008, 21:54

super prosto przejrzyście

ziomek 8 grudnia 2008, 21:16

Powinnienes zaznaczyc, ze ten przyklad jest przytoczony tylko po to aby poznac rozne sposoby przypisywania i ewentualnie mozliwosc wywolania jednego konstruktora w drugim. Wiadomo, ze aby wyswietlic dwa proste napisy nikt nie bedzie tworzyl dwoch konstruktorow z ktorych kazdy bedzie przypisywal inny string innej zmiennej. Warto zawsze dodac jak zrobic dana czynnosc najlatwiej, mimo, ze nie samo wyswietlenie napisow jest w tym przykladzie istotne. Takie przyklady wprowadzaja zamet u poczatkujacych programistow. Mysla.... "Nie da sie osiagnac tego samego efektu w latwiejszy sposob? "

Zhipes 13 grudnia 2008, 12:46

bardzo fajny i przydatny kurs :) z początku wydawał mi się on trochę dziwny, gdyż przykłady były zapisane w postaci poleceń po polsku (jestem przyzwyczajony do normalnego kodu), aczkolwiek później było już znacznie lepiej, bo były zapisane już właściwe kody ;">
na prawdę można się z tego wiele nauczyć
i do praktykujących:
nie wiem czy ktoś dał link do Visual C# Express 2008 bo nie sposób przeczytać wszystkich komentarzy, ale
http://www.microsoft.com/express/download/

Aldczak89 13 stycznia 2009, 21:21

witam wszystkich.
na początku wielkie dzięki za napisanie tutoriala, gdyby nie on, to pewnie rzuciłbym studia uznając pozyskanie umiejętności z programowania za mission imposible. a teraz przejdę do rzeczy:
 
nie wiem czy dobrze rozumiem jeszcze pojęcia klas i obiektów. Jesteśmy w stanie, napisać program przedstawiony w tym rozdziale w jednej klasie, prawda? ale dla potrzeb tutoriala, stworzone zostało rozbicie na dwie osobne klasy, dobrze rozumiem?
 
Dziękuję za pomoc i proszę o wyrozumiałość, mam masę pytań ciągle, spróbuje je dopiero zadać po głębokiej analizie tutoriala, żeby nie zanieczyszczać przejrzystości komentarzy. Niestety nie ma mi kto pomóc w tej dziedzinie, że tak się wyrażę "stacjonarnie".
 
pozdrawiam
adrian

Marek 26 marca 2009, 10:50

Świetny kurs dzięki wielkie autorowi, do tej pory do ręki brałem 600-800stronowe książki do nauki programowania, gdzie odechciewało mi się w to bawić po przeczytaniu 80-100 stronowego wstępu, bo tak zazwyczaj mają te ksiązki. A taki wstęp paraktycznie nic nie wnosił bo się po tylu stronach dochodzi do Hell World dopiero :) a tu jest wszystko fajnie wytłumaczone na przykładach i nie musze sie przebijać przez dziesiątki stron żeby dojść do tego co mnie interesuje. Pozdrawiam

carck3r 27 marca 2009, 18:38

Gładko wchodzi. Przydała się nauka c++.
BTW: Na początek polecam C++.

sebeQ 9 listopada 2009, 19:45

Prosto, przejżyście, super !!!

marek 15 maja 2010, 15:25

nic nie dzeje sie


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2009 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plKomputer w firmie  |  XboxSpot.pl  |  Live Blog  |  Jama MastahaDevelopers.pl