Klasy i obiekty w Dart – nauka programowania

Klasy i obiekty w Dart – nauka programowania

Jeśli wolisz formę video, zapraszam na YT: https://youtu.be/yvroZwxH4vo

Pora wkroczyć na wyższy poziom programowania i poznać klasy i obiekty. Będąc szczerym to już ich używałeś jako, że dart jest tak zwanym językiem obiektowym i wszystko w nim jest obiektem. Ale po kolei.

Co to te klasy i obiekty?

Obiekt jest to struktura zawierająca metody i pola, na przykład zmienne. Klasa jest zaś definicją tej struktury, z której korzysta obiekt. Czyli każdy obiekt przynależy do jakieś klasy, która ten obiekt opisuje. 

Mi takie definicje nigdy za wiele nie mówią, dlatego podam przykłady, które można odnieść w naszym mniej komputerowym świecie.

Przykład 1

Powiedzmy, że istnieje klasa człowiek. Zdefiniujmy co taki człowiek może mieć. Może mieć płeć, wiek, imię i metodę urodziny, w której wiek zwiększa się o jeden. Jaś to instancja klasy człowiek. Jaś jest mężczyzną, ma 50 lat no i imię… Jaś.

KLASA: CZŁOWIEK
POLA: PŁEĆ, WIEK, IMIĘ
METODY: URODZINY

OBIEKT: JAŚ
PŁEĆ: MĘŻCZYZNA
WIEK: 50
IMIĘ: JAŚ

Przykład 2

Niech kolejną klasa będzie Email. Email ma nadawcę, odbiorcę, temat i treść. Przykładowymi metodami mogą być metody: zweryfikuj, która sprawdza poprawność emaila, to jest czy wszystkie pola są wypełnione oraz metoda wyślij, która robi jakąś magię wysyłając email do odbiorcy. Jest to wciąż tylko definicja.
Instancja klasy czyli obiekt, to konkretny email, gdzie na przykład nadawca to Dawid, odbiorca Monika, temat jest null bo jeszcze go nie wypełniłem, a w treści obecnie znajduje się, “Hej, piszę do Ciebie, ponieważ bla bla bla”. 

KLASA: EMAIL
POLA: NADAWCA, ODBIORCA, TEMAT, TREŚĆ
METODY: ZWERYFIKUJ, WYŚLIJ

OBIEKT: EMAIL_0123
NADAWCA: DAWID
ODBIORCA: MONIKA
TEMAT: NULL
TERŚĆ: ‘HEJ,\nPISZĘ DO CIEBIE, PONIEWAŻ’

Jak to wygląda w Dart i Flutter?

Mam nadzieję, że teraz jest to jasne. Pora przejść do kodu. Stwórzmy uproszczoną klasę człowiek, na start. 

class Human {
  String name;
  int age;

  void birthday() {
    age++;
  }
}

Budowa, jak widzisz jest taka: słowo class, dalej nazwa klasy, a dalej otwieramy nawiasy klamrowe. W środku są pola i metody. 

Jako, że klasa jest tylko definicją, to jedyne co nam zostało do zrobienia to utworzenie konkretnego obiektu. 

void main(List arguments) {
  Human human1;
  print(human1.age);
}

Odpal i… błąd. Hmm, no tak, domyślna wartość w Dart to null, trzeba jeszcze obiekt stworzyć, a nie tylko zadeklarować:

void main(List arguments) {
  Human human1 = Human();
  print(human1.age);
}

Lepiej, ale wciąż wewnętrzne pola obiektu mają wartości null. Wypełnijmy więc pola obiektu human1. 

void main(List arguments) {
  Human human1 = Human();
  human1.age = 26;
  human1.name = 'Dawid';
  print('Name: ${human1.name}');
  print('Age: ${human1.age}');
}

Działa? Działa!
W takim razie przetestujmy jeszcze jedyną stworzoną przez nas w tej klasie metodę.

void main(List arguments) {
  Human human1 = Human();
  human1.age = 26;
  human1.name = 'Dawid';
  print('Name: ${human1.name}');
  print('Age: ${human1.age}');

  human1.birthday();
  print('Age: ${human1.age}');
}

Jak widzisz pole wiek obiektu po odpaleniu metody zwiększyło się o 1. 

Wartości domyślne

W klasach można też definiować wartości domyślne. Usuńmy ustawienie age z main i nadajmy polu age domyślną wartość w samej klasie. 

void main(List arguments) {
  Human human1 = Human();
  human1.name = 'Dawid';
  print('Name: ${human1.name}');
  print('Age: ${human1.age}');

  human1.birthday();
  print('Age: ${human1.age}');
}

class Human {
  String name;
  int age = 50;

  void birthday() {
    age++;
  }
}

Dobra, było tu dużo informacji. Jest to kolejna lekcja z tych bardzo ważnych i pozwoli Ci wejść na znacznie wyższy poziom programowania. 

Wszystko jest obiektem. Programowanie obiektowe

Aha i jeszcze jedno. Mówiłem, że w Dart wszystko jest obiektem? Znaczy to, że już używaliśmy klas i obiektów wielokrotnie. Na przykład mając kod String name; String to klasa, a name to obiekt. To, że można przypisać tu wartość bezpośrednio przez znak równa się, to już zasługa twórców języka.

Dodaj komentarz