Урок №13. Класи. Методи. Поля. [Java українською]

Поделиться
HTML-код
  • Опубликовано: 26 июн 2024
  • Базовий курс з програмування мовою Java.
    У цьому уроці ми створимо новий клас, дали йому декілька полів та метод. Ініціалізували об'єкт з конструктора цього класу та попрацювали з ним. Окрім того, поговорили про те, що таке void, що означає, що метод щось повертає та як загалом працювати з методами, передавати у них параметри.
    ==============================
    Посилання на JDK: jdk.java.net/java-se-ri/17
    Посилання на IntelliJ IDEA: www.jetbrains.com/idea/download
    ==============================
    Зміст відео:
    0:00 - Вступ до відео.
    0:07 - Для чого існує клас.
    1:35 - Створюємо новий клас.
    2:33 - Створюємо примірники класу.
    4:18 - Конструктори.
    7:14 - void / return.
    8:39 - Параметри методів.
    9:23 - Підсумки уроку.
    ==============================
    Дякую, що дивитесь! Прошу залишати відгуки та побажання у коментарях.
    Telegram-канал: t.me/java_classroom
    #java #javacourse #ukraine #ua #programming #programminglanguage #программирование #програмування #курси #українською #мова #джава #ide #intellij #idea #download #project #language #programminglanguage #class #object #javaobject #professor #об'єкт #клас #класс #объект #професор #профессор #конструктор #construtor #поле #метод #повертає #значення #return #void #method #field #methods #возвращает

