CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy zamierzasz pobrać Internet Explorer 9?


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: 143544    »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

Inicjalizacja w dodatkowej metodzie

Polega ona na przypisaniu wartości do zmiennych w dodatkowej (lub w kilku) metodzie.

class Echo
{
    string napis;
    string napis2;

    public Echo(string parametr1, string parametr2)
    {
        PrzypiszWartosci(parametr1, parametr2);
    }
    public void PrzypiszWartosci(string parametr1, string parametr2)
    {
        napis = parametr1;
        napis2 = parametr2;
    }

    public void Napisz()
    {
        System.Console.WriteLine(napis);
        System.Console.WriteLine(napis2);
    }
}
class
KlasaGlowna
{
    static void Main()
    {
        Echo obiekt = new Echo("Pierwszy parametr.", "Drugi parametr.");
        obiekt.Napisz();
        System.Console.ReadLine();
    }
}

Inicjalizacja na etapie deklaracji

W C# możemy przypisywać wartości do zmiennych już na etapie ich deklarowania.

class Echo
{
    string napis = "Pierwszy parametr.";
    string napis2 = "Drugi parametr.";

    public void Napisz()
    {
        System.Console.WriteLine(napis);
        System.Console.WriteLine(napis2);
    }
}
class
KlasaGlowna
{
    static void Main()
    {
        Echo obiekt = new Echo();
        obiekt.Napisz();
        System.Console.ReadLine();
    }
}

Ćwiczenie

Stwórz klasę „Czlowiek” zawierającą zmienne:

  • imię typu string,
  • nazwisko typu string,
  • wiek typu int.

Zdefiniuj konstruktor dla tej klasy, który na podstawie otrzymanych parametrów zainicjalizuje jego zmienne.

Stwórz klasę główną aplikacji, w jej metodzie „Main()” stwórz obiekt klasy „Czlowiek” przekazując do konstruktora odpowiednie wartości. Wypisz na ekranie zawartość zmiennych opisujących nowopowstały obiekt (imię, nazwisko oraz wiek).

Rozwiązanie:


class Czlowiek
{
    string imie;
    string nazwisko;
    int wiek;

    public Czlowiek(string noweImie, string noweNazwisko, int nowyWiek)
    {
        imie = noweImie;
        nazwisko = noweNazwisko;
        wiek = nowyWiek;
    }

     public void WypiszDane()
    {
        System.Console.WriteLine("Imię: " + imie);
        System.Console.WriteLine("Nazwisko: " + nazwisko);
        System.Console.WriteLine("Wiek: " + wiek);
    }
}

class KlasaGlowna
{
    static void Main()
    {
        Czlowiek jan = new Czlowiek("Janusz", "Kowalski", 20);
        jan.WypiszDane();
        System.Console.ReadLine();
    }
}


«Wstecz 1 2 3 4 

Aktualna ocena to: 4,34

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

dmxn 24 listopada 2010, 15:52

Fajny tutek. Dość przejrzysty język. Super 

Kamila 22 stycznia 2011, 19:43

Kurs jest po prostu super!! Chodź miałam problemy z niektórymi rzeczami. Potem dopiero sama zaczynałam powoli wpadać co jest nie tak :) najbardziej mi coś nie chciało pójśćz tym static void Main() bo mi pokazywał tj. błąd, ale potem sobie przypomniałam, że Main a main to co innego bo wielkość liter ma znaczenie ;P i potem już mi gładko szło wszystko. Pozdrawiam

M@sterUkacz 16 lutego 2011, 15:44

Bardzo fajny kurs :D Szczególnie jeśli zna się już jakiś inny język, najlepiej obiektowy

bri 23 marca 2011, 11:33

Odcinek z tymi konstruktormi to jakiś belkot... nie da sie nic skumać.

kris 12 września 2011, 5:12

rozwiązania ćwiczeń nie działają ;/

Dawid 30 września 2011, 0:59

Kurs zrozumieją tylko ci, którzy umieją myśleć. Jeżeli uważasz bri że ten kurs to jest bełkot, to według mnie powinieneś się zastanowić o czym ten kurs bełkocze. Bo czytać "szybko" to ja też potrafię.

raf 23 grudnia 2011, 16:43

Chyba mi wyszło :) Tylko wartość wiek np.33 trzeba wpisać bez cudzysłowów bo to idzie do int a nie do string. :)


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2012 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plXboxSpot.pl  |  Jama Mastaha