Dawno dawno temu, za siedmioma górami, za siedmioma lasami była sobie klasa.

Część 3. Metody i właściwości.

Każdy obiekt w świecie posiada jakieś właściwości i można z nim wejść w interakcję. O właściwościach (properties) było już wcześniej w naszej opowieści o klasie ołówek.  

    class Ołówek
    {
        public Ołówek()
        {
            Kolor = "niebieski";
            OłówekJestNaostrzony = true;
            DługośćOłówkaWcm = 12;
        }

        public Ołówek(string kolorOłówka, int początkowaDługość, bool ołówekJestNaostrzonyNaPoczątku)
        {
            Kolor = kolorOłówka;
            OłówekJestNaostrzony = ołówekJestNaostrzonyNaPoczątku;
            DługośćOłówkaWcm = początkowaDługość;
        }

        public string Kolor;
	    public bool OłówekJestNaostrzony;
        public int DługośćOłówkaWcm;
    }

Klasa ta posiada 3 właściwości: Kolor, OłówekJestNaostrzony oraz  DługośćOłówkaWcm. Mówiąc najprościej właściwości (properties) są to cechy, jakie może posiadać obiekt i są one umieszczane w klasie.

Czym więc są metody ??? Metody są czymś, co pozwala nam wejść w interakcję z danym obiektem klasy.

Konstrukcja metody wygląda następująco:

      public void ZłamOłówek()
        {
            //złamanie ołówka
        }

        public void NaostrzOłówek(int naostrzOIlośćCentymetrów)
        {
            DługośćOłówkaWcm = DługośćOłówkaWcm - naostrzOIlośćCentymetrów;
            OłówekJestNaostrzony = true;
        }

        public bool CzyOłówekMożnaJeszczeNaostrzyć()
        {
            return OłówekJestNaostrzony;
        }

Metoda zaczyna się od:

  • Modyfikatora dostępu (o tym w kolejnej części)
  • Wartości końcowej, jaką zwraca metoda. “void” oznacza, że wykonanie metody, czyli wywołanie interakcji nie daje żadnej informacji zwrotnej, po prostu wykonaliśmy operację i tyle. Wartości jakie mogą być zwracane mogą być najróżniejsze od niczego (void) przez int, double, bool, string, aż po nowe obiekty np. Ołówek.
  • Nazwa metody – tutaj najlepiej stosować opisową nazwę tego co metoda ma robić tak, żeby łatwiej czytało się kod. Kod powinno się czytać jak książkę. Dużo łatwiej jest przeczytać “Ołówek1.CzyOłówekMożnaJeszczeNaostrzyć();” niż “Ołówek1.Metoda1();”
  • Parametrów wejściowych do metody. Tutaj sytuacja jest podobna do konstruktora, który również potrafi przyjmować parametry wejściowe. Tak jak u góry w przykładzie metoda może być bezparametrowa czyli () lub posiadać jakieś parametry, np. (int naostrzOIlośćCentymetrów)
  • Ciało metody. Tutaj są wykonywane operacje, jakie są potrzebne, aby zadziała się akcja. Przykłady

lub

Bardzo ważne jest to, że jeżeli zdefiniowaliśmy, że metoda ma coś zwracać, wtedy musimy w metodzie użyć słowa kluczowego return, które sprawi, że metoda się zakończy z wynikiem jaki został wskazany po słowie return.

   public bool CzyOłówekMożnaJeszczeNaostrzyć()
   {
       return OłówekJestNaostrzony;
   }

Tutaj zdefiniowaliśmy, że na koniec ma być zwrócona wartość bool, czyli prawda albo fałsz, więc po słowie return znalazła się zmienna “OłówekJestNaostrzony” typu bool, której wartość została przekazana jako efekt metody.

Teraz zaprezentujmy naszą klasę bogatszą o dodane metody 🙂

class Ołówek
    {
        public Ołówek()
        {
            Kolor = "niebieski";
            OłówekJestNaostrzony = true;
            DługośćOłówkaWcm = 12;
        }

        public Ołówek(string kolorOłówka, int początkowaDługość, bool ołówekJestNaostrzonyNaPoczątku)
        {
            Kolor = kolorOłówka;
            OłówekJestNaostrzony = ołówekJestNaostrzonyNaPoczątku;
            DługośćOłówkaWcm = początkowaDługość;
        }

        public string Kolor;
        public bool OłówekJestNaostrzony;
        public int DługośćOłówkaWcm;


        public void ZłamOłówek()
        {
            //złamanie ołówka
        }

        public void NaostrzOłówek(int naostrzOIlośćCentymetrów)
        {
            DługośćOłówkaWcm = DługośćOłówkaWcm - naostrzOIlośćCentymetrów;
            OłówekJestNaostrzony = true;
        }

        public bool CzyOłówekMożnaJeszczeNaostrzyć()
        {
            return OłówekJestNaostrzony;
        }
    }

Mam nadzieję, że masz obraz tego, czym są metody i właściwości. 

To be continued …