Комментарии • 27

  • @mykolamurza
    @mykolamurza  Год назад

    Домашнє завдання до уроку №13:
    1) Створити клас Professor відповідно до того, як його було створено в відео.
    2) Створити клас Student, який містить поле ім’я, прізвище, номер групи та курс (рік навчання).
    3) Додай метод mail() до класу студента.

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад +2

    нарешті усе вийшло дякую

  • @user-yg8wp4mr6z
    @user-yg8wp4mr6z 11 месяцев назад +1

    Дякую!
    Все послідовно та зрозуміло :)

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад +1

    налаштування зробив use editor lens on scrollbar hover в settings

  • @nazariysikora6771
    @nazariysikora6771 11 месяцев назад +1

    Дякую за урок!
    1.
    public class Professor {
    String name;
    String surname;
    int experience;
    Professor(String name, String surname, int experience) {
    this.name = name;
    this.surname = surname;
    this.experience = experience;
    }
    public void setName(String name) {
    this.name = name;
    }
    public void getName() {
    System.out.println("Ім'я професора " + name);
    }
    public void setSurname(String surname) {
    this.surname = surname;
    }
    public void getSurname() {
    System.out.println("Прізвище професора " + surname);
    }
    public void setExperience(int experience) {
    this.experience = experience;
    }
    public void getExperience() {
    System.out.println("Досвід професора " + experience);
    }
    void mail(String message) {
    System.out.printf("Професор", name, "надіслав повідомлення", message);
    }
    }
    2.
    public class Student {
    String name;
    String surname;
    int numberGroup;
    int yearStudy;
    Student(String name, String surname, int numberGroup, int yearStudy) {
    this.name = name;
    this.surname = surname;
    this.numberGroup = numberGroup;
    this.yearStudy = yearStudy;
    }
    public void setName(String name) {
    this.name = name;
    }
    public void getName() {
    System.out.println("Ім'я студента: " + name);
    }
    public void setSurname(String surname) {
    this.surname = surname;
    }
    public void getSurname() {
    System.out.println("Прізвище студента: " + surname);
    }
    public void setNumberGroup(int numberGroup) {
    this.numberGroup = numberGroup;
    }
    public void getNumberGroup() {
    System.out.println("Ім'я студента: " + numberGroup);
    }
    public void setYearStudy(int yearStudy) {
    this.yearStudy = yearStudy;
    }
    public void getYearStudy() {
    System.out.println("Ім'я студента: " + yearStudy);
    }
    void mail(String message) {
    System.out.println("Студент " + name + " надіслав повідомлення " + message);
    }
    }
    3.
    public class Main {
    public static void main(String[] args) {
    Professor professor = new Professor("Alex", "M.", 12);
    Student student = new Student("Max", "L.", 1, 2018);
    professor.setName("Artur");
    professor.getName();
    student.setNumberGroup(3);
    student.getNumberGroup();
    }
    }
    В даному випадку як і в класі Professor та Student я використав гетери та сетери, як додаток на випадок якщо користувач хоча змінити дане поле, думаю також було б добре застосувати інкапсуляцію зробити поля приватними і не отримувати до них доступ на пряму, але розгляну більш детально інкапсуляцію в наступному уроці.

    • @mykolamurza
      @mykolamurza  11 месяцев назад +1

      Привіт!
      Супер, зробив навіть більше, ніж треба!👍
      Щодо інкапсуляції та використання геттерів-сеттерів - правильна ідея. Саме так і треба робитти. Проте не забувай робити самі поля приватними, оскільки виходить, що доступ до полів класу лишився не заблокований, хоча гетттери-сеттери створені.
      Щодо методів get - не варто додавати до них System.out.println та будь-які інші інструкції, якщзо вони не необхідні. Ідея геттеру саме в тому, що він віддає значення поля. Так, цей метод може містити і додаткову логіку, але це скоріш "екзотика".
      У випадку з методом mail() з відео, де прямо використано System.out.println - працює інакше. Цей метод містить іншу логіку і ми самі заклали в нього ідею щось виводити в консоль. Метод get - не те саме.
      Д/З виконано гарно!

  • @sonyaerinus9195
    @sonyaerinus9195 Год назад +2

    дякую!

  • @zaider1488
    @zaider1488 Год назад +2

    Дякую!!!

  • @ercefwxdx
    @ercefwxdx Год назад +2

    Дякую

  • @rusypusy8387
    @rusypusy8387 Год назад +3

    👍

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад

    може якісь налаштування потрібно

    • @mykolamurza
      @mykolamurza  11 месяцев назад

      Ось щось знайшов:
      stackoverflow.com/questions/40627924/intellij-idea-how-to-always-show-method-parameter-names
      Але це тільки в IntelliJ IDEA.

  • @overpathz
    @overpathz Год назад +2

    Якщо комусь цікаво*
    Конструктор - ініціалізатор, набір інструкцій, який для новоствореного об'єкта задає деякий початковий стан.
    Ключове слово new - викликається конструктор, який ініціалізує поля(робить все, що ви напишете в ньому)
    Конструктор не є членом класу, тобто він не успадковується, тому ми і використовуємо ключове слово super для його виклику з суперкласу(пізніше, буде урок по цьому).
    До будь-якого члена класу ми можемо звернутися через "крапку", до полів, методів. До конструктора ми не зможемо звернутися.

    • @mykolamurza
      @mykolamurza  Год назад +2

      Перегнав мене з успадкуванням, чекайте урок №15. Тепер додам цей коментар у відео ;)
      А про доступ до конструктора через крапку, якщо чесно, я навіть не подумав і не сказав, бо сам ніколи не намагався так зробити😂😅
      P.S.: Думаю можна зробити окремий урок де дуже-дуже заглибитися у конструктор, аби пояснити усі деталі, що його стосуються.

    • @overpathz
      @overpathz Год назад

      @@mykolamurza Ну якщо до кожної теми заглиблюватися, то можна вічність уроки знімати 🤣

    • @mykolamurza
      @mykolamurza  Год назад +1

      Так, але зауваження щодо конструктора дуже слушне, я так і думав, що щось не скажу про нього) Виправимо, дякую за відгуки! 👍

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад

    java: incompatible types: java.lang.String cannot be converted to int

    • @mykolamurza
      @mykolamurza  11 месяцев назад

      Дай більше деталей, на якому моменті це стається. Скоріше за все, десь рядок використовується як число, або передається рядок параметром, де аргумент - int. Можливо в конструкторі ставиш третім параметром рядок "20" (experience), а має бути просто 20, як int.

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад

    Professor professorAlex = new Professor("Alex", "M", "10" );без name: surname: не знаю чому може щось пропустив

    • @mykolamurza
      @mykolamurza  11 месяцев назад

      "name: " - це підказка інтерфейсу IntelliJ IDEA, їх писати не треба і в уроці я їх також не пишу :)
      Десь на 6:51 видно, що само підставляється.

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад

    public class Main {
    public static void main(String[] args) {
    Professor professorAlex = new Professor("Alex", "New","22");
    professorAlex.mail();public class Professor {
    String name;
    String surname;
    int experience;
    Professor(String name,String surname, int experience) {
    this.name = name;
    this.surname = surname;
    this.experience = experience;
    }
    public Professor(String alex, String aNew, String number) {
    }
    void mail(){
    System.out.println(name + ":Send message");
    }
    }
    }
    }null:Send message чого не знаю

    • @mykolamurza
      @mykolamurza  11 месяцев назад

      Схоже, що ти передаєш три рядки в конструктор і спрацьовує другий конструктор, а треба - 2 рядки і число, аби спрацював перший конструктор.
      У другому конструкторі відсутнє присвоєння значень, типу this.name = name тощо.
      Відповідно, коли ти викликаєш метод mail після використання другого конструктора, всі поля об'єкту null і в результаті вивід в консоль теж з null.
      Видали другий конструктор і передавай третім параметром число. Тоді спрацює правильний конструктор і присвоїть правильні значення полям.

  • @mathgeometry328
    @mathgeometry328 11 месяцев назад

    Professor professorAlex = new Professor("Alex"); чомусь немає name: перед Alex
    professorAlex.mail();
    Professor professorNick = new Professor("Nick");
    professorNick.mail();

    • @mykolamurza
      @mykolamurza  11 месяцев назад

      Яку IDE використовуєш?
      "name: " це підказка інтерфейсу IntelliJ IDEA, самому писати не треба. Це треба аби ти розумів в який аргумент (методу, конструктору) пишеш значення, і не треба було перевіряти послідовність аргументів самостійно.

    • @mathgeometry328
      @mathgeometry328 11 месяцев назад

      ID 2023

    • @mathgeometry328
      @mathgeometry328 11 месяцев назад

      IntelliJ IDEA Community Edition 2023.